Overcoming the five fundamental challenges to enable “constant velocity indefinitely” in modern software systemsIndustry Track Talk
The problems we solve with software today are impressive. The potential for software to enrich our lives, increase productivity, and impact society has never been greater. The staggering complexity of modern software systems continues to represent a significant risk to successful project outcomes. In this talk, I will discuss the five fundamental challenges related to complexity and what we, as an industry, need to do to effectively manage the risk of these challenges.
The first challenge is to minimize errors in judgment. Most problems with systems are not a result of malevolence but rather situations where individuals or groups make ill-advised decisions because of inexperience, lack of knowledge, or inadequate process.
Challenge two is related to the excessive levels of coupling within a system. Modern systems have introduced new opportunities to control the level of coupling within systems, but engineers struggle to effectively evaluate tradeoffs when they are designing systems to minimize coupling.
The third challenge is directly related to maintainability and processes that need to be in place to ensure that a system can change over time as necessary, while still maintaining the conceptual integrity of the design as more features and capabilities are added.
The distributed nature of the service-based designs of modern systems creates the fourth challenge, which is the effective management of state. Much has changed in system design since the database-driven client-server application days. However, knowledge workers’ needs and expectations of system behaviors remain consistent.
Finally, the complexity of these modern systems has put incredible pressure on our ability to deliver quality products. Rarely does a week go by when we do not see some major system outage or failure that has impacted large numbers of people. What it takes to consistently create high-quality software systems represents the fifth and final challenge we face.
Doug Durham is the CEO of Don’t Panic Labs, which helps companies innovate through the design and development of software technologies. He is also the co-founder of Nebraska Global, DPL’s parent company, known as a pioneer in the startup landscape in Nebraska.
Doug has over 30 years of software engineering and development experience in aerospace and defense, healthcare, manufacturing, ecommerce, consumer web applications, and internet network services. He is passionate about the process of solving problems through software, and the application of sound engineering principles and patterns to these efforts.
His diverse skills, education, and various leadership roles have shaped his career. Doug served as a Civil Engineer in the Air National Guard for 21 years, which deployed him to many strange and wonderful places around the world, before he retired at the rank of Major.
Doug is a proud Husker and has an Electrical Engineering degree from the University of Nebraska-Lincoln, where two of his three children are also pursuing engineering degrees. He has taught at the UNL Raikes School of Computer Science, and serves on a College of Engineering advisory board. He also has a master’s degree in Finance and Management.
A native Nebraskan, Doug and his wife Shana both love living in Lincoln.