물론 개발은 혼자서 할 수 있다. 하지만 어렵다.
1인이 서비스를 만들 수 있다. 하지만 그 서비스는 본인만 사용하는 서비스인가? 아니잖아 결국 서비스가 잘 되고 덩치가 커지면 많은 사람들이 필요해진다.
내가 생각하는 개발을 혼자서 할 수 없는 이유는 다음과 같다.
개발을 혼자서 할 수 없는 이유
1. 복잡성과 다양성
현대 소프트웨어 개발은 매우 복잡하고 다양한 기술과 도구들이 사용된다. 배포만 봐도 요즘은 기본적으로 무중단 배포를 선호한다.
그렇다면 무중단 배포를 위한 로드밸런서 뭐 Nginx. 가상화, 컨테이너 기술에 Docker랑 Kubernetes. CI/CD를 위한 Jenkins나 GitHub Action. 그리고 모니터링을 위한 도구(이건 안써봐서 뭐가 있는지 모르겠음요). 당장 생각나는 것만 써봐도 이렇게 많은데 이걸 혼자서 다 한다고...? 그럼 지금 당장 구글가야지 물론 미국 본사로
누군가는 가능은 하겠지만 당연히 하나의 개발자가 모든 영역을 전문적으로 다루기는 어렵다. 시스템 아키텍처, 프론트엔드, 백엔드, 데이터베이스, 보안, 테스팅 등 다양한 분야에 대한 지식과 경험이 필요하다.
2. 업무 분담과 생산성 향상
팀으로 개발하는 경우, 각 팀원들은 자신이 가진 전문성과 역할에 따라 업무를 분담할 수 있다.
이건 뭐 당연한 얘기일 것이다. 물론 그만큼 팀원들의 몫을 나눠줘야겠지만! 이것도 당연한거네
아무튼 간에 이를 통해 작업을 병렬적으로 진행하고 생산성을 향상시킬 수 있다. 혼자서 모든 업무를 처리하려면 시간과 노력이 더욱 많이 소요될 수 있다.
3. 다양한 시각과 아이디어
팀으로 일하면 다양한 배경과 관점을 가진 사람들이 모여 문제를 해결하고 창의적인 아이디어를 제시할 수 있다.
팀으로 프로젝트를 진행해본 사람이면 다 이런 경험을 해봤을 것이다. 나 같은 경우에는 한가지에 꽂히면 시야가 엄청 좁아지는데, 팀원과 잠깐 이야기를 나누는 것만으로 새로운 아이디어를 얻은 적이 많은 것 같다!
다른 사람들의 피드백과 도움을 받으면 개인의 아이디어를 발전시키고 문제를 더욱 효과적으로 해결할 수 있다.
4. 버그 및 오류 탐지
다른 개발자가 코드를 검토하고 테스팅을 수행함으로써 버그와 오류를 더 쉽게 발견하고 수정할 수 있다.
진짜 100% 공감할 것이다. 사람이 완벽할 수는 없다. 위의 3번과도 같은 흐름의 이야기일 수 있는데, 에러를 잡을 때에도 나는 시야가 종종 좁아지는 편이다. 혼자 있을 때는 일단 자리에서 일어나서 리프레쉬를 하는 편이지만, 한가해 보이는 팀원이 있으면 같이 에러를 잡거나, 이야기를 나눠서 시야를 넓히는 편이다.
이처럼, 혼자서 작업할 때는 실수를 인지하기 어려울 수 있으며, 버그를 처리하는 데 더 많은 시간과 노력이 필요할 수 있다.
5. 지식 공유와 학습
팀 내에서 지식을 공유하고 서로의 경험과 노하우를 배울 수 있다. 이는 개인의 성장과 전문성 향상에 도움을 줄 수 있을 것이다.
주니어인 나로서는 옆자리 과장님을 자주 괴롭히기도 한다. 물론 물어보기 전에 내가 시도할 수 있는 것들은 최대한 시도해본 후에 과장님을 괴롭히는 것이 최소한의 예의라고 생각한다.
또한, 팀원들과 함께 일하며 새로운 기술과 접근 방식을 배우는 기회를 얻을 수 있다.
마무리
SVN에 대해서 설명하려고 했는데 처음에 이 부분(SVN이 생긴 이유)에 대해서 좀 말해보려다가 이렇게 말이 길어질 것 같아서 이렇게 마지막으로 밀었는데, 잘한 선택인 것 같다. 내 생각을 말하다 보면 항상 말이 길어지게 된다.
암튼 SVN을 포함한 여러 VCS에게 항상 고마워하면서 개발을 하고 프로젝트를 하고 출근을 하고... 그래야겠다.
얘네 아녔음 나는 진짜 진작에..........