What’s Driving Software Success in Ecommerce?
When we talk about ecommerce success, we’re ultimately talking about software success. Software isn’t just a key part of your business; it has become the main differentiator between you and your competition. How quickly can you build your software? How quickly can you deliver it to your customers?
When you look at the current acceleration of digital transformation, the increase in remote workforces, and a greater reliance on online transactions and interactions, these shifts together have ultimately transformed every company into an ecommerce company. This is no longer on the horizon as a reliable expectation. It’s already happened, and I would say in a pretty brutal way.
When trying to understand how big a particular wave or trend is, I like to look at infrastructure trends. If we think about what most ecommerce companies need, it’s a payment platform or a payment stack. The leader in this category is Stripe. Look at how Stripe is skyrocketing in terms of volume and in terms of having millions of customers. They also recently closed a round of funding where they are now valued at more than $100 billion. It becomes the new norm.
When we talk about ecommerce success, we’re ultimately talking about software success. Software isn’t just a key part of your business; it has become the main differentiator between you and your competition. How quickly can you build your software? How quickly can you deliver it to your customers? This is where you create real competitive advantages.
The biggest challenge is all about change management. Whether you’re a startup or big enterprise, how will you evolve and then transform yourself or your organization? How will you support your teams during this journey to become a software company that innovates continuously and drives high organizational performance?
Ecommerce = Quality @ Speed
In the past, speed and quality were somewhat at odds with each other. You could be good at one of them, but that meant the other would suffer. But that’s simply not an option anymore. Your customers won’t tolerate one of them being absent. You’ve got to focus on both. So how are today’s most successful organizations delivering “quality at speed?”
For those looking for answers, there has been some outstanding research around the similar traits of high-performing teams – the ones that deploy multiple times a day versus those who release less frequently, maybe only quarterly. These surveys have been able to identify some really clear correlations and data points between release frequency and software quality. There have been many case studies that clearly show that teams who deploy multiple times a day are far more likely to deliver higher quality software compared to those who are releasing only every couple of months.
The teams that deploy daily or multiple times a day will typically have a change fail rate below 15%. They will have a time-to-resolution when there is an issue that is less than an hour. If you look at low-performing teams, they will typically deploy in weeks or months and will have a change fail rate of more than 30%. Think about what this means for your user experience. The way you achieve that optimal, low change fail rate is through DevSecOps, which for many organizations will require embracing new ways of working and learning.
The good news is that there is actually a playbook for this: Accelerate by Dr. Nicole Forsgren. There’s such a wealth of information in this book, including a list of aspirational—and achievable—capabilities that have been identified in today’s most successful software organizations. These capabilities are also organized into five main categories starting with continuous delivery. They include continuous integration, continuous deployment, test automation, and others.
The second category is architecture. How do you come up with the right, loosely coupled architecture that will enable you to make changes very quickly and without impacting or having a lot of dependencies on the rest of your application? There are also processes and lean management categories. Lastly, and most importantly to me, is culture, the fifth pillar. Culture is such an important aspect of a DevOps transformation. How do you make sure that you support, train, empower, and organize your teams so they can really accelerate the delivery of higher quality software?
Where to begin?
Assuming you have the right leadership and culture in place, which is the foundation, continuous deployment is definitely my favorite starting point, especially for an organization looking to accelerate its cadence from monthly to daily releases. When you look at continuous deployment or continuous delivery, the first thing you want or need to accelerate is your testing. That’s generally your first bottleneck. “Team, we currently release every three months. I want us on the next sprint to release at the end of this week.” Now, that won’t work, but I want to see what breaks.
What breaks will be your testing, because there is likely not enough automation. What teams usually have is too many functional tests, manual tests, and not enough unit tests. So, not only does it take too long to execute, but the tests are also very brittle. I view testing as somewhat of the “guiding lights” of the software development process. In many cases, you can show me your tests and I can make a pretty accurate determination of the structure of your software development team and the processes you currently have in place.
There are so many bottlenecks that you can quickly identify in your build, testing, delivery, and deployment processes. And if that becomes the focus of your teams and they make an effort to address them one by one, and automate some of your more manual, error-prone processes, you will quickly see gains in both your overall software quality and your ability to release more frequently. Looking first at your testing processes will get you started on the right path. When you look at software testing and how important it is to continuous delivery, we see a direct correlation with software performance, too.
Faster Feedback Loops
The further your teams get down this path, the more value they’re going to see from their efforts. You’re getting faster, earlier feedback. That shortened feedback loop enables you to resolve a bug that was just introduced a few days ago, not three months ago where that context-switching can really grind things to a halt. Efficiency gains like these are one of the first things that will become evident.
As a developer, the best way to identify the meaningfulness and impact of my work is from the direct feedback of the users of the software I’m helping create. And the way to increase the number of times I get that feedback is by being able to get that software into their hands more frequently. That is why automation is tremendously valuable to me. It is all about velocity and speed of learning. When you release, say every quarter, the distance between what you do and the value or impact you worked to create is just too long. It kills the feedback loop and the intimacy with the customer.
Collaboration: The next bottleneck to break
When you have improved your testing and get closer to continuous delivery, you will spot another bottleneck, and that is usually about collaboration. As you iterate quicker, you deliver smaller pieces of software every week, or a couple of times a week. That collaboration between product owners, testers, developers, and the business cannot obviously continue to only happen a couple of times a quarter.
Your collaboration and conversations essentially need to be just as “continuous” as your delivery. This means you will likely need new ways to collaborate, new processes, new tools. As a co-founder of HipTest (now CucumberStudio), it’s no surprise that I view behavior-driven development (BDD) as a great approach to solving this problem. BDD “shifts left” the quality in software by creating alignment between business stakeholders, product owners, testers, and developers. One way this is done is by using techniques like “example mapping” to explore as a team the business problem and decompose the user story into more granular business rules and examples.
Each example is then refined into scenarios describing the behavior of the expected software. And these scenarios are used to drive development. This ensures that what will be developed will be based on a contract and agreement that has been defined early on between all the key stakeholders.
If you’re able to make sure from the very beginning that you’ve developed the right thing, a feature, or an app that meets customer needs and will deliver value to them, you have a tremendous advantage over your competition. We have to get away from informally defined requirements, a lack of a shared understanding between stakeholders, and testing only after development. These really jeopardize, if not completely eliminate any chance of success for your organization or for your customers! Success today revolves around meeting your customers where they are currently at and implementing internal innovations that enable you to continuously deliver external innovations that will help your customers get where they’re going.