Pair Programming and course correction
I listened to this episode of Troubleshooting Agile recently, and they were discussing early course-correction. And it made me think of the ways that many people in companies write software.
If you work in iterations or sprints, then you are hopefully showing your work to a customer or product owner at least once every sprint. Why do we do this? Because it gives a chance to look at our progress, and to change direction if we need to.
If you work in iterations or sprints, then you are hopefully showing your work to a customer or product owner at least once every sprint. Why do we do this? Because it gives a chance to look at our progress, and to change direction if we need to.
Of course, it’s even better if we can have these conversations on a more frequent basis. Every conversation with a stakeholder gives us a chance to correct our course.
Now, many people like to program solo, and then have their work peer-reviewed. This, along with feature branches, is a model that works really well with open source software, allowing strangers to contribute to an open source codebase. But it does mean that the peer review is the first time to course-correct. If something is seriously wrong with the design or the implementation, then the maintainer of the codebase can fail the review, and the person submitting the work can start again or rework. This optimises the workflow for the person maintaining the codebase. It might make the contributors life more difficult, but the maintainer is interested in the quality of the software that they are maintaining, and not the happiness of strangers who want to help.
But this is not a good model when you have a team working on a shared codebase. If you don't look at your colleague's code until they have completed some work and raised a pull-request, then your options are very limited. If they made a bad decision to start with, then asking them to rework it completely means that lots of time has been wasted. Maybe they haven't designed the code so that it can be tested, so trying to add in tests at the end will be difficult. But you don't want to make life difficult for your team-mates, and you don't want to waste their time either. So this creates a tension between wanting to maintain quality, and wanting good team relations.
It is far better to build in quality form the start, and to course-correct as early as you can. The longer you leave it after a bad decision, the more you will have to undo. Software is complex, and we should optimise for quality and simplicity. And the best way to do this is to pair or mob.
It is far better to build in quality form the start, and to course-correct as early as you can. The longer you leave it after a bad decision, the more you will have to undo. Software is complex, and we should optimise for quality and simplicity. And the best way to do this is to pair or mob.
Comments
Post a Comment