I’ve been writing and presenting on Continuous Integration (CI) and Continuous Delivery (CD) for a few years now. In that time I’ve encountered a lot of excitement and a good deal of skepticism as well. Many people want to know more and more, who is actually using this stuff? It’s nice to talk about Spotify and Netflix, but their problem domain, resources, and above all, youth, are something few organizations deal with.
What about Microsoft? They’re a large organization, fairly mature (now 40 years old), and have their own levels of bureaucracy to manage. However they’re fundamentally changed the way they perform development across the last decade and a half. Starting in the beginning of this century, they moved to make secure coding a priority. In the last few years, they’ve also started to truly speed up their development process with CI and CD, culminating (now) with an extremely quick Windows 10 development pipeline.
I saw a piece noting Microsoft is releasing almost daily builds of the new OS. That’s an amazing feat of engineering, and certainly one that shows you can develop an efficient software pipeline. While I’m sure that individual engineers don’t necessarily have their code released daily, that’s not the point. The point is that changes can be checked into version control (please, please do this), tested, and then made available for release.
You can build software this quickly, too, though not in a day. Probably not in a month. I would guess it will take a year or two for many organizations to assemble the processes, change a bit of culture, and get used to building your application daily. Above all, it will take time for you to build unit tests and get them automated. You’ll have issues along the way, and it will be painful, but isn’t releasing software painful for most groups right now?
A year or two sounds like a long time, but really it isn’t. Look back a year at your company and job? How much have your process changed? If it isn’t a lot, doesn’t that feel like you could have done something to improve the way you release software? Is there the possibility of making a smoother process that makes it easier to get enhancements to customers? I’m sure there is, and I hope you think about starting to assemble your own software pipeline today with CI and CD. Take baby steps, and slowly make changes to automate and standardize your deployment process.