Enjoy My Posts

문과생이 어쩌다 개발자가 되기로 했나

Posted on By Geunwon Lim

안녕하세요, 이 글에서는 제가 어쩌다 프로그래밍을 시작했는 지 말씀드리겠습니다.

저는 외고 출신이고 대학은 경영학과를 졸업하고 현재는 프로그래밍을 하고 있습니다.

그래서 면접 볼 때마다 문과 출신이 왜 개발자가 되고 싶은 지 물어봅니다.

답변을 하자면,

  • 개발을 우연히 해봤는데 재밌어서
  • 뭔가를 만드는 게 성향에 맞아서
  • 가치관이 좋아하는 일을 하면서 살자는 거여서
  • 잘 안되는 걸 해결할 때 즐거움을 느껴서
  • 전문적인 일이 멋있어서
  • 개발을 하는 매순간이 재밌는 건 아니지만, 그래도 내가 아는 돈을 벌수 있는 것 중에는 제일 재밌어서
  • 주변 개발자들에게 자극을 받아서
  • 개발자가 인정받고 잘나가서
  • 등등등 …

생각나는대로 적어봤는데 굉장히 다양합니다. 순수하게 개발을 좋아해서도 맞고, 속물적(?)으로 개발자가 요새 잘팔리니까도 맞아요. 저는 무언가의 이유가 하나이기보다는 여러가지라고 생각하는 편입니다. 그래서 이유를 하나로 단정짓기보다는 제가 어떤 사람인지 말씀드리고, 그런 사람이기 때문에 개발자가 되려고 한다고 글을 써보겠습니다. 제가 개발자가 되려고 하는 것은 과거와도 연관되어있다고 생각하기에, 기억이 나는 가장 오래된 때부터 적어보겠습니다.

모범생이던 학창시절.

저는 초등학교 2학년 쯤부터 고3까지 큰 일탈 없이 컸습니다. 담배 한 번 피운 적 없고, 공부를 아예 놓은 적도 없어요.

공부로 경쟁하는 걸 꽤나 즐겼고, 잘하고 싶은 욕심이 있었습니다. 성적으로 탑을 찍은 적은 없지만 무난한 성적이었던 거 같아요.

놀 때는 친구들이랑 피시방가거나 만화책봤고요.

지금 생각해보면 그 때부터 뭔가 만드는 걸 좋아했었나 싶은 것이 중학생 때는 만화 그리는 걸 좋아했습니다.

어쨌든 10년가까이 수능을 목표로 살았어요.

공부에 질려버린 재수시절.

꾸준히 공부를 했으나 입시 장벽은 높았습니다. 고3 때 제 모든 노력을 다해 공부했지만, 원하는 만큼의 성적이 나오지 않아 재수를 했어요.

그런데 고3때 너무 열심히 했다는 게 문제가 됐습니다. 수능이라는 게 어느정도 하면 자기의 한계에 다다르게 되고, 그 이후부터는 큰 발전없이 반복할 뿐이죠. 재수때 똑같은 공부를 하루에 10시간 넘게 하다보니 다 그만두고 싶을만큼 지쳐버립니다. 지금이야 10년 가까이 지났으니 남 얘기하듯 쓰지만 그 당시에는 많이 힘들었어요.

그렇다고 평생 한 목표로 살아왔는데 그걸 포기할 순 없었죠. 꾸역꾸역 공부를 하는 대신, 스스로 한 가지 보상을 약속합니다.

대학 가고 1년간은 공부는 커녕 글씨도 안보겠다.

힘든 재수 기간을 견디고 나쁘지 않은 대학에 들어가게 됩니다.

하고싶은 걸 한 대학 1학년.

대학에 들어간 후 재수기간동안 짜놓은 계획을 충실히 지킵니다. 1년간 공부는 거의 안했어요. 당시 친한친구들은 제가 학창시절때 열심히 공부했다고 하면 믿지 못할정도로 시험공부도 안하고, 민폐긴 하지만 팀플도 전혀 참여를 안했어요. 수업시간도 땡땡이치면서 근처에서 자고 그랬습니다.

남는 시간동안 뭘 했냐하면 가사를 만들고 비트 만들고 했습니다. 고등학교 때 공부하면서 힙합음악을 즐겨들었는데, 좋아하는 음악을 직접 만들어보고 싶었거든요. 주변에 마음 맞는 사람들끼리 공연도 하고, 녹음도 하면서 즐겁게 지냈어요. 당시 만들었던 음악은 여기서 확인하실 수 있습니다. 빡빡이로 지내던 사진 올리고 싶은데 아쉽게도 못찾겠네요. 너무 재밌어서 직업으로 하고 싶다는 생각을 하게 됩니다. 이 때 지금 가진 가치관이 조금씩 만들어진 것 같아요. 성공만을 바라기보다는 좋아하는 걸 해야겠다는 것이죠. 이후 공익생활을 거쳐 2016년까지 5년 가까이 음악인이 되기를 꿈꿉니다.

방황하던 대학 4학년.

1학년 때 망쳐놓은 성적 때문에 유급도 하며 4학년이 되니 꽤나 나이먹게 됩니다. 4살 어린 친구들이랑 같이 학교를 다녔어요. 이쯤 되니 쫄리게됩니다. 몇년 간 잡고 있던 음악으로는 성과가 저조한 반면, 주변에서는 취업을 하거나 뭔가 남들이 인정해주는 것들을 하고 있었어요. 장기간 하다보니 나태해지기도하고, 생각의 변화도 있었죠. 음악이 너무 좋아 이걸로 돈을 못벌어도 음악인이 되고싶다고 생각했었는데, 조금씩 식어가 거지가 될 걸 감수할만큼 음악인이 되고싶지는 않게 됐어요. 음악을 그만두겠다고 결심하면서 이 노래를 만들었는데, 음악인이 되겠다고 결심한 이 노래와 굉장히 대비됩니다. 당시에 ‘내 실제보다 더 뚜렸했던 상상, 흐릿해지는 걸 붙잡으려 인상 쓰다가 미간에 쥐가 났다.’는 가사를 썼는데, 쉽게 말해 자신감도 많이 떨어지고 열정이 식은거죠. 이 때 아무리 좋아하는 것도 일이 되면 스트레스가 될 수 있다는 것과 꾸준한 열정을 위해서는 간헐적인 성과가 필요하다는 것을 느낍니다. 이 얘기를 면접 때 하면 ‘그러면 개발자도 포기할 수 있겠네요?’라고 질문하는 경우가 있는데, 뭐 그럴 수도 있다고 생각합니다. 다만 그러지 않고 두번째 꿈은 이루고 싶네요.

어쨌든 현실과 타협하기로 합니다. 주변 친한 친구들이 하던 회계사 시험을 공부해볼까, 영업 인턴을 해볼까 이런 저런 생각을 합니다. 고시 공부는 위험할 수도 있다고 생각해, 비교적 무난한 선택지를 고르기로 합니다.

프로그래밍을 처음 접한 인공지능 랩.

학교 연계형 인턴을 해야겠다고 결정할 즈음, 교내 캠퍼스에서 흥미로운 공지를 봅니다. 학교는 프로젝트 학기제라는 걸 새로 시작하겠다고 했습니다. 그게 뭐냐면, 한 학기동안 교수님 밑에서 프로젝트에 풀타임으로 참여하면 전공 15학점을 주는 제도였는데, 이제까지 수동적인 교육 방식에서 벗어나 능동적인 교육을 하겠다는 취지였습니다. 프로젝트 학기제에는 여러 랩실이 있었는데, 그 중 인공지능 랩이 관심이 갔습니다. 당시가 2016년 연말이었는데, 인공지능이 워낙 핫하기도 했고 재밌을 것 같아서요. 하지만 처음 시행하는 것이라 제대로 된 것인지 미지수였고, 이제까지 겪지 않은 새로운 길이기 때문에 쉽게 결정을 못합니다.

결정을 미루고 리프레시를 위해 미국으로 떠납니다. 취업준비를 해서 취업을 하고나면 해외여행 갈 기회가 없다고 생각하기도 했고, 한번 쯤 길게 해외여행을 가고 싶었거든요. 가서 앞으로의 계획에 대해서도 천천히 생각하고, 결국 인공지능 랩으로 결정합니다. 여러 이유가 있었는데, 가장 큰 건 평범해지고 싶지 않아서 였던 것 같아요. 경영학을 4년간 공부하면서 나랑 맞지 않다고 생각했었고, 뭔가를 하면서 스스로 대단한 걸 하고있다는 생각이 들어야 하는데 그런 건 일절 없고 누구나 다 할 수 있겠다는 생각이 들었었거든요. 또한 미국에서 만나 지금까지 자주 보는 개발자 동생의 조언도 한 몫 했던 것 같고요. 연구실에 들어가기로 다짐했다고는 해도 개발자가 되어야겠다고 다짐한 건 아니었습니다. ‘공부해놓으면 좋겠지’라는 생각도 있었고, 당시 유행하던 ‘융합형 인재’에 대한 욕심도 없지 않았던 것 같아요. 무엇보다 앞으로 뻔히 보이는 인생을 살기 싫어, 새로운 공부를 해보기로 합니다.

미국에서 돌아온 후 바로 한양대학교 김종우 교수님의 연구실에 합류합니다. 여기에서는 이미 학부연구생들이 할 프로젝트가 정해져 있었는데, 그걸 하기 위해 먼저 프로그래밍 언어 파이썬을 공부시켰습니다. 당시 사실 별 것도 아닌 것들도 너무 신기하고 재미있었어요. ‘Hello, World’가 프린트 되는 것도 신기하고, 뭔가를 만들 수 있다는 게 엄청나 보였어요. 이제까지 대학 때 배웠던 것들보다 훨씬 전문적으로 보였고요.

개발자가 되기로 결심.

인공지능 랩에서 하루종일 공부합니다. 오전 9시에 출근해서 오후 11시에 퇴근하던게 흔한 일이었어요. 약 1달? 정도 프로그래밍 언어를 공부하고, 그 이후부터는 인공지능의 역사라던지, 원리 등을 공부합니다. 지금 생각해보면 어떻게 하루 종일 했는지 신기한데, 전혀 힘들지 않고 재밌었어요. 퍼셉트론부터 시작해서 cnn, rnn, r-cnn등을 공부하고 교수님한테 발표했고요. 연습삼아 파이썬 beautifulsoup로 쇼핑몰의 선글라스들을 크롤링한다음에, 그 모양이 round인지 sqaure인지 등을 구분하는 cnn 모형을 만들기도 했어요. 아래는 한창 열심히 하던 때의 흔적이고요.

그림4

어느정도 공부를 한 후, 본격적으로 프로젝트를 시작합니다. 프로젝트는 한 회사로부터 수주하여 ‘‘인공지능을 활용한 OCR프로그램’을 만드는 거였어요. 발주한 회사 사장님은 온라인 쇼핑몰에서 높은 직급까지 올라간 사람이라, 온라인 쇼핑몰에서 어떤 점이 아쉬운 지 알고 있었거든요. 온라인쇼핑몰에서는 대부분의 정보가 카탈로그에 적혀있는데, 카탈로그가 이미지 형식이다 보니 그 안에 있는 글씨들은 검색할 수 없다는 문제가 있었어요. 인공지능으로 이미지 내 글자를 인식해서 그걸 검색할 수 있게하자는 게 우리의 미션이었어요.

오픈소스인공지능인식기 ssd(single shot multibox detector)를 수정한 건 석사 선배님이었고, 학부생에게 시킨 것은 훈련데이터 모으기였습니다.

그림1

이런 카탈로그에 마우스로 드래그해서

그림2

이게 무슨 글자인지 타이핑하면 위치정보와 분류정보가 메모장에 저장됐어요.

딱 봐도 노가다가 심하고 비효율적이죠. 학부생들이 교수님한테 말 해 데이터 수집 노가다 시간을 줄여주면 훈련데이터를 생성하는 프로그램을 만들겠다고 합니다. 결과적으로 제가 그 프로그램을 만들었는데,

그림3

위와 같이 글씨가 하나도 없는 이미지에 내가 만든 글자를 뿌려주는 프로그램을 만들었습니다. 덕분에 클릭 한번으로 수만장의 데이터를 얻을 수 있었어요.

꽤나 성과가 좋았는데, 원래 10%의 인식률을 보이던 인식기를 30%를 넘어, 결과적으로 200개의 단어를 82%로 인식할 수 있게 됩니다. 성과가 좋으니까 내가 해냈다는 생각에 너무 재밌었습니다. 과거를 돌이켜 생각하다보니 개발자가 되기로 했던 당시 마음을 한 줄로 쓸 수 있겠네요. 일하는 거 자체로 재미를 느끼고, 좋은 성과를 내고, 큰 성취감을 느끼는 과정에서 조금 늦더라도 개발자가 되어야겠다고 마음먹습니다. 이전에 했던 경험들이 이런 생각을 하게끔 영향을 끼쳤을 것이고요. 이 때 겪은 일들은 지금 생각해도 행복한 경험들입니다. 이 때 개발자가 되기로 마음먹은 후로, 현재 2년 조금 넘게 개발 공부를 꾸준히 하고 있습니다. 아직 많이 부족하지만 어서 실력있는 개발자가 됐으면 좋겠네요.

이 포스트에서는 어쩌다 프로그래밍을 접하고, 개발자가 되기로 마음먹었는 지 다뤘습니다. 과거를 회상하는게 꽤나 재밌네요. 이 때 했던 프로젝트, 이후 했던 프로젝트들도 다음 포스트에서 회고해보겠습니다.

읽어주셔서 감사해요.