Til
title: 2026-01-16 author: 강병호 (이름) date: 2026-01-16 (날짜) category: TIL/강병호/2026/01 (파일 경로 : TIL/{이름}/{연}/{월}) layout: post (자유) —
1.1 혼자서도 개발할 수 있다.
프리웨어, 쉐어웨어와 같은 개발자들은 대부분 개인 개발자들이며 혼자서 개발하는 경우에는 커뮤니케이션의 시간이 필요 없기 때문에 매우 빠른 개발 및 배포가 가능하다.
그러나, 규모가 커지는 경우에는 제품의 모든 것을 혼자서 판단하는 것은 불가능하며 여러 사람을 팀이라는 단위로 묶어서 개발을 진행한다. 실제로 다양한 채용 공고들을 보면 커뮤니케이션 역량의 중요성을 강조하고 있다.
1.2 팀 개발에서 직면하는 문제
팀 개발을 하다보면 다양한 문제를 직면하게 된다.
- 문제점을 팀 간 공유
- 진척 파악 부족
- 코드 품질의 균일화
- 개발 내용의 중복
이러한 과정에서 한 번의 배포로 끝나지 않으며 반복 배포를 거치면서 결국 혼자서 파악하기 어려운 규모의 괴물 코드들이 발생하게 된다.
필자는 한달 점 쯤에 자신이 짠 코드도 다른 사람이라고 생각할 정도로 내용을 잊어버리게 되기도 한다.
[!디그레이드] > 기능 추가나 버그 수정 등에 의해 이전까지 정상적으로 동작했던 기능이 동작하지 않거나 성능이 떨어지는 현상
이러한 문제들은 결국 디그레이드를 발생시키고 개발의 효율을 저해시킨다.
1.3 문제에 대한 대응
이러한 대응은 다양한 사람이 연계되어 문제를 대응해야하기에 단순 노력만으로는 어렵다. 이러한 복잡함속에서 나온 것들은 다양한 도구, 방법론들이 등장하였다. 다양한 도구, 방법론들이 등장하지만 여기서 필자가 생각하는 중요 키워드는 다음 세 가지이다.
- 실수 줄이기
- 상황 파악
- 품질 유지
이를 위해서 테스트의 자동화, 버전 관리와 동시에 복구, 빠른 배포, 병행한 개발을 통한 품질 유지 등이 가능해지는 것이다.
이를 위해서 책에서 언급하는 필요 사항은 다음과 같다.
- ‘무엇을’, ‘언제까지’, ‘누가’ 실행할 것인가? ‘무엇이’ 끝나면 ‘완료’인지를 관리하고 공유할 것
- 소스 코드를 포함한 여러 성과물을 팀에서 공유
- 성과물 변경을 관리하고, 성과물이 망가지지 않도록 관리하면서 각 멤버가 병행 작업이 가능할 것
- 프로젝트를 통해 얻은 지식을 팀 간에 공유할 것
- 팀에서 개발한 소프트웨어가 항상 정확하게 동작하는가를 증명할 것
- 누가 해도 실수 없이 개발, 테스트, 배포가 가능하도록 작업을 자동화할 것
해당 책의 서론을 읽고 필자는 다음을 유의하며 책을 읽어 나가려 한다.
- 다양한 도구들이 있지만 이것의 원칙, 케이스 스터디를 공부하며 어떻게 현재 상황에서 적용해 나가야하는지에 대한 연구
- 실제 도구들의 사용 방식, 사례
- 이전 사례들의 가상 적용
책에서도 최적의 방법론은 케이스 스터디라고 한다. 최근에 AI 등장과 함께 이러한 부분들을 가볍게 넘기게 되는데 2014년 다양한 도구, 방법론이 등장하던 시점의 원천적인 팀 개발의 발전 과정을 이해하며 포스팅을 진행해보겠다.