brunch

You can make anything
by writing

C.S.Lewis

by Heinrich Jan 11. 2022

주니어 개발자에서 시니어 개발자로

Photo by Markus Spiske from Pexels

나이가 들면서 신입 혹은 주니어 개발자 분들께 코칭을 해야 하는 일이 늘어나고 있습니다. 자신감 넘치는 다른 시니어 개발자 분들을 보면 스스로가 부끄러워질 때가 한두 번이 아닙니다만, 그래도 주니어 개발자들을 코칭하는 것도 제 업무의 일부라 많은 생각을 하게 됩니다. 주니어 레벨의 분명한 정의는 사람마다 또 회사마다 조금씩 다르지만, 개발 경험이 부족한 상태에서 명확하게 주어진 업무를 프로그램으로 구현하는 단계를 말하는 경우가 많습니다.


프로그래밍 언어의 문법을 완벽하게 알아야 한다는 강박관념을 가지신 주니어 개발자들을 종종 봅니다. 1000 페이지 가까운 프로그래밍 언어 해설서를 완벽히 마스터하는 것이 기본이라고 생각하시는 분도 많습니다. 특정 기술이나 프레임워크에 대한 깊은 이해를 가지고 계신 분들을 종교의 수준에서 바라보는 경우도 많습니다. 하나의 프로그래밍 언어를 깊게 아는 것은 개발자로서 유용한 스킬이고, 널리 사용되는 프레임워크의 전문가가 되는 것도 중요한 무기입니다. 특히나 한국처럼 백엔드 시장이 자바/스프링으로 대동단결된 곳에서는 더욱 그렇게 보일 수 있습니다. 하지만 제 생각에는, 프로그래밍 언어 하나를 해당 언어의 설계자만큼이나 잘 아는 것도, 특정 프레임워크의 전문가가 되는 것도 개발자로서 발전할 수 있는 하나의 길일 뿐입니다. 그리고 커리어에 따라 경력이 오래될수록 그 중요도가 점점 떨어지는 경우도 많습니다. 적절한 비유일지 모르겠지만, 이건 마치 영어 사전이나 문법 책을 처음부터 끝까지 정독하여 완전히 외우겠다는 것과 비슷합니다. 중요한 것은 영어로 얼마나 다른 사람과 대화할 수 있는지, 그리고 더 나아가 자기 생각을 정확하게 표현할 수 있는지가 아닐까요. 예전에 스티브 잡스와 빌 게이츠의 프레젠테이션을 비교한 글을 본 적이 있습니다. 빌 게이츠가 더 어려운 단어와 복잡한 구조의 문장을 사용하는 편이라고 합니다. 그렇지만 사람들이 주목했던 사람은 항상 스티브 잡스였죠.


저는 주니어 개발자들에게 다른 두 가지를 더 신경 쓰라고 조언합니다. 어떻게 하면 남들이 알아보기 쉬운 코드를 작성할 수 있을까, 그리고 어떻게 좋은 테스트를 작성할까. 남들이 알아보기 쉬운 것이 중요한 이유는 다음에 설명할 기회가 있겠지만, 이런 코드를 작성하려고 하다 보면 수많은 것들을 배울 수 있습니다. 함수와 클래스의 역할 분배, 디자인 패턴, 리팩터링 등 많은 부분을 공부하면서 실력을 키워가게 됩니다. 물론 그 와중에 현재 사용하는 언어에서 지원하는 특별한 문법을 더 익히기도 합니다. 하지만 잘 사용되지 않는 특정 문법을 마스터하기 위해 시간을 쏟는 것보다 알고 있는 문법을 이용해서 다른 사람이 이해하기 쉬운 코드를 작성하기 위해 시간을 쓰는 것이 훨씬 유용합니다.


언어나 프레임워크를 깊이 이해하면 상대적으로 오류가 적은 프로그램을 작성할 수 있는 것은 사실입니다. 그렇지만 언어와 프레임워크를 완벽하게 이해해도 오류 없는 프로그램을 작성할 수는 없습니다. 그래서 테스트가 중요하죠. 좋은 테스트를 작성하면 개발자가 프레임워크의 어떤 부분에 대한 이해가 부족한지 보여주기도 합니다. 그러면 그 부분을 공부하고, 이해하고, 테스트가 통과하도록 코드를 수정하고, 다시 테스트를 보강합니다. 자동차를 운전하기 위해 자동차의 동작 원리를 완벽하게 이해하고 있을 필요가 없는 것과 비슷합니다. 자동차가 제공하는 운전 방법을 이해하고 있으면 됩니다. 그리고 D로 하면 앞으로 가고 R로 하면 뒤로 가는지 테스트하면 되죠. 더하여 잘 쓰인 테스트는 그 자체로 다음 개발자를 위한 문서의 역할도 합니다. 테스트하는 부분들이 어떻게 동작해야 하는지를 명세하고 검증하기 때문이죠.


언어나 프레임워크에 대한 이해를 경시하는 것은 절대 아닙니다. 다루는 도구에 대한 깊은 이해는 언제나 유용합니다. 다만 언어나 프레임워크의 유행은 항상 변합니다. 언어나 프레임워크에 종속적인 학습을 하기엔 주니어 시절에 배워야 하는 보편적인 기술이 너무 많습니다. 자바로 읽기 쉬운 코드를 작성하는 개발자는 파이썬으로도 코드를 쉽게 작성합니다. 물론 처음에는 읽기 쉽지만 자바스러운 파이썬 코드가 되겠지만, 곧 읽기 쉽고 파이썬다운 코드를 작성하죠. 테스트는 ‘어떻게’ 보다 ‘무엇을’이 더 중요한 경우가 많고, 상당 부분은 사용하는 언어와 무관합니다. 그리고 이 스킬들은 클래스와 모듈 디자인 스킬과 연관되고, 자연스럽게 한 단계 발전할 수 있는 밑거름이 됩니다.

작가의 이전글 그때는 몰랐던 것들
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari