Repeated mistakes, new priorities, incidents, overwork, rework—all signs that something is not right. Anyway, most urgent things finally get done with huge efforts one way or another, while most of the team is looking to change jobs.
In such situations, there is so overwhelming pressure that it feels hard to find time to do the job, so even less to try improving things. And previous attempts are recalled as failures, like hidden forces were pushing things back to their initial state.
These symptoms are the ones of unhealthy systems suffering from multiple issues that ended-up rooted in the day-to-day of organizations. This article describes 7 signs of such systems and how a systemic approach can develop sustainable solutions.
Overemphasis on Siloed Metrics
I had my baggage lost in the airport recently. As I fell into an exception, I had to call a specific support line. I was passed on by more than 4 departments, each one trying to quickly close the call probably due to call duration objectives to be “efficient”.
While each department may have reached its performance target, one week has passed and I still don’t have any news. I’m now quite unsatisfied as a customer with a long lead-time, unsolved problem, and an inefficient process to get through.
The same issue easily happens in a typical software collaboration, which adds more challenges of engineering.
While local metrics are needed for a clear focus in each area, they become dangerous when they fail to articulate the link with the big picture. Such local optimizations will lead to suboptimal outcomes as a whole, creating additional complexity.
A systemic approach first looks at the overall system across silos to define the most impactful outcomes to optimize based on techniques such as limiting factor. Only then it defines local metrics that are relevant to follow and with which emphasis.
One example of this systemic approach is to assess software production based on key holistic outcomes linked to the business (market growth), organizational performance (internal NPS), delivery (lead-time), or efficiency (resources saturation).
Frequent Rework and Redundancies
The business analyst defines the requirements and flows. The product owner adds some use-cases and test cases in its own sheet. The tech lead decides to implement unit tests in addition because it’s safer, easier, and avoids talking to colleagues.
In such a scenario, it feels good to everyone from a local perspective. But if someone looks at the overall lead-time for changes, amount of repeated work, and the overhead to replicate duplicated data manually, that could be a lot of pay rises.
People like to work with their “own” things. It’s more comfortable, easier, and “quicker” (note the quote here). But missing the broader perspective, locally optimized processes result in inefficient end-to-end processes.
Software production systems which such problems will materialize with frequent hands-off of work across teams and individuals with multiple inefficiencies: manual copy, administrative registries, work queuing, synchronization meetings.
A systemic approach streamlines workflows by reducing unnecessary redundancies and rework. Looking at software production like key businesses processes (e.g. Order to Cash), most valuable collaboration points to align can be identified.
Taking our requirements example, the systemic approach would consist in identifying the most valuable requirements to invest in, align objectives per team to avoid duplicated work, and finally setup minimal natively interoperable solutions.
Communication Gaps and Misalignment
The meeting finally ends. Everyone is happy that topics have been cleared out and can now grab a coffee. The meeting lead that dedicated a few hours to the slides are satisfied with the investment, confident that things will flow better now.
A few weeks later, the demo can finally be shared at the synchronization meeting. Yet, guys present at the meeting start sharing defensively that “it was not what we agreed on ”. Return to the start, and most of the work performed has been a waste.
Communication is hard and never finished. The time you feel like messages have been passed, the ecosystem continues to evolve, requiring constant efforts to maintain communication gaps and misalignment as small as possible.
This problem already happens between 2 persons, and the scale of software organizations with 100, 500, 1000 or more people in different locations, profiles, and objectives make it difficult to avoid disjointed effort and missed synergies.
That’s where a systemic approach is required to foster transparent communication, aligning goals and strategies across teams. The hard point is to define what must be shared and at which level to optimize synergies and collaboration with minimal effort.
One trap is trying to align “everyone”. The thing is that it will be costly, hard to maintain, and probably unnecessary for part of the teams that don’t get value from getting information from something at the other extreme of their duties.
Solutions can be communication by the management but also fostering interactions between specific groups. For instance, internal communities of practices or inner-source models can help in reducing locally duplicated work.
Lack of Adaptive Workflow and Agility
Change is not easy in organizations. It can be due to comfort (“why change if I work calmly and get a good evaluation and bonus?”), fear (“If the deploy fails in production with this change I’m out”), among confidence, losing control or peers’ respect.
These reactions are human and inherited for survival but represent a major problem for organizations that have to adapt to a continuously moving ecosystem. Being slow means that the current and future competitiveness of the business is at risk.
But things can change. As Mark Schwartz describes in the The Delicate Art of Bureaucracy, even historical public organizations can develop their workflow and adaptive capacity (one example is the streamline of application from weeks to days).
Yet, as Mark describes in his book it requires more than a single action or a vision (one hint in the subtitle “the Monkey, the Razor, and the Sumo Wrestler”). It required understanding the beneath issues and motivations that would make changes stick.
A systemic approach allows for flexible workflows, promoting adaptability and agile responses in the organization, reaching virtuous cycles where people value innovation, testing, and adapting to what’s working or not rather than freezing.
The goal is to develop the organizational capability to test and adapt fast to new ways of working with efficient collaboration, healthy culture, and having trained individuals to change themselves as part of a group, ready to share their learnings.
Inefficient Resource Allocation
Poor resource allocation materializes in different problems. Firefighters self-proclaimed heroes (you will have to deal with it sooner or later), go-to person for everything (with work piling up and waiting), plus burn-outs and turnover.
People get tired of such environment where everything is urgent, without true prioritization, and you have “just f* solve the problem” with constant changes of plans. Unfortunately, people are sometimes happy that everyone is “very busy”.
Yet, the quote of Benjamin Franklin illustrates the issue: “If you fail to plan, you are planning to fail”.
The systemic approach recognizes the need to effectively plan the work to maximize productivity in the short and long-term. Good resource allocation avoids saturing people with too much work (that will delay everything else) or context-switching.
Indeed, the Lean theory sets the optimal resources allocation ratio between 50% and 70% to respond quickly to unplanned work and develop sustainable improvements. Similar ratios are found in the famous novel The Phoenix Project.
The consequence is to work under stronger constraints. Choices and priorities must be made before actually working on topics, reinforcing the need to correctly assess opportunities and optimize investments in what will maximize the results.
Repetitive Firefighting
Some guys live to stop fires. They like the spontaneity required to act, the lights on them, attention, action, and finally the recognition for “once more” having solved the problem. While we need that for firefighters, that’s not what we need for engineers.
Toxic organizations can end up in such loops where people value more short-term resolution (eating great dessert every day) rather than developing sustainable solutions to root causes issues (eating more veggies for months to be healthy).
Such organizations are doomed to disappear in their own fires.
A systemic approach will precisely invest in looking at the multiple incidents occurrences across the system to solve problems that will avoid a number of other fires, and most importantly address contributing factors leading to these issues.
Incidents in engineering are not new and NASA have developed a systemic approach to avoiding incidents that evolved from a technical perspective to a human, organizational, and system contributing factor to drastically reduce incidents.
Absence of Continuous Learning
It is always interesting to talk to people with multiple years of history within an organization before accepting a job. More than interesting stories, they can tell you if the same issues happen again and again, whatever other changes were made.
Depending on the issues criticality and frequency, you can get a good indicator of the capability of continuous learning of the organization. While some teams may perform retrospectives, it is another to learn and improve as an organization.
The problem: each failed learning results in a future waste of resources.
A systemic approach recognizes the need to understand the behavior of the system in the first place, mapping where the time is allocated and the flow of work between teams. That first step already gives value consolidating the big picture usually lost.
From there, the organization can implement systematic processes like retrospectives based on data and frequent experiments to develop solutions in the given system, cumulating multiple improvements that maximize organizational performance.
The Systemic Approach to Software Production
The symptoms covered are warning signs that your software production system is unhealthy. While it can continue to work for some time, without proactive actions, it will surely erode like rocks on the sea requiring drastic and painful changes later on.
The key warning signs to look at are:
- Siloed optimizations to the detriment of the whole
- End-to-end processes with long delays and high rework
- Toxic work environment lacking improvements and learning.
These issues translate into concrete business loss and organizational issues defined in the Quality Engineering Maturity Model covering key business, organization and technology performance metrics (among which NPS, revenues, lead-time, efficiency).
We saw that these problems are underlying causes that can be hard to grasp, requiring a different approach to basic problem-solving methods. Indeed, complex problems have systemic issues that only a systemic approach can solve.
The systemic approach applied to software production is Quality Engineering where the focus is to maximize value delivery working on the big picture of software systems with a bit more precision than “people, process, technology”.
Start today with MAMOS.