Product Managers usually don’t talk about continuous integration, in spite of being a fundamental foundation of modern product management. Continuous integration is not really a Product Management role. It’s actually a function of the technology department, but having or not having continuous integration deeply impacts the way a Product Managers do their work.
What is continuous integration
The term continuous integration was coined by Grady Booch in 1991, and the main idea and promise is that small changes can be integrated into the code on a continuous manner.
This was a big paradigm shift in software, as it enables a natural workflow in which changes are being added and tested on a regular manner. Instead of having Phase 1 and Phase 2, you can push small increases in versions (v1.0.1, v1.0.2, etc.), and each new version is adding small increases in functionality to the core code.
Continuous integration as the foundation of continuous delivery and DevOps
The natural evolution of continuous integration is continued software delivery, which means a software team will be deploying new bug fix and features on a regular basis. Sometimes this can be every 2 weeks, every week, and in more advanced software companies many times per day.
This new way of working is commonly defined as devops. Devops aims at shorter development cycles, increased deployment frequency, more dependable releases, in close alignment with business objectives. This means that code and new features and bug fixes are put in production on a regular basis.
In the past, delivery cycles could be as long as 1 year, with typical pushes to production being 3 to 6 months long.
This means devops enables product managers to put new features in front of customers faster.
And what can product managers do with this new capacity? They can create hypothesis, define how to test that hypothesis, and test with real users shortly after defining the hypothesis.
Impact of continuous integration in the work of a Product Manager
In order to really get the real impact of having continuous integration to the work of a product manager, let’s see the day to day work of 2 product managers, one that has continuous integration in their product, and another that does not have this capability integrated in their product.
Steven, Product Manager without continuous integration
- Defining the product: Usually Steven will define what he wants to create and also would request a tester to define the test scripts that software should be tested against to make sure the code is correct.
- Development: Once features have been defined, these will be given to developers, and these will start to develop the proposed feature defined by the product manager.
- Testing: Once the code has been developed, the tester will run the test scripts (usually manually) to make sure the code is providing the correct functionality and does not have bugs.
- Launch in production: Once tests are OK, then you have to look for a day and time to launch to production. Usually this is done at midnight, when there are less customers, but this is becoming less and less relevant as many products are becoming global.
- Start the cycle again: The cycle starts again, and each cycle is usually called “phase”.
Charlie, Product Manager with continuous integration
- Defining the product: Charlie will define a minimum increase of functionality based on last week’ learnings, and with all the development team.
- Development and tests: The development team will first write the tests that the code needs to pass, and then they will write the code to make the code pass against the test scripts.
- Launch to production: As test scripts are integrated with the code, and the tests have already been passed, the code can be pushed directly to production.
- Start the cycle again: You start the cycle again, and due to the nature of the development, cycles can be shorter in time.
Benefits of continuous integration
Following are some of the advantages of continuous integration:
- Test A/B: Facebook uses continuous integration to constantly test different features with segments of their user base. This is enables by continuous integration, and it enables product managers do experiments by presenting different versions of the code to different groups of users. Continuous integration means that one week you go to facebook and the members button of a group is under the header picture, and the next week it’s on the side menu. Everything is open to change and nothing breaks thanks to continuous integration done at is highest levels of sophistication.
- More functionality in less time: If you are running a development cycle and the battery of tests fails, you cannot launch to production. You need to change the code and test the whole thing again. With continuous integration the tests have already passed and you can launch. Sometimes some manual tests are needed, but in the sum of it all, the features launched with the foundation of continuous delivery is substantially higher.
- Easier to go to a previous state: As the integration is done on a continued basis, if something goes wrong you can roll back to last push to production, which can be last week’s code, last month at the most. This is not the case with code that is not launched with continuous development
- Create what users really want: As take to market is faster, users can test and give their feedback faster, and the product manager team learns and iterates faster too. Also changes in the code can be monitored and checked through metrics on an ongoing basis.
- Less time fixing bugs: As the code is integrated on a continuous basis, the number of bugs is significantly reduced.
The paradigm shift from a waterfall to a continuous integration software development is hard.
This change means that the way employees work is disrupted. The way people work change, the roles and responsibilities change. At first the new way of working feels strange and counter intuitive, and unnatural.
All change is hard, but once the paradigm shift is done we will be more efficient. We will be able to deliver more code faster, create more features for our customers, learn from the feedback and metrics on a more ongoing manner.
This will in itself improve customer satisfaction and business results.
It’s good to say that not all is a bed of roses, but the truth is that continuous integration enables Product Managers to move much faster than with the old way of creating software, and this means faster learning and better products for our customers.