시니어 개발자의 생존 기술 — 코딩 말고 필요한 것들
코딩 잘하는 건 시니어의 필요조건이지 충분조건이 아니다
45살 지금, 나는 과거의 내가 얼마나 착각하고 있었는지 안다. "좋은 시니어 = 코딩 잘하는 사람"이라고 믿었다.
틀렸다. 코딩을 못 해도 훌륭한 시니어는 있다. 반대로, 코딩을 너무 잘해서 사람 관계가 망가지는 시니어도 있다.
이 글은 코딩이 아닌, 나머지 기술들에 관한 것이다.
1. 커뮤니케이션 능력
나쁜 시니어:
- "네, 알겠습니다"만 반복
- 생각을 말로 표현하지 않음
- 팀과 대화하지 않음
좋은 시니어:
- "이 부분이 이해 안 가는데, 설명해주실 수 있을까요?"라고 묻기
- 의견을 논리적으로 제시하기
- 이견을 존중하면서 자신의 의견 말하기
나는 초반 10년을 침묵하며 살았다. 좋은 코드만 짜려고 했다. 하지만 팀은 내가 뭘 생각하는지, 뭘 원하는지 몰랐다.
30대부터 "말하기"를 시작했다. 그 이후로 영향력이 엄청 커졌다.
2. 문서화 능력
시니어는 코드뿐만 아니라 지식을 남긴다.
나쁜 예:
- 중요한 결정이 회의에서만 언급되고 기록 안 됨
- 아키텍처가 "시니어의 머릿속"에만 있음
- 왜 이렇게 디자인했는지 아무도 모름
좋은 예:
- 아키텍처 결정 기록 (ADR: Architecture Decision Record)
- 온보딩 문서 정기 업데이트
- 복잡한 시스템의 다이어그램과 설명
내가 한 프로젝트에 쓴 간단한 아키텍처 문서가, 이후 주니어 개발자 10명을 교육하는 데 사용되었다.
3. 정치력 (유능한 거절)
초급: "해드리겠습니다" (다 함)
중급: "안 됩니다" (단호함)
시니어: "이건 안 될 것 같은데, 대신 이건 어떨까요?" (이유 + 대안)
불가능한 요청을 그냥 거절하면, 팀 분위기가 나쁜다. 하지만 이유와 대안을 제시하면, 상황을 개선할 수 있다.
예:
PM: "이 기능 3일 안에 할 수 있을까?"
나쁜 시니어: "안 돼요"
좋은 시니어: "3일은 어려울 것 같은데,
기본 기능만 하면 1주일,
아니면 다른 일정을 변경할 수 있을까요?"
4. 거절하기
이건 정치력과 다르다. 정치력은 이유를 설득하는 것이고, 거절은 단호하게 "아니오"를 말하는 것이다.
거절해야 할 상황:
- 불가능한 마감
- 윤리적 문제
- 팀의 번아웃
- 자신의 제한된 에너지
나는 많은 시간이 걸렸다. 처음 "아니오"를 말했을 때는, 팀이 놀랐다. 그 후로 팀의 신뢰가 더 커졌다. 왜냐하면 "이 사람이 가능하다고 말하면, 정말 가능하다"는 신뢰가 생겼기 때문이다.
5. 멘토링 능력
시니어의 가장 중요한 역할은 코딩이 아니라 사람 키우기다.
나쁜 멘토링:
- "이렇게 해. 왜냐하면 나는 이렇게 배웠거든"
- 실수를 지적만 하고 해결책 안 제시
- 바쁘다고 질문에 안 답하기
좋은 멘토링:
- "이 문제를 어떻게 접근할 거야?"라고 먼저 묻기
- 스스로 해결하도록 유도
- 정기적 1:1
- 성장을 관찰하고 피드백
내가 키운 주니어들이 지금 중급 개발자가 되었고, 그들이 또 주니어를 키우고 있다. 이것이 시니어의 진정한 영향력이다.
6. 정보 수집 능력
좋은 시니어는 항상 "뭔가"를 안다.
예:
- "이 라이브러리는 이런 함정이 있어"
- "같은 업계에서는 이렇게 한다더라"
- "3년 전에 우리도 비슷한 문제를 겪었는데..."
이런 지식은 어디서 나올까? 계속 배워야 한다.
내 경우:
- 기술 뉴스레터 구독 (2개)
- 관심 분야 블로그 팔로우
- 동료들과의 대화
- 컨퍼런스 참석
이것이 "지혜로운 시니어"의 기초다.
7. 기술 결정의 근거
주니어: "이게 더 좋다고 했으니까"
미드레벨: "이게 더 빠르다"
시니어: "이게 우리 상황에 가장 맞다. 이유: ... 트레이드오프: ... 실패 시 대안: ..."
모든 기술 결정에는 근거가 있어야 한다. 그 근거를 설명할 수 있어야 시니어다.
8. 일과 삶의 균형 설정
나는 회사의 일 문화를 바꾸는 데 기여했다. 어떻게?
- 오후 6시에 항상 퇴근 (당연해야 할 일이 특별해짐)
- weekend에 절대 Slack 안 함
- 팀에 "야근하지 말라"고 명시적으로 말하기
조직은 리더를 따라간다. 시니어가 건강한 일과 삶의 균형을 지키면, 팀도 따라간다.
9. 실패를 말할 수 있는 용기
나쁜 시니어: 실수를 숨긴다
좋은 시니어: "이전에 이렇게 했는데 실패했어요"라고 말한다
나는 아키텍처 결정을 10년마다 한 번씩 후회한다. 그리고 그것을 팀에 말한다. "내가 이렇게 디자인했는데, 지금 보니 이렇게 하는 게 낫네"라고.
이런 말이 팀에 얼마나 큰 영향을 주는지 아는가? 주니어들이 자신의 실수를 두려워하지 않게 된다.
결론: 시니어가 되려면
코딩을 잘해야 하는 것은 맞다. 하지만 그것만으로는 부족하다. 시니어는:
- 생각을 말로 표현한다
- 지식을 남긴다
- 선택을 설득한다
- 팀을 키운다
- 계속 배운다
- 실패를 인정한다
이것들이 없으면, 코딩을 아무리 잘해도 시니어가 아니다. 단지 "능력 있는 중급 개발자"일 뿐이다.
오랜 개발 경험에서 배운 것: 진정한 시니어는 조용하지만 영향력 있는 사람이다.