많은 개발자가 소프트웨어를 개발하면서도 자신이 ‘엔지니어링’을 한다고 느끼지 못합니다. 그 이유는 소프트웨어 공학은 물리적 실체가 없어 다른 공학 분야와 다른 특성이 많고 하드웨어의 눈부신 발전으로 인해 소프트웨어의 많은 문제가 저절로 풀리는 경험을 했기 때문이라고 생각합니다.
이 책은 그런 개발자들의 고민을 정확히 짚어내며, 소프트웨어 공학의 본질을 문제 해결의 절차와 방법론으로 새롭게 정의합니다. 특히 저자는 학습과 복잡성 관리의 중요성을 강조하며, 구체적인 5가지 학습 방법과 소프트웨어 복잡성을 다룰 수 있는 5가지 핵심 특성을 명료하게 제시합니다. 소프트웨어 개발자로서 자신의 업무를 좀 더 공학적으로 접근하고, 체계적이고 효율적으로 문제를 해결하고자 하는 모든 이들에게 이 책을 강력히 추천합니다.