The Five Languages in Five Weeks was an incredible challenge. I’m glad that I went through it as it was a perfect way to close out the first year of Dev-eryDay. I got to spend Christmas with Go, and ring in the New Year with Swift. It was certainly an unconventional holiday season. In spending time with a new language each week, I learned a lot about programming languages and getting up to speed quickly with different workflows. Exploring new programming languages was a refreshing way to sharpen my learning skill set.

Coming in to the challenge, I had a strong feeling that one week wouldn’t be enough to really learn any of these languages. One week definitely wasn’t enough time, but it did build my language learning skills. Therefore, the time was well spent. Through going through the initial process of learning a language for five straight weeks with five different languages, I got really comfortable with that initial discomfort of learning something new. This challenge, and the skills developed within, will help me every time I try to learn something entirely new.

Five in Five Logo

Project Overview

Week One: TypeScript - My study of TypeScript took place between December 1 - 7, 2017. The introduction post for the language can be found here and the review of the week can be found here.
Week Two: Elixir - I learned Elixir from December 8 - 14, 2017. Here’s my intro and outro for my week with Elixir.
Week Three: Haskell - December 15 - 21, 2017 was Haskell time. Haskell’s introduction and recap are online.
Week Four: Go - I spent Christmas with Go as it went from December 22 - 28, 2017. My plan and weekly follow-up are live.
Week Five: Swift - The challenge closed out with Swift December 29, 2017 - January 4, 2018. The Swift posts can be found here: intro and review.

### Subjective Language Rankings Before getting into my quick take observations, let’s look at my rankings. Going through a week with each of these languages, I was able to form opinions about each of them. Note that this is a purely subjective ranking. It is based purely on how much I enjoyed my week with each of the languages. The rankings aren’t directly based on any metrics measuring the power, expressiveness, or technical merits of the languages but I’m sure those things factored in a little bit. So if I had to rank them, here’s what I’m feeling right now:

  1. Swift
  2. TypeScript
  3. Elixir
  4. Go
  5. Haskell

Each language is praiseworthy. I actually enjoyed coding with each of them and could see myself using any of them in the future. I don’t think I could’ve picked a better group of languages.

Observations

These are some quick observations I wrote down when writing an IdeaList in the middle of the final week of the challenge.

  1. One Week Isn’t Enough - A week isn’t enough time to learn a programming language. I knew this coming in but it really became cemented during the challenge. One week is long enough to get a feel for a language though. You can pick up the syntax, get an idea of the community, and find out what problems the language is well suited to solve. Spending a trial week with any language you intend to learn would probably be time well spent.
  2. TypeScript > JavaScript - TypeScript is a huge improvement on JavaScript. Bolting on additional features to JavaScript, like types, makes it a more robust and usable language. At this point, if I were to develop any large scale system using script, I would pick TypeScript.
  3. Need More Time with Elixir - I’ve been wanting to learn Elixir for over a year but never invested the time required. The week I spent was enough to build my interest in the language again. I will carve out some time this year to dig in.
  4. Not Feeling Haskell - Haskell is interesting, but it’s not for me right now. I think if I had unlimited time to learn about everything in the world, I’d definitely put some quality time with Haskell, but I can’t see spending any more on it in the near future. Elixir offers a lot of the same benefits with a gentler environment. I’ll probably come back to it at some point in the longterm future though.
  5. Go Is Interesting - Go was really cool. I like how simple the language is with a small number of keywords. It’s good to know that there is a modern version of C out there if you need it.
  6. Swift Feels Like an Old Friend - I only had to spend a few days with Swift before it felt like an old friend. Its features are at once familiar, but at the same time unique. The toolset is really cool too. Having Playgrounds on both the iPad and within Xcode is a nice option when learning the language. I greatly enjoyed my time with Swift.
  7. Visual Studio Code is Awesome - Outside of Swift, I used Visual Studio Code to write code for each of the languages in the challenge. VS Code is a fantastic text editor and something I would miss if it weren’t around. I’m glad that Microsoft took on the project. They have made a truly exceptional text editor, one I look forward use every time I log into my computer.
  8. Brew Saves the Day - The Brew package manager for Mac was huge in setting up three of the five languages on my development PC. Thank you, Brew. It helped make learning the languages the point of focus since I didn’t have to put any thought into the setup and installation of the development environments.
  9. C# Is a Really Good Language - In getting up to speed with each of these five languages I really came to appreciate the design of C#. C# as a language provides pretty much any feature I could ever want. It has amazing support for object orientation and is becoming more functional with each release. I may not write C# code forever, but I will always enjoy using it.
  10. Learning New Languages is Fun and Productive - It’s a lot of fun to learn new languages. Even if you have no need to learn a specific language, it’s good practice to learn a new language. By learning a new language, you get better at the process of learning languages. You also reconsider ideas you may be taking for granted in the language you’ve already mastered.

So that’s it for Five Languages in Five Weeks. I hope you enjoyed following my experience, or even better, maybe inspired to take on a similar challenge. This is experiment was the perfect extension of Dev-eryDay. The process of getting better at something every single day is the whole goal of Dev-eryDay, and the Five Languages in Five Weeks challenge takes that idea to the extreme.