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:
- 47 milestones, release candidates, and GA releases of Spring projects. Among updates to nearly two dozen different projects, the general availability of Spring Framework 5 stands tall.
- Quarterly Pivotal Cloud Foundry release. PCF 1.12 included tons of components built by individual teams including features like the PCF Runtime for Windows.
- Pivotal Cloud Foundry Metrics 1.4. Big upgrade includes custom metric handling, and new dashboards.
- Pivotal Cloud Foundry services. We shipped updates to MySQL for PCF, Redis for PCF, RabbitMQ for PCF, Spring Cloud Services, and Pivotal Concourse.
- CF-release. Pivotal makes significant contributions to the open source Cloud Foundry project and helped cut three releases last month. On top of that, we contributed to buildpack releases for Java, PHP, Node.js, Python, Ruby, Go, .NET Core, and HWC (.NET on Windows).
- Cloud Foundry stemcells. Stemcells are the base, hardened Operating System that sits beneath Cloud Foundry and Kubo. We cut ten releases last month.
- Kubo. Speaking of Kubo (now called Container Runtime), we shipped another release. This forms the Kubernetes-powered foundation of the upcoming Pivotal Container Service.
- Greenplum 5. Pivotal shipped a giant milestone for the open source data analytics platform. Packaged, supported version also released.
- RabbitMQ. The team had four releases in September.
- Apache Tomcat. Three releases last month.
- Concourse. The open source CI/CD tool continues to evolve, and we shipped a big update in September.
- Steeltoe. This SDK for .NET developers reached v1.1 last month and introduced major new functionality.
- Apache Geode. Geode is the open source foundation of the Gemfire in-memory data grid, and it saw 3 releases last month. Commercial Gemfire also saw a release of 9.1.1 in September.
- Pivotal Tracker. The Tracker team updated the popular hosted tool with new capabilities.
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.
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 is a Senior Director of Product for 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 a Senior Director of Product at Pivotal, Richard heads up product 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