Technologies I Want to Learn in 2021
2020 Wrapped Up
2020 was a solid year in terms of development and career goals. Throughout the past year, I’ve gotten a chance to explore and learn various technologies that I’ve been wanting to learn for some time.
Going deeper into Go
In 2020 I continued using Go full time, but in a different environment at a different company. I’ve gotten a chance to learn the language deeper, just by seeing other people use the language at scale. I feel extremely comfortable with Go at this point (it’s a simple language afterall), and would consider it my go-to language for getting stuff done.
Serverless
I also spent a good amount of research and time exploring serverless technologies. I’ve not only used it in toy side projects, but also in production. I’m a huge fan of Serverless and I believe this is the direction that the industry is heading in. The less infrastructure that developers have to handle, the better all around, for both users and business.
Flutter
I also spent a good portion of my free time learning Flutter. I think that Flutter has an extremely bright future, especially once they’re web ready. It’s unbelievably convenient to write your client facing application once, and be able to basically target any environment. Dart is also a nice language to work in, and very similar to Go in many ways.
Embedded Databases
Embedded databases is a cool technology in the offline world. As a primarily backend web developer, I was so used to seeing and interacting with databases in the context of a network. But depending on the thing you’re building, it doesn’t always have to be this way. It’s extremely possible and sometimes even beneficial to just use an embedded database like BoltDB or Badger to persist user data. These have a very niche use case but it was still fun to learn about.
Event Sourcing
I also got to create a toy application using event sourcing. I’m a big fan of it and I can’t wait to use it some more in the future. I’m looking forward to seeing all of the benefits that it’ll bring, like replays, audit logs as a first class value instead of being an afterthought, and all of the data analysis you can do with it once you have your data. Unfortunately I wasn’t able to get much out of it in a hackathon project.
Clojure
Clojure reminded me of college, where I had to learn Lisp as part of my Programming Languages course. It was fun, but I didn’t like the Java ecosystem baggage that came with it. I also found the error messages difficult to read and had a hard time getting around the fact that that it’s a dynamic language. However, I did learn a lot about the value of values, REPL driven development, data as code / code as data, and functional programming in general. Maybe I’ll dive deeper into this another time.
Looking Forward
While I expect that I’ll continue using the technologies I listed above in 2020, there are even more technologies I’d want to explore this year in 2021.
Rust / WebAssembly
My reasons for wanting to learn Rust is twofold. The first is that I believe developers should constantly be learning new languages. The Programatic Programmer suggests a new language every year. Rust brings a lot of new language concepts that I’m not extremely familiar with. I can’t really see myself building low level systems software or any fancy language parsers, and I’ll probably continue using Go to build web apps.
But that’s where WebAssembly (WASM) comes in. There are some cloud providers that will take your WASM and host on their CDN, making your code run even closer to your users. Having extremely high performance is just something that interests me, even if it sometimes isn’t all that useful. So yeah, looking forward to learning Rust and small WASMs in the cloud.
WebRTC
Another web technology.. I had a chance to use Websockets last year to build my Avalon game room app. This year I’d like to use WebRTC, for audio, video, data? Not sure yet, but definitely on my list.
Haskell
Haskell.. I spent some time trying to learn this purely functional lazy programming language a few years ago. I dropped it after finding it very difficult to do practical things with. I’m going to try to go deeper into the language this year. I know Elm/Purescript isn’t exactly the same as Haskell, but they definitely have more of a niche use case.
Like most years, I’m sure there will be random technologies that I stumble across and just learn out of curiousity but I figured I’d take some time to reflect on the new stuff that I learned this past year and the things and the new stuff I wanted to learn this year.