Friday, 4 February 2022

Time constraints and technical debt

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?

Some teams can produce a well-architected solution within a tight timeframe. Why is that?

Often developers will say they know it's not very good, however they did not have time to do it well.

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:

  1. 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!!!
  2. Practise SOLID principles - Success requires understanding why and when to use:
  3. 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