유연한 소프트웨어를 만드는 설계 원칙 - 막다른 골목 없이 진화하는 시스템 개발하기
크리스 핸슨.제럴드 제이 서스먼 지음, 류광 옮김 / 한빛미디어 / 2022년 3월
평점 :
장바구니담기


소프트웨어 엔지니어에게 어떤 상황에서도 유연하게 확장 가능한 설계는 판타지에 나오는 마법지팡이와 같은 이야기이다. 코드에 대한 섣부른 일반화가 미래 요구사항에 맞지 않아 다시 많은 부분을 손봐야한다던가 너무 특정 문제에 초점에 맞춰 구현된 개발은 향후 기만한 변화에 발목을 잡게 될 수 있다. 이 책은 기존 코드를 수정하지 않고 어떻게 새로운 코드를 추가할 수 있을 것인지 그리고 시스템을 어떻게 진화시킬 수 있는지를 이야기하는 가산적 프로그래밍(additive programming)을 설명하는 책이다.


1장부터 공감되는 말들 그리고 생각해볼만한 주제들이 정말 많이 나온다.

여러 프로그램을 결합해서, 각 프로그램이 지원하는 행동들의 합집합을 얻는 것은 언제라도 가능하다. 그러나 우리는 전체가 부분의 합보다 크길 원한다. 즉, 시스템의 부품들이 연동함으로써 그 어떤 부품도 혼자서는 하지 못 하는 일을 시스템이 할 수 있게 만들고자 한다. 그러나 여기는 절충(trade-off)이 존재한다. 시스템 구축을 위해 결합하는 부품들은 반드시 관심사들을 명확하게 분리해야 한다. 한가지 일을 극도로 잘해내는 부품은 서로 무관한 여러가지 기능을 결합한 부품보다 재사용하기 쉽고 디버깅 하기도 쉽다. 시스템을 가산적으로 구축하려면 의도치 않은 상호 작용을 최소화하면서 부품들을 조합할 수 있어야 한다


미국 MIT 대학에서 학부생 또는 대학원생에게 가르치던 내용이 일부 포함되어 있다고 한다. 책을 이해하는 과정이 MIT 수업을 듣는 것과 어느정도는 비슷하다고 볼수 있다. 책 첫장을 펴고 1시간 정도 읽어보면 친절하게 이야기를 풀어가는 책들과 결이 다르다는 것 또한 알 수 있다.


그러다보니 혼자서 이 책을 다 소화하기에는 상당히 많은 시간과 노력이 들어갈 것이란 생각이 든다. schem 개발 언어를 사용하여 설명하는데 이 부분 또한 책을 이해하는데 발목을 잡을 것이다. 그러므로 혼자서 책을 읽어나가기 보다는 이 주제에 관심이 많은 시니어 개발자들이 각자 책을 사서 스터디를 진행하면 더 효과적으로 책을 읽어나가고 토론하기 좋은 책이라고 생각한다. 


프로그래밍이란 주제에 대해 철학적으로 시작하여 진지하게 다시 한번 정리하고 학습하고 싶은 개발자들에게 추천한다. 


"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo