The main talk was Kent Beck. Talking about 3X: Explore/Expand/Extract. Covering the shifting risk profile of software product development as products mature.
Taking the last phase first. In Extract, the product is sucessful. The result of a large investment (a concaved payout). The team will be making many small changes. Cutting server usage by 10% and seeing a payout via economics of scale. Large changes are to be avoid with somuch at stake. Kent says Waterfall is a solution to managing this stage in the lifecycle. Not a good solution in his opinion but a solution none the less.
At the other end of the lifecycle, we have the Explore phase. Here the team is making many small investments. Most of the time they will not get traction but when they do the payout can be huge (A convexed payout). As a team you will have a set of questions not answers. Each experiment has a timebox before you start limiting the resources expended. Being able to run more experiments for same money how you improve in this phase. Exploring the economics of scope by casting your net wider. As a team you do that by having a retropective and making improvements in how you test.
Expansion is the phase between these two. Your idea has traction but now needs to scale, so you can reach the Extract phase and realise the value. The team needs to solving a series of bottlenecks as the product grows. The team fixes each one as they present themsleves. Add that scalable database solution. Add that front end cache. Add more network bandwidth. Dealing with technical debt.
One of the first was about unit testing. In the Explore phase. If having tests help the team test more ideas use them else don’t. In the Extract having a solid test system is a good way to limit the risk of have a large failure and losing everything.
The next question was around the type of work in Extract. Those 10% improvements can are fractal versions of the large 3X process at a smaller scale.
Then something about programming languages. Different languages make sense at different part of the curve. Explore favours making changes fast and seeing the results. So python, ruby. At the other end in Extract the extra performance from say C++ or Java is worth the extra development time. The results will be deployment over many servers magnifing the runtime saving.
Another question asked about sunk cost vs. opportunity cost. Explore is low sunk cost but high opportunity with Extract being the opposite.
A question around what to do when the project is getting towards the end of its life. Kent introduced the Exterminate phase where you kill off feature.
The final question touched on the Innovator’s Dilemma. Kent’s solution was to have other teams using the profits of Extract to fund the next batch of Explore. Leading to a series of staggered curves. Which only a very few companies have managed.