Photo credit: betanews.com
The current state of software reliability across the globe raises significant concerns. A series of recent incidents, including the Crowdstrike outage, have highlighted a troubling trend of software disruptions this year. These outages have led to various consequences, such as halting burger service, stranding air passengers at Heathrow Airport, and causing fresh food delays at UK borders.
While these outages may not stem from a singular cause, they indicate a deeper issue regarding software maintenance practices within the industry. In fact, a considerable amount of developers’ time is dedicated to maintenance rather than innovative tasks. Statistics reveal that during an average work week of 41.1 hours, developers allocate around 42 percent of that time to maintenance and over one-third to addressing technical debt.
SEE ALSO: CrowdStrike — what went wrong?
This focus on maintenance results in a frustrating scenario for many developers, who find themselves navigating a fragile system reminiscent of an unstable Jenga tower—its construction a mystery and the implications of making changes daunting. Amidst this, there’s often pressure from higher-ups to add new technologies, such as AI, into the mix.
Understanding software erosion
Just like natural erosion, which wears down rocks and mountains, software can also erode but through the complexities that arise from its own development. The introduction of new dependencies can create a convoluted network that complicates the maintenance and understanding of software structures.
This complexity often results from excessive unnecessary code, causing unwieldy codebases that become challenging to read, maintain, or enhance. Such deterioration could even threaten the safety and functionality of systems. It is crucial to recognize that developers are acutely aware of the challenges posed by growing codebases, often resorting to shortcuts or hacks in their efforts to expedite workflows—these compromises lead to accumulating technical debt.
The challenges of feature development
The current landscape requires developers to build new features while simultaneously managing an ever-expanding codebase that often suffers from decay. As developers introduce new functionalities, they unintentionally amplify existing complexities, leading to a vicious cycle. A seemingly simple task of updating one part of the software can falter when shortcuts disrupt other related components, diverting developers back into maintenance mode. This cycle reinforces software erosion, as maintaining the integrity of a bloated system becomes increasingly arduous.
Ignoring ‘shift left’ principles
When it comes to remedying bugs, many companies tend to apply temporary fixes rather than addressing the root causes. This often results in adding developers’ workloads for bug fixes or hiring additional quality assurance (QA) professionals, which doesn’t effectively resolve the underlying issues and leads to a tedious cycle of problem-solving.
The narrative surrounding the ‘shift left’ strategy—a proactive approach to incorporating QA early in the development process—has seemingly been overlooked. Effective integration of QA from the very start of product development is essential. This includes running both static code analyses and functional tests as new code is written, thereby enabling developers to identify potential issues early on.
Companies should aim to cultivate a comprehensive understanding of their software architectures. By examining the connections between components, re-evaluating the structure of their software, and determining if it still aligns with current needs, businesses can mitigate complexities that compromise their capabilities. For firms with extensive legacy code, such a transformation might pose challenges; however, smaller organizations with relatively new codebases could find re-architecting advantageous in the long run.
Ultimately, gaining clarity on software architecture empowers developers to create features that conform to the original design intentions. In the re-architecting process, committing to comprehensive ‘shift left’ QA practices is vital. Without such commitment, organizations risk returning to vulnerabilities that challenge stability and reliability in their software systems.
Juan Rodriguez is Director of Product Management and Product Marketing at Qt Group.
Source
betanews.com