HACKER Q&A
📣 michaelhhogue

What would you look for in a platform to learn programming?


Hey everyone!

I'm curious, what does the perfect programming education platform look like to you?

I'm an experienced developer, but I really think that the current options for learning programming could be a lot better. I know that there are platforms like CodeCademy and places to watch video courses like YouTube and Udemy. There are also so many scammy "learn to code" sites (CodeFinity).

The pattern I notice is that platforms like CodeCademy are web-apps and are very career-path-oriented (i.e. get certifications). I personally think that having a platform which was a desktop app would be a better solution. Rather than focusing on career-tracks, you could follow courses to build a specific project using an integrated IDE, 100% on your machine.

How important are career-tracks and certifications to you? Or, would you rather just learn to build a specific project on your own machine all in one application?

Basically, a native desktop platform to learn programming by actually building projects on your own machine. No BS.


  👤 AnimalMuppet Accepted Answer ✓
There are three distinct things, which you probably need to keep separate: learning to program, learning to program in a particular style/approach/methodology, and learning to program in a particular language.

For teaching programming in a language, you just need some kind of guide to the language plus an IDE.

For teaching programming in a style (FP, say), some kind of guide to FP, plus some IDEs for some FP languages, plus guides to those languages.

For teaching programming at all... I'm not sure there's a way to teach what programming is without teaching at least one of FP/OO/structured/some other approach. But if you do, then you're not teaching programming, you're teaching programming by that approach - unless you teach them all.

Maybe the best you could do is say that programming is giving instructions to the computer in a formal language. So you create an IDE (plus guide) to some synthetic thing that lets you program, but has no bias for any particular approach (allows them all, or does none of the above). For that, it probably needs to be fairly simple - something for learning, not something for real work.

Note that BASIC and Pascal started with this approach.


👤 conor-
> what does the perfect programming education platform look like to you?

A series of loosely guided, non-interactive tutorials that require researching/figuring out on your own with some pointed hints when one gets stuck. Many of the online platforms are too hand-held and gloss over a lot of pretty important details about the how/why of writing, building, running a program. It'd be nice to see something that introduces a lot of correct vocabulary for unknown unknowns that equips someone with the tools needed to find answers on their own by knowing the right words to punch into a search engine.

Even just referring to the opening pages from K&R it says: "you have to be able to create the program text somewhere, compile it successfully, load it, run it, and find out where your output went. With these mechanical details mastered, everything else is comparatively easy." Jumping right into "hello world" that runs in a fully abstracted web IDE glosses over so much of the basics that a complete programming novice wouldn't understand.

My experience with being self-taught was that struggling with really basic things like installing the language/runtime/whatever and actually getting a hello world working to then write more involved apps was just as valuable as actually building a project because it required learning how to find answers and discover the correct vocabulary to articulate the language, system, tools I was using


👤 austin-cheney
Here are the absolutely fundamental things I see many programmers missing.

* Organizational skills. This is like finances for programming. If you do not learn to get good at it then it will own you and limit you no differently than failed personal finances in the real world. Compensating and hoping tools and frameworks will just do it for you are like pay day loans.

* Data structures. Advanced navigation of data structures irrationally scares the shit out of many programmers more so than anything else I have observed.

* Ownership. Developers, and their leadership, must be zip tied to their successes and failures as publicly as their organization allows. This forces people to more carefully consider risks and appropriately apply solutions. It’s the arbiter of maturity. Just own it.


👤 KomoD
> How important are career-tracks and certifications to you?

Not at all.

I used to like https://exercism.org/ for learning a new language but no longer do, maybe worth looking at for other people


👤 kesavvaranasi
I like the idea of a course centered around a guided project. For example, learning Swift by developing a simple iOS app.

Maybe I'm missing something, but why does the platform need to be a desktop app?


👤 geophph
boot.dev is pretty close I’d say. Project / exercise based, AI help if needed, growing content and discord community.