Professional Software Development is an updated and significantly expanded edition of my 1999 book, After the Gold Rush.
In edition to updating the content end-to-end, this edition contains several new essays:
3 - Cargo Cult Software Engineering
8 - Raising Your Software Consciousness
9 - Building the Community
11 - Programmer Writing
13 - Business Case for Better Software Practices
15 - Quantifying Personnel Factors
16 - Construx's Professional Development Program
Since 1999, I've also learned a few lessons that are reflected in this new edition:
* Licensing of software developers is more controversial than I expected. I have tried to clarify that licensing is only one of many initiatives needed to improve the software development profession.
* The world didn't fall apart on January 1, 2000. Although I didn't think Y2K would be catastrophic, I did believe that Y2K-related problems would be more significant than there were. Beyond that, the Y2K problem itself was in some sense a result of successful software devel-opment practices. Y2K would not have been an issue in the first place if sys-tems had not survived so much longer than their originally expected life-spans.
* Modern software development is truly impressive in many respects, and any comments about professionalizing the field of software development should account for software's numerous successes. We must be careful not to throw out the field's better practices as we try to strengthen the weaker ones.
The book is organized into four sections.
Section 1, "The Software Tar Pit," explains how the software field got to be the way it is. There are many valid reasons why the software field came to its current state. Understanding those reasons should be used to accelerate, not delay, the changes needed to make successful projects an everyday habit.
Section 2, "Individual Professionalism," looks at the steps individuals can take on their own to achieve higher levels of software professionalism.
Software projects are so complex that numerous key factors cannot be addressed effectively at the individual level. Section 3,"Organizational Professionalism," digs into the organizational practices needed to support more professional software projects.
Section 4, "Industry Professionalism," examines steps that must be taken by the software industry at large to support professionalism at both the individual and organizational levels.
In short, this book describes the trade of computer programming as it exists today and explores the profession of software engineering as it might exist in the future.
The best software organizations control their projects to meet defined quality targets. They accurately predict software delivery dates months or years in advance. They deliver their software projects within budget, and their productivity is constantly improving. Their staff morale is high, and their customers are highly satisfied. It is my hope that this book will be part of a constructive dialog about how to help software development more often reach its full potential.
- Steve McConnell