As a Software Engineer and as a geek, I face many tempations. One of them is “I can add this really cool feature while I’m in the code, and it will take hardly any extra time. It won’t impact any of my other work at all”. There are some very good reasons why you shouldn’t do it though, and why it’s an Agile anti-pattern.
- Most people are bad at timeboxing, no matter how good their intentions are. I know I find myself adding “just 15 more minutes” to timeboxes more often that I should. You may be spending more time on these extras than you think, or at least more than you intended.
- You are part of a team. The extra work you do may not create much burden on you, but it may create a burden on others.
- If you have extra capacity, there may be much more valuable work you could be doing. It might even be just as quick.
- Who is going to QA your work? Is extra documentation needed? Do you even think about the documentation needs? Are extra configuration options needed that Release Engineering needs to coordinate?
- Every line of code is the potential site of a bug, conflict, or incompatibility. Maybe it works now, but interacts with other code or data that it breaks. Maybe it breaks in the future. Maybe it has a performance impact (since this work didn’t come through normal channels, it probably wasn’t accounted for in performance testing).
- One of the Agile principles is that decisions are made at the last responsible moment. By doing work that did not result from a team decision, you make design and implementation decisions that may no longer be appropriate when that feature planned. Depending on how much work it _really_ was, you may be locking the team into a suboptimal path, or at least creating extra work to remove your implementation
- Most forms of Agile focus on the team functioning together, self managing and empowered, and acting as one. When someone takes it upon themselves to do work that wasn’t planned by the team, it can affect the team dynamics just as much as if someone said they would do something but didn’t do it. It breaks expectations about what is happening and the flow of work through the process.