개발 학습 방법에 대한 나의 원칙
- 가급적 공식문서, 명세서(RFC), 책을 통해 정보를 얻는다.
- 탑다운과 바텀업 방식을 적절히 섞는다.
- 배운 것은 무조건 블로그에 정리한다. 그리고 피드백을 받는다.
- 학습해야 하는 것을 더이상 나눌 수 없는 작은 단위로 나누어 학습한다.
개발 학습법과 별개로 내가 개발을 시작하게 된 순간부터 왜 이 글을 쓰게 되었는 지에 관해 이야기하려고 한다.
개발을 시작하게 된 순간
나는 의료IT공학과를 전공했다.
학과는 C언어부터 Java, DB, 운영체제, 네트워크, 소프트웨어 공학 등 컴퓨터공학과에 못지 않은 커리큘럼을 가지고 있었다.
(지금은 학교에서 IT 쪽으로 밀어주는 사업에 속해서 커리큘림이 많이 바뀐 것으로 알고 있다.)
하지만 학과 자체적으로 프로젝트를 시킨 적은 없을 뿐더러, DB나 소프트웨어 공학은 외부 강사를 초빙해서 한 과목을 모두 마치는 식으로 진행됐다.
심지어 개발자를 꿈꾸게 된 4학년 전까지는 이런 지식을 왜 배워야 하는지에 대한 내용 없이 그냥 학점을 위해서 공부를 했다.
4학년 2학기 본격적으로 개발자가 되기 위해서 움직였다.
학교에 남아서는 더이상 배울 게 없다고 생각해서 기업 현장실습을 곧장 지원해서 서울로 상경하게 됐다.
그럼에도 배움과 성장에 대한 갈망은 더욱 커져서 싸피, 우아한테크코스 등 지원할 수 있는 부트캠프는 모두 지원했다. 간절했던 덕인지 우아한테크코스 5기 웹 백엔드 과정에 최종합격했다.
개발 학습법에 대해 혼란을 시작하게 된 순간
우아한테크코스 덕분에 밀도있는 교육 들을 수 있었고, 그곳이 아니라면 하기 어려웠을 경험들(코드리뷰, TDD, 진짜 고수들 사이에서 같이 학습하기, 기획부터 배포, 운영까지 한 사이클 경험 등)을 할 수 있었다.
이때부터 '나의 개발 학습 방법'에 대해서 많이 혼란스러웠다.
주변에는 이미 괴물같은 동료들만 있었고, 그들과 나는 같은 레벨이 아님에도 불구하고 내 똑바로 인식하지 못하고 그들의 수준에 맞추어 학습을 했던 것 같다.
그래서인가? 우아한테크코스를 수료하고 나면 소위 '네카라쿠배'에서 모셔갈 줄 알았다. (너무나도 오만한 생각이었다..)
사실 나는 그저 Java 언어를 잘 활용해서 코드를 객체지향적으로 이쁘게 작성하고, 지속적인 리팩터링으로 코드를 개선해나가는 과정이 너무 재밌어서 개발에 푹 빠져있었는데, 주변 크루들은 정말 "소프트웨어 개발"을 하고 있었다.
어떻게 보면 나는 그때부터 처음으로 개발에 관한 학습을 했던 것 같다.
취준, 취업, 권고사직
우아한테크코스를 수료하고 내 오만한 생각을 짓누르듯, 취업은 쉽지 않았다.
그래서 기존에 했던 내용은 제쳐두고 새로운 프로젝트를 하나 더 했다.
지금 생각하면, 우아한테크코스에서 했던 내용들을 더 깊게 파고들어서 학습하고 정리했더라면 어땠을까? 싶은 생각이 든다.
1년 만에 취업을 하게 됐고, 그곳에서 약 10개월 동안 Flutter로 앱 개발과 Spring으로 백엔드 개발을 같이 진행했다.
사실 10개월 중에 8개월은 Flutter만 한 것 같다.
그리고 스타트업 특성상 무엇 하나를 깊이 있게 하기 보다는 기능 쳐내기에 급급했다.
경영악화로 권고사직을 당하고, 약 두 달동안 방황 아닌 방황을 했다.
내 진짜 꿈을 난생 처음으로 찾게 됐고, 그 꿈을 위해서 직업을 바꿔야 하나 한 달간 진지하게 고민도 했다.
결국에는 개발자를 이어서 하는 게 맞다는 결론이 섰고 지금은 다시 개발자로 취업하기 위해 준비하려고 한다.
또 다시 개발 학습법에 대한 혼란
사람들은 항상 "깊이 있는 지식이 중요해. CS 지식이 중요해." 라고 한다.
나도 동의하는 바이다. 그런데 깊이는 어디까지 깊어야 하며, CS 지식은 무엇을 뜻하는 지가 참 애매했다.
그것을 알려주는 사람은 아무도 없었던 것 같다.
그래서 나는 항상 고민했다. "뭐 하나를 학습할 때 어디까지 깊이 있게 해야 하지?", "CS 지식만 공부하기에는 너무 지루하고 정작 실무에서 필요한 내용인가?" 라는 생각이 늘 가득했다.
이 생각에 대한 해답이 지금까지는 명확하게 내릴 수가 없었다.
지금도 마찬가지다.
그래서 나는 이번 기회에 나만의 학습 방법 기준과 철학을 세우고, 기록하여 또 다시 혼란스러울 때 기록한 것을 기준으로 삼으려고 한다.