Live data from Hacker News

Learning to program is getting harder

allendowney.blogspot.com

11–20 of 422 posts

Re: Learning to program is getting harder

#11
There's another option the author doesn't consider: Change programming, or create fundamentally different programming paradigms that entirely obviate some of the requirements we have now.

One idea that's a fairly natural progression from where we are now is Luna, a WYSIWYG data processing language: http://www.luna-lang.org

A loftier re-imagining is Dynamicland, co-founded by Alan Kay and Bret Victor: https://dynamicland.org

Re: Learning to program is getting harder

#12

Anecdotally, what I've seen is that older programmers, in addition to being programmers, also have the skills of a computer helpdesk technician. They can debug Windows problems, hardware problems, know how to mess with the BIOS, and have no problem installing or configuring any piece of software. This helps immensely when setting up your IDE or debugging weird problems with compiling. Younger programmers seem to comm…

I have not seen any age-correlation in what you describe. For sure there are "career" programmers who don't know much about computers beyond their narrow scope of expertise.

You're admittedly obsessed with computers, which presumably means you spend a lot of your free timing tinkering and learning. You've picked up a lot of very useful knowledge, but surely there's room in a profession for those who are not obsessed with their field? The programmer who doesn't know anything about a BIOS perhaps spends their free time bike riding.

Re: Learning to program is getting harder

#13

It's getting harder because it's become fashionable to shun IDEs that make most of these issues obsolete, and have done so since at least the 90's. It's ridiculous to expect newcomers to a language and/or programming in general to slog through a 20 or 30-step environment setup process. This idea that using an IDE will discourage someone from finding out the more detailed workings of the language, compiler, etc. is no…

Indeed. There's no way I would've learned how to program at such an early age if the process had been any more complicated than "install Turbo Turtle." (And later, HyperCard, THINK Pascal, THINK C, and finally CodeWarrior.) It wasn't until I had basic command of a few different languages that I was thrust into the world of UNIX, emacs, Perl, CPAN, and so on. By that time I was able to handle it, but if that had been my first go of it, I'd have run for the hills and never looked back.

Re: Learning to program is getting harder

#14
To add to this, one other way programming is getting harder is that there is no incremental path to becoming a developer. In the past, you could easily become a programmer by accident. You wanted to edit your MySpace page, google around, learn some HTML and do it. You wanted to mod a game, you started messing around with the game, download other mods, and change them.

I think this incrementally is gone in two ways. One is that programming is so abstracted away from how we use computers that it's almost in a different world. But even if you figured out what programming is, when you actually attempt to do it, the sophistication of our tools make it a lot harder to get started. Everything that makes us programmers more productive: compilers, build systems, package managers, etc make programming less accessible. There is a lack of coherence between all these tools, no one person designed them, they're the product of bottom-up innovation (the bazaar) which has the problem of making things messier.

I think open-source/bottom-up innovation is great, but eschewing "the cathedral" for a wholly bazaar-based approach is making it a lot harder to learn to program.

What I'm working on now (I'm the founder of Repl.it) is taking a lot of these awesome tools and putting a nicely designed experience on top of them. We want to bring back the welcoming cursor that invites you to program the computer and bring back incrementality to programming, you start from a repl, and from there you can move on to web-dev or what have you. You'd be surprised how fun it is for kids to build CLI programs before moving on to build other things. We put together a page where kids can post about what they're building with Repl.it and it's really inspiring to see: https://repl.it/ibuiltthis

I've written more about what I call a "Holistic development service" here: http://repl.it/site/blog/holistic And also here I describe how we went wrong with "Disintegrated Development Environments — How Did We Get Here?": https://amasad.me/disintegrated

Re: Learning to program is getting harder

#16

It's getting harder because it's become fashionable to shun IDEs that make most of these issues obsolete, and have done so since at least the 90's. It's ridiculous to expect newcomers to a language and/or programming in general to slog through a 20 or 30-step environment setup process. This idea that using an IDE will discourage someone from finding out the more detailed workings of the language, compiler, etc. is no…

I do Java programming by day, and I still find the IDE to be a pain in the ass. It offers me a lot of power (enough that I still use it for all my Java code), but the configuration is so opaque. It's a GUI, but what a confusing, complicated GUI.

In contrast, opening a repl in python/node is super easy, and it was super easy even when I was a beginner.

Building a GUI like you said would be hard, (though I did a very simple tkinter gui in my first year), but I think that even for a beginner, opening a repl and starting to muck around is easier without the IDE in the way.

Re: Learning to program is getting harder

#17
post #3

This is presenting a wildly rosy view of the past. In Commodore 64 days you got some book that was all you had. You couldn't email the author of the book or look online. If you got through the huge filter of the initial steps being much harder than today then you were doing well and would go on. However, the endless set ups and downloading every library that is used is going to make maintenance of programs in 5, 10 o…

Not just some book, usually lots of books, from the fundamentals of BASIC to technical references with complete schematics for the entire machine. I had a Commodore VIC-20 and it certainly came with all these.

And even then, experts and resources were available online, for suitably primitive values of "online". Think CompuServe.

Another thing we had back then but less so today was magazines, full of programming and technical tips and info, usually tailored to a particular computer family. (So, Commodore magazines, Tandy magazines, Apple magazines, etc.) Once business computing took off, the dominant players (PCMag, MacWorld, etc.) became more productivity-oriented -- but I still learned Windows programming from the free utility and programming columns in early 90s PCMag. And then once the Web hit, the dead tree publishers were fighting over scraps.

Re: Learning to program is getting harder

#18

Anecdotally, what I've seen is that older programmers, in addition to being programmers, also have the skills of a computer helpdesk technician. They can debug Windows problems, hardware problems, know how to mess with the BIOS, and have no problem installing or configuring any piece of software. This helps immensely when setting up your IDE or debugging weird problems with compiling. Younger programmers seem to comm…

But those skills have nothing to do with computer science as a field of study - wouldn't they be more useful to teach in general education like K-12? Like I remember in middle school, we had an elective option between woodshop and CAD. The 'CAD' class was really more about performing simple automation in programs like MS Word/Excel, but that sort of thing is still useful in just about any job these days - not just pr…

ASU has a degree called 'informatics' that's run by the computer science faculty but focused more on rather than

I just transferred into it from computer science, because I spend all my free time making games anyway, and the informatics program lets me take an elective track to get credit for that. I do think CS is probably a better fit for what I see as my long term plan, but I think this program has a lot of potential for people who wouldn't otherwise call themselves engineers.

Re: Learning to program is getting harder

#19

Anecdotally, what I've seen is that older programmers, in addition to being programmers, also have the skills of a computer helpdesk technician. They can debug Windows problems, hardware problems, know how to mess with the BIOS, and have no problem installing or configuring any piece of software. This helps immensely when setting up your IDE or debugging weird problems with compiling. Younger programmers seem to comm…

I think this skill is what kept me going through the frustrating patches after I decided that I wanted to be a programmer. I started programming later than many here (after I had obtained a degree in an unrelated field), but I'd always enjoyed breaking and fixing computers and software as a kid and so I'd picked up "computing", as you put it, as a hobby.

That sort of hobby teaches you to keep ramming your head against the wall until the bricks start to crumble, which is helpful when you're trying to learn a language but the package you want fails to install on Ubuntu, or your program won't run despite you having checked the syntax a thousand times, or a concept doesn't click until you've re-read it every day for a week. You learn to see computers and software as a mess that you will necessarily have to untangle and rearrange for things to work properly, instead of thinking of things that don't yet work as "broken". And you learn to Google until your eyes start to melt.

Re: Learning to program is getting harder

#20
One of the consequences of the transition from command-line interfaces such as DOS and Unix to contemporary GUIs such as macOS and Windows is we have moved from environments that do not make a sharp distinction between programmer and user to environments that make a sharp distinction. One of the nice things about command-line interfaces is being able to make powerful tools that are composed of smaller tools. Unix has a powerful collection of tools, and if those tools aren't powerful enough even with combined by pipes, there's awk and sed, and then there are scripting languages. Contemporary GUI applications, however, work very differently. Instead of being composed from smaller programs, many contemporary GUI applications such as Microsoft Word, Adobe Photoshop, and iTunes are large monoliths that are expensive to write (just consider how large the teams engineering these products are, and consider how much effort it would take to write a clone of these programs from scratch), difficult to combine, and are difficult to script unless they are specially designed to support scripting (e.g., AppleScript, Microsoft Visual Basic for Applications, etc.). Web applications are even harder to write than native GUI applications, and they are even more difficult to deal with in regards to interoperability and scriptability.

It didn't have to be this way, and there's room for a future where it doesn't have to be this way. The Smalltalk-76 environment demonstrated that it is possible to construct composable and interoperable GUI applications. The Genera operating system for LISP machines worked similarly. Apple's OpenDoc initiative would have introduced the wider world to the concept of composable GUIs, although it was canned as a consequence of Apple adopting the tried-and-true OpenStep platform as the basis of future Mac development. An operating system environment inspired by the Smalltalk environment and LISP machines that provides both a REPL for tasks that are equivalent the Unix command line and an OpenDoc-like API for designing composable GUI or even web applications would create an environment that is both easy to use and programmable. I've been growing more and more excited about the possibility of such an operating system for workstation users that could one day serve as an alternative to contemporary desktop operating systems and environments such as Windows, macOS, and the Linux desktop.

Post reply on HN