- Published on
시니어 개발자의 중요한 3가지 (번역)
- Authors
- Name
- Luffy Yeon
시니어 개발자의 중요한 3가지
정말 오랜만에 블로그 쓰기를 다시 시작하려고 한다. 핑계를 대자면 올해 3월 결혼을 하게 되며 준비하는 동안 너무나 정신없는 시간을 보냈던 것 같다. 신혼여행을 다녀 오고 나서 다시 회사로 돌아와 내가 자리에 없는 동안 일 처리가 문제없이 잘 돌아가는 모습을 보며, 한편으로는 든든한 동료들을 두어 다행이라는 생각과 다른 한편으로는 내가 없어도 회사는 잘 돌아가는구나... 서비스 리드로서 나는 지금 잘해 나가고 있는 것인가에 대한 회의감이 들었다.
그러다 기술 블로그 글 중 3 things the best senior developers do 이라는 제목의 글을 보게 되었고, 어떻게 하면 앞으로 더 잘해 나갈 수 있을지 알아보고 더 잘해 나가기 위해 해당 글을 번역해보는것으로 블로그를 다시 시작해 보려 한다.
해당 글은 한 외국 개발자분이 주니어 개발자로서의 시간을 보낼 때 좋은 경험을 만들어 준 두 명의 선배 시니어 개발자의 특성을 정리한 글이다.
| 해당 내용은 개인적인 공부를 위한 글로 오역 및 개인적인 의견이 반영된 내용이 있을 수 있으니 참고하여 주시기 바라며 문제가 되는 내용이 있는 경우 메일로 피드백 부탁합니다. 또한 원글의 일부만 가져와서 축약 및 번역하였음을 알립니다.
Senior Evelopers
시니어 개발자라는 칭호를 얻은 사람들은 개발이라는 전쟁을 긴 낮과 밤을 지내며 이겨내고 극복한 사람들이다. 그들은 모든 문제에 대해 처리하고 모니터링하며 위험들을 처리한다. 하지만 혼자서는 모든 위험을 처리할 수 없다. 효율적인 처리를 위해서는 위험에 대한 처리를 다른 사람들에게 위임해야 하며 누구에게 처리를 맡길지에 대한 선택을 해야 한다. 이 선택은 시니어 개발자에게도, 선택 받은 주니어 개발자에게도 새로운 도전이 될 것이다.
Essential traits
하나의 프로젝트 또는 여러 프로젝트를 감독해야 하는 책임은 스트레스를 받는 일이다. 여기서 시니어 개발자는 본질적으로 주니어 개발자(아기)를 돌봐야 한다고 생각하는 것은 미친 짓이다. 성공적인 시니어 개발자가 가져야 할 가장 중요한 3가지 특성은 다음과 같다고 한다.
- Attentiveness
- Patience
- Optimism
Attentive
주니어 개발자가 말할 때 멀리서도 주의를 기울여야 한다. 모든 세부 사항이 꼭 필요한 것은 아니지만 매일 시니어 개발자와 함께 확인하는 것만으로도 좋은 경험이 될 수 있다. 함께하는 일들이 거창한 몸짓일 필요는 없고 단지 몇 마디의 안내 또는 따뜻한 응원이 주니어 개발자가 일 처리를 하는 데 큰 도움이 된다.
Patient
종종 팀의 시니어 개발자는 마감일에 직면하는 사람이다. 그들은 "큰 그림"의 관점에서 전체 프로젝트를 보기 때문에 다른 누구보다 먼저 마감일을 놓친 것에 대한 일정을 예측할 것이다. 이러한 부담에도 최고의 시니어 개발자는 팀과 함께 큰 인내심을 보이면서 균형을 맞춰야 하며, 자신의 방식으로 솔루션을 발견하는 데 필요한 시간을 제공해 주어 마감일에 직면한 프로세스에서도 자신을 포함한 주니어 개발자도 좋은 개발자로 성장할 수 있도록 한다. 여기서 시니어 개발자의 인내는 외부에서의 "글쎄, 왜 아직 끝나지 않았지?"와 같은 질문 공세를 흡수하여 보살핌을 받는 사람들이 조용한 환경에서 일에 집중할 수 있도록 해주는 능력이다.
Optimistic
여기에서 낙관주의는 순진한 낙관주의를 의미하지 않고 믿음의 한 유형을 의미하며, 프로그래밍에는 실용주의의 분위기가 필요하다. 주니어 개발자들이 장애물을 극복할 수 있다는 믿음, 장애물에 막힌다면 물어볼 것이라는 믿음, 유능한 개발자가 되기 위해 필요한 학습 리소스와 로드맵을 제공할 수 있는 자신의 능력에 대한 믿음. 아이가 처음 자전거를 탈 때 아버지가 보여주는 일종의 자제력으로 아이가 성장하고, 강해지고, 발전하고, 발전하기 위해서는 실패할 공간을 남겨두어야 한다는 것을 알고 있다. 여기서 참고 이겨낸다면 그들은 성공할 것이라는 것을 알고 있다.
Some examples
글쓴이가 겪은 일 중 하나의 예로 익숙하지 않은 환경에서 일주일 동안의 시간을 낭비하며 진행조차 잘되지 않는 상황에서 시니어 개발자 선배가 그 상황에서 글쓴이에게 취한 행동이다.
- 개발적으로 지배하려 들지 않았다.
- 낭비한 시간에 대해 절대 불평하지 않았다.
- 정기적으로 함께 확인을 해주었다.
- 많은 옵션을 탐색할 수 있도록 시간을 제공해 주었다.
Results
여기에서 결론은 원글이 아닌 나의 생각을 정리해 보고자 한다. 윗글은 시니어 개발자로서의 기술적인 역량보다는 매니저 측면에서의 역량에 대한 역할을 정리해 준 글이었다. 개인적인 느낌으로 내용을 요약하자면 주니어 개발자의 작업을 함께 확인해 주며 개발적으로의 지시보다는 많은 옵션에 대한 선택권을 주고 본인이 해결할 수 있는 시간적 여유를 주도록 프로젝트 일정 및 외부에서의 압박을 막아주는 역할의 중요성을 말해주는 것 같았다. 방금 내가 말한 시니어 개발자의 역할의 중요성은 내가 주니어 개발자로 일할 때도 함께 일하였던 팀장님들에게 바래왔던 역할이었던 것 같다. 예전 나의 팀장님은 어땠었는지도 생각해 보다가 그것보다는 현재 내가 프로젝트 리드를 하며 이 역할을 잘 수행해 내고 있는지가 더 중요한 것 같다.
아직은 나도 중니어(?) 정도의 경력에 리드를 해 본 경험이 길지 않다 보니 아직은 위에서 말한 역할에 대해 많이 미숙하다는 생각이 든다. 위에 정리한 글을 다시 읽어보며 내가 주니어 개발자 때 원했던 시니어 개발자 선배는 어떤분이였는지를 생각해 보며 앞으로 더 좋은 시니어 개발자가 되도록 노력해야겠다. 그리고 시니어 개발자로서 기술적 역량은 어떤 것이 필요한지에 대해서도 다시 한번 생각해 보고 정리해 보아야겠다.
[Ref]: