[서적] 유연한 소프트웨어를 만드는 설계 원칙

이 책을 읽은 이유

  • 소프트웨어 엔지니어링은 학위나 자격증 자체의 가치보다는 노력을 통해 실용적으로 그 내용을 어떻게 적용할 수 있는지가 훨씬 중요한 생태계이고,
    그 능력을 보여주시는 멋진 시니어 개발자분들을 보며 ‘나도 저렇게 성장해야지’라는 마음으로 이 책을 읽기 시작했다.
    사실 지금까지는 코드를 make it right, fast하게 짜기보다는 make it work 하도록 짜는 것에 더 중점을 두고 있다.
    소프트웨어 엔지니어로 근무한 지 채 2년이 안 되긴 했지만, 발전은 점진적으로 이루어져야 한다.
    그래서 다른 사람들은 ‘유연한 소프트웨어’를 어떠한 ‘설계 원칙’을 가지고 만드는지 궁금했고, 그 내용을 나의 코드에도 적용해보고 싶었다.

이 책의 장점

  1. 소프트웨어 공학 자체에만 한정되지 않는 설명

    • 아래의 이미지처럼 수학, 생물학 등의 개념 등이 책 곳곳에 적용되어 있어서 보다 넓은 시선으로 개념을 바라보게 해준다.


      프로그래밍 언어나 라이브러리 등에서 미리 정의된 개념과 달리 ‘설계원칙’이라는 것은 굉장히 모호하고 철학적인 개념일 수밖에 없다.
      그래서 조금 더 큰 흐름을 가지고 코드의 품질을 높이는 사고를 할 수 있도록 많은 배려가 되어 있는 책이다.
  2. 다양한 사고의 확장

    • 장점1과도 연결 고리가 있는 부분이다. 이 책의 목차 중 일부는 아래와 같다.

      1. 프로그래밍 철학
      2. 성장의 여지가 있는 시스템을 구축하기 위한 보편적 적용 방법
      3. 강력하지만 위험한 유연성 기법 소개
      4. 기호적 패턴 부합 등
      ...

      대제목만 봐서는 잘 와닿지 않을 수 있는 주제들을 소제목을 통해 세부적으로 풀어나가기에 ‘이렇게 생각할 수도 있는 거구나’라는 관점들을 배울 수 있었다.

  3. ‘유연한 소프트웨어’의 정의에 대한 생각

책을 읽으며 아쉬웠던 점

  1. 아직은 이해하기 버거웠던 난이도

    • 이 책은 특정 언어로 특정 프로젝트를 만들어보는 것을 주제로 삼지 않는다.
      즉 코드를 하나하나 따라가며 쳐보며 이해하기보다는 내용 전반에 대한 이해가 유기적으로 이루어져야 하고, 코드를 더 ‘유연’하게 만드는 데에 도움이 되는 여러 가지 개념들에 대해 소개한다.
      그러다보니 굉장히 다양한 내용을 다루고 있고, 수많은 용어가 등장하는데 용어 자체가 익숙지 않은 것들이 많았다. (번역의 이슈가 아닌 원문 자체의 단어가 수준이 높은 단어들이라는 생각된다.)
      용어들의 개념 자체가 아직은 내게 어려운 것이 많았기에 책 내용을 온전히 이해하기 힘들었다.
      이해를 한 후, 내가 짜는 코드의 품질을 높이는 데에 적용하고 싶었는데 아직은 그러기에는 나의 역량이 부족함을 깨달았다.

감상

이해하지 못하고 지나간 챕터들이 많아서 개인적인 아쉬움이 많이 남았고, 그렇기에 시간이 흐른 후에 다시 한번 보고 싶은 책이다.
조금 더 넓은 시야로 개발을 바라볼 수 있도록 계속해서 노력한다면, 점차 이 책에 대한 이해도도 분명 더 높아질 것이라고 생각되기 때문이다.
따라서 이 책은 코드 자체의 동작에 애쓰기보다는, 더 나은 코드와 더 넓은 시선의 함양을 원하는 시니어 개발자 혹은 그러한 시니어 개발자를 꿈꾸는 분들께 권하고 싶다.



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


Written by
Sunmin
어제보다 나은 오늘을 만들기 위해 배우고, 기록하고, 회고합니다. Maker. Reader. Realistic optimist.