Technical debt or coding conventions?

walkmod
walkmod
Published in
3 min readDec 21, 2016

According to Wikipedia, Technical Debt is “a concept in programming that reflects the extra development work that arises when code that is easy to implement in the short run is used instead of applying the best overall solution”.

After a software becomes useful, technical debt becomes inevitable. New features or improvements will be added continuously and our software architecture will need to be adapted too.

However, many successful companies have started with an MVPs(Minimum Viable Product) to avoid spending money into expensive market analysis ( > 1000 €). It means that many ideas have been continuously modified or removed from our code before understanding the real users’ necessities.

Now think sincerely in this situation: If the time/money is limited to validate and iterate over an idea, would not you sacrifice efforts on software quality tasks (testing, design, performance, readability)? Since, after finding useful products usually produces income, despite our inner feeling after all lessons we have learned as engineers, the common answer is ‘Yes’.

Another common situation where we find technical debt appears when companies decide to share components / libraries between different organization projects to avoid duplicated code. This practice will reduce the effort needed to maintain part of our code base, and will increase the team productivity.

In general, developers associate technical debt only with coding style issues. However, it is generally accepted that every single technical decision that consciously reduces costs at short-term, but affects to the developers productivity, is considered technical debt. In the technical area, we can summarize the kind of decisions that produce debt in following categories:

  1. Code conventions: Encompass technical debt issues usually related to code readability and common bugs. Most of the static code analysis tools are only focused on this area.
  2. Design or Architecture: Include those issues that arise when evolving the existing code base, for instance, when a new feature needs to be implemented. Performing too many modifications to existing code is symptom that your software is not properly designed and could have really negative consequences without a good test coverage.
  3. Testing: Contains the issues both related with test coverage and test execution. Automatic tests help to validate the correctness of our software and allow us refactoring it without loosing functionality or introducing bugs. Currently, many test coverage tools and testing frameworks have improved the way we ensure our quality on them. However, what about their execution time? Waiting a long to validate the correctness of the whole system after a simple change, is a productivity issue payed over and over again.
  4. Infrastructure: Covers the issues related to the release of a new version of the software. Unfortunately in many projects, releasing a new version of our software is still a difficult task to automatize, which in turn directly affects the potential economic return of the new implemented features.
  5. People / Knowledge: This encompass the technical debt related to the amount of knowledge required by the people that work in a given development task, and how this knowledge is distributed among your developers. For example, if there is only one main contributor in a project, he probably have no time to explain how the system works to other developers to help him.

Usually, technical debt is only measured for coding standard issues and test coverage problems. However, the cost for an organization to coexist with infrastructure and knowledge issues is the highest among the different types of technical debt.

Many resources suggest Git as a valuable resource to analyze all kinds of technical debt. The reason is really simple: Git has all the project history and what matters now, why not querying what is happening?

We have started to implement some heuristics with this purpose in WalkmodHub. If you love Git and you would like to help us to validate our metrics with your open source project, visit our webpage and ask for downloading WalkmodHub.

--

--

walkmod
walkmod
Editor for

Open source technology to fix code style issues and reduce technical debt