Developers often report that time constraints are a causal factor of their incurred technical debt. In fact, this was a finding in an academic study on technical debt factors (Rios et al, 2018). This finding did not dig deep into why timeframe was a problem, however, this finding implies that (at least for some scenarios) it is not possible to do things well due to an aggressive timeframe.
Strategic Technical Debt vs Incidental Technical Debt
There is strategically incurred technical debt and incidental/accidental technical debt. A strong tech team may incur technical debt willingly, with a good understanding of its implications, and hopefully a plan to fix it. A weaker team will often incur technical debt by accident. In other words, they may not even know why their approach would cause technical debt until it is too late in the project.
Why is time a factor?
However, they really mean something else...
They did not actually know how to do things well in the first place. Consequently, they did not know how to do things well within the time frame. If they did know how to do things well, then they would have known the consequences of bad code actually slow down the project delivery, not speed it up. Therefore they incurred incidental/accidental technical debt.
How to avoid technical debt?
My top 3 tips are:
- Ensure all of your developers know about clean code. Watch THIS VIDEO - They're not allowed to commit any code until they watch and understand this!!!
- Practise SOLID principles - Success requires understanding why and when to use:
- Dependency injection
- Domain driven design
- Hexaganal architecture
- Have strong skills in TDD/BDD - Requires understanding the trade-offs between different automated testing approaches
- Get schooled by watching the first 44min of this video by my friend Lars-Erik Aabech, who teaches about automated testing at Østfold University in Norway
For more, on what I think all developers should be exposed to, you can check out my Software Engineering Trello board:
https://trello.com/b/XDZqHM6J/software-engineering-on-a-board
References
Rios, N., Spínola, R. O., De Mendonça Neto, M. G., & Seaman, C. (2018). A study of factors that lead development teams to incur technical debt in software projects. Proceedings - 44th Euromicro Conference on Software Engineering and Advanced Applications, SEAA 2018, 429–436. https://doi.org/10.1109/SEAA.2018.00076
No comments:
Post a Comment