Programming languages

07.03.2016 – André Naef

Programming languages are great! There are so many to choose from.

It might come as a surprise to outsiders, but if we receive an application for a software engineer position, the programming languages that the applicant knows are only of secondary interest to us. This is because a good software engineer stands out due to their way of approaching a problem and the methods they use to devise a solution. These hard-earned skills are timeless, contrary to programming languages and frameworks, which are subject to constant change.

This doesn't mean that programming languages don't play a role in our daily work. We spend a considerable amount of our working time reading and writing program code, each one in a specific language. It takes years to fully master a programming language. However, when entering a project, the frameworks and tools used often require a steeper learning curve, and of course an understanding of the customer's business domain as well.

Amongst the static programming languages, Java is our trusted workhorse. No other language is used in so many of our projects and solutions. The language is constantly being further developed and brings with it everything that is required for the construction of a complex software product. Furthermore, Java provides one of the most comprehensive ecosystems of frameworks, development environments, build tools and additional tools.

For small and medium-sized solutions, we are also happy to use dynamic languages, such as NodeJS (JavaScript). The dynamic languages stand out due to their higher expressiveness. A large proportion of the written code relates directly to the customer's specific business requirements. This means that development can advance more quickly. However, as dynamic languages involve fewer static protection mechanisms, it's a bigger challenge to let a solution grow effectively without creating technical debt. In this sense, dynamic languages are deceptive: superficially, they appear simpler, but they actually require more in-depth skills in order for a solution to remain valuable in the long-term.