Todo List To Learn a new language
Tags: learning, todo, sideprojects
Published: 2022-06-13 15:41:52

---
title: Todo List To Learn a new language
published: true
description: A small set of things I do to learn a new language
tags: learning, todo, sideproject
cover_image: https://i.ibb.co/wQr0HLW/Screenshot-2022-06-13-at-15-36-16.png
# Use a ratio of 100:42 for best results.
---
The main thing I love about Coding is that you never stop learning new stuff, especially new programming languages.

I started ages ago with Pascal and I've used loads of them, both on side projects and for professional reasons.

Recently I've been on a spree, and I tried (and sometimes failed) to learn: **Rust**, **Zig**, **Nim** and most recently get a refresher of **C#** (which I used last professionally 10 years ago).

Since a colleague asked me today what do I do to learn a new language, I decided to write down this small TODO List, mostly as a reminder to myself on what to do if you want to experiment and add another tool to your toolbelt.


**Small Disclaimer first**: Having LEARNED a new language, to me, does not mean *Knowing it inside out, and being able to recite the API Docs*.

Having LEARNED a new Language to me means that you feel confident working on it and potentially ship a sideproject built in it.

That said this is what I usually do, say that the new language is called XLang:

1. I read about XLang on StackOverflow threads, Reddit and Twitter, check the [LearnXinY](https://learnxinyminutes.com/).

2. Checkout some opensource repo written in XLang on Github. Lookup at tooling around the language and Discord Communities.

3. Read the Official Doc in their Official website.

** If I am still interested then...**
4. Scaffolding a console app and play around with type in an Hello World.

5. Check if there are exercises (like [rustlings](https://github.com/rust-lang/rustlings) for **rust** or on [https://exercism.org/](https://exercism.org/)) and try to work on them.

6. Create a Small Console application.

7. Create a template to scaffold projects and add new source files in my [hygenTemplates](https://github.com/vikkio88/hygenTemplates).

8. Push On my personal github the stuff that I have been doing so I can use it as notes for the future, if I want to come back to XLang.

9. I create (or at least start to create) a small Game, always the same or similar, in XLang, just to see how it feels like in comparison to other languages. Games usually needs using external libs, assets, UI, Random Number Generators, and this is the one that make me really have a feel for the language.

10. Keep some notes on TODOs on a private Trello Board, in case I want to come back and explore more in depth certain topics.


This is what I usually do, and it has worked out quite well in all honesty, in the last few years I've picked and worked on an Enterprise level the following languages:

- node
- typescript
- React (React-Native)
- AngularJs
- Vue
- C# (first time in 2013)
- Go
- Python

I've also worked on some opensource projects instead with the following ones:
- C++
- Haxe
- Godot


If you want to know instead my opinion about the last few languages I started to Learn:


- **Rust**: Amazing Tooling around it, the syntax is just pants and overly complex for the wrong reasons. C++ does some automatic pointer checking and is not that nasty.

- **Zig**: Really cool but the tooling is a bit pants still.

- **Nim**: Amazing Python-like language that compiles down to C, but syntax sometimes is a bit obscure, amazing tooling tho.

- **C#**: I am loving it, it has changed so much in the last few years, will keep working on it a bit more and see what I can ship with it.


If you have any questions or do not agree let me know, happy to chat.

Thank you for reading.