sungyup's.

becoming_a_better_programmer / 부록: 국내 개발자 8인의 이야기 / 2.3 개발자의 학습, 성장에 관하여

2.3개발자의 학습, 성장에 관하여

토스, 이소영님의 이야기

정의하기

단순히 '훌륭한 프로그래머가 되어야지'로는, 프로그래머의 훌륭함에 대한 정의도 없는데 어떻게 목표를 달성할 것인가?

개발자의 성장이란 무엇일까? 그리고 내가 성장하고 있는지를 어떻게 측정할 수 있을까?

이소영님은 이 질문에 대한 본인만의 답을 찾는 것이 성장의 첫걸음이라고 한다. 또, 본인은 최초 정의를 '나만의 관점이 많아지는 것'이라고 내렸다고 한다.

무엇을 학습할 것인가

정보의 홍수 속에서 학습할 것을 고르는 것은 어려운 일이다. 중요도에 대한 판단을 어떻게 할 것인가? 외부에 의존한 선택은 현재 내 고민과 맞지 않을 수 있고, 그러면 흥미가 떨어지기 쉽다.

그러니 학습을 위한 학습이 아니라 문제 해결을 위한 학습부터 해보자. 회사 업무, 개인 프로젝트 등을 하다보면 시간이 부족해서 완전히 이해는 못했는데 얼렁뚱땅 해결이 된 경우가 있을 것이다. 이런 순간들을 지나치지 않고 완전히 이해가 될 때까지 학습의 꼬리를 물다보면 넓은 범위의 지식을 습득할 수 있다.

집중할 영역, 집중하지 않을 영역

쏟아지는 '모르는 것들'을 전부 익힐 수도 없고, 익힐 필요도 없다.

동시에 여러 개의 영역을 깊이 있게 익힐 수는 없다. 집중하지 않을 영역에 과감하게 무관심해야 집중할 영역에 확실히 집중할 수 있다.

창조하려고 하지 않기

나에게서 창조하려고 하지 말고 오픈 소스나 다른 동료가 작성한 코드에서 답을 찾는 과정을 통해 경험을 확장시킬 수 있다.

물론, 답을 단순히 베끼지 말고 코드를 읽고 이해해야 한다. 좋다고 생각하는 패턴이 있다면 반복해서 사용해 내 것으로 만들자.

가장 강력한 무기는 꾸준함

꾸준하게 하는 것은 그 강력함 만큼이나 실천하기 어렵다. 억지로 꾸준하게 하려는 것은 대부분 실패한다. 다른 우선순위에 밀리지 않을 동기부여를 주는 일이 꾸준히 하기 쉬운 일이다.

해결하는 것보다 더 중요한 것

개발 역량에서 종종 중요한 것으로 거론되는 것이 문제 해결 능력이다. 하지만 해결에만 집중하면 모든 코드와 기능이 비용이라는 사실을 간과하게 된다.

그래서 문제를 해결하는 것보다도 사실 더 중요한 것은 이 문제를 해결해야 하는지, 해결했을 때 오히려 비용이 더 커지지 않을 것인지 생각해보아야 한다.

사소한 습관들

이소영 님은 '어떻게 하면 좀 더 잘할 수 있을까?'를 고민하며 찾은 본인의 습관들을 소개한다.

루틴 찾기

집중이 잘 되는 시간에 할 일, 덜 되는 시간에 할 일을 나누었다. 오전 시간에는 코드나 문서 리뷰, 인터뷰 정리를 한다. 점심 시간에는 사이드프로젝트나 스터디를 한다. 가장 집중이 잘 되는 오후 시간에는 설계 방향, 코드에 대한 고민을 한다.

셀프 코드 리뷰

잘 읽힌다는 것은 무엇일까? 타인의 관점에서 내 코드를 읽어보면 감이 온다. Pull Request Draft 상태에서 리뷰어의 시각으로 내 코드를 다시 보는 과정을 거치면 문제들을 많이 발견할 수 있다.

구현은 가장 나중에

방향 없이 코드를 내뱉다 보면 다 완성하고 나서야 틀린 방향이라는 것을 깨닫고, 잘못된 방향에서 진행하면 수정하기도 어렵다.

따라서 코드를 작성하기 전에 방향성을 먼저 잡는다. 구현하는 대로 생각하지 않고 생각한 대로 구현할 수 있다.

용감한 수정

무엇이 되었든, 무조건 정답일 거라는 생각은 무조건 틀리다는 생각만큼 위험하다.