8 ms·
Ask HN: 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 2y agoI think you are looking for Exercism: https://exercism.org/ https://exercism.org/ Great website! Edit: This also looks good, haven't tried it yet: https://app.codecrafters.io/catalog https://app.codecrafters.io/catalog
- Raed667 2y agoamazing ! Yes thank you I was thinking about this post https://news.ycombinator.com/item?id=41463734 https://news.ycombinator.com/item?id=41463734
- suprjami 2y agoThere is also https://learnxinyminutes.com/ https://learnxinyminutes.com/ It gives small language syntax/feature tours. Each file is legitimate syntax for the language it documents.
- JanisErdmanis 2y agoThis is excellent. I checked Julia which is my main language and all essentials are there. Looked up to Zig, F#, Go all accessible expositions and makes it easy to get a good taste before looking into the manuals.
- whalesalad 2y agoWould love the equivalent of this but before applying practical problem solving. For instance in go you learn to leverage goroutines and channels. In another language it would be threads. Common design patterns etc. Gotcha’s of the language. In Python you use exception handling very commonly, in golang you’re using a special return value of an error type. JavaScript you’re using a ton of anonymous function closures. Async vs await. I keep wanting to build this mega doc site to teach more than just “what are scalar types in this language” and more of how to apply it in idiomatic ways.
- otteromkram 2y agoTry devdocs. https://devdocs.io/ https://devdocs.io/
- curtisblaine 2y agoDevdocs is just a collection of official documentations. GP wants a collection of documentation that explains comparative, idiomatic problem solving in each language. How are they even remotely similar?
- Suppafly 2y agosure but the comment two steps up mentions wanting to build a site, devdocs exists and could host that information they want to compile and build.
- em-bee 2y agohttps://rosettacode.org/ https://rosettacode.org/ shows you how to solve problems in many languages. you can add your own problems too.
- whalesalad 2y agobrilliant!
- thebigspacefuck 2y agoNot sure which post you reference but https://codecrafters.io https://codecrafters.io is pretty cool for learning a new language
- amoskvin 2y ago+1 for codecrafters
- ecuaflo 2y agoWhat’s the difference between how a senior and non-senior learn that would warrant a unique platform for each?
- wnolens 2y agoAnother programming language as reference. I can learn a new language really easily this way, but the first was really hard - it was so unlike anything i had ever done before.
- whartung 2y ago“Writing Fortran in Lisp” should not be disregarded. There’s a lot of value of having hands on exposure and success with common, even if not idiomatic, concepts. Ye Olde “write once, throw it away” concept. Using prior language knowledge can make the first steps much smaller as you learn not just the new language, but environment and tools. This can give you a quick, solid foundation with which to leverage learning newer ideas and idioms of the new system.
- PMunch 2y agoWell a senior developer would be assumed to share a certain common understanding of concepts and terms that a more junior developer might not. When teaching anything one of the most important parts is ta gauge your pupils and determine whether they need more or less information to keep the topic interesting while not making it impossible to follow along. Since written or otherwise pre-recorded teaching materials aren't afforded the luxury of interacting with their pupils they must choose ahead of time what level they are aimed at. And since a senior in any field would be able to follow along with materials meant for the junior, albeit at a slower and less interesting pace, but not the other way around they tend to err on the side of over-explanation. A platform for teaching senior developers would therefore allow a more engaging and time saving experience for those able to consume it.
- chx 2y agoThe essence of being senior, I feel is "I have made the mistake you are about to make". This echoes in language learning. When I was learning Go I could easily pinpoint what language design decisions were made because of lessons learned from this language or that. (I do not want to suggest schismogenesis applies to programming languages but ... it kinda sorta does?) Teaching with this in mind needs a very different curriculum. Also, basic exercises are boring because we did them ten thousand and one times already just with slightly different syntax.
- labarilem 2y agoAs a self-guided alternative, you could try going through https://adventofcode.com/ https://adventofcode.com/ problems with your language of choice.
- swishman 2y agoUse LLMs. Claude could generate a full course plan and execute it
- cokeandpepsi 2y ago[dead]
- shay_ker 2y agoI'm a big fan of Execute Program from Gary Bernhardt: https://www.executeprogram.com/ https://www.executeprogram.com/ It uses interactive exercises + spaced repetition. It's really the only way I've managed to learn Regular Expressions.
- fishtoaster 2y agoI would second this. I have pretty extensive experience in a few python-like languages, and had written a few hundred lines of python over the years, but had never had a full-time job writing it. I had an upcoming job working on a python codebase. I found ExecuteProgram to be a pretty great as a way to bone up on intermediate python syntax, idioms, and standard library so I could minimize the first few weeks of "How do I do [common thing I know in 5 other languages] in python?"
- kristianp 2y agoOn 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-challenge/ https://pragprog.com/titles/jbtracer/the-ray-tracer-challeng...
- danjl 2y agoLearning 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.
- bhasi 2y agoCodecrafters! Highly recommend it. Also the second half of Nand2Tetris.
- keyle 2y agoAlternatively 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.
- SoftTalker 2y agoAny time I start using a new language I always start with "Hello world" and working a few simple example programs to get my head around the syntax, idioms, and common data structures. But yes, don't spend a ton of time on this, as soon as you have a sense that you know what to do, start tackling actual work. If the languages are at all commonplace, having an AI convert a program from language X to language Y might speed you along as well. No guarantees it will be perfect but it will probably get you in the ballpark.
- dragonmost 2y agoI try not to use AI when learning a new language. I don't want to rely on premade answers to my problem. I prefer using the language's documentation and some light SO searching so I can figure it out on my own. AI is the last resort for me when learning something new.
- em-bee 2y agothat and as you are new to the language you won't easily detect errors the AI introduced.
- fifilura 2y agoThese 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.
- tomcam 2y agoI couldn’t agree more. And once you have mastered or at least come to terms with the development environment, eventually you must learn how to deploy. That’s also a minefield.
- 0x073 2y agoThe worst is js development. You need thousands of tools and there always exists 3 alternatives. Js/ts as a language is the smallest problem.
- wruza 2y agoIt’s a newcomer confusion vs old-timer habit. You’ll feel the same in C, python, etc if you never seen these. And vice versa in any direction. Edit: But I absolutely agree that $subj platform should focus on that, not even on the language. A language can be learned in one evening on a “fiddle” site, no platform required. Personally, when I become interested in another language, all I want is a page of common snippets or a cheatsheet to get the feel of syntax, and then how to make and deploy a non-toy project with all the usual libs and tools attached.
- fifilura 2y agoA clever blogger or even entrepreneur sees the opportunities here.
- 2y ago
- cperez081890 2y ago[dead]
- cperez081890 2y ago[dead]
- zifpanachr23 2y agoThis 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...
- acuozzo 2y agoThe usefulness of beginner materials really depends on how big of a jump it is, no? Going from writing firmware in C & asm for 30 years to Haskell would likely require more than just documentation.
- paxys 2y agoAs 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.
- hn_throwaway_99 2y agoHonestly, 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.
- t-writescode 2y agoMy 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 :)
- cannibalXxx 2y agoyou could look for help here on this site. there you will find a lot of pertinent information related to programming https://chat-to.dev https://chat-to.dev
- itronitron 2y agoI've found https://www.boot.dev/ https://www.boot.dev/ useful for picking up the language specifics of Python and Go, and they have many other courses as well.
- 0xmarcin 2y agoMy 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.
- pseudocomposer 2y agoI’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 https://beatscratch.io), and Rust entirely (and parts of functional React) by building Jonline (https://jonline.io 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.
- nunez 2y agoHonestly, 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.
- revskill 2y agoCreate or realize your own problems first. Then reuse and improve existing solutions.