Magazines  


The Evolution of Software Development

Ben Linders

Emergent Design: The Evolutionary Nature of Professional Software Development, by Scott L. Bain, ISBN-10:0-321-50936-6, ISBN-13: 978-0-321-50936-9. Addison-Wesley, 2008, 411 pp.

There aren’t that many books that take a look at the software development profession. This book is one. Emergent Design looks at how the profession has developed and is still developing. This professional view is used to examine practices, patterns, and occasionally development methods. This view gives a much better understanding of how something works, why you might use it, and when to do so (and also when not). This book therefore contributes to the deployment and adoption of the software engineering technology, a field where we’re still learning.

Patterns help professionals think about problems and solutions. They provide a language to discuss them. They’re not just a template you deploy out of the box; they require a deeper understanding of the problem and solution space. That’s why this book goes back to design principles such as coupling, cohesion, redundancy, coding styles, and testability. If you’ve been a software professional for a while, you’ve probably studied these things in courses about structural programming, software architecture, or specific design methods. The concepts are still valid in modern programming methods and languages, and taking a fresh look at them helps understand patterns better and thus use them more effectively.

Author Scott Bain book also explores agile practices such as unit testing, refactoring, and test-driven development. These practices have a long history and were used well before people started calling them agile. Bain describes the concepts and ideas that started the practices and follows how they have developed to what they are right now. He provides a good rationale for using these practices and how to do so effectively.

To give an example of how Bain builds this book, let’s look at how he covers the subject of change in one chapter. He starts with the fact that too many projects fail. Then he defines what success would look like and goes  on to the main causes of failure: doing things wrong and doing the wrong things. From this foundation, he argues that change is all around us—something we experience daily. Instead of fighting it, we can accept it and start looking for ways to capitalize on it. Software will always be evolving, so your development methods must support this phenomenon to be successful.

Most people would agree with this conclusion. But many would have a hard time figuring out how to do it and how to convince other people why it’s so important. This chapter can help by linking project failure to nonevolutionary development.

Emergent Design takes the reader on a journey into the profession. This way of exploring takes time, so if you just want to know what to do and how to do it, this book is not for you. But if you want to deepen your understanding of professional software development, then the book can certainly help with that. Emergent Design is also a good book for managers and consultants who are coaching professionals and teams on their journey to become more effective.

Ben Linders is a specialist in Operational Development & Quality at Ericsson Telecommunicatie BV, the Netherlands. Contact him at ben.linders@gmail.com.

         

About Us

Mission, Vision & Goals
History
Awards Program
Volunteer Leadership
Staff Leadership

Contact Us

Member Resources

Volunteer Center

For More Information