The business of any IT-enabled organization desperately depends on its ability to deliver functionality, timely and frequently. That means their utmost priority should be ensuring that software is available and works as promised. But with the myriad of modern development methods, techniques, and frameworks (not to mention reorganizations), this goal often falls by the wayside. Putting the software delivery process front and center is the only way to improve it. This article describes exactly how to achieve that and identifies the key, next steps to take.
Software Quality Means IT Acceleration
The time of IT acceleration is now. Companies create new IT organizations from scratch to fuel new business opportunities, often just to prevent the competitor from eating up the market share. The aim is not to become the biggest fish, but to belong to the fastest fish in the market. Organizations can no longer get by with software that's unmaintainable, difficult to modify, and doesn't scale. Poor-quality software results in higher maintenance costs and is difficult to modify. Poor functionality or peculiar data leaks create an impaired image of the whole organization, which leads to loss of capital. Software delivery must be done right the first time.
Learn how to deliver quality software fast every single day with Continuous Delivery and Test Automation.
Time for quality and speed
Speed and quality can co-exist within the realm of software development, but it’s essential to organize the appropriate amount of domain knowledge first. What is the system you are building supposed to do? How can a proper domain model act as a liaison between the business and IT perspective? A domain model provides organized and structured knowledge of the problem domain, such as vocabulary and fundamental concepts. Many agile (project) organizations are sufficiently flexible to accommodate for continuous changes to the domain model. This flexibility removes the need for a big design upfront, provided that business and IT share the same language and (perhaps even more critical) mental model.
Often, an organization implements Scrum or another agile methodology that allows it to deliver pieces of functionality incrementally, then calls it a day. But a simple question quickly uncovers the problem with this approach:
Q: Are your user stories delivered into production?
A: No, but we dó have the ability to deliver to production at the end of every sprint.
So, the answer, in fact, is no, which delays valuable end-user feedback: the only feedback that matters.
Several issues could prevent a frequent go-live. These may be technical, but also often come down to a lack of trust; or the need to stay in control. When striving to achieve both quality and speed simultaneously, control can be counterproductive. The software is only valuable when it’s available for use in the production environment. So, the only adequate measure of an IT project's progress is its available functionality.
A holistic perspective
Only a holistic view of the software delivery process can improve it. Often, the most critical problems are non-technical. Instead, they originate from the development process, the techniques used, and the skills and experience of the software teams.
For example, according to Conway’s law, organizations design systems (defined broadly) with structures that mirror or copy their own communication style. So, a poorly communicating organization that doesn’t clearly assign responsibilities will produce a suboptimal system. You can immediately see why this is problematic, since flexibility and modifiability of software systems are a prerequisite for continuous improvement. So, it pays to observe both the communication lines within the organization as well as the design of the software.
A software source code audit can correctly pinpoint technical problems like code duplication or ill-structured code. A quick win would, in that case, be to refactor the code to address these deficiencies. However, this wouldn’t solve any of the problems’ underlying causes, such as chosen techniques and tools, lack of feedback mechanisms in the software development process, poor quality mindset within the development team, or too many repetitive manual activities in the development process.
A holistic perspective is pivotal. It provides the appropriate insights into the organization, a clear view on architectural decisions, and the requirements and context for the solutions’ development. With this overview, organizations can achieve true and measurable improvement.
Let the appropriate insight drive you forward
A proper review provides insights that can help organizations put the right software into production more quickly and frequently. It results in an “improvement backlog” that covers the most important topics to tackle first, such as:
- Improving craftsmanship and team skills.
- Setting the right context (think: roles, responsibilities, sense of ownership) in which skilled IT-professionals can make the difference.
- Establishing a solid development process: Scrum basics, i.e. quality feedback fully embedded within each activity of the software delivery process. All this supported by a proper vision.
- Introducing technical measures that help to speed up the development process. Manual, repetitive activities can be automated to reduce the error rate and shorten the duration. In short, properly introducing continuous delivery.
More on Software Quality Assurance
- Does your organization struggle with a complex IT landscape? Read (in Dutch) how to perform an in-depth IT audit to boost your business performance (and revenue).
- Looking for tips and techniques to embed the proper quality mindset within your software teams? Then Nurturing Agile Quality is a must-read!