Steve McConnell is best known for Code Complete. Professional Software Development is a much lighter packaging of McConnell’s core philosophy. It establishes up a well-founded view on what the software industry is and could be. Here I’ll highlight some of my key takeaways from the book.
The book slogan is “Shorter Schedules, Higher Quality Products, More Successful Projects, Enhanced Careers”. This lead me to believe that the book would introduce practices for achieving those goals.
It didn’t do that. Instead it explores how the industry as a whole can get to that state. The book intro nails the book premise with it’s list of questions
- What is software engineering?
- How does software engineering relate to computer science?
- Why do we need a profession of software engineering?
- In what ways do effective practices vary from project to project, and in what ways are they usually the same?
In short, this book explores the current state of the software industry, what it could be, what is should be, and how it can get there.
The book does an exceptional job building a fundamental view of the software industry.
The fundamental lessons that I picked out where
- Essence vs Accident
- This is probably the most fundamental question I frequently ask during design
- No Silver Bullet / no technology will solve all your development problems now or ever
- There is more than 10x difference in productivity between high-end and low-end developers
- Average practice is close to worst practice
- Best practices are available, but not well known
- Software Engineering is different from Computer Science, and sorely needed
- Form (outward appearance) without understanding rarely works for any technique
- Better practices are one of the highest return investments a company can make
- Scrappy development is not faster or cheaper
- Bad software is a matter of ethics
- The software industry will either improve itself or get regulated after some public incident
While generally well-sourced, the book introduces two keys materials for advancing our industry I wish I had know about a long time ago.
The first is the Software Engineering Body of Knowledge (SWEBOK). SWEBOK is a commissioned community standard that enumerates best practices for creating software. It is meant to collect well-established ideas with research backing, not cutting edge idea. Still, many of techniques are more effective than what our industry uses at large.
Having an agreed kernel of critical knowledge for creating software facilitates possible certifications, trainings, educational programs, and other ways of leveling up our industry.
The second key material is the Construx Professional Development Ladder. This builds on SWEBOK to define a flexible, comprehensive, an incremental training program. It helps companies and developers find a clear path to top notch skills that apply across projects. I wrote about the ladder here.
Room for improvement
I think the book does an excellent job exploring possible ways forward for the software industry as a whole. However, I feel there is a missed opportunity.
The book talks about the core of best practices a lot, but doesn’t talk about specific practices much at all. It does finally give a list of practices near the end, but I wish it’d have given a brief introduction to those key practices.
Related Blog posts
Bit of a side-bar, this book distills ideas that McConnell has been writing about for years. Many of the chapters have fairly direct equivalents in McConnell’s online articles. I’ve mapped the connection I saw below
- Ch 1 Wresting with Dinosaurs
- Ch 2 Fool’s Gold
- Ch 3 Cargo Cult Software Engineering
- Ch 4 Software Engineering, Not Computer Science
- Ch 5: Body of Knowledge
- Ch 6: Novum Oranum
- Ch 7: Orphans Preferred
- Ch 8: Raising your software consciousness
- Ch 9: Building the Community
- Ch 10: Architects and Carpenters
- Ch 11: Programmer Writing
- Ch 12: Software Gold Rushes
- Ch 13: Business Case for Better Software Practices
- Ch 14: Ptolemaic Reasoning
- Ch 15: Quantifying Personnel Factors
- Ch 16: Construx’s Professional Development program
- Ch 17: Engineering a Profession
- Ch 18: Hard Knocks
- Ch 19: Stinking Badges
- Ch 20: The Professional’s Code
- Ch 21: Alchemy
I found Professional Software Development to be a pleasant and worth-while read. I was already familiar with most of the concepts in the book, but it was nice to hear more about McConnell’s personal journey. Overall, I think the book’s greatest value is the compact and well-sourced arguments for fundamental views on the software industry. It is both a quick source for teaching young developers and backing up good practices in the workplace.