TODO List on How to Learn a New Language
(not only by doing TODO lists apps)
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 side project built in it.
That said this is what I usually do, say that the new language is called XLang:
I read about XLang on StackOverflow threads, Reddit and Twitter, check the LearnXinY.
Checkout some open-source repo written in XLang on Github. Lookup at tooling around the language and Discord Communities.
Read the Official Doc in their Official website.
If I am still interested then...
Scaffolding a console app and play around with type in an Hello World.
Check if there are exercises (like rustlings for rust or on https://exercism.org/) and try to work on them.
Create a Small Console application.
Create a template to scaffold projects and add new source files in my hygenTemplates.
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.
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 need to use external libs, assets, UI, and Random Number Generators, and this is the one that makes me really have a feel for the language.
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 with the following languages:
- node
- typescript
- React (React-Native)
- AngularJs
- Vue
- C# (first time in 2013)
- Go
- Python
I've also worked on some open source 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