HACKER Q&A
📣 Raed667

Platform for senior devs to learn other programming languages?


A few months ago there was a post about a platform looking for funding (i think ?) that was highly praised for the quality of its content.

I thought I favored the link, but I can't seem to find it ? Any help ?


  👤 roetlich Accepted Answer ✓
I think you are looking for Exercism: https://exercism.org/

Great website!

Edit: This also looks good, haven't tried it yet: https://app.codecrafters.io/catalog


👤 fifilura
These days my main problem when learning is coming to terms with the development environment.

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.


👤 suprjami
There is also

https://learnxinyminutes.com/

It gives small language syntax/feature tours.

Each file is legitimate syntax for the language it documents.


👤 labarilem
As a self-guided alternative, you could try going through https://adventofcode.com/ problems with your language of choice.

👤 shay_ker
I'm a big fan of Execute Program from Gary Bernhardt:

https://www.executeprogram.com/

It uses interactive exercises + spaced repetition. It's really the only way I've managed to learn Regular Expressions.


👤 kristianp
On a related note, I found going through "The Raytracer Challenge" helped me to re-familiarise with C++ (after 20 years). Note that the book isn't language-specific. Installing clangd (and getting it to work with my text editor) really helped too, to speed up the edit-fix loop. Perhaps going through a book like that is a good way to challenge yourself to learn enough of a language and its tools. The test-driven format of the book was good to make sure that my code is correct at every stage.

https://pragprog.com/titles/jbtracer/the-ray-tracer-challeng...


👤 keyle
Alternatively rewrite some non trivial work of your own from X to Y language. You'll learn more than making frivolous programs about made up stuff.

👤 thebigspacefuck
Not sure which post you reference but https://codecrafters.io is pretty cool for learning a new language

👤 ecuaflo
What’s the difference between how a senior and non-senior learn that would warrant a unique platform for each?

👤 pseudocomposer
I’d like to echo what others are saying about building stuff you want to exist in the language you want to learn. I learned Flutter/Dart largely by building BeatScratch (https://beatscratch.io), and Rust entirely (and parts of functional React) by building Jonline (https://jonline.io).

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.


👤 paxys
As long as you know basic programming, the best way to learn a new language is to just jump into an existing project or start a new one from scratch. Classes and tutorials will get you nowhere.

👤 danjl
Learning a new syntax takes a day or two, a week or two at the most. Having a site or product that helps you with that doesn't seem important, at least to me. The hard part about learning a new language is learning how to use it, not its syntax. Learning how to use it requires working with it, and for a long time, somewhere in the 3 to 10 year range to really become an expert. You can't learn experience quickly using any product or YouTube video.

👤 0xmarcin
My bet would be to write a small program using your target language. With ChatGPT this is extremely easy as you will get a list of recommended libraries to use. Try to choose an app that requires some serious coding e.g. creating an image board like 4chan is better than coding a tic-tac-toe.

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.


👤 t-writescode
My old boss gave me some good pointers: find Koans. Ruby Koans, Kotlin Koans, there's probably a Koan for your language. It'll help you wrap your head around the basics of the language, and sometimes they'll even help you set up the development environment, which some people have alluded to being difficult.

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 :)


👤 itronitron
I've found https://www.boot.dev/ useful for picking up the language specifics of Python and Go, and they have many other courses as well.

👤 bhasi
Codecrafters! Highly recommend it. Also the second half of Nand2Tetris.

👤 revskill
Create or realize your own problems first. Then reuse and improve existing solutions.

👤 cannibalXxx
you could look for help here on this site. there you will find a lot of pertinent information related to programming https://chat-to.dev

👤 nunez
Honestly, if you're looking for practical experience, you can learn a lot just from having that language's linters/security/style cops up and running and building a toy app (with tests) in that environment. If you want high-level understanding, the tutorials are usually enough.

👤 zifpanachr23
This is a bad question cause it comes off as judgmental and everything...

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...


👤 swishman
Use LLMs. Claude could generate a full course plan and execute it

👤 hn_throwaway_99
Honestly, I find ChatGPT excellent for this. There are two basic things I usually ask it for:

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.