시니어 개발자로 성장하기 위한 역량

오늘은 회사에서 구매 신청한 최범균님이 글을 쓰신 육각형 개발자라는 책을 읽어보았다. 이제는 시니어 개발자로서의 역량을 성장시켜야하는 리더로써의 역할을 수행하고 있기 때문에 좋은 시니어 개발자가 가지는 역량에 대해서 스스로 정리해보기 위해서 내 기준에서 어떤 것에 대한 역량을 키워나가야하는지 살펴보고자 한다.

요구사항 분석 및 설계의 역량

개발 리더로써 가장 중요한 역량은 개발팀 인원들이 보다 정확하게 혹은 효율적으로 요구사항을 처리할 수 있도록 최대한 자세하세 요구사항과 배경에 대해서 분석하고 작업에 대한 방향성을 설계해야 한다. 요구사항을 전달하는 입장에서 스스로 요약하기 위해서 생략하는 배경으로 인하여 잘못된 방향으로 분석하고 실무자 입장에서는 다시 한번 체크하더라도 거의 완성되고 나서야 다시 작업해야하는 것을 아는 경우도 많을 수 밖에 없다. 비록 그런 사항을 만들지 않는 것이 좋겠지만 최대한 그러지 않도록 요구사항에 대해 의심하고 여러번 체크하는 습관이 필요할 것 같다.

문서화에 대한 역량

그동안 문서화에 소홀했던 조직에서 일해왔기 때문에 문서화에 대한 중요성은 알고 있어도 회사의 스타일에 따라 문서화나 작업 내용에 대해 정리하는 것을 생략해왔다. 앞선, 요구사항을 제대로 분석하고 제대로 전달하기 위해서는 문서화에 대한 역량을 키워야만 한다. 평소에 말수가 적어서 말하고자 하는 내용을 전달하기도 어려워하기 때문에 제대로 커뮤니케이션이 되기 위해서는 정확한 문서를 전달할 필요가 있기 때문이다. 문서화에 대한 역량을 더 향상시키기 위해서 개인 블로그에 글을 써서 나의 생각을 정리하는 것을 지속적으로 유지해야할 것 같다.

기본 지식에 대한 역량

현재 사용중인 기술에 대해서는 코드를 이해하고 수정할 수 있을 정도의 지식이 필요하고 문제를 해결하기 위한 기술을 선택하기 위해서 조직에서 사용하지 않는 기술이라고 하더라도 평소에 기술 구현에 대해 학습해야한다. 더 나아가서는 해당 기술에서 필요한 기본 지식에 대해서 깊이 살펴보는 것도 필요하다. 현재 기준에서 적합한 더 나은 방법을 찾으려고 노력해야하기 때문이다.

테스트에 대한 역량

현재 조직은 전반적인 테스트는 QA 엔지니어의 역할이라고 생각하고 있지만 최소한의 테스트는 개발자에 대한 역량이라고 생각된다. 테스트 코드 작성을 강제하지 않는 조직이기 때문에 테스트에 대한 역량은 개발자 스스로 쌓고 습관화해야만 한다. 또한, 테스트 코드를 작성하다보면 당장 테스트하는 조건을 통과하기 위한 로직에 대해서만 검증하고 넘어가는 경우가 많은 것 같다. 그리고 모든 것에 대해 테스트 코드를 작성하지 않게 되므로 때로는 간단한 수정의 경우 별다른 영향도 체크가 발생하지 않을 것이라 가정하고 반영하게 된다.

신입 개발자의 인터뷰 과정에서 기본 지식에 대해서 중요하게 생각하여 체크하게 되는 것처럼 주니어 개발자에서 시니어 개발자로 성장하면서 그동안 알고 있던 기본 지식을 더 깊게 되돌아보는 것이 필요하다고 느낀다. 이것은 주니어 개발자들이 작성한 코드를 리뷰하면서 다양한 관점에서 바라보고 의견을 제시하게 되면서 중요하다고 생각하고 있다. 결국 제대로 리뷰할 수 있는 리뷰어가 되기 위해서는 개발 역량 뿐만 아니라 다양한 역량을 채워야하는 것 같다.