"We use cool technologies", so what?
A trap we developers sometimes fall into, aiming for cool technologies but forgetting the focus on the value behind, sometimes even enforcing a solution driven by "cool technologies" before solid discussions in the problem space.
I often hear this sentence, "We use cool technologies". Developers are happy to do so and depending on the teams and the projects, these can range from programming languages to tools, platforms, development environments, libraries and so on. In my opinion, it could bring the following advantages:
- Increasing the motivation of developers
- In general they are modern and up to date
- Easier to attract talents. i.e. hiring process.
On the other hand, it may hold some downsides, such as:
- Overtaking the focus on the value
- Over complication of tooling, technologies or architecture
- Being unknown by the most of the team
- Immaturity or Instability
That said, I am afraid that it can become the actual goal instead of a tool for the goal.
Talking About "The Value"
Just as a reminder, the team's goal is to bring value. This value is often related to the end user in product teams, but in general defined by the organization, team, product and/or the business. Increasing the end user satisfaction is one example, bringing the features to the end users faster could be just another one. The development capacity is limited, and it is important to make a valuable prioritization. Asking the questions below helps to find out what makes best sense:
- What kind of a problem are we solving?
- How can this approach help?
- Is it more important than the other things awaiting?
- What is the cost of delay?
That also means, if you can solve your problem in a simple way and architecture, consider just keeping it simple. If it is bringing value, go for it. Just make sure that your solutioning is actually serving for business value. Of course it could be visible in the short, mid or even long term.
Cool Technologies != Tech Excellence
Please note that, cool technologies are something different than Tech Excellence. Tech Excellence is more about Continuous Delivery, Lead Time, Cycle Time and Time to Recover [1]. All these are somehow also co-related to Non Functional Requirements such as Maintainability, Observability and so on. That is not easy to achive, but possible. (Check out how we have achieved that here) Besides, you can limit the Tech Debt by trying to reach Tech Excellence and constantly keeping your systems up to date, sometimes even by doing a modernization or rebuilding. It really depends on the problem and requirements. Either way to make it clear, using "Cool Technologies" does not necessarily bring you Tech Excellence or resolve your Tech Debt.
Yes, it could be cool to use "Cool Technologies" as long as the business value keeps its center position, such as serving the needs of the end user or whatever the purpose of the organization is.
Who cares if we build something with super cool technologies but it brings no value or no one is happy using it?
Attribution
Cover Photo by Anna Shvets from Pexels
Links
[1] What Does Technical Excellence Look Like?, Martin Fowler, 2016