성공적으로 개발 공부를 잘 하는 방법, 입사 후에 더욱 발전할 수 있는 방법
Session
- 같이 하는 개발 공부
- 입사를 하기 전
- 입사를 한 후에
같이 개발 공부를 잘 하는 법
- 보통의 개발 스터디
- 책 한 권을 정한다.
- 각자가 공부할 파트를 나눈다.
- 각자가 공부한 내용을 세미나를 통해 공유한다.
- 보통의 개발 스터디의 문제점
- 각자가 공부한 내용을 공유한다면 사실 그 사람이 대단히 설명을 잘 하는 사람이 아니라면 쉽게 이해하기가 어렵다. 그래서 자신이 공부한 파트를 제외하고 다른 파트는 이해하지 못하고 넘어가게 된다.
- 별로 쓸모가 없는 공부 방법이다. 왜냐하면 프로그래밍은 책 한 권을 발표하는 것으로 공부가 되는 것이 아니기 때문이다.
- 개발 스터디를 개선하는 방법
- 하나의 책은 책대로 각자가 공부한다. (즉, 모두 기본 지식은 가지고 있다는 전제)
- 공부할 부분을 정하여 모두가 같은 분량을 공부한다.
- 단, 그 내용 안에서 응용 기술 부분에 대해서 더 깊게 공부할 부분을 나눈다.
- 각자가 담당한 응용 기술 부분에 대해서 더욱 깊게, 왠지 실무에서 쓸 거 같은 거를 엄청 딥하게, 하드코어하게 공부한다.
- 내가 그 응용 기술 부분에 대해서 발표를 했을 때 상대방이 자극을 받을 수 있게 한다.
- 우와 신기하다.
- 그게 그거였어?
- 하지만..!
스터디보다는 ‘알바(외주)’ 를 추천한다!
- 공동 프로젝트를 진행하는 데 있어서 ‘무엇을 만들까?’를 정하는 것이 가장 어렵다.
- 너무 큰 프로젝트를 선정한다면 목표가 흐지부지 되며, 금방 지친다.
- 알바(외주)
- 돈이 관련되어 있기 때문에 압박감이 생겨 프로젝트를 빨리 빨리 진행할 수 있다.
- 하지만, 돈이 목적이 아닌 일을 목적으로 생각하자.
- 간단한 어플이든 유틸리티든 공동으로 프로젝트를 꾸준히 진행하는 것이 좋다.
평생을 같이 개발할 수 있는 ‘소울 메이트(개발 파트너)’ 나 그룹(2~3명)을 만들어라!
- 이게 없으면 혼자서는 기술적으로 상승하기 어렵다.
- 혼자서 계속 개발할 수 있는 사람이더라도 적어도 커뮤니티 활동이라도 계속해라!
- ‘소울 메이트(개발 파트너)’
- 친한 사람이 아니라, 목표 의식과 비전과 의지가 같은 사람 이어야 한다.
- 실력은 달라도 된다. 아니, 다른 것이 조금 더 좋다.
- 얼굴을 자주 볼 수 있는 친구가 좋다.
- 개발만 같이 하는 친구일 수 없다. 친구이면서 개발도 같이 하는 것이 좋다.
- 평생을 같이 쌓아가야 할 친구이기 때문에 이성 소울 메이트는… 좋지 않다.
- 대표적인 사례)
- apple(애플): 스티브 잡스와 스티브 워즈니악
- hp(휴렛팩커드): 휴렛과 팩커드
- MS(마이크로소프트): 빌 게이츠와 폴 앨런
- 슬럼프가 없는 개발자는 정상이 아니다.
- ‘소울 메이트(개발 파트너)’가 있다면 서로 간에 슬럼프를 잡아줄 수 있다.
- 즉, 서로 간에 지탱이 될 수 있다.
- 공동 프로젝트를 진행하는 것이 좋다. -> 알바(외주) 를 굉장히 추천한다.
입사를 하기 전
- 기본 이론 공부 + 깊이 있는 응용 부분
- 이론적인 정보들이 언젠가 가치를 갖게될 때가 온다.
- 하지만 그런 이론 부분이 응용 부분과 겹쳐지지 않으면 지루해진다.
- 어느 순간 스스로 깨닫는 부분이 있다.
- 기본 이론 공부
- 면접 대비 질문을 정리해서 일주일/한달 코스로 답변을 달면서 대비하자.
- 이 부분은 입사 전에도, 입사한 후에도 꾸준히 자신이 갈고 닦아야 되는 부분이다.
- 자신의 스타일에 따라 기본 이론을 공부한다.
- 가장 큰 키워드 는 기억하라! EX) 제너레이터, 데코레이터, 동기화 객체 등
- EX1) 책을 처음부터 끝까지 읽고 나는 이제 다 알았다. 스타일 (재미가 없다.)
- EX2) 기본적으로 중요한 문법 키워드에 따라 관련 내용 찾아서 익히고, 이게 어디에 쓰이는지 사례를 찾아본다. (알아야 재미가 있다.)
- 깊이 있는 응용 부분
- 가장 좋은 것은, 소울 메이트와 알바(외주)를 통해 프로젝트를 꾸준히 진행하는 것이다.
- 입사 후에도 소울 메이트와 함께 자신이 필요한, 혹은 다른 사람들이 필요로 하는 것을 프로젝트로 꾸준히 진행한다.
깊이 파고 옆으로 넓혀라!
- 우선, 깊이 파라.
- 옆으로 넓히는 것은 나중의 일이다.
- 기본 이론 공부와 더불어 깊이 있는 응용 부분을 진행하자.
- 소울 메이트와 진행하는 프로젝트에서 모든 자동화된 부분 중 일부분을 직접 구현해본다. (입사 후에는 하기 어려운 부분)
- 직접 구현할 수 있는 범위의 DB 클래스를 뽑아내서 직접 구현해본다.
- DB 클래스 설계할 수 있다.
- OOP 개념을 깊게 익힐 수 있다.
- 다른 잘 만든 클래스를 참조하여 어떤 것이 다른지를 비교해본다.
- 나의 허접함과 상대의 천재성을 깨달으며 좌절하지말고, ‘나도 똘똘해져야겠다!’고 생각한다.
시간을 많이 투자하면 프로그래밍을 잘할 수 있다!
- 개발을 잘할 수 있는 방법은 천재여야 되는 것이 아니라 시간을 많이 투자하면 되는 것이다.
- 왜냐하면 좋은 코드는 많은 경험에서 나오는 ‘견고한 아키텍처’와 ‘알맞은 디자인패턴’ 에서 나오기 때문이다.
입사를 한 후에
- 입사를 하게 되면 3~6개월 까지는 놀라운 속도로 기술적으로 발전한다.
- 학교 생활과 다른 회사 생활에 긴장하고, 내 주변에 천재들이 있다는 압박으로 인해 더욱 열심히 하게 된다.
- 하지만 1년쯤 되면 서서히 열정이 식는다.
- CRUD와 같은 작업을 반복하게 되면서 ‘개발이 다람쥐 쳇바퀴 돌듯 다 거기서 거기네’라는 생각을 하게 된다.
- 개발에 재미가 떨어지면서 발전이 더뎌지고 의지가 없어진다.
- 그래도 3년 정도 까지는 노가다를 통해서 계속 발전할 수는 있다.
- 이런 정체기를 극복하기 위해서는
- 평생을 같이 개발할 수 있는 ‘소울 메이트(개발 파트너)’ 나 그룹(2~3명)을 만들고 같이 프로젝트를 진행
- 일상 업무에 코드를 사용해보기
- 노가다를 없앨 수 있는 도구 만들기
- 동료에게 도움이 되는 도구 만들기
- 개발 커뮤니티에 지속적으로 참여
- 회사 내의 동료와 같이 하는 스터디에 참여
- 자신이 공부한 내용을 블로그나 wiki에 정리
- 등등이 있다.
- 평생을 같이 개발할 수 있는 ‘소울 메이트(개발 파트너)’ 나 그룹(2~3명)을 만들고 같이 프로젝트를 진행
결국엔 개발이 재미 가 있어야 한다.
- 사실, 자신이 이런 정체기를 극복하기 위해서는 자신만의 방법으로 계속해서 프로그래밍을 재미있게 만들면 된다.
- 위에서 제시한 것들은 모두 각자가 계속해서 프로그래밍을 하도록 동기를 만드는 방법이다.
- 위의 방법들은 자신이 어떤 선택을 하기 어려울 때의 선택지를 주는 것이지, 정답이 있는 것이 아니다.
- 따라서, 스스로에게 맞는 계속해서 프로그래밍을 할 수 있는 방법을 찾자!
- 단, 이것만은 기억하자!
- 어떤 프로그래밍이든 무조건 재미가 들면 재미있어진다.
- 그 재미가 들 때까지 도달하는 데 오래 걸리는 것이다.
- 주저 말고 어떤 것이든 시작해보자!
추천 책
CODE (하드웨어와 소프트웨어에 숨어 있는 언어) - 찰스 펫졸드 지음
감사 인사
‘스마일게이트 서버개발캠프’의 ‘계동원’캠프장님의 조언에 진심으로 감사드립니다.!