Software Engineering Best Practices: Lessons from Successful Projects in the Top Companies Book Review
|I have been wanting to read this for a while now but have not had the time. Although my current review is of a book 3 years old, the book is just as relevant today as it was then and will be for a long time to come. If the author gets his way, it will be relevant until 2049. He has included a chapter title "A Preview of Software Development and Maintenance in 2049".|
This is a massive book filled with tons of knowledge and wisdom accumulated from years of experience. The author does not pull punches. He tells it like it is. He covers what is working in the industry and points out what isn't. He also writes in a way that makes the book a very enjoyable read. At certain points in the book I forgot I was reading an IT book.
Below are the chapters included in the book.
Introduction and Definitions of Software Best Practices
Overview of 50 Software Best Practices
A Preview of Software Development and Maintenance in 2049
How Software Personnel Learn New Skills
Software Team Organization and Specialization
Project Management and Software Engineering
Requirements, Business Analysis, Architecture, Enterprise Architecture, and Design
Programming and Code Development
Software Quality: The Key to Successful Software Engineering
After chapter one which introduces and defines software best practices with topics like what best practices are and how you can evaluate them, different paths for software development, deployment, and maintenance, and a nice ranking of methods, sociological factors, and practices, the author lists and defines 50 software best practices.
Some of the best practices included in the 50 listed include:
Minimizing Harm from Layoffs and Downsizing
Motivation and Morale of Technical Staff
Motivation and Morale of Managers and Executives
Selection and Hiring of Software Personnel
Appraisals and Career Planning for Software Personnel
Early Sizing and Scope Control of Software Applications
Outsourcing Software Applications
Using Contractors and Management Consultants
Selecting Software Methods, Tools, and Practices
Certifying Methods, Tools, and Practices
Requirements of Software Applications
User Involvement in Software Projects
Executive Management Support of Software Applications
Software Architecture and Design
Software Project Planning
Software Project Cost Estimating
Software Project Risk Analysisr
Software Project Value Analysis
Canceling or Turning Around Troubled Projects
Software Project Organization Structures
Training Managers of Software Projects
Training Software Technical Personnel
The book is worth buying just for the list of 50 best practices.
The next chapter is just down right cool. It is a preview of software development and maintenance in 2049. Topics include Requirements Analysis, Design Circa, Software Development, User Documentation, Customer Support, Deployment and Customer Training, Maintenance and Enhancement, Software Outsourcing, Software Package Evaluation and Acquisition, and many more. They are all based on what they will look like in 2049.
The chapter How Software Personnel Learn New Skills is invaluable to everyone involved with software engineering. It shows what techniques are the most effective when trying to learn new technology and skills. Some of the techniques include Web Browsing, Webinars, Podcasts, and E-Learning, Electronic Books (e-books), In-House Education, Self-Study Using CD-ROMs or DVDs, Commercial Education, Vendor Education, and Live Conferences. That is just a few of them. He includes a prognosis and an explanation of each that range from several paragraphs to several pages. He also ranks each with the following- Costs, Efficiency, Effectiveness, Currency, and Overall Score.
All of the chapters and topics are extremely valuable and interesting. I have never seen a book like this before and I am so glad I decided to read it.
One of the things I really like about the book is all the statistical data included. There are tons of tables showing how different types of data rank. Some of them include Major Cost Drivers for Software Applications, Evaluation of Software Methods, Practices, and Results, Best Practices for IT Projects and Embedded/Systems Projects, Software Methods and Practices Considered “Professional Malpractice”, Software Knowledge Areas, Software Specialization in Large Software Organizations, Distribution of Software Specialists for 1,000 Total Software Staff, Twenty-Three Kinds of Maintenance Work, Chronology of Programming Language Development, and Sample of 150 Applications Sized Using Pattern Matching. That was just a few of them.
This is one of those books that should be read by every person with a relationship to IT. Testers, CIOs, CFOs, developers, architects, project managers, and agilists will benefit from this book. I highly recommend reading it. You will come out the back end of it with a complete new perspective on Software Engineering.
Software Engineering Best Practices: Lessons from Successful Projects in the Top Companies