25년간의 개발과 10년간의 전쟁을 통해 얻은 7가지 통찰

Victor Shepelev, keynote, "Seven things I know after 25 years of development"

작성자
EuRuKo
발행일
2025년 01월 13일

핵심 요약

  • 1 소프트웨어 개발에서 프레임워크와 방법론은 성장에 따라 한계를 드러내며, 끊임없이 변화하는 환경에 적응하기 위해선 새로운 아키텍처적 결정이 필수적입니다.
  • 2 코드베이스의 '개별적인 이야기'에 집중하고, 복잡한 시스템 속에서 각 기능의 선형적인 흐름을 이해하는 것이 중요하며, 이는 '진실'을 추구하는 개발의 본질과 연결됩니다.
  • 3 개발자는 기존의 사고방식에 도전하고 끊임없이 진실을 탐구하며, 동료와의 코드 리뷰를 통해 코드의 '이야기'가 타당한지 확인하는 것이 장기적인 프로젝트 성공에 기여합니다.

도입

본 강연은 25년간의 소프트웨어 개발 경력과 10년간의 전쟁 경험을 가진 베테랑 루비 개발자 Victor She의 깊이 있는 통찰을 담고 있습니다. 그는 20년 이상 루비를 주 언어로 사용하며 언어 자체에 기여해왔음을 밝히고, 현재 우크라이나 군에 복무 중인 개인적인 배경을 공유합니다. 이 강연은 개발 경험과 전쟁 경험에서 얻은 교훈을 병렬적으로 제시하며, 소프트웨어 개발의 본질과 개발자로서의 자세에 대한 성찰을 유도합니다.

Victor She는 개발 경력을 통해 얻은 7가지 핵심 통찰을 제시합니다. 첫째, ‘모든 프레임워크는 결국 그 한계를 넘어선다’는 점입니다. Rails와 같은 프레임워크는 초기 개발에 큰 도움을 주지만, 프로젝트가 성장함에 따라 비즈니스 로직을 담는 ‘상자’가 되어버리며, 결국 개발자는 프레임워크를 넘어선 자체적인 아키텍처 결정을 내려야 합니다. 둘째, ‘모든 패턴, 방법론, 접근 방식 또한 실패하고 구식이 된다’고 강조합니다. 객체 지향 프로그래밍(OOP), SOLID 원칙, 도메인 주도 설계(DDD), 헥사고날 아키텍처 등 흔히 사용되는 방법론들도 시간이 지나면서 의문이 제기되거나 한계가 드러나며, 결국 개발자는 스스로 설계 결정을 내려야 하는 상황에 직면합니다. 셋째, ‘규모는 오직 성장할 뿐이다’는 자명한 진실을 상기시킵니다. GitLab의 사례처럼 모든 상업적 프로젝트는 끊임없이 확장되며, 이는 기존의 문제 해결 방식이 더 이상 통하지 않게 됨을 의미합니다. 이처럼 프레임워크와 방법론을 ‘넘어서는’ 현상은 자연스러운 일입니다. 넷째, 이러한 상황에서 ‘코드베이스의 개별적인 이야기에 주목하라’고 조언합니다. RuboCop의 사례를 들며, 모든 것을 너무 작은 메서드로 분리하는 것이 코드의 ‘이야기’나 맥락을 이해하기 어렵게 만들 수 있다고 지적합니다. 대신, 기능 구현의 선형적인 흐름과 인과 관계를 파악하는 데 집중하여 코드를 작성해야 합니다. 다섯째, ‘목표는 아름다움이나 좋은 아키텍처, 가독성이 아니라 진실이다’라고 역설합니다. 모든 원칙과 방법론은 코드가 현실의 문제를 ‘진실되게’ 반영하도록 돕는 수단이지만, 이러한 아이디어가 엄격한 규칙으로 변질될 때 본질적인 목표를 잃게 됩니다. 루비 커뮤니티의 테스트 작성 관행을 예로 들며, 표현력이 풍부한 테스트가 ‘진실’을 더 잘 전달할 수 있음을 보여줍니다. 여섯째, ‘진실된 이야기에 충실하려는 시도는 매우 외로울 수 있다’고 말합니다. 사람들은 자신의 기존 사고방식과 전문성을 의심하는 것을 꺼리며, 이로 인해 새로운 접근 방식이나 솔직한 코드 리뷰가 저항에 부딪힐 수 있습니다. 그러나 그는 코드 리뷰가 서로의 코드가 ‘이해되는 이야기’를 담고 있는지 확인하는 유일한 방법임을 강조하며, 이를 깊이 있는 인간적인 활동으로 간주합니다. 마지막으로, ‘우리는 진실을 추구하는 것을 결코 포기해서는 안 된다’는 결론을 내립니다. 끊임없이 지식을 탐구하고, 세계관을 조정하며, 오래된 코드를 개선하고, 오류가 있는 가설을 버리는 것이 중요합니다. 소프트웨어 개발자는 본질적으로 ‘작가’이며, 자신이 아는 바를 솔직하게 설명하고 표현하는 자세가 장기적인 프로젝트 성공에 가장 중요한 자질이라고 역설합니다.

결론

Victor She의 강연은 소프트웨어 개발이 단순히 기술적인 문제를 해결하는 것을 넘어, 끊임없이 변화하는 환경 속에서 개발자 스스로가 '진실'을 탐구하고, 기존의 관념에 도전하며, 동료들과 소통하는 과정임을 명확히 보여줍니다. 프레임워크와 방법론의 한계를 인지하고, 코드의 '이야기'에 집중하며, 궁극적으로 코드에 '진실'을 담아내려는 노력이 장기적인 성공의 열쇠라는 메시지는 모든 개발자에게 깊은 울림을 줍니다. 그의 개인적인 경험을 통한 비유는 이러한 추상적인 개념들을 더욱 생생하게 전달하며, 개발자로서의 성장과 삶의 지혜를 함께 나눕니다.

댓글 0

댓글 작성

0/1000
정중하고 건설적인 댓글을 작성해 주세요.

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!