In roughly 15 years of teaching software engineering subjects at the University of Tübingen, from introductory programming courses through software engineering to software architecture, with a sideline on formal software verification, I have learned one thing: It is incredibly hard for those with basic—and even advanced—programming skills to become professional developers.

A professional developer is expected to deliver workable solutions in a predictable and dependable fashion, meeting deadlines and budgets, fulfilling customer expectations, and all the while writing code that is easy to maintain, even after the original project has long been declared finished.

To achieve all of this, the professional developer has to know both concepts ...

Get How to Use Objects: Code and Concepts now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.