어딘가의 커뮤니티에 쓴 답글.

2024.06.10

저는 2006년부터 개발자로 일을 하기 시작했는데, 2년 반 정도만 사수가 있어요. 그 다음에 곧바로 개발팀장이 되었고, 그 이후에는 두번 창업을 해서 CTO로 10년 정도를 일했어요. 이제는 시니어 취급을 받게 되었네요...

그런 면에서, 사수가 없는 상황에서 어떻게 스스로 역량을 키워나갈 것인가라는 측면이 저에게는 더 익숙하긴 합니다.

하지만 사수가 있는 상황에서도 이런 자가발전 능력(?)이 있는게 도움이 될 것 같기도 해요.

제게 제일 도움이 되었던건, 스스로의 실수 때문에 죽어라 고생해본 경험이었던듯 해요. 왜 그렇게 해야 하는지, 왜 그게 올바른/바람직한 방법인지를 하나 하나 겪으면서 깨달아갔다고 할까...

하지만, 제가 지난 1년간 170개의 개발자 지원 서류를 보고, 그중 한 50분 정도와 커피챗을 하고, 그중 한 30분 정도와 라이브 코딩 테스트를 하면서, 그것만(고생고생한 것)으론 부족한 것 같더라고요.

6~7년 간을 프리랜서로 혼자서 고생고생하면서 개발해온 분인데도 실력이 너무 성장하지 않은 경우도 봐서요. 반면에 잘 하시는 분도 있었고.

제 경우에는, unit test + refactoring이라는걸 만난 것이 개발에서의 분수령이었던 것 같아요.

또, 2003년쯤부터 창준님 글들도 많이 봤었고. 노스모크, Xper, 마이크로소프트웨어에 기고하신 글들도 좋은 가이드가 되었고.

훈련에 유리한 환경

아, 그리고 첫 직장에서 했던 일들이 좀 독특한 환경이었는데, 한 회사 안에서 프로젝트성 일도 했었고 제품 일도 했었어요.

보통 SI나 웹에이전시 분들은 '아, 좀 지속성 있는 일을 하고 싶다'는 것에 갈증을 느끼시고, 하나의 제품이나 서비스를 쭉 만드는 분들은, '아, 이 서비스는 이미 틀이 잡혀있어서, 내가 뭔갈 해볼 여지가 많지 않다.'는 것에 갈증은 느끼시는데, 저는 두 경우를 골고루 경험해볼 수 있었어요. 두 종류의 학습 환경에 처해있었던 거라고 볼 수 있을 것 같아요.

그러면 이런 환경에 처해있지 않다면, 회사의 업무가 이렇지 않다면 어떻게 할거냐. 내가 그런 환경을 만들 수 있을 것 같아요.

이를테면, 업무 안에서 내 나름의 프로젝트를 (몰래/업무의 연장선상에서) 할 수 있을 것 같아요. 이를테면 뭔가 자동화 스크립트나 유틸리티를 만든다던지요. 그런 경험들을 회사의 서비스/제품 개발에 적용해볼 수 있을거고요.

이런 저런 창의적인 시도를 통해서, 나의 학습에 유리한 환경이 되도록 만들 수 있을 것 같아요.

사수에게 효과적으로 배우기

원래 하셨던 질문으로 돌아가서, '그럼 사수에게 어떻게 효과적으로 배울거냐'를 생각해보면,

제 경우에는 제 팀장이, 자기가 하는걸 많이 보여줬었어요. 자리가 옆자리였는데, 각자 일 하다가 가끔 '잘 돼요?' 물어보고, 잘 안되는게 있으면, '봐봐요'하고 같이 보다가, 자기가 키보드 가져가서 '이리 줘봐요' 하고 자기가 막 고쳤어요 ㅎㅎ 보다가 졸기도 하고. 그러면 '형이 졸면 어떻게 해요. 내가 형 일을 해주고 있는건데' 하면서 혼나기도 하고. 그게 효과적인 도움이었다고 생각하지는 않는데 - 좀 더 효과적인 방법이 있을거라고 생각하기는 하는데, 그 시연(?) 과정에서, 그가 하는 방법, 특징적인 것들을 관찰할 수 있었어요.

이를테면, 저는 제가 짠 부분 안에서만 go to definition을 했었는데, 팀장은 라이브러리의 소스 코드 안쪽까지 go to definition을 해서 보면서, '이건 얘가 잘못 짰구만' 하기도 하고. 저한테는 대단해보였죠. 그리고 당시에는 Java를 썼었는데, 팀장이 제 개발환경에 와서 작업하고 도와주다가 발견한 비효율등 - source jar를 일일이 다 붙여놔야 한다던지, 단축키를 커스터마이즈한다던지. 이런 팁들을 많이 배웠죠. 각자 일을 했더라면 팀장도 제 개발환경이 어떻게 되어있는지 알 수 없었을거고, 그 안에 비효율이나 개선점을 이야기해주지 못했을거고, 저도 팀장이 어떻게 개발하는지, 저렇게 하는거구나 하는걸 알 수 없었을거예요. 그런 면에서 저는 요즘의 Pull Request 방식의 코드리뷰는 매우 잘못된 협업 방식이라고 생각해요. 과정을 같이 하지 않고 결과만 가지고 논하는 방식이라는 점에서요.

저는, 주니어의 학습에 도움이 되는 측면에서 좋은 사수는 자신의 머릿속을 잘 끄집어내어 설명해주는 사람이 아닐까 싶어요. 이런 사례도 있고.

나는 왜 B라고 생각하게 되었는지, 아, 나도 A 방향으로 검토를 하긴 했는데, 이러이러한 점에서 B라고 생각을 바꾸게 되었다. 같은...

반대로, 그걸 잘 안해주는/못하는 사수라면, 내가 그런걸 끄집어낼 수도 있겠죠. '혹시 A 방향으로는 생각을 안해보셨나요?' '있었죠.' '그럼 B로 생각을 바꾸게 되신 어떤 시점이 있을 것 같은데, 어떤 것이었나요?' 처럼요.

제가 최근 2~3년간 여러 주니어 팀원 분들에게 공통적으로 이야기하게 되는 것들을 좀 기록해보기 시작했는데, 아마 시니어 분들은 자신만의 이런 secret ingredient가 있을 것 같습니다. 본인이 형식지로 정리해서 표현하지 못한다 하더라도요. 이런 것들을 끄집어내면 도움이 될 수 있겠네요. Apprenticeship Patterns도 도움이 되실 수도... '프로그래머의 길, 멘토에게 묻다'라는 제목으로 번역되어 있습니다.

다시 원래로 돌아와서, '그럼 사수에게 어떻게 CTA를 잘 해서 효과적으로 배울거냐'를 생각해보면, 제가 CTA를 잘 써먹어본 적이 없어서... ㅎㅎㅎ

하지만 제가 누군가에게 배워야 하는/배울 수 있는 상황이고, 가끔씩 제한된 시간을 그분이 나에게 내어줄 수 있다면... '저랑 잠깐 지금 같이 해봐주실 수 있나요?' 같은 접근을 할 것 같아요.

그러고 보니 생각나는게, 전에 한 20~30억짜리 큰 SI 프로젝트에 저희 회사 제품을 공급한 적이 있었는데, 그 제품이 계산한 결과를 가지고, 그걸 웹페이지에 디자인을 입혀서 퍼블리싱을 해야 하는 일이 있었거든요. 그때 프로젝트 총괄 디자이너분이 저희 회사 디자인을 도와주셨는데,

둘이 같이 side-by-side로 앉아서, 이 부분은 이렇게, 저 부분은 저렇게 같이 의논하면서 바로바로 디자인 시안에 고쳐서 반영하고, 디자인이 확정되자 '잠깐만요. 퍼블리싱까지 금방 해서 드릴께요' 하시더니, 디자인 이미지를 웹페이지의 배경으로 깔고, 그 위에 마치 tracing paper를 얹은 것처럼 html 요소들을 막 얹어서 뚝딱뚝딱 퍼블리싱해버리시더라고요. 그 1~2 시간이 저는 정말 놀라웠어요. 와, 이렇게 자기 툴을 손발처럼 자유자재로, 머리에 상상하는걸 손이 느려서 방해하는게 아니라, 생각의 속도로 구현해내는게 놀랍다. 그리고 tracing paper 위에 그림을 그리듯이 퍼블리싱한다는 발상도 놀랍다 하면서 엄청 감탄했었었요.

어떤 면에서는 제 팀장이 저랑 같이 작업을 해줬던 것도 그런 경험이었을지 몰라요.

내가 한걸(결과물) 가져가서 리뷰 받고 하는 것도 도움이 될 수 있겠지만, 반대의 방향으로, 그 사람이 하는 것(과정)을 지켜보면서, 가끔씩 '어? 여기서 어떻게 그렇게 넘어가죠?' '여기서 뭘 생각하셨어요?' 처럼 그 사람의 머릿속에서 일어나는 일들을 포착하시면 그것도 굉장히 많은 도움이 되시지 않을까 싶네요. '어차피 저한테 리뷰를 해주시면서 시간을 쓰시는데, 그 시간을, 제가 ㅇㅇㅇ님이 작업하시는 것을 같이 보면서 중간 중간 궁금한 것들을 질문해도 될까요?' 같은?

내가 내 속도에 맞추어서, 자전거 몇 걸음 타다가 쓰러지고, 몇 걸음 타다가 쓰러지다가, 비틀비틀 좀 더 갈 수 있게 되다가, 좀 더 멀리 탈 수 있게 되는데, 그렇게 걸음마 배우듯이 가다가, 어느날 사이클 선수들이 자전거 타는걸 보고 뒤통수를 얻어맞는거죠. '아, 내가 우물안 개구리였구나.' '아, 다리를 저렇게 쓰는거구나. 상체도 저렇게 하는거구나. 와, 공기 저항을 줄이기 위해서 저렇게까지 하는구나.'

또는, '제가 하는걸 좀 지켜봐주시다가, 나중에 코멘트해주실 수 있을까요?'라던지, think aloud를 하면서 개발하는걸 녹화한 다음에, 그걸 좀 봐달라고 하거나 - 이건 그분이 시간을 좀 쓰셔야, 화면을 하염없이 보고 계셔야 할거라, 어떨지 좀... 하지만 그분이 ㅇㅇ님이 뭘 어떻게 생각하시는지 파악할 수 있는 방법일 것 같기도 해요.

개발실력 키우기 (last edited 2025-07-17 09:16:50 by 정수)