Skip to main content
main-content
Top

About this book

Graduate to the next level of your software development career, learning the tools you need to successfully manage the complexity of modern software systems.

Whether you are a developer at a small software company, or one of many developers at a large enterprise, your success directly correlates to the ability of your development team to rapidly respond to change. What makes this task challenging in today’s world, is that the technical challenges we as developers strive to overcome are becoming increasingly more complex. We have to consider many more options when it comes to things like requirements, solution hosting, support, pace of change, and generally with less time and warning.

A good developer knows that it is critical to manage every aspect of software development from soup to nuts, and understands that when details and decisions are left to chance, outcomes can be negatively impacted. Poor planning can result in increased errors, substandard quality, budget and schedule overruns, and result in the ultimate business failure, dissatisfied customers, and stakeholders.

This book will help you put on the lenses of a software engineer. You will come away with an understanding of how to view the entire spectrum of the software development process, learn valuable concepts, and apply these principles through meaningful examples, case studies, and source code.

What You Will Learn

Move beyond being a programmer to being a professional software engineerSpend more time doing software development; minimize time spent dealing with ineffective or inadequate processesReduce errors in judgment and provide predictable outcomes, while still maintaining agility and responsiveness using Lean and Agile practicesKnow the steps you can take to ensure a shared understanding among stakeholdersDiscover tools to validate user experience early and often to minimize costly re-workDevelop software designs and architectures that enable long-term business agilityImplement patterns and processes that result in “falling into the pit of success” instead of into the “pit of failure”Adopt processes and patterns that will result in pervasive “institutionalized” qualityUnderstand the necessity of redefining the essential role of technical leadership to ensure team maturity and growth

Who This Book Is For

Software developers and team leaders who have struggled to implement design and development best practices due to lack of team resources, in-depth knowledge, or experience, and want a book designed to provide the confidence and foundational skills needed to achieve success

Table of Contents

Frontmatter

Chapter 1. Focusing on Software Development Outcomes Instead of Outputs

Abstract
Imagine landscaping your yard is your hobby, and you would like to have a small storage building to keep all of your garden and yard tools organized and stored. You want to be the envy of your neighbors, so you take the opportunity to create something that will stand out. You spend an hour or two drawing something that demonstrates the style of the garden shed and its dimensions. Maybe something like the plans shown in Figure 1-1.
Doug Durham, Chad Michel

Chapter 2. Gaining a Shared Understanding Throughout the Project

Abstract
As my oldest child became a teenager, he wanted to learn how to drive a car with a manual transmission. We have a Jeep Wrangler with a six-speed that is not necessarily the easiest thing to learn on but was an adequate “lab” for learning this skill. We went to a large parking lot near our house. I drove the car around a bit and explained the interaction between the stick shift, my left foot on the clutch, and my right foot on the accelerator. My son is mechanically inclined, so he soaked this all up and we decided to change places and see how he did. As expected, the first few attempts resulted in the car lurching forward and stalling because he took his foot off the clutch too fast. No problem! We discussed how the clutch and accelerator had to interact to create the smooth transition from stopped to moving in first gear. He nodded, indicating he understood. Things were going great!
Doug Durham, Chad Michel

Chapter 3. Validation of User Experience

Abstract
What is your favorite movie? Is it a Steven Spielberg action flick? Is it a Nora Ephron romantic comedy? How often have we seen reviews from professional movie critics that either applauded a film or gave it a negative review, but then the commercial success of the film is quite the opposite of the reviews? We like certain films because there are things in them that speak to us. And to that end, we are all critics. We all have opinions on the films we watch. We also have opinions about the software we consume. You probably have software you like and software you hate to use, even if you can’t explain why. In this chapter, we will focus on what we can do to reduce the volatility (and subsequent rework) in the design and development of user interfaces.
Doug Durham, Chad Michel

Chapter 4. Designing Software Systems That Age Well and Adapt to Change

Abstract
Building systems that are as easy to understand and maintain in year five as they were in year one does not happen naturally. It takes deliberate and disciplined effort, along with a firm grasp of the reasons, to understand why systems become difficult to change. This resistance to change is known as software entropy, which is the natural tendency of software to devolve toward disorder and chaos. In this chapter, we will focus on what it takes to design, build, and maintain systems that age well and can adapt to change over the lifetime of the project.
Doug Durham, Chad Michel

Chapter 5. Developers “Falling into the Pit of Success”

Abstract
Success must be engineered, and failure must require falling outside of norms. We must engineer development practices and processes to ensure developers are successful. Leaving anything to chance will result in developers falling into the pit of failure. In this chapter, we will focus on those practices and processes that enable developers to consistently fall into the pit of success.
Doug Durham, Chad Michel

Chapter 6. Institutionalized Quality

Abstract
There is no silver bullet to quality in software development. Quality must be valued throughout an organization so that quality practices can exist at all levels and in all processes. In this chapter, we will focus on key practices that will help ensure quality throughout the entire process.
Doug Durham, Chad Michel

Chapter 7. The Role of Chief Engineer

Abstract
Software development is very technical, with many technical decisions along the journey. These decisions rarely cause massive failures in isolation. As discussed in Chapter 4, it is the sum of many small decisions that often leads to unmaintainable products. Transforming a team into an engine for modern application development will not be possible without a passionate, strong leader who can convince everyone of the better way and then actively works to ensure the team stays on track. This leader needs to be rigorous about insisting on no compromises when it comes to the processes and principles that will achieve these cultural changes and recognizes the risks when outcomes are left to chance. In this chapter, we will focus on the importance of having strong technical leadership within an organization to help nurture and sustain the design and development of our software systems.
Doug Durham, Chad Michel

Chapter 8. Bringing It All Together – Creating an Action Plan

Abstract
We have certainly thrown a lot at you by this point. You might be feeling overwhelmed by everything you need to do to transform your team and organization. It is important to understand that transforming a team and a culture is a process, not an event. As the saying goes, Rome was not built in a day. We have been involved in software development as far back as the late 1980s and 1990s, and this book is based upon that experience. We look at it very much like a continuing journey of discovery and growth. It’s not as if we woke up one day and implemented all of the practices we have discussed. It happened over time, and there were some bumps along the road as we learned what was valuable and what was not. While we hope this book will help you avoid some of the red herrings we followed and wrong turns we might have made, it is important for you to realize this will be a journey for you as well. The question is, “Where should your journey start?” The goal of this chapter is to help you with these decisions.
Doug Durham, Chad Michel

Backmatter

Additional information

Premium Partner

    Image Credits