I thought I favored the link, but I can't seem to find it ? Any help ?
Great website!
Edit: This also looks good, haven't tried it yet: https://app.codecrafters.io/catalog
Python, how do I install and work with venvs? What is poetry and why is it better?
Scala, what is sbt and how do I make it work in Intellij?
Things I have learned under way, but still more of a headache than the actual language, since most ideas there are recognizable. And problems in the dev env can make you get stuck for several hours.
Docker helps a bit as an abstraction, but not all the way to the development environment.
It gives small language syntax/feature tours.
Each file is legitimate syntax for the language it documents.
https://www.executeprogram.com/
It uses interactive exercises + spaced repetition. It's really the only way I've managed to learn Regular Expressions.
https://pragprog.com/titles/jbtracer/the-ray-tracer-challeng...
But secondly, if you can, get work or your career path to let you build something in a new language. A lot of learning new languages (both programming and human) comes from social reinforcement and riding social waves. Smaller companies are a lot better for this than bigtech.
I learned Ruby at a company I was hired as a Java dev for initially (that had lots of Ruby staff). I learned Go and my first bits of React when a Ruby company I worked for was acquired by a Go company. My current company hired me to work on an Elm frontend without me having written a line of Elm in my life.
My recommendation is that the learning app should:
- Interact with an SQL database
- Expose an HTTP endpoint (REST or GraphQL)
- Use a logging framework
- Use concurrency
- Use a unit testing framework and a few integration tests
- Build should be automated using GitHub actions
In my opinion that's the fastest way to learn a language or more broadly a platform (as every language now is a kind of platform with its own set of libraries, conventions, idioms and untold rules).
PS. My list is probably not good for a system language like Rust or C++, but should work for languages from Ruby & Python, though Java & C#, up to Go and Erlang.
From there, it's just ... using it. Making lots and lots of mistakes.
I didn't start really learning Typescript until it was a very real obligation for me, and my style of programming and the reasons for it have definitely changed over the last year as a reflection.
Accept that this sort of change is going to happen and that it's natural and even a good thing. It's okay to be new at things again and to make mistakes :)
But what do you think you are getting out of a "platform" when it comes to learning a language?
I agree with keyle that you'll learn more working on a real project than doing a platform curriculum that is usually designed around beginners.
Just my personal hot take. I like exercise I suppose if that's the sort of thing you really think would be helpful.
The only reason I'm giving you this answer is cause you said explicitly "for senior devs". I don't really know any senior devs personally (that would admit to) using "platforms" or exercises to learn new languages. For me, I open up the docs and start writing a project, and I think that usually gets the job done learning a new language a bit faster.
Most platforms are way too beginner oriented, and you'll rarely get anything that requires more than a small amount of code...it's tough to learn a language very well until you have more than say 1000 lines and are seeing how the tooling and modules and whatnot really work on a realistic size of project...
1. First, I ask it to give me a conceptual overview, going through the main features of a language I know well and then asking for the equivalent in the new language. I also ask it for specifics/features in the new language that aren't present in the language I know well.
2. If I have specific questions, I'll write a code snippet in a language I know well and ask it to translate it to the other language. I might also ask it for "library equivalents", e.g. if there is some specific library that is the "standard" for doing something in one language, I'll ask what is the standard in the other language.
Related example: I suck at shell scripting because there is so much esoteric shit in it, so I used to just write short scripts in JavaScript and run them in Node because I'm so much more comfortable with JS and Node. Now, though, I'll just ask ChatGPT to write the script for me. The code isn't always 100% bug free, but I understand shell scripting well enough to usually fix any bugs. Also, if there is something I don't understand (e.g. ${VAR_NAME##*/} was a new one for me today), ChatGPT explains it well.
If you haven't tried it, I strongly recommend using ChatGPT (or Claude, etc.) for learning a new programming language.