Be a Cool hacker

방황하는 대학생 프로그래머에게 필요한 것..?

  사실 이 글은 소프트웨어 마에스트로 과정에 대해서 조언을 구하는 후배에게 썼던 메일 내용입니다. 다시 읽어도 졸문이지만.. 처음 시작하시는 분들에게 혹시 도움이 될까 싶어서 제 블로그에도 담아 보려합니다.

  아래는 원문입니다.

Programmer??

13학번 OOO군이 간략한 자기소개를 보내주셔서 썼는데 이게 OO군 말고도 해당되시는 분이 있을 것 같애서 졸문이지만 공유하면 좋을 것 같아서 여기다가 올립니다. 개인적인 사견이 많이 들어갔으니 우리 실력있는 선배들은 무시해주시구요. 다들 잘하시니까 ^^ 저학년 후배님들은 한번 읽어보셔도 좋을것 같습니다.

===============================================

안녕하세요. flowkater입니다.

소프트웨어 마에스트로를 떠나서 본인이 실질적인 조언을 구하니 일단 현실적으로 말씀드릴게요.

일단 스터디, 세미나에 단순히 참여하는 것은 본인 이력에 전혀 도움이 안됩니다.(공부는 되겠죠. 여기서 말하는 건 눈에 보이는 커리어입니다.) 본인이 직접 커뮤니티를 운영했다거나 큰 컨퍼런스에서 직접 발표하는게 아닌 이상 제 3자가 보기엔 아무것도 안한것과 다름없죠. 해킹대회? 입상안하면 아무 도움 안됩니다. (동아리가 보안동아리입니다.)

또한, 프로젝트를 하지 못했다는 것은 본인의 관심사가 과연 컴퓨터 공학인가, 그냥 롤모델이 멋있어서 쫓아오지 않았나 등에 대해서 진지하게 고민해야되지 않나 싶습니다.

컴퓨터 공학과는 나와도 그만 안나와도 그만인 전공입니다. 실무에서 필요한 기술만 배워서 취업하려면 충분히 가능하지요. 오히려 그 시간에 다른 전공을 공부하고 프로그래밍 하는 친구들 보다 경쟁력이 떨어집니다. 그게 현실입니다. (논란이 있는 부분이지만 컴퓨터 공학 전공이면서도 프로그래밍을 잘 못하는 친구들에게 강하게 말하려다보니 이렇게 쓰게 됬네요)

제가 이렇게 까지 말씀드리는 건 모든 곳에서(어떤 곳이든) 지원 당사자에게 열정을 봅니다. 기술도 좋고 머리가 좋은 것도 좋지만 열정을 봅니다. 컴퓨터 공학에서 열정이란 무엇일까요?

바로 자기 스스로 커뮤니티를 조직하고 공부한 것을 많은 사람들에게 공유하고 자기가 니즈를 느낀 부분에 대해서 문제를 풀어보고자 프로젝트를 진행하는 것입니다.

빌게이츠, 스티브 잡스, 마크 주커버그 등 그들이 진정 프로그래머이든 아니든 간에 그들은 그들 스스로 문제를 발견하고 그걸 해결하고자 무언가를 만들려고 했던 사람입니다.

무조건 열심히 하겠습니다. 최선을 다하겠습니다. 라는 말은 본인이 생각하기에도 신뢰성이 떨어진다는 걸 더 잘 느낄 것입니다.

해커로서 앞으로 인생을 살아나갈 생각이라면 조금 더 진지하게 생각해야될 부분이 있어 보입니다. 내가 진정, 정말로 이걸 좋아하고 즐기는지. 그리고 그게 맞다면 끈기있게 해나가면 됩니다.

개인적인 얘기를 드리면 저는 군대 제대할때까지 (23살까지) 프로그래밍 한 번 제대로 안해본 사람이었고(1학년때 C언어 F 였습니다.) 막연한 꿈만 좇아서 제대후 보안을 하고 싶다고 공부를 했지만 만족스럽게 하지 못했죠.

왜냐면 저는 저를 파악하고 제가 원하는 걸 한게 아니고 그냥 단순히 해킹이 멋잇어 보이고 먼가 유망하다는 말만 듣고 시작을 했던 것입니다. 잘될 일이 없겠죠.

그러다가 우연히 웹 개발을 접하게 됬고 제 스스로 기획하고 디자인하고 서비스를 런칭해보았습니다. 순수 제 힘이었고 처음보는 언어, 처음보는 프레임워크, 처음 개발해보는 웹이었습니다. 그리고 제가 만든 걸 사람들이 쓰는 걸 보았죠.

전 거기서 순수한 제 흥미를 느꼈습니다. 그리고 정말 가치있는 것을 사람들에게 전달한다는게 너무 좋았고 소프트웨어 개발이 마법 같아 보였습니다.

그때 이후로 두 번의 창업, 스타트업 조인, 해커톤 우승, 소프트웨어 마에스트로 등 생각지도 못한 커리어를 밟고 있습니다.

제 자랑을 하려는 게 아니고 제 말인 즉슨, 본인 스스로를 제대로 파악해야된다는 말이죠. 그런데 그게 생각만 한다고 되는게 아닙니다. 뭐든지 끝을 볼때까지 열심히 해야됩니다.

제가 동아리하면서 만족스럽게 공부를 못했다고 했지 열심히 안한건 아닙니다. 동아리 들어온지 3개월만에 부회장으로 임원활동을 하게 되었고 스터디 조직하고 세미나 맡아서 진행하고 시험기간에도 웹해킹, 리버싱 등을 공부했죠.

그건 현재 저를 아는 다른 동아리원들에게 물어보면 알수 있을 겁니다.

결국 안해보면 이게 나한테 맞는지 안맞는지, 똥인지 된장인지 모른다는 말이죠.

시간을 쪼개서 공부를 하신다고 했지만, 시간을 쪼갠다는 말이 잘못된 것 같네요. 본인 인생에 있어서 중요하고 가치있는 것만 해도 모자란데 지금 다른 일을 하면서 시간을 쪼개서 소프트웨어 개발 공부를 한다? 넌센스입니다.

안드로이드 프로그래밍, 리눅스 프로그래밍, 윈도우 프로그래밍, 어떤 특정 언어, 플랫폼, 마음만 먹으면 1주일이면 다 할수있습니다. 그게 여기 소프트웨어 마에스트로 수준입니다. 하지만 그건 실력이 아니라 마음가짐입니다.

안드로이드를 공부해야지가 아니라.. ‘이러한 문제가 있는데 이렇게 풀어서 사람들에게 가치를 제공하고 싶은데 모바일이 제일 적합한것 같애. 그럼 일단 우리나라에서 제일 점유율이 높은 안드로이드 개발을 먼저 해보자.’

그러면 언어든 플랫폼이든 그건 하나의 수단에 불과하게 됩니다. 중요한건 그 문제이고 그 문제를 풀어가는 과정인 것이죠. 그러면 C언어 잘할려면 어떻게 해야되나요? 안드로이드 배우는데 얼마 걸리나요? 같은 얘기는 더 이상 안하게 됩니다.

안드로이드 배울려면? 1년이 걸릴수도 10년이 걸릴수도 있습니다. 하지만 문제에 집중하면 하루면 충분할 수도 있습니다. 접근을 어떻게 하느냐에 따라서 그 시간은 천차만별일 겁니다.

그리고 전산 전공을 하시면 가장 기본적으로 코딩 실력이 중요합니다. 소프트웨어 마에스트로 면접 때도 코딩 문제 풉니다. 30분 시간 주어지고 실제 언어로 다 풀어서 면접때 설명할 수 있어야 합니다. 프로그래머가 코딩을 못한다는건 말이 안되는 거니깐요. (괜찮은 소프트웨어 기업은 기본적으로 이런 채용방식을 가지고 있습니다.)

정리를 하자면,

먼저 본인에 대해서 잘 생각해보세요. 정말 뭘 원하는지 그리고 그런게 여러 개 있으면 하나씩 다 해보세요. 정말 열심히. 아직 대학생이잖아요?

그리고 남은 기간 동안 본인 스스로 기획한 프로젝트를 최소한 2 개 이상 해보세요.저 처음 웹프로젝트 할때 서비스를 런칭했습니다. 개발만 끝낸게 아니라 디자인, 런칭, 운영까지.

마지막, 코딩 연습하세요. 리눅스? 윈도우? 안드로이드? 그런거 어차피 API 보고 가져다 쓰는 거 그 이상 그 이하가 될 수 없습니다. 책보고 공부하면 되죠. 코딩 실력? 이거 연습안하면 절대 안늡니다. 앱 엄청 예쁘게 짜놓고 조건문, 반복문 제대로 활용 못하는 프로그래머들 태반입니다. BOF, 웹해킹 백날 하면 뭐합니까. 학교 알고리즘 과제 하나 제대로 못짜는데.. 보안하든 뭘하든 코딩 잘해야됩니다. 지금 우리 동아리 현업에서 일하시는 선배들 보안 잘합니다. 코딩? 더 잘하시죠.

TopCoder, Project Euler 등 최소한 하루에 한 문제씩 푸는걸 목표로 하세요. 그러면 소프트웨어 마에스트로 면접은 쉽게 할 수 있습니다. 생각하는 연습, 그걸 코딩으로 옮기는 연습, 그걸 또다시 설명하는 연습. 매일 문제 풀기 어렵습니다. 스터디를 하든 자신의 강한 의지를 발휘하던 꼭 진행하세요.

2014년도 마이크로소프트 1월호, 2월호, 3월호 패턴 이야기 편을 보면 제가 소프트웨어 마에스트로에서 어떻게 기획하고 어떤 것들을 공부해서 개발하는지를 대략적으로나마 알 수 있을 것입니다. 참고하시구요.

말을 쓰다보니 잡다한 제 생각이 많이 들어갔네요. 추가적인 질문은 메일로 다시 보내주시구요. 만약에 진정 내가 이걸 하고 싶다면 망설이지 말고 그것에만 집중하세요.

Comments