Velocity-as-a-Service: 5 Ways to Ship Like a Software Company

October 12, 2017 Richard Seroter

Peter Senge said "the only sustainable competitive advantage is an organization's ability to learn faster than the competition." Would you benefit from updating your key systems weekly instead of bi-annually? Smart companies are shortening their feedback loops thanks to improvements in software delivery. But you're probably worn out from abstract advice about how your company can become good at software. There are few companies in the world that ship software as often as Pivotal does, and we learned five things on our journey.

You may know about Pivotal because you use one or two of our products. When some people say "we use Pivotal" they mean the agile planning tool Pivotal Tracker. Others know us for commercial products like Pivotal Cloud Foundry and Greenplum. Or you know us for open source stewardship of things like Spring and RabbitMQ. And some are familiar with us because of the wild success that Pivotal Labs has with startups and big enterprises. Regardless, we do a lot of stuff around here. Let's look at the software we shipped in September 2017:

Busy month. But enough about us. I promised you five tips that you can act on today. None of the below happened overnight, but each one contributed greatly to our ability to regularly ship quality software, and you can do the same.

#1 Automate your pipeline.

Nothing, NOTHING changes the game like automating the path to production. First, this means adding test coverage to your codebase. If you can't trust what you're deploying, you won't automate it. You don't need 100% test coverage, but you do need enough to be representative.

Tests give you confidence that your app works, but that's only a piece of automating your pipeline. Do you actually understand the deployment pipeline? That is, every step that your team follows to get from idea to production? It pays off to do value stream mapping to understand the parties, handoffs, and overall flow. For example, you may realize that the impact of automating one step is muted until you relieve bottlenecks on your infrastructure team. That said, you don’t need to automate everything to realize value. Value stream mapping may identify simple changes that trim meaningful time from the overall process. But over time, you’ll want to incrementally automate significant portions of your path to production.

At Pivotal, ongoing investment in our deployment pipeline allows us to update stemcells (OS images) in hours, and build, integrate, and test software across 5+ cloud providers. It's become our own competitive advantage!

#2 Improve cross-team visibility.

Few apps or systems exist as a silo. They depend on other services or infrastructure. To improve your team's velocity, you need insight into what others are doing.

At Pivotal, we use a few mechanisms to build cross-team awareness. Each morning there's a standup where engineers and product managers share information. Every team's product backlog is visible in Pivotal Tracker. Each Friday, teams send out an email "drumbeat" that highlights their progress. And everywhere in a Pivotal office, you see monitors showing Concourse pipelines. A sweep through the office tells you the status of everyone's last build.

 

#3 Upgrade your technology.

Sometimes companies over-correct on "culture" as part of a software-powered transformation. To be sure, proper principles, values, and practices are critical. But that alone doesn't create the seismic shift needed.

Productivity matters, so it's time to rethink your tech stack. That means reassessing tools, platforms, and even developer workstations.  An average developer salary in the U.S. is $80k per year. How much does a second monitor or quality IDE really cost you if it means that developer is significantly more productive?

Reconsider the technology you use to plan and deploy software. Invest in modern tools that automate mundane tasks like environment setup, patching, and software deployments. Make sure developers are using exciting, relevant frameworks that exponentially improve velocity. Spring Boot, Kubernetes, Cloud Foundry, and Steeltoe all fit the bill. Don't handcuff your team with outdated technology and legacy approaches that slows down delivery.

#4 Relentlessly focus on self-service.

To move fast, you need to empower people. And that means you give people the ability to engage through APIs, not tickets. Remove bottlenecks, reduce handoffs, and speed things up!

That's not to say that Pivotal has automated everything for our 60+ teams. But we have established a discipline around offering quality docs for shared services, for example. If someone wants to tap into our "master pipeline" for CI/CD services, there's a whole website setup with prerequisites and details for getting started. Don't underrate the value of simple documentation to scale interactions across teams.

At the same time, look for ways to introduce legit automation so that teams can push code, provision environments, access data, and generate docs. Sometimes this means you have to upgrade your technology (see tip #3) or use the APIs available in what you have in place.

#5 Adopt a release train model.

Tell me if this sounds familiar: you miss your ship date because the team didn't finish adding a particular piece of functionality. We've all been there. But what if your teams could ship what was ready, at a certain time? Why wait for a subset of features?

Enter "release trains." In this scenario, you have a regular rhythm for software delivery (weekly, quarterly, monthly), and nothing holds that up. Everyone knows the date, and whatever is shippable, gets shipped. Couldn't get something done in time? Wait for the next release. This sets expectations for developers and customers, while also encouraging product managers to scope small and decompose complex things.

Around a year ago, we struggled to ship Pivotal Cloud Foundry on a consistent rhythm. The product leadership folks decided to adopt a release train model and ship whatever software was ready at the time. The result? We've hit our targets for six straight quarters.

This model may challenge how you do long-term planning or marketing. But that's worth it to get product in the hands of your customers faster.

Next Steps

If you're working at a Fortune 500 enterprise, you probably have significantly more developers on staff than Pivotal does. You should be able to out-ship us. Nothing prevents you from adopting the practices above, and improving your delivery velocity. That means faster feedback. And that means that you're more responsive to customers and delighting them with valuable experiences.

Does this sound good to you? Ping us and ask for help modeling your core value streams, and building the discipline to ship great software, constantly. It'll revitalize your business.

 

About the Author

Richard Seroter

Richard Seroter is the VP of Product Marketing at Pivotal, an 11-time Microsoft MVP for cloud, an instructor for developer-centric training company Pluralsight, the lead InfoQ.com editor for cloud computing, and author of multiple books on application integration strategies. As VP of Product Marketing at Pivotal, Richard heads up product, partner, customer, and technical marketing and helps customers see how to transform the way they build software. Richard maintains a regularly updated blog (seroter.wordpress.com) on topics of architecture and solution design and can be found on Twitter as @rseroter.

Follow on Twitter More Content by Richard Seroter
Previous
Demand Your On-Demand RabbitMQ Clusters Now
Demand Your On-Demand RabbitMQ Clusters Now

We’re proud to announce an important new capability of RabbitMQ for Pivotal Cloud Foundry (PCF). Developers...

Next
Big Things Come in Small Packages: Getting Started with Pivotal Cloud Foundry Small Footprint
Big Things Come in Small Packages: Getting Started with Pivotal Cloud Foundry Small Footprint

Pivotal Cloud Foundry (PCF) now has a small footprint edition. It uses as few as 6 VMs. Use the popular app...

How do you measure digital transformation?

Take the Benchmark