In the ideal case, we carefully evaluate and choose the technology we believe is the best for the project.

That’s how we chose:

  • HTML5 and CSS3 transformations in 2011
  • Native iOS Objective-C and Android Java in 2012
  • AngularJS in 2013
  • macOS Objective C/C++ and Android NDK C/C++ in 2014
  • Docker and Kubernetes in 2015
  • .NET Core in 2016
  • Elixir and Erlang in 2017
  • Kotlin in 2018
  • Vue.js in 2020

In reality, new projects often come with certain constraints when it comes to choosing the technology.

Sometimes we inherit and continue development of already mature projects, adapting to already established technologies and procedures on the project.

And in some cases (actually, quite often) we are asked to rescue the project and maintain the functionality (or even add features) until we are able to refactor or rebuild the project from scratch.

That’s how we had to get very familiar with technologies such as:

  • Node.js and Ruby on Rails in 2012
  • Python and Flask in 2016
  • Blockchain Ledgers in 2018

Finally, to be part of the latest technology advancements, stay ahead of general trends, and to keep our every-day work exciting and fun, we are constantly evaluating and testing different technologies.

We use every chance to work on short internal projects to deepen the knowledge and explore new technologies. In some cases we build and compare a couple of proof-of-concept solutions in different technologies in parallel.

This hunger for knowledge and staying ahead of constant changes characterizes all members of our core team and is being exchanged between colleagues as an integral part of our culture.

That’s how we started working intensively with some technologies very early:

  • JavaScript in 1996
  • Python in 2000, Django in 2005, Flask in 2010
  • Cross-platform C/C++ in 2006
  • Objective-C in 2008
  • Amazon AWS, Microsoft Azure, and Google Cloud in 2010
  • Ansible in 2014, Terraform Infrastructure-as-Code in 2016
  • Swift in 2015, Kotlin, Flutter and Dart in 2018