소프트웨어 프로젝트를 수행해 본 사람이라면 그 험난한 과정과 다양하게 발생하는 문제의 역동성을 익히 알고 있을 것이다. 프로젝트를 성공적으로 이끌기 위해 많은 연구가 있어왔고, 여러 방법론의 형태로 프로젝트 수행에 대한 가이드라인과 지침을 제시하고 있다. 대상 시스템과 목적, 기능은 다 제각각이지만 프로젝트를 수행하는 주체는 사람이고, 그 프로젝트에 참여하고 있는 사람들이 어떤 역할을 하느냐에 따라 프로젝트의 성패가 결정된다고 해도 과언이 아니다.
소프트웨어의 개발에는 코딩이 필수적이지만, 코딩만 잘 하는 사람만으로는 소프트웨어 프로젝트가 성공하기 어렵다. 프로젝트를 성공으로 이끌기 위해서는 프로그래밍뿐 아니라 엔지니어링 관점에서 문제를 제기하고 이를 관리할 수 있어야 한다. 이를 맡는 것이 소프트웨어 아키텍트이다. 소프트웨어 아키텍트는 여러 이해관계자와의 협업을 통해 비즈니스 목표 달성을 위해 노력하고, 프로젝트의 큰 그림을 그리며, 소프트웨어 설계에 있어 이상과 현실 사이의 균형을 찾는 부단한 싸움을 하고, 기술 부채를 관리하며, 팀 전체의 설계 역량을 키우는 역할을 수행한다.
소프트웨어 프로젝트에 참여하는 개발자가 아키텍트로서의 안목과 역량을 갖게 되면 그 프로젝트의 성공 가능성은 매우 높아질 것이다. 마이클 킬링의 ‘개발자에서 아키텍트로’는, 책 제목처럼 개발자가 아키텍트로 성장하는 과정을 담고 있다. 더 나은 개발자, 아키텍트가 되기 위해 필요한 설계 원칙과 적용 방법, 설계자다운 사고방식과 인간중심적인 접근 방법, 팀원과 협업하며 소프트웨어를 설계하는 방법 등을 통해 더 나은 소프트웨어를 만들고, 프로젝트를 성공으로 이끄는 아키텍트로 성장하도록 돕는다.
책은 크게 세 부분으로 구성되어 있는데, 1부에서는 소프트웨어 아키텍트와 소프트웨어 아키텍처에 대해 다룬다. 2부는 아키텍처를 설계하고, 이해관계자와 소통하고, 핵심 요구사항을 분석하여 설계에 반영하는 방법과 함께 아키텍처 패턴과 설계를 시각화하고 문서화 하는 방법에 대해 알아본다. 끝으로 3부에서는 아키텍처 설계에 도움이 되는 38가지 팀 활동을 소개한다.
복잡한 소프트웨어 아키텍처를 실제 상황에 적용할 수 있도록 쉬운 언어로 잘 설명하고 있어 소프트웨어 엔지니어링 훈련에도 유용하다. 아키텍트가 되고 싶은 개발자 뿐 아니라 팀의 생산성을 높이는 활동을 하고 싶은 이들에게도 추천한다.
**한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.