Search
Duplicate

회사를 위한 좋은 개발자란 무엇인가?

좋은 소프트웨어 개발자와 회사에서의 역할
개발자로서 우리는 어떤 모습이 되어야 하는가? 이 질문은 회사에서 소프트웨어 개발자로 일하며 꾸준히 생각해온 주제이다. 특히 팀에 속한 구성원으로서 개인의 성장과 회사의 발전을 동시에 추구하는 것이 무엇을 의미하는지에 대해 고민해왔다. 이 글에서는 좋은 개발자와 좋은 소프트웨어의 정의를 회사의 관점에서 이야기하고자 한다.

회사를 위한 좋은 개발자란 무엇인가

개발자로서 중요한 덕목 중 하나는 회사의 기술적 부채를 늘리지 않는 것이다. 기술적 부채는 유지보수성과 확장성을 저해하는 요인으로, 이는 단기적으로는 문제가 없더라도 장기적으로 조직의 효율성을 크게 떨어뜨린다. 따라서 좋은 개발자는 부채를 덜어내거나 최소한 부채를 더 늘리지 않는 방식으로 코드를 작성해야 한다.
좋은 소프트웨어는 내가 퇴사하더라도 살아남을 수 있는 소프트웨어이다. 내가 만든 코드가 내가 떠난 후에도 유지보수되고, 새로운 요구사항에 맞게 확장될 수 있다면 이는 좋은 소프트웨어의 특징이다. 반대로, 내가 만든 시스템이 지나치게 복잡하거나 독특한 기술을 남발하여 후임자들이 유지보수를 포기하고 처음부터 새로 만들어야 하는 상황을 초래한다면 이는 분명히 나쁜 사례로 볼 수 있다.

이어달리기로서의 소프트웨어 개발

소프트웨어 개발은 팀워크가 필수적이다. 좋은 개발자는 마치 이어달리기에서 바통을 매끄럽게 넘겨주듯, 자신의 역할을 충실히 수행하면서도 다음 사람을 배려하는 방식으로 일한다. 이를 위해선 팀원들이 모두 이해할 수 있는 명확하고 단순한 코드를 작성하는 것이 중요하다.
반면, 어떤 개발자들은 새롭고 힙한 기술을 도입하거나 자신만의 독창적인 방식으로 프로젝트를 진행해 자신만의 업적을 쌓으려는 경우가 있다. 이는 기술적으로 흥미로울 수 있지만, 그 기술을 제대로 이해하지 못한 상태에서 남발하거나 팀의 수준과 맞지 않게 도입한다면 오히려 팀의 효율성을 저해할 수 있다. 이런 경우, 새로운 기술을 무작정 도입하기보다는 팀 전체가 학습하고 유지보수할 수 있는 적정 수준에서 기술을 선택하는 것이 중요하다.

기술 성장과 회사의 균형

회사에서의 개발은 개인 프로젝트와 다르다. 회사는 조직의 성장과 효율성을 우선으로 생각하며, 개발자는 이러한 목표에 기여해야 한다. 이 과정에서 개인적인 호기심과 성장이 배제되는 것이 아니다. 중요한 것은 적정 수준에서의 도전과 균형이다.
새로운 기술이나 도구를 도입할 때, 팀 전체가 그 기술을 학습하고 유지보수할 수 있는지 반드시 검토해야 한다. 이를 위해선 다음과 같은 두 가지를 고려해야 한다:
1.
팀의 기술 수준에 맞는 선택: 조직의 전반적인 기술 수준을 넘어서는 도구를 도입하면, 그 기술을 도입한 사람이 퇴사했을 때 유지보수가 불가능해지는 문제가 발생한다. 따라서 팀의 수준에 맞는 기술을 선택하거나, 팀 전체가 학습할 수 있는 여유를 가져야 한다.
2.
적정 수준의 도전 허용: 팀원들이 새로운 기술을 경험하며 성장할 수 있도록, 위험이 크지 않은 작은 프로젝트에서 새로운 도구나 방법론을 실험해볼 기회를 제공하는 것도 필요하다.

프로로서의 책임감

회사에서 일하는 개발자는 단순히 코드를 작성하는 사람이 아니다. 프로 개발자는 자신이 작성한 코드가 조직의 목표를 달성하고, 팀 전체의 성과를 높이는 데 기여할 수 있어야 한다. 이는 내가 사용하고 싶은 기술을 무조건 도입하거나, 내 커리어만을 위해 기술적 실험을 강행하는 태도와는 구분된다.
손흥민 선수가 축구 경기 중 갑자기 "축구가 지겹다"며 족구를 하겠다고 한다면, 팀에 어떤 영향을 미칠까? 이는 조직에서 개인의 역할을 이해하고, 팀 전체의 목표를 위해 행동해야 함을 상징적으로 보여준다. 개인의 성취만을 우선으로 두는 개발자는 팀에 부정적인 영향을 미칠 수 있다.

결론: 좋은 개발자, 좋은 소프트웨어

좋은 개발자는 팀의 기술적 부채를 줄이고, 조직 전체의 성장에 기여하며, 다음 사람이 코드를 이어받아도 유지보수가 가능하도록 만드는 사람이다. 좋은 소프트웨어는 단순히 "잘 돌아가는 것"을 넘어, 조직이 장기적으로 유지할 수 있는 구조를 가진 소프트웨어다.
이를 위해 우리는 기술 도입과 성장의 균형을 맞추고, 자신만의 성장을 조직의 목표와 연결시키는 태도를 가져야 한다. 개발자로서 내가 속한 회사와 팀이 성장할 수 있도록 기여하며, 퇴사 후에도 내 코드가 남아 다른 사람들에게 가치를 줄 수 있는 방식으로 일해야 한다. 이것이 프로 개발자가 가져야 할 책임감이며, 진정한 소프트웨어 개발자의 역할일 것이다.