2020: Keep on learning
Tags: softwareengineering
Published: 2020-01-02 08:11:55

---
title: 2020: Keep on learning
published: true
date: 2020-01-01 19:32:33 UTC
tags: Software Engineering
canonical_url: https://peterrombouts.nl/2020/01/01/2020-keep-on-learning/
---

<!--StartFragment-->

_This blog was originally posted under [https://labs.sogeti.com/2020-keep-on-learning/](https://labs.sogeti.com/2020-keep-on-learning/)_

As the new year starts, many of us have New Year’s resolutions, and many of those will eventually perish within a month or two.

## New Year, New Technology

I don’t have any resolutions. The only thing I try to do each year is to learn a new technique or language. _Please note that **new** means_ _ **new to me** _ _and not necessarily a brand new technique_.

Why? In my day-job I focus on designing cloud native systems and architecture, and most of my ‘programming’ is done in Visio and PowerPoint. As my roots are in Software Engineering, I keep myself up-to-date by learning new languages and techniques.

For the upcoming year I’ve already made my choice. I started out with the following short-list.

1. [Scala](https://scala-lang.org/)
2. [Rust](https://www.rust-lang.org/)
3. [Go](https://golang.org/)

## Creating the short-list

The reason I chose these techniques is not random. In my work as an external examiner for the University of Applied Sciences Avans and Fontys in the Netherlands, I see the work of many students each year. They inspire me to look at specific techniques that normally do not cross my path. In my day-to-day work, the most used languages are C#, TypeScript, Java, and JavaScript languages and frameworks like Angular.

### 1. Scala

> Scala is a general-purpose programming language providing support for functional programming and a strong static type system. Designed to be concise, many of Scala’s design decisions aimed to address criticisms of Java.
> 
> <cite>Wikipedia</cite>

Functional programming is something that I do not see often in my day-to-day job, so I was intrigued by the capabilities of this language. Also, some very fast and popular software is written in Scala. Examples are: Apache Kafka, Apache Spark and Akka.

### 2. Rust

> Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency. Rust is syntactically similar to C++, but is designed to provide better memory safety while maintaining high performance.
> 
> <cite>Wikipedia</cite>

Originally invented by Mozilla and used within Firefox and Dropbox. Rust has been the “most loved programming language” in the Stack Overflow Developer Survey every year since 2016, so that drew my attention.

### 3. Go

> Go, also known as Golang, is a statically typed, compiled programming language designed at Google by Robert Griesemer, Rob Pike, and Ken Thompson. Go is syntactically similar to C, but with memory safety, garbage collection, structural typing, and CSP-style concurrency.
> 
> <cite>Wikipedia</cite>

Go has been around for quite some time, and has an [impressive list](https://en.wikipedia.org/wiki/Go_(programming_language)#Applications) of applications that were built with the language. Kubernetes, OpenShift, Docker and the list goes on.

## Choosing my 2020 technique

For an internal project, we were looking for a tool to provides us programmability against a multitude of APIs. Instead of grabbing an off-the-shelve product, I investigated tools and frameworks that could help us build an MVP, fast and reliably. This eventually made me look into Terraform Custom Providers.

> In Terraform, a Provider is the logical abstraction of an upstream API. This guide details how to build a custom provider for Terraform.
> 
> <cite><a aria-label="https://www.terraform.io/docs/extend/writing-custom-providers.html (opens in a new tab)" href="https://www.terraform.io/docs/extend/writing-custom-providers.html" target="_blank" rel="noreferrer noopener">https://www.terraform.io/docs/extend/writing-custom-providers.html</a></cite>

Terraform will let you wrap **any** API, so it will enable us to wrap our ITSM tooling, Monitoring tooling and what have you not.

As Terraform and the custom providers are written in Go, that was my main reason to dive into this language. I’ve created a Github repo with an example custom provider, [find it here on Github](https://github.com/prombouts/terraform-provider-test).

## Keep on learning

I’m curious if any of you are also keen on ‘staying relevant’ and want to keep up with new techniques and languages. And, what techniques and languages do you try out and investigate? Please feel free to let me know, and contact me on [LinkedIn](https://www.linkedin.com/in/peterrombouts78/) or [Twitter](https://twitter.com/prombouts/)!

<!--EndFragment-->