By Andreas Heckmann, Executive Vice President & Head of Customer Solution Support and Innovation, SAP Product Engineering, SAP SE
With every new technology innovation, software functionality, and application enhancement, software developers have the power to shape the future. But to keep serving as transformative change agents, they, too, must evolve with a mindset that readily embraces the right tools and processes to continuously improve the cloud application lifecycle.
One of the most rewarding aspects of my job is watching people of various skills and experiences work together to positively change the world. Our software developers bring a level of brilliance, ingenuity, and empathy when creating and delivering the innovations, pace of change, and outcomes that our customers desire.
There's no limit in sight on what our software development teams can produce. However, that fact doesn't mean they shouldn't evolve. Businesses now operate in an environment that is quickly shifting away from traditional on-premise software and toward more modern cloud-based solutions. And as our customers adopt a cloud mindset from their digital transformation, our developers should too.
This realization recently came to life with a breakthrough approach to development. When our customers began strategically migrating their on-premise infrastructures to the cloud, we knew the time was rapidly coming when a cloud-based application lifecycle management (ALM) solution was needed. Delivering this offering – now called SAP Cloud ALM – optimizes our customers' relationships with its existing and new SAP solutions and its chosen cloud providers and support partners.
Evolving software development for true cloud transformation
Developing SAP Cloud ALM was vastly different from our typical on-premise projects. Traditionally, we implement a solution over months, then make it available for download to customers. But even while our customers are using the solution in a productive environment, the technology is updated and re-released as a new version when a critical mass of improvements are made – potentially impacting tens of thousands of installations across our customers’ and partners’ data centers or cloud environments running on SAP HANA Enterprise Cloud.
Now with the cloud, we can stop moving applications to various data centers and offer a holistic service that enables our customers to realize the speed, agility, standardization, and consolidated intelligence that the cloud promises.
Our global team of developers had to shift its design and delivery paradigm as quickly as possible to be successful. This meant transforming ourselves with the right tools and processes for delivering impactful, cloud-based innovations with a flexible mindset.
Based on advice and best practices of development executives from innovation leaders such as Netflix and Facebook, we underwent four fundamental cultural shifts:
Transform from on premise to cloud
Standard delivery of on-premise software is focused on the general availability of new software, completely updated versions, and service packs. Whether these offerings are released annually or biannually, these deliverables feature a bundle of functionalities designed, coded, tested, and quality assured by a team of 200 people. This model may have been profitable, but bug fixes, broken integrations, and requested modifications were inevitable.
The cloud environment requires a much more purposeful and swift development process. Now the goal is the daily delivery of new capabilities and updates. We run smaller, more frequent iterations with a defined road map and a portfolio of relevant innovation practices, analytics tools, and process automation – from DevOps to testing and delivery.
Evolve hierarchies to networks
In most software development teams, the organizational chart features more than 15 roles and various siloed teams focused on a specific offering, solution capability, or user experience element. Most projects require everyone in a group to be involved, each one with well-defined responsibilities and approval authority.
By flattening the hierarchical structure, we release our developers from the pressure of answering to various people with different opinions and experiences. They are now empowered to do what they do best – engineering. In addition to creating software, our developers are taking care of the end-to-end process, including testing, quality assurance, and production.
Accelerate from static to dynamic
Moving toward a cloud mindset and fully exploring the opportunities it incorporates also means changing the way we define software maintenance in our delivery model. We are no longer dedicating upwards of a year to develop software with a long chain of stage gates and approvals before it went into production. We can now enhance, modify, and create cloud solutions within 24 hours and with the confidence that security, compliance, and other required measures are in place.
To help ensure our team stays on track and delivers valuable outcomes for our customers consistently, we conduct spot checks throughout the development process. The inclusion of automation into the daily delivery model allows developers to collaboratively structure features by working on small pieces synchronously and integrating their deliverable continuously until all requirements are fulfilled. But ultimately, our developers have clear ownership of the feature or version they produce, which is increasing the overall quality and speed of the development process.
Delivering small changes avoids big bang releases and, therefore, improves availability. For example, massive simplification of code lines is now possible due to this single-trunk approach. Going from 20 code lines to just one is a significant time saver. Fixes can also be done in 60 minutes, including testing and rolling them out to all customers.
From yearly planning to continuous innovation
Daily delivery of new software functionalities and upgrades removes the risk of difficult-to-resolve surprises that often happen with on-premise software. Our customers' users can submit a note immediately through the software, detailing where a feature may not work as well, a dashboard could be improved, or an interface should be more seamless. Our development team receives this information in real time, assesses the request, and assigns the appropriate developer to resolve it.
This design-thinking mindset gives us space to listen to our customers carefully, understand their needs thoroughly, and deliver on expectations quickly. This methodology prevents the investment of time, money, and resources on features or upgrades that are not used or relevant to our customers. By optimizing that balance between nice-to-have capabilities with those that our customers must have, we can optimize the value and agility of our cloud solutions.
By offering a minimally viable feature first, our customers have a say in how the solution behaves and appears, then we iterate development in a steady cadence of small increments until their requirements and desires are fully addressed. This approach gives our customer the freedom to try out the new feature or upgrade and provide feedback so we can further refine and adapt the solution based on their needs.
Elevating the purpose of development
Let's face it: software providers cannot afford to stick with traditional, on-premise development. Old approaches may be familiar and comfortable, but they don't work in an era where cloud-centric innovations and updates are expected to be delivered continuously, consistently, and quickly. No customer can afford surprises – such as release delays and quality issues – and wait for the next release months later to have them resolved.
So much has changed for our development team over the last year. The initial motivation may have been a native-cloud project, but everything from the way we look at our projects to our delivery approach has been forever improved. In fact, the term "developer" doesn't fully describe what our talented team members do – they are engineers creating a better future for every business and person.