Can you release?
Are you in the process of increasing the agility of your organization, but your teams struggle to follow your ambitions? Then one of the issues could be a technical platform that does not support it. In the following article, we will share some of our experiences.
Most companies involved in digital product development can find a few scrum teams in their organizational chart. Some organizations have reaped many of the benefits of seeking a more agile approach to product development. However, we also see many struggling to fully unleash the potential. One of the reasons may be rooted in the architecture and the fundamental IT systems.
Every time your digital products change in connection with the development of new functions, you will often need to change existing parts of your codebase. The necessary changes that are not prioritized are characterized as technical debt. If your technical debt grows, it affects the speed of your teams negatively. A platform with large technical debt is typically also more difficult to maintain and will often be characterized by lower quality and more defects. Both can reduce your ability to release and ultimately the agility of your organization.
In this article, we will dive into the technical platform that can support you in quickly sending out digital products to the market that will make a difference to your customers.
Your architecture reflects your organization
The way a company organizes itself has a very big impact on the ability to perform and execute. An often overlooked aspect when implementing organizational change is the connection between the organization and the technical systems. Already back in the 1960s, Melvin Conway identified a connection that has since become known as Conway’s law:
“Any organization that designs a system will produce a design whose structure is a copy of the organization’s communication structure”
Conway’s law is very much applicable in software development, where the structure of what is built to a large extent reflects the organizing of the teams that built it. A very simple explanation is that the communication in individual teams is easier than the communication in functional units, which in turn is easier than the communication between the functional units. As the system grows and the distance between teams increases, a natural consequence is that the software is modularized into components and interfaces are introduced.
One of the typical elements, when organizations want to increase their agility, is the creation of product or feature teams. If the architecture is divided into components, the new team structure may require members to work in an inconvenient large and very diverse codebase. This can lead to both errors and a reduction in team speed. To achieve the desired effect, it is, therefore, necessary to work with changes in the organization and the system architecture. To increase agility, it is essential to have a platform that supports development and release in short iterations within the team structures that will do the work.
The architecture is not static
When the organization develops, the product portfolio expands or when new technologies are available, the requirements for basic system architecture and the company’s IT systems are affected. At Jayway by Devoteam, we regularly see how the architecture and IT systems both support and prevent the development of successful digital products by our customers. The architecture and the fundamental IT systems are the foundation of the entire digital business, and it is crucial that its continuous development is prioritized. The management of the technical platform is not a supporting activity but an integral part of business development.
Can you release?
One of the essential prerequisites for the approach to product development addressed in this blog series is the ability to release early, often, and continuously throughout the product life cycle. Many other initiatives to increase agility will not have a significant impact if they are not built on top of a technical foundation that allows incremental value creation. One of the very usual challenges we experience with our customers is in the overlap between the development of focused digital products and the fundamental IT systems. Many of the user-focused products are often anchored under a digital manager, while the IT systems belong to the IT manager. These two branches of the organization handle different tasks. While IT systems are developed with a focus on security, stability and standardization, the products are developed with a focus on time-to-market, agility and innovation. Both are important for the company to succeed, but without an architecture with well-defined responsibilities and interfaces, the different focus in each area will challenge both in handling tasks optimally.
Is your platform reliable?
Another prerequisite in order to release is that the quality of the developed software is in focus. Systems where quality lags are often released at a lower frequency, as new releases represent a high degree of uncertainty and a large workload in terms of manual tests and bug fixes. There are many ways to increase the quality of the codebase. Some typical tools are automated testing, the establishment of continuous integration and delivery pipelines, DevOps, code reviews and ongoing refactoring. Common to a successful boost of quality is to make sure it is anchored in the mindset – both within the individual teams and the management. Visibility is a strong motivator and a data-driven approach with measurements and dashboards are great tools.
One way to focus on quality is the approach “You operate what you build” – meaning that the team takes responsibility for both developing and operating the product. This makes the consequences of low quality very visible to the individual teams. When deadlines are pushing, the ambitions for quality are often the first thing that goes to achieve short-term goals. However, introducing technical debt can be detrimental, as it tends to grow. In general, it may be better to work with a scope so that less is built, but that what is being built is built properly.
Key takeaways:
-
There is a connection between your system architecture and your organization.
-
When major organizational changes are implemented, there should be a strong focus on whether your current architecture and your fundamental IT systems support the new team structure and processes.
-
In order to release without high risks and a great workload, a high quality in the code base is required.
-
Increasing agility is based on a technical platform that supports releasing early, often and continuously throughout the product life cycle.