Last Sunday I was in the "Falando em Java 2009" talking with a friend when we got in the subject of new technologies. During the conversation I realized one common anti-pattern that I didn't know about, the Technology Loop Paralysis or TLP.
The TLP has the following major characteristics:
- It sounds like the right thing, without attention can't be caught.
- Once started, break the loop is hard.
- Scrambles all current problems, so disguises itself.
So, what is TLP? TLP is just the change of a technology, maybe a framework, a language or something similar to avoid difficulties in development. The catch is, when a new technology is added all kinds of problems will arise.
Sometime ago me and another developer had problems in delivering changes to a legacy Java system, the system was poorly designed and any change could break a lot of unrelated features. When the difficulties were explained the manager asked "If we use PHP? Can we fix?". This is a classic TLP. The problem wasn't with the language, any effort had to be directed in refactoring not in language change. Experienced developers will notice that this is trap easy to fall, if the developers were inexperienced and more comfortable with PHP they could fall on this trap.
Another TLP example. In a bugtrack system, developers didn't fill the forms right. Status, ETA and other fields were empty, they also didn't close issues properly. Relations were poorly added and resolutions were not written accordingly. Then, some reports were created to control issues, SLA and so on, but the data was not good. The solution proposed? Change the bugtrack system, but the system wasn't the problem, change it would only disguise all current problems.
New technologies will not solve any team, managing structure, unrealistic expectations and similar problems. Once TLP started these problems will disguise as implementation problems.
TLP Name Explanation:
- Technology: Any support system, framework, language or build block to a system.
- Loop: The fact that when faced with problems, the team or management choose change the technology without knowing the root cause of the problems.
- Paralysis: The problems can't be solved and despite the feeling that something is been done, in fact it's not.
Technologies change and grow more rapidly than our systems, so before a team can finish one project is common that the supporting technologies have new and better versions.
Inexperience and anxiety for new features can lure the team and management to adopt every brand new technology around.
Experience to avoid fall in TLP in the first place. During a TLP, the team can stop looping and stick with a technology until it finishes the project. After finished, the upgrade should be considered harmful unless all implications are well understood.