Projects have always been a popular way to organise software development and funding. However, this approach can be restrictive for organisations of all sizes, including small and medium sized enterprises (SMEs), and incur additional costs during the development process, such as when new project teams must be assembled. DevOps and Agile development can help organisations better respond to customer demands and keep costs under control, says Craig Cook, Chief Engineer at software consultancy, Catapult.
One of the characteristics of a highly successful software company is that it can rapidly progress from having an idea to getting a finished, bug-free release in front of customers. How long this takes varies between businesses. The best software companies can do it in a matter of hours, however, in many companies, product releases take months.
Functional silos
Why? Because functional silos are very common in software engineering, to the point where they’re considered the traditional way of doing things. For example, an SME might have five separate teams for development, testing, operations, infrastructure and security. This means that the same work is passed around an organisation, with each team handing it to the next team.
Even if each team only spends one day on a project before immediately passing it on to the next team, in a business with five separate teams the timescale is a week at best. Add other team priorities, existing commitments or multiple concurrent projects to the mix and the timescale becomes weeks, months or even years.
Long lead times lead to long feedback loops and, all too often, customer demands have changed by the time the release is live. Worse still, the business might realise it’s not even what the customer wanted in the first place.
In contrast, modern software engineering practices focus on breaking down functional silos, producing rapid iterations of a product or service, getting customer feedback and using this to develop the next update. Often, businesses that adopt modern software engineering practices can achieve weekly, even daily deployments.
The cost of project teams
Traditional project teams are often short-lived and, once a project has been completed, will usually be disbanded. However, when changes are needed later, the business will need to reassemble the team, which will involve further costs, such as possibly hiring new staff. The combined knowledge would have also been lost after separation, and it takes time for team members to get back up to speed on how the service or system was left.
In the interim, other teams may have also made minor changes that were not documented, tested or implemented correctly, leading to technical debt and refactoring. This is because the speed of delivery is often prioritised over proper technical implementation. Despite wanting to develop software as quickly as possible, teams end up having to go back and reflect on what they have learnt.
Budget management
One of the downfalls of project working is budget management during the iteration stage. When businesses are project-orientated, business cases are created to justify funding, and the budget for each project is set at the very beginning. While finance processes have often relied on waterfall approaches, this can pose a variety of challenges.
For starters, if the project runs over, new negotiations are needed for extra funding. Then, once the project reaches the final Quality Assurance (QA) phase, it can become more expensive than expected if multiple changes are needed. However, in Agile product development, the QA phase is considered an anti-pattern as it should begin from the initial design meeting through to feedback instead of having its own step in the process.
Going Agile
Moving from waterfall-based project management to Agile can help businesses overcome many of the costs and delays associated with linear development and siloed teams. Good software teams might include T-shaped employees with specialised knowledge and skills in a particular area, combined with the desire and ability to apply this across different disciplines. By creating product teams, businesses are moving away from ‘get this project done quickly and move on to the next’ and towards ‘let’s create a successful product that our customers value’.
This collaborative, more flexible structure allows businesses to develop minimum viable products (MVP), rapidly release them and receive feedback that enables them to continue developing a product that meets customer expectations. When customers ask for a new feature, it can be prioritised and launched quickly. Meanwhile, any subsequent issues that could lead to downtime, like bugs, can also be resolved immediately. Ultimately, using customer input to iterate and improve the service helps companies retain existing customers and recruit new ones and an Agile model helps them do it faster.
Subsequently, teams can come together to optimise processes that reduce interaction costs and low points in the user journey. Channel transition, for example, can often cause friction in the user experience if not effectively streamlined. If users have to put in extra effort to get to the endpoint, they’re likely to end the session prematurely. Instead, teams should make the transition fast and with minimal effort.
Creating smaller, highly skilled teams that centre around one product removes many restrictive barriers that often add to a company’s costs. Product teams manage their own budgets using value-based prioritisation, and the team determines what features to deliver within budget to continuously iterate and improve customer value.
Becoming Agile can seem like a big change from a traditional set-up, but the flexibility it allows enables SMEs to manage financial constraints while improving customer experience.