개발자의 취업/후기 경험을 이야기하겠다고 하면 굉장히 거창하다는 느낌이 듭니다.
좋은 주제는 맞는데 직접 쓰려니 부담스럽다는 생각이 있었습니다.
그러다 한달 전쯤에 메일 한통을 받았습니다.
메일 답장으로는 성의가 없어보여 블로그를 통해서 정리해서 공유드리겠다는 답변을 드렸습니다만, 막상 쓸려니 실력에 비해 너무 건방떠는 내용이 될것 같아서 계속 미루게 되었습니다.
그러다가 최근에 진행된 OKKY 세미나가 끝나고 돌아가는 길에 비슷한 질문을 받고, 며칠 뒤에는 페이스북 메신저로 비슷한 질문을 받았습니다.
"아! 이게 생각보다 많은 분들이 궁금해 하시는구나."
"나 혼자서 쉐도우 복싱 안해도 되겠구나" 싶었습니다.
저는 이제 4년 1개월 된 개발자입니다.
SI에서 1년, 포털 서비스에서 2년, 현재는 O2O 스타트업에서 1년째 개발중입니다.
이미 2번의 한 해 회고 (2016년 회고, 2017년 회고)를 썼기 때문에 이번 글은 3번째 직장에 오기까지 취업/이직 준비를 어떻게 했었는지에 대해서만 다룰까 합니다.
영웅담은 아니며, 대충 저정도만 해도 개발자로 먹고 사는구나 정도로 보시면 됩니다.
순서는 국비교육기간 -> 취업준비기간 (4학년 2학기 ~ 5학년 2학기) -> 첫번째 직장 -> 두번째 직장 순으로 진행될 예정입니다.
1-1. 국비교육 - 교육기간
대학 생활중 SW전공 수업을 몇번 듣게 되었습니다.
전자회로, 통신공학 같은 과목보다 SW 전공 과목들이 더 재밌어서 개발쪽으로 취업을 해야겠다고 막연하게 생각하고 있었습니다.
어영부영 시간이 지나서 4학년 1학기가 끝날때쯤 기숙사 침대에 누워서 생각해보니 제 상황이 정말 안좋다는걸 깨달았습니다.
비전공(전기과), 3.3의 낮은 학점, 지방대, SW 관련 활동 전무 등 전혀 개발자로 취업할수 있을것 같지 않았습니다.
이대로 졸업하면 큰일나겠다 싶은것도 있었고, SW 개발만 집중적으로 공부해보고 싶은 마음도 있어서 4학년 2학기부터 1년간 휴학을 했습니다.
휴학 후 어떻게 공부해야할까 고민한 결과, 4학년 1학기에 다시 대학교를 가기엔 너무 늦었다는 생각에 국비교육센터를 선택했습니다.
(정석루트로 가기엔 너무 늦었으니 다른 방법을 선택한것이지만, 돌이켜 생각해보면 잘한 결정 같습니다.)
제가 살던 대구/구미에는 마땅히 SW 교육센터가 없어 인터넷 커뮤니티에서 추천하는 XX교육센터를 가기로 결심하고 생애 처음으로 서울 땅을 밟게 됩니다.
지금도 그런지는 모르겠지만, 그때는 국비 교육 지원이 재학생에겐 해당사항이 없어 350만원이라는 교육비용을 자비로 지불했습니다.
(취업 안되면 영어 공부라도 해야겠다는 생각에 모아둔 돈이 있어 그걸로 해결했지만.. 돈이 너무 아까워서 진짜 열심히 들었습니다.)
XX교육센터의 여러 과정 중에 제가 들었던 4.5개월 과정을 들으려면 일종의 자바 시험을 통과해야했습니다.
시험 통과가 안되면 자바 기초 수업을 듣고 다시 시험을 봐야한다는 얘기에 부랴부랴 남궁성님의 자바의 정석을 사서 8장 Exception까지 읽었습니다.
클래스와 인스턴스 차이가 이해는 안되고, 시험일자는 다가오니 책의 설명을 달달 외워 시험 보러 갔던 기억이 납니다.
남들은 쉽게 이해했는걸 보면 제가 그렇게 재능있는 편은 아니였던것 같습니다.
어찌됐든 시험을 통과하고 본격적으로 국비교육을 시작하게 되었습니다.
지금도 비슷할것 같은데 4.5개월 중, 2개월간 교육을 하고, 나머지 2.5개월은 팀 프로젝트를 진행했습니다.
하루 일과는 단순했습니다.
오전 9시 ~ 오후 4시까지는 교육과목들을 배우고, 오후 4 ~ 9시까지는 의무 자습, 이후엔 자율 시간이였습니다.
의무 자습이란 단어가 생소하실텐데요.
자습인데, 의무였습니다.
오후 9시에 출석체크를 했었거든요.
그때까진 무조건 학원에 남아있어야 했습니다.
여튼 2012년 기준으로 교육 과목은 아래와 같습니다.
- Java: 2주
- Servlet / JSP: 2주
- Struts: 3일
- Spring / iBatis / Tomcat: 2주
- HTML: 2일
- 데이터베이스: 2일
- 안드로이드: 3일
(다시 생각해봐도 안드로이드는 도대체 왜 넣었는지 모르겠네요.)
과목과 일정을 보시면 아시겠지만, 시간이 너무 촉박합니다.
수업 진도 나가기 바빠서 강사님께서 스크린에 코드 출력 -> 따라치기 -> 간략 설명 이 과정이 반복됐습니다.
그러다보니 첫 2주 이후부터는 전체 25명중 2~3명을 제외하고는 전부 강사님의 화면을 따라치기만 했습니다.
(똑똑하신 분들은 그렇게 해도 다 이해하시는것보고 감탄했었습니다.)
한달 지나서 남은거라곤 따라치다 오타난 코드밖에 없었습니다.
스크린 속 코드만 따라치려고 서울까지 왔는건가 하는 자괴감과 이대로 가면 큰일나겠다는 다급함이 몰려와 학습방법에 변화를 주게 됩니다.
남에게 설명해야한다는 압박감이 있으면 더 집중해서 듣고, 정리할 것이란 계산으로 "오늘 배운 내용을 같은 교육생 분들에게 요약 정리해주자" 란 계획을 세웠습니다.
방법은 간단합니다.
- 강사님이 하시는 이야기를 모두 공책에 기록
- 지금 생각해보니 이때부터 기록하는 습관이 있었네요.
- 쉬는 시간, 점심시간에 기록한 내용을 다시 정리 & 애매한건 강사님께 질문
- 교육이 끝나는 오후 4시부터 저녁 시간 전까지 다시 정리
- 7시부터 반 동료들에게 정리한 내용 발표
- 강사님 코드는 별도로 받아서 자습시간에 다시 학습
이게 그나마 효과가 있었는지 그날 강사님이 보여주신 코드가 뭘 의미하는지 정도는 이해하게 됐습니다.
7시까지 무조건 정리해야한다라는 압박감이 있었지만 그래도 시간과 돈을 날리는것 보다는 훨씬 낫다고 생각해서 교육 기간 내내 발표를 진행했습니다.
서울에 혼자 살았기 때문에 할것도 없었고, 매주 금요일이면 강사님께서 숙제를 내주셨기 때문에 주말에도 항상 학원에 갔습니다.
주말은 그래도 시간적 여유가 있어서 다른 분들 숙제를 도와주기도 했습니다.
지금 생각해보니 일종의 코드리뷰 비슷했던것 같습니다.
그렇게 2달간의 교육이 끝나고, 대망의 팀 프로젝트가 시작됩니다.
1-2. 국비교육 - 팀 프로젝트 기간
국비교육에서 팀 프로젝트 멤버 구성은 보통 2가지 방법 중 하나로 결정됩니다.
- 교육생들끼리 알아서 팀 구성
- 강사님이 직접 팀원 구성.
1번, 2번 모두 명확한 단점이 있습니다.
1번은 부익부 빈익빈이 발생하게 됩니다.
잘하는 사람끼리 먼저 팀 구성을 하다보니, 어디에도 끼지 못하는 사람이 생겨 서로 감정 상하는 일이 생깁니다.
(진짜 민망한 상황이 연출됩니다.)
2번은 무임승차가 대거 발생합니다.
강사님 입장에선 어떻게든 팀별로 프로젝트가 완성되야하니, 각 팀마다 잘하는 사람을 1명씩은 포함시키게 되는데요.
결국 2~3개월동안 그 친구 혼자서 날밤새며 프로젝트 진행하는 경우가 허다했습니다.
요즘은 다를 수 있습니다. 제 주변 지인들과 몇년전 기준으로 한 얘기입니다.
이것때문에 개인적으로 국비교육에서 팀 프로젝트 과정은 빠지는게 어떨까 생각하게 됐습니다.
fender님의 채용 면접 후기에서도 나온 이야기지만, 최근 취업되신 분들과 얘기해봐도 포트폴리오를 신뢰하지 않는다는게 체감됩니다.
포트폴리오는 누가 만들었는지 확인할 방법이 없습니다.
오히려 Github과 개인 기술 블로그를 훨씬 더 신뢰하고 요구합니다.
팀 프로젝트 대신에 차라리 각자에게 과제를 주고, 이를 Github을 통해서 강사님이 코드리뷰를 진행하고 Github 계정을 이력서에 올리는게 훨씬 더 효과적일것 같습니다.
(이렇게 말한다고 될리는 없겠지만요..)
어찌됐든 저의 경우 1번 방식으로 팀 구성이 진행됐습니다.
다행히 잘 하시는 분들과 팀이 되서 많은 도움을 받으면서 프로젝트를 진행할 수 있었습니다.
프로젝트 초반에는 VCS(버전 관리 시스템)과 Javascript를 배워야했기 때문에 개발을 거의 못했습니다.
이 둘이 없으면 사실상 제대로된 프로젝트를 시작할수 없습니다.
하지만, 교육 과정에서 이 2가지를 못배웠기 때문에 팀 구성원들끼리 이를 공부하고나서야 본격적으로 프로젝트를 시작할 수 있게 되었습니다.
당시(2012년)에는 Git이 굉장히 생소해서 SVN을 버전 관리 시스템으로 선택하고, Javascript는 jQuery와 한몸처럼 움직이던때라 jQuery를 공부하였습니다.
팀 프로젝트 기간 동안은 시간이 너무 부족해서 기간내내 학원에서 먹고 자는 생활을 했습니다.
학원에 마땅히 수면 공간이 없어서 책상에 엎드려서 자는데 아침마다 배에 가스가 가득차서 매일 컨디션이 안좋았습니다.(안 믿기시겠지만..)
지금 생각해보면 오히려 효율만 떨어졌음에도 계속 학원에서 잤던 이유는 "개발자라면 이래야지"와 같은 낭만을 갖고 있었기 때문인것 같습니다.
이걸 보시는 분들은 이러지마세요.
진짜 효율이 안좋습니다.
이렇게 보면 되게 프로젝트 기간내내 열심히 코딩했다고 생각하시겠지만, 실상은 전혀 그렇지 않았습니다.
2.5개월이란 시간 동안 가장 많이 한 일은 인터넷에서 돌아가는 코드를 찾아서 붙여넣기였습니다.
Java를 비롯해서 Spring, jQuery, HTML, SQL 등을 전혀 이해하지 못한 상태에서 마감 일정만 정해져있으니 뭐 어떻게 돌아가는지도 모른채 복사 & 붙여넣기만 계속 할 수밖에 없었습니다.
백기선님의 블로그와 최범균님의 스프링을 참고해서 어떻게든 만들긴 했지만 마지막 최종 시연 발표를 하고 너무 아쉬웠습니다.
고생은 고생대로 다했지만, 서울까지 올라와서 몇 백만원(생활비 포함)을 쓰면서 얻은거라곤 압축 파일로된 팀 프로젝트와 PPT가 전부였습니다.
물론 이 과정을 듣지 못했다면 개발자로서 시작 조차 못했겠죠.
하지만 굉장히 아쉬웠습니다.
이렇게 6개월을 보내면 진짜 좋은 개발자가 될 수 있나요?
지금 다시 생각해도 너무나 아쉬움이 많았던 6개월이였습니다.
여기까지는 제 경험담이며, 아래는 국비교육 수강 예정이신 분들을 위한 이야기입니다.
1-3. 국비교육 진행시 팁
첫번째는 주제 선정에 절대 정성을 쏟지마세요.
어차피 그 주제와 아이디어로 사업 하지 않습니다.
서류와 면접을 진행하는 시니어 개발자분들이 여러분의 포트폴리오가 얼마나 기획이 참신하고 UI가 화려한지를 보지 않습니다.
한 줄이라도 직접 짠 코드를 보고 싶어하세요.
주제 선정에 2주 이상 사용하게 되면 이후 프로젝트 기간이 너무 힘듭니다.
2~3일안에 주제선정을 끝내신 후, 최대한 빠르게 개발을 시작 하시는것을 추천드립니다.
두번째는 되도록이면 팀 프로젝트를 하지 마세요
강사님이나 교육센터에 요청해서 가능하다면 개인 프로젝트를 진행하세요.
외로울수는 있겠지만, 교육 수료후 본인에게 도움 되는건 직접 고민하고 개발했던 내용들입니다.
간단한 CRUD 게시판을 만드세요.
게시판을 만들면서 Github과 테스트 코드 작성을 연습하세요.
시간이 된다면 이 과정을 블로그에 남겨보세요.
취업준비할때 가장 강력한 무기가 됩니다.
1-4. 국비교육 들을까 말까?
개인적으로 주변 동생들에게 항상 하는 얘기인데, 국비교육보다는 알바로 돈을 모아서라도 코드스쿼드 와 NextStep 교육을 추천합니다.
(코드스쿼드에서 몰래 뭘 받았다거나 하는건 전혀 없습니다.)
재작년, 작년에 코드스쿼드의 박재성 교수님 교육을 받으면서 처음에 이 교육을 받았으면 훨씬 수월하게 커리어를 쌓을수 있었겠다는 생각을 계속 했습니다.
(쓴 돈만큼 얻어가는건 불변의 진리인것 같습니다.)
비전공자분들은 이쪽 계통의 선배나 동료가 없습니다.
그렇다보니
- 좋은 멘토
- 좋은 동료
- 올바른 학습방법
이 3가지를 어떻게든 찾아야 합니다.
하지만 국비교육에서 이를 얻기는 쉽지 않습니다.
특히 수강생들 사이에서 좋은 학습 문화 구성하기가 정말 어렵습니다.
공짜는 절박함의 허들을 낮춥니다.
개발자가 되고 싶다는 절박함을 가지신 분들도 계시겠지만, 그냥 오시는 분들도 정말 많이 봤습니다.
유료 교육을 계속 지지하는 이유가 이 때문입니다.
어차피 교육센터는 인원만 채우면 국가에서 돈을 주기 때문에 교육 시작 이후로는 관리에 굉장히 소홀합니다. (주변의 친한 동생들이 팀프로젝트를 혼자서 다 진행하는걸 보고 확신했습니다.)
100~300만원이란 금액은 절박함을 가지신 분들과 그냥 오시는 분들을 거를 수 있는 약간의 허들이 됩니다.
절박함과 목표가 뚜렷하신 분들끼리 모여 좋은 멘토를 만나게 되면 큰 시너지가 발휘됩니다.
제일 큰 장점은 본인의 목표치가 달라집니다.
일단 취업하자에서 "나도 네이버/카카오/라인에 입사할 수 있다" 로 변합니다.
같이 공부한 동료가 좋은 회사로 취업하면 자연스레 변화가 시작됩니다.
그래서 6개월간 공짜로 국비교육 받기 보다는 3개월 알바를 한뒤, 3개월간 유료 교육 기관 수강하시는 것을 훨씬 더 추천합니다.
코드스쿼드에서 TDD, 클린코드, 코드리뷰 등의 좋은 학습방법과 네이버/AWS등에서 활동하신뒤, NHN Next에서 교수로 계셨던 좋은 멘토님들 등은 너무나 잘 알려진 내용이기 때문에 굳이 언급하지 않고 좋은 동료에 대해서만 얘기했습니다.
여담이지만, 지금 돌이켜 생각해보면 진짜 제대로된 자바 백엔드 개발자 커리큘럼이라면 아래 내용들이 무조건 포함되있어야 한다고 생각합니다.
- Git & Github
- Unit Test
- Linux
- Shell Script
(Java & Spring & 데이터베이스는 당연히 포함되어있다고 가정합니다.)
이 외에 나머지 과목이 포함되어있으면 진짜 커리큘럼에 신경안쓰는 교육기관입니다.
예를 들어 자바 백엔드 개발자 과정인데 안드로이드가 포함되어있으면 커리큘럼을 전혀 신경 안쓰는 교육 기관입니다.
마찬가지로 교육 과정 타이틀과 내용에 NCS, 머신러닝, 빅데이터, IOT, 가상화폐 등의 단어가 포함되있으면 믿고 거르셔도 됩니다.
유행하는 단어를 무작정 추가한것 뿐입니다.
국비교육센터를 선택하셔야 한다면 위에서 언급한 내용을 꼭 확인해보세요.
1-5. 마무리
어떻게 하다보니 국비교육을 굉장히 비판하게 됐네요.
이건 어디까지나 몇년 전에 저와 제 주변 지인들의 경험을 토대로 한 이야기라 요즘과는 많이 차이날수 있습니다.
지금은 많이 다를거라 조심스레 추측합니다.
패스트캠퍼스에서 Java 웹 프로그래밍 마스터 과정이 신설됐습니다.
담당 강사이신 김성박님이 워낙 개발자로서/강사로서 유명하시기 때문에 이 강좌도 한번 고려해보셔도 좋을것 같습니다.
참고: 즐거운 자바
최근에 남궁성님이 진행하시는 국비 교육은 기존 국비교육과 달리 커리큘럼과 학습 문화 둘다 잘되어있다고 들었으니 참고하세요!
다음편에선 본격 취준생활에 대한 이야기를 전달드리겠습니다.
감사합니다^^