A Code Of Conduct For Professional Programmers, a subtitle of the book, says it all. Robert C. Martin answers the question: what does it mean to be a professional programmer.
If professionalism could be boiled down to a single aspect it’s responsibility. Responsibility for the following:
- Product quality
- Time estimates
- Keeping competences and skills up to date
- Understanding business goals and interests
The book dedicates a few chapters to different aspects of keeping high standards of product development. The technical aspect of quality is about software testing:
- hierarchy of testing (unit, component, integration, system, research testing)
- test-driven development (TDD) as a way to deliver quality code, a safety net for refactoring, self-documentation for developers, a way to reduce code complexity and design program architecture more carefully.
- acceptance testing as project documentation and criteria of what’s “done” (tests passing)
- testing automation
The non-technical aspect of quality includes techniques to boost attention span. The author also dismantles some myths about productivity: coding late in the night, overtime work, etc.
Being responsible means you want to be predictable to your colleagues, deliver code on time. Correct time estimates are the single most important way to be predictable for a professional programmer.
The author just scratches the surface of the technical aspects of time estimation (PERT technique, planning poker, etc.). But he goes to great lengths to educate about the skill of saying “No” and “Yes”.
It’s okay for the business to try to get precise time estimates to eliminate the risks. It’s also okay for the business to wish to get things done quickly. Yet accepting unrealistic deadlines comes at a price for a programmer: work/life balance, productivity, and product quality, all of them deteriorate so that possible short-run benefits of working under pressure turn into a long-term disaster.
Keeping competences and skills up to date
A professional programmer must keep his/her technical and soft skills up to date. Technical skills require regular training. Just like professional musicians do their chores with scales, professional programmers should practice so-called code kata, programming or tech design problems, the author argues.
Learning new languages and systems in your spare time is also essential for a professional programmer.
Soft skills may include the ability to work in a team, do pair programming, or mentoring interns and colleagues.
Understanding business goals and interests
As a professional (i.e. responsible) programmer, you care about business interests. The business problems are your problems too.
The book has been published back in 2011. The industry has progressed quite a bit since then. Many bits of advice and techniques “Uncle Bob” suggests in his book now is a common practice. It’s unclear if the book will become a revelation for a reader in 2020. Yet it certainly encourages you to think about what does it mean exactly to be a professional and master your skills.