주니어 개발자에게 TDD 경험이 필요한 이유

TDD 경험으로 무엇을 얻을 수 있을까요? 현직 개발자에게 물어봤습니다.
Apr 22, 2024
주니어 개발자에게 TDD 경험이 필요한 이유
✍️
Editor’s note 항해 플러스의 코치로 활동하고 있는 시니어 개발자 두 분에게 주니어 개발자가 성장할 수 있는 최적의 방법을 물어봤습니다. 두 개발자 모두 필수 경험으로 꼽은 첫 번째 성장 비법은 ‘TDD’입니다. 주니어 개발자에게 TDD 경험이 왜 중요한지 인터뷰에서 확인해 보세요.
 
김재원 코치(프론트엔드) : 네이버 프론트엔드 개발자로 입사해 4년간 근무한 후, 창업을 해 CTO를 맡았다. 지금은 IT 유니콘 기업으로 이직해 시니어 프론트엔드 개발자로 일하고 있다.
 
이석범 코치(백엔드) : 쿠팡에서 물류 시스템의 백엔드 개발자로 일했으며, 현재는 버킷 플레이스로 이직해 시니어 백엔드 개발자로 커머스 개발을 담당하고 있다.
 

Q. TDD란 무엇인가요?

김재원 코치(프론트엔드) 개념은 굉장히 단순해요. TDD란 Test Driven Development의 약자로 테스트 코드를 먼저 만들어놓고 거기에 맞춰서 개발을 하는 방법론입니다. 기술적인 스킬이 아니라, 개발 습관과 관련된 개념입니다.
일반 개발 방식은 설계, 개발, 테스트, 그리고 테스트 결과에 따른 수정으로 진행되는데 TDD는 설계를 바탕으로 테스트 코드를 작성하고 테스트가 통과된 코드만 실제 코드로 작성합니다. 이 과정을 계속 반복하며 오류가 적고 간결한 코드를 완성해 나가죠.
 

Q. TDD 방식의 장점은 무엇이라고 생각하나요?

이석범 코치(백엔드) 서비스를 개발할 때 TDD 방식으로 하면 코드가 안정적이라는 걸 보장할 수 있어요. TDD를 하다보면 자연스레 이 코드들이 책임을 다하고 있는 코드인지 계속 따지게 되거든요. 클래스의 구조에 대해서 한 번 더 고민하고, 이게 적절하게 설계돼 있는 코드가 맞는지 가독성이 좋은지 끊임없이 살펴볼 수 있습니다.
김재원 코치(프론트엔드) 기업 입장에서는 ‘기술 부채’를 막을 수 있어요. 새로운 기능을 개발할 때 “대충 이렇게 개발하면 될 것 같은데”라는 마음에 소위 ‘손부터 나가는’ 개발을 할 수 있거든요. 이렇게 만든 코드는 당장은 동작할지 몰라도, 나중에 큰 공사가 되어 버리거나 어떤 기능을 아예 개발하지 못하는 상황까지 만들 수 있어요. TDD는 개발자가 생각하고 개발하는 습관을 들일 수 있도록 도와주는 방법론이기 때문에 이런 상황을 예방할 수 있습니다.
 

Q. 그렇다면 TDD 방식의 단점은 무엇인가요?

이석범 코치(백엔드) 그냥 개발할 때보다 시간이 많이 들죠. 따라서 규모가 작고 개발 문화가 잘 형성되어 있지 않은 회사에서는 TDD를 도입하는 게 리스크라고 생각할 가능성이 높아요. 각 태스크를 바로 처리하기에도 시간이 부족하기 때문에 시간 낭비처럼 느껴지는 거죠. ‘dev 환경이나 로컬에서 테스트를 다 할텐데 테스트 코드가 굳이 필요하냐’고 말씀하시는 분들도 있습니다. 하지만 분명한 것은 기업의 규모가 커질수록 안정적인 코드가 필요해지고, TDD 방식의 개발이 중요해질 거예요.
 

Q. 두 코치님 모두 비교적 규모가 큰 기업에서 일하셨는데요. 해당 기업에서는 TDD를 중요하게 생각하는 편이었나요?

이석범 코치(백엔드) 제가 다닌 쿠팡, 버킷플레이스(오늘의 집) 모두 TDD를 강제하진 않지만 TDD를 충분히 활용할 수 있는 기회와 시간을 많이 주는 편이었어요. 페어 프로그래밍이나 테스트 코드의 완성도를 높여서 코드 품질을 높이는 과정들을 지속해서 하고 있고, 그 과정에서 TDD를 하기에 적합한 주제라고 판단되면 본격적으로 TDD 방식을 채택해요.
 
김재원 코치(프론트엔드) 네이버는 완전히 자유로운 환경이라, 개발자의 선택을 많이 믿어줘요. TDD 방법론이 필요하다고 생각하면 개발자들끼리 모여서 논의하고 프로젝트에 적용합니다. 대신 개발자들이 현명한 선택을 할 수 있도록 TDD와 관련한 사내 교육을 많이 해 줬습니다.
 

Q. 주니어 개발자에게 TDD 경험이 필요한 이유는 무엇이라고 생각하나요?

이석범 코치(백엔드) 현업 개발자라면 모두 코딩을 할 수는 있겠죠. 그런데 코딩을 그냥 하는 것과 ‘잘 하는 것’은 굉장히 달라요. 글쓰기에 비유해 볼게요. 누구나 글을 쓸 수는 있지만, 잘 쓰는 건 완전히 다른 능력이잖아요.
주니어 개발자는 동작하는 코드를 완성하는 것에 그치면 안 돼요. 어떻게 하면 코딩을 ‘잘 할 수 있을지’ 고민하고, 가치 있는 코드를 작성하는 능력이 필요하죠. 저는 TDD로 개발해본 경험이 이런 능력을 향상시켜줄 거라고 확신합니다.
 

Q. 주니어 개발자 중에는 TDD 경험을 쌓고 싶은데, 회사에서는 기회를 얻을 수 없는 경우도 많을 것 같아요. 독학으로도 가능할까요?

이석범 코치(백엔드) 물론 책을 보고 시도해서 TDD에 대한 이해를 높일 수 있지만, TDD의 목표는 방법론에 대한 이해가 아니라 코드 품질을 높이는 것입니다. 따라서 주어진 환경에 따라 답이 달라질 수 있죠. 같은 요구 사항도 트래픽이나 기업이 투자할 수 있는 컴퓨팅 비용 등 외적 요인에 따라 설계가 달라지거든요. 따라서 혼자 판단하는 데는 한계가 있죠. 그래서 TDD 경험을 독학으로 쌓는 것보다는 항해 플러스와 같은 곳에서 함께하는 것이 더 효율이 좋다고 생각합니다.
 

Q. 항해 플러스에서는 TDD를 꽤 비중있게 다루고 있습니다. 이를 통해 수강생들은 무엇을 얻어갈 수 있을까요?

이석범 코치(백엔드) 솔직히 이직할 때 ‘TDD를 해 봤다’는 것만으로 어필이 되지는 않아요. 증명할 수 있는 방법이 없거든요. 다만 지원자가 TDD나 클린 아키텍처, 클린 코드에 대한 이해도가 있다면 ‘코드를 작성할 때 좋은 습관을 가지고 있겠구나’라고 긍정적인 평가를 받을 수 있어요. 규모가 큰 기업에 지원한다면 이 부분을 더욱 중요하게 생각할 겁니다.
TDD기반의 사고는 시니어 개발자로 발돋움하는 데 큰 자산이 될 거예요. 취업 시장이 위축되고 있다고는 하지만 아직도 기업들은 시니어 개발자를 채용하는 데 애를 먹고 있어요. 더 나은 시스템 구조를 설계하고, 가치 있는 코드를 짜는 사람이 많지 않다는 증거죠. 항해 플러스의 경험들을 바탕으로 계속 성장한다면 분명히 오랫동안 좋은 대우를 받으며 살아남는 개발자가 될 수 있다고 확신합니다.
 

Q. 마지막으로 후배 개발자들에게 해주고 싶은 말이 있나요?

김재원 코치(프론트엔드) 주니어 개발자라면 대부분 성장에 대한 갈증을 느끼고 있을 거예요. 특히 회사 업무를 하면서 ‘잘 모르고 개발하고 있다’ ‘그냥 주어진 대로 하고 있다’라는 생각이 들면 회사 내에서는 성장하기 어렵다고 생각해요. 이런 상황에 놓여 있다면 항해 플러스 같이 가이드라인이 있는 곳의 도움을 받으세요. 혼자 공부하는 것과 항해 플러스에서 한 단계씩 밟아나가는 것은 성장 속도 면에서 차이가 굉장합니다. 같은 고민을 가진 개발자들과 교류하는 것도 도움이 될 거고요.
이석범 코치(백엔드) ’AI가 개발자를 대체할 것이다’라는 말이 많잖아요. 사실 저도 어느 정도는 동의하기 때문에 이런 시대에 어떤 개발자가 되어야 할지 늘 고민합니다. 한 가지 분명한 것은 모두가 대체되지는 않는다는 거죠. 더 나은 시스템 구조를 설계하고, 가치 있는 코드를 작성하는 사람들은 이전보다 더 높은 가치를 받게 될 거예요.
 
 
🚢 개발자 이직 준비, 어떻게 시작해야 할지 모르겠나요? 한 단계 더 도약하는 험난한 항해에서 든든한 메이트가 되어드리겠습니다.
성장의 한계를 느끼고 있는 주니어 개발자들은 항해 플러스와 함께 하시면 됩니다. 기본기 역량 강화부터, 커리어 점프시켜 줄 TDD/성능최적화 프로젝트와 이직 코칭까지 한번에 할 수 있습니다. 성장을 향한 강한 의지만 있다면 항해 플러스 10주 성장 코스로 이직을 도전해보세요.
 
 
CREDIT
글 | 박영경 팀스파르타 에디터
Share article
Subscribe to our newsletter
RSSPowered by inblog