Every few years there is a very special day in the career of a software developer. A wonderful day like a dream. A day when Christmas, Easter and two birthdays coincide: The start of a brand new software project. No legacy code, no screwed up architectures, no technologies from the 80s ... just an empty code repository and the mission to make the world a better place.
However, experienced developers know that such days also contain dangers. They are also looking forward to the opportunity to start from scratch and finally do everything right. But they also know that the choice of technologies, concepts and tools is tricky and can get out of control very quickly.
Innovation in new software projects is essential. If we start from scratch, we also want to use current technologies and not tools and technologies that are outdated and no longer maintainable after a short time. New technologies and tools are attractive and promise heaven and earth. In many cases, however, they do not deliver on these promises and add a lot of new complexity to systems and teams. New technologies and tools have a learning curve that must not be underestimated. There is a danger that teams are overwhelmed with too many new topics. New technologies are used incorrectly or sub-optimally and after a short time, we already have technical debts in our code again.
Conservative technology decisions can be an option. Development teams have a lot of experience, know the strengths and weaknesses of the technologies and have already made most of the possible mistakes in the past.
In addition to innovation, sustainability is an important criterion for the choice of technology. What will our software project look like in 5 years? In 10 years, 20 years? Have the selected technologies proven themselves? Are they still up-to-date or hopelessly outdated? Are they still being actively supported and further developed? Can we still find developers who are familiar with the technologies and are willing to work with them? Or have we maneuvered ourselves to the sideline where we have to watch the rest of the software world passing us by? Especially in the enterprise environment, cycles of 10 or 20 years are not unusual for software solutions.
Most software teams and customers know the situation that a technology is no longer supported and therefore complex migrations and refactorings are necessary, up to complete replacements that do not bring any business benefit for the customer and users of the software. Such situations are very cumbersome for IT teams, because it is difficult to explain the necessary efforts to the customers.
The choice of technologies and tools for a new software project is a kind of bet. The art is to bet on the right horse. If you bet on the wrong horse, you lose and are confronted with expensive migrations and refactorings, or even have to completely write off and replace a software solution.
But how do you choose the right horse? Technologies and tools that are well established and with which we have already made positive experiences are a good starting point. However, if we have already had good experiences over a longer period, it is certainly no longer the latest technologies. Therefore, there is a danger that we will rely on technologies that are already on the decline and will no longer be supported in the near future. New technologies do not have this problem. However, it is generally not clear which technologies will prevail in the end and which will be abandoned after a short time.
Who is standing behind a new technology and who uses it are important criteria for a decision. Is the technology maintained by a single developer or is there a large organization standing behind it? Is it a software company, a small or large company, a company like Microsoft, Oracle, IBM or rather companies like Facebook, Twitter, LinkedIn, Apple, Google or Netflix? There are opportunities and risks with all variants.
Companies like Google, Facebook, Netflix etc. are the producers and users of many great technologies. They use the technologies themselves and the quality is therefore usually very good. However, software is primarily a means to the end for them. If a technology is no longer relevant to them, they often stop supporting it relatively quickly, without much warning and consideration of other users.
Oracle, Microsoft, IBM, SAP and similar software vendors are much more reliable. However, users are also much more at the mercy of these companies when it comes to licensing conditions and pricing models. Without any added value for the customer, a tool or a library is suddenly massively more expensive or a migration to a less expensive technology is needed, which again entails costs.
Successful, innovative and sustainable software projects require conscious technology management and a good balance between innovative and conservative decisions. The choice of technology must be tailored to the specific project. Innovative technologies make more sense for software products that are rather short-term or that are continuously adapted and further developed. In the case of long-lasting software products and solutions that are to be used over a longer period without major adjustments, a conservative choice of technology is more advisable.
In the end, however, the choice of technology is always, to a certain extent, a gamble. There is no silver bullet or magical formula. Only the experience and intuition of software teams can help to stay ahead in this game and to produce innovative and sustainable software solutions.
Published on July 5, 2019 on inside-it.ch, in German only.
About the author
Corsin Decurtins is Chief Technology Officer at Netcetera. He is responsible for technology strategy and development methodologies, advises customers and internal teams, and works as a software architect and technical project manager. Corsin studied computer science at ETH Zürich and worked as a research assistant.