In this episode, we talk to Jeff Doolittle, a software architect and transformational leader with more than 20 years of experience designing and architecting software systems about the importance of complexity in engineering, and how engineers and engineering leaders can manage complexity in their organizations.
Here Are Some of the Key Points Discussed in This Episode:
- Engineers have a better grasp of complexity than most others do because they have been exposed to mathematics and real-world constraints. If you have a system with seven components, and those components can interact with each other without constraints, you will have a system that has 5,040 possible combinations and permutations of the seven components. This is where the complexity comes in because people can only have four to seven different things in their mind at one time, and do not inherently understand things like large numbers. Most software systems today have a lot more than 14 micro-services, which gives them over 87 billion possible combinations. The challenge of complexity is not only a software problem — it’s a human challenge too.
- Technological complexity is excessively reliant on technologies and tools, especially new and shiny ones. If we are obsessed with our tools or technologies and want them to work in vast and different ways, you will get a system that has a lot of technological complexity.
- Integration complexity is where you have an overabundance of components that are connected together with a lack of consistency, cohesion, and constraints. It causes micro-service mayhem — many parts that are thrown together, making it unmaintainable.
- Organization complexity results when managers do not filter the new information they receive, and the engineers who work for them therefore discuss all variations of the information with each other. It causes the organizational structure to mimic the integration complexity by having integration everywhere. It results in a system that is not consistent, cohesive, and properly constructed. Managers must help the engineers to organize in a way that can contain and manage complexity.
- A poorly designed system (one that was not designed with quality in mind) will suffer from operational complexity. Many software teams are not responsible for the maintenance of the software they produce, which naturally leads to operational complexity. When the person who built the system is responsible for operating the system, there is a natural reduction of operational complexity.
- Quality assurance is design integrity from the beginning. It empowers everyone in the organization to say there is a quality problem and be rewarded for it. The cheapest time to discover a defect is in the design and requirements phase — before you build anything.
- In market complexity, it is helpful when people building the software and systems understand the nature and requirements of the people they are serving, and the nature of the complexities that those people as individuals and groups will face.
- To contain complexity, you must identify capabilities. Understand the purpose and goal of what you are trying to build. Determine the minimum number of capabilities that can be integrated to solve the main problem. Sometimes you identify a way to have fewer capabilities to solve a problem, which can be used as an evaluation and analysis tool to help you improve existing systems.
- To enforce constraints, you must first find the appropriate constraints for the system. Once you have the constraints, you can validate things against them, like the capabilities.
- Encapsulation is one of the most important ways to allow a team to be most effective by defining and clarifying what communication can stay inside the team, and what communication is allowed outside the team for evaluation.
- To commit to vigilance, everyone must be aware that quality assurance is part of everyone’s job, and that they will be rewarded when finding a problem with the quality.
- To better manage complexity, engineers should read a couple of books on system thinking. Thinking and reading about systems thinking generally, and teaching your colleagues to think the same way, will be a great benefit when it comes to managing complexities.
More in This Episode…
In the Take Action Today segment of the show, Jeff talks about what action you can take to manage complexity and getting into systems thinking.
About the Guest, Jeff Doolittle
Jeff began his career in a successful software consulting firm serving companies of all sizes, from small businesses through Fortune 100 companies. He took on the role of CTO in just a few short years. Jeff’s experience as a consultant exposed him to a vast array of business problems for which he crafted valuable, customer-centric solutions. His next challenge came in his role as co-founder and CTO of a SaaS startup, where he provided strong business, architectural, system design, and process leadership. Under Jeff’s guidance, his company pioneered cloud automation processes and event-driven systems long before these had become standard industry practice. Jeff currently works at Trimble in the Construction division as a senior software architect.
In addition to architectural mastery, Jeff has completed a Master of Arts in Transformational Leadership, a discipline that focuses on the techniques of leadership replication. An inspiring teacher and leader, anyone who has had the opportunity to work with or be mentored by him will confirm that working with Jeff has made them better software engineers, architects, and leaders.
About the Host, Jeff Perry, MBA
Jeff Perry is a leadership/career coach for engineers, building mindsets, leadership, and career intentions to unlock hidden potential and remove self-imposed roadblocks for career and life. For years, he has had the pleasure of supporting engineers and software pros, from new grads to director level. Having been on the front lines in the technical world, he has been able to map out the necessary skills for becoming a quality leader in the field.
You can connect with Jeff on LinkedIn at https://www.linkedin.com/in/jeffcperry/ or visit his website, https://morethan-engineering.com. Jeff also has a new, FREE, on-demand training course for engineers who are job searching or in job transitions. You can see it at https://engineeringcareeraccelerator.com.
Books Mentioned in This Episode
Resources and Links Mentioned in This Session Include:
Software Engineering Radio
Framework for leaders managing complex and chaotic environments
Training for systems thinkers and software architects
Connect with Jeff Doolittle on LinkedIn
This Episode Is Brought to You By:
Washington State University
Washington State University’s Engineering and Technology Management master’s degree program is a perfect balance of technical and managerial education that helps prepare practicing engineers for managing projects, people, and organizational systems. As one former student noted, “The knowledge that I gained from the ETM Program helped me become a more competent, confident engineer and manager. The program greatly impacted my career and has been a key element in my continued success.” Learn more about the Engineering Management profession at etm.wsu.edu or [email protected]. Take charge of your career and reach out today.
ASME — the American Society of Mechanical Engineers — serves a wide-ranging engineering community through quality learning, the development of codes and standards, certifications, research, conferences, publications, government relations, and other forms of outreach. Becoming a member and joining the ASME community is the most important connection a current or future Mechanical Engineer can make. Members can engage with various ASME Sections & Technical Divisions, led by ASME volunteers. ASME members get access to a variety of Career Resources to help you throughout your career, whether you’re just out of school, or an already-seasoned professional. Search for rewarding engineering jobs at ASME’s Career Center or focus on your professional development by participating in live webinars on key topics. Don’t miss your chance to advance your career, enhance your professional network, and find your next ME opportunity, check out ASME on www.asme.org.
We would love to hear any questions you might have or stories you might share on how engineers can manage complexity in their organizations.
Please leave your comments, feedback, or questions in the section below.
To your success,
Jeff Perry, MBA
Host of The Engineering Career Coach Podcast