서평 - 심플 소프트웨어

길벗에 개발자 리뷰 신청 글을 보다가, 100년 뒤에도 유용할 소프트웨어 설계 원칙 & 프로그래머의 바른 길! 문구에 이끌려 “심플 소프트웨어”라는 책 리뷰를 하게 되었다.

이전에 “소프트웨어 장인”이라는 책을 인상깊게 읽었는데 그와 비슷한 표지에, 강렬한 문구에 이 책을 읽고나면 깨달음을 얻을 수 있을거란 기대감이 생겼다.

책을 읽었으면 하는 사람들

소프트웨어 엔지니어로 일을 하거나, 현재 일하는 방식을 변화하고 싶은 사람들이 읽었으면 합니다. 많은 시행착오로 알게 된 지식들이 깔끔하고 이해하기 쉽게 정리되어 있습니다.

#심플 소프트웨어

3년 넘게 소프트웨어 엔지니어링 팀에 있으면서 많은 개발팀을 만나 생산성을 높이거나, 현재 개발팀의 애로사항을 해결하는 일들을 해왔다. 그 와중에 현재 문제를 해결하기 위해 주로 애자일, XP의 방법을 활용했다.

처음에는 방법을 몰라서 프랙티스에 치중을 했다. 하지만 프랙티스만으로는 팀을 변화시키기가 너무 힘들었다. 간혹 강성의 개발자들을 만나면 왜 이런 프랙티스를 해야하는지를 두고 매번 설득과 논쟁(?)의 시간을 겪었고,그럴때마다 정신적으로나 감정적으로 스트레스가 컸다.

물론 시간이 지나서 돌이켜보니, 내가 너무 어설펐고 애자일에 대한 성숙도가 낮은 상태가 문제의 원인이었다. 그들은 나아지고 있다는 믿음이 없는 상태에서 변화만 요구하는 것처럼 느껴졌을 것이다. 그런 상황이 길어지면서 서로 답답하고 신뢰하지 못하는 상황에서 계속 부딪히다 보니 누군가는 포기하고 서로에게 답답한 시간이었을 것이다.

이런 시도 반복하다보니, 초반에 개발팀 신뢰를 얻는 것이 중요하다는 것을 알게 되었다. 신뢰를 많이 쌓을수록 팀의 변화는 더 크게 일어났고, 신뢰를 쌓지 못하면 서로 힘들어지고, 이전과 바뀐다는 느낌은 없이 일만 같이하는 사이로 끝나는 경우도 있었다.

신뢰를 쌓는 일은 개발자들이 현재 일하는데 불편한 점을 찾아서 그것부터 해결해나가다보니 자연스레 얻을 수 있었다. 현재 상황에서 더 나은 상황으로 변할 수 있을거라는 기대감이 생기고 그게 확신으로 변해나가는 경험이 반복될 수록, 이전과 다른 일하는 방식에도 긍정적으로 참여했다. 변화할 수 있다는 확신이 개발자, 팀의 변화에 동기부여가 됐다.

꼭 읽어야하는 이유

이전에 이 책을 읽었더라면, 소프트웨어 엔지니어로써 더 많은 개발자에게 도움이 되었을텐데라는 생각이 가장 먼저 들었다. 시행착오를 통해 알게된 내용들이 너무 잘 정리되어있었다. 개발자들과 많은 이야기를 하다보면 개인 경험치에 따라 공유하는 내용의 깊이가 달라진다. 내용의 깊이에 따라 사람들을 얼마나 몰입시키는지가 결정된다.

이 책을 읽으면서 느낀점은 독자가 현재 상황을 개선하기 위해서 많은 경험을 했고, 얼마나 많은 고민을 했었는지가 느껴졌다. 책에 나와있는 상황들에 몰입이 되었고, 내가 현재 일하는 환경에 연결되어 내 상황은 어떤지, 나는 어떤 선택을 할 것인지 돌이켜보게 된다.

  • 소프트웨어 엔지니어라면 많은 경험을 통해 알 수 있는 점들이 잘 정리되어 있다.
  • 팀의 변화를 시도하고 싶은 사람이 어떤 방법을 통해 해결해야 할지 모르는 경우, 방법을 알려주는 지침서가 될거라 생각한다.
  • 심플 디자인의 중요성을 다양한 사례를 통해서 공감할 수 있다.
  • 경험이 적은 주니어 개발자나 혹은 혼자 일하고 있는 개발자들에게 조언이 된다.
  • 개발 코드가 없어서 몰입해서 가볍게 읽을 수 있다.

아쉬운 점

책의 표지를 보면 “코드의 단순성, 가독성, 안전성, 유지보수를 위한 심플 소프트웨어”라고 되어있다. 그것만 보고 개발코드를 예를 들면서 복잡도를 낮추는 설계 방법이 있을거라 기대하는 사람들은 실망할 수 있다.

이 책은 코드의 단순성, 가독성, 안정성, 유지보수를 위한 심플 소프트웨어가 왜 중요한지 배경 설명을 위한 책이다. 상황에 따른 경험담을 바탕으로 왜 심플 소프트웨어를 만들어야하는지, 어떤 방법으로 목적을 달성할 수 있는지 소프트웨어 공학 관련된 내용이기 때문에 클린 코드를 위한 코딩 가이드를 기대하지 마라.

마무리

개발하는 사람이라면 꼭 한번은 읽어봤으면 하는 책이다. 개발자로써 경험이 달라져도 그때마다 새로운 인사이트를 얻을 수 있는 책이라 생각한다.
내 역할이 개발자, 소프트웨어 엔지니어, 팀리더 등으로 변하더라도 그때마다 얻는 가치들이 분명이 존재할거라 생각합니다.

알게된 내용을 현재 내 상황에 적용해 본다면 더 즐거울거라 생각합니다. 내가 개발업무를 하던, 운영업무를 하던 소프트웨어 개발을 하고, 유지보수를 하고 있는 사람이라면 현재의 상황을 개선하는데 도움되는 실용적인 팁을 얻을 수 있을 것입니다. 그러기 위해서는 단순히 내용만 읽고 넘기는 것이 아니라, 책의 상황에 몰입하고 고민해야 더 큰 깨달음을 얻을거라 생각합니다.

Share