What Technologies I Want to Learn in 2018


Table of Contents

Programming world evolves extremely quick and it's impossible to track all the news and be up to date with all technologies. We have to narrow down and pick carefully.

I have picked a number of technologies I want to learn in 2018 and I'd like to share the list with you and try to explain why I did this choice.

ReasonML

During the last several years I have barely used JavaScript without types. The web development became too complicated and in order to keep sanity, I prefer to give as much responsibility to the machine as possible. Flow by Facebook and TypeScript by Microsoft are excellent solutions that helped me and my teams to write more sound and maintainable code.

The next big thing might be ReasonML. It's not a new language, it's a new syntax and really powerful toolchain by the battle-tested language, OCaml. The syntax is really easy to pick up if you're JavaScript developer. Reason can be compiled to JavaScript using BuckleScript. Consider it as solidly statically typed, faster and simpler cousin of JavaScript.

Kotlin

Kotlin is a new official language for Android platform, statically typed and seamlessly interoperable with Java.

  • Approximately 40% fewer lines of code compared to Java
  • Easy to learn especially if you know Java.
  • Avoids errors such as null exceptions

The good thing about Kotlin is that if you already have started a project in Java, no need to worry as you can use Kotlin syntax in existing Java code and it will work perfectly.

Apollo

Apollo allows to build GraphQL API on top of your existing REST APIs. It is a family of technologies you can incrementally add to your stack: Apollo Client to connect data to your UI, Apollo Engine for infrastructure and tooling, and Apollo Server to translate your REST API and backends into a GraphQL schema.

  • Eliminates boilerplate.

  • You can put computed fields, data transformations, and security logic into your API so your front-ends don't have to reimplement them every time.

  • Add fields to GraphQL as you go and deprecate old fields when you no longer need them. Mock some or all of your API and build the front-end in parallel.

  • Fetch exactly data you need, no more and no less. Improve performance with GraphQL specific caching and optimizations across the stack.

Cypress

Cypress is a complete solution for end-to-end testing. Writing E2E tests with Selenium based technologies always was a pain and Cypress seems to be a game changer that simplifies it a lot. Totally worth to give it a go.