Live data from Hacker News

Learning to program is getting harder

allendowney.blogspot.com

121–130 of 422 posts

Re: Learning to program is getting harder

#121
Well programming is one piece of the puzzle. I also miss the days when qbasic was preinstalled and easily accessible.

But what worries me more is the actual deployment of the application you write, which is getting more and more complex quite fast.

It seems, I'm in a rare place, where deployment consists of installing a database and extracting an zip file. There's a script you run and the (intranet) service is ready. Updates work exactly the same.

Sometimes I feel a bit ashamed, when clients watch me extracting a zip file, but then I experience deployments and updates of other so called enterprise systems and am completely baffled by their complexity.

Server provisioning and orchestration. Container managment. In memory caches. Sharded databases with master slave setups. Load balancing with health monitoring and what not... And to manage this mess you need a mix of bash scripts, fiddle with permissions, run terraform which itself runs ansible which deploys some docker containers... And when there's a tiny problem the guys in charge are completely roadblocked for weeks.

I have no idea how some people can live with so many layers of complexity and I fear the day, when I need to dig into this mess, eventually...

Re: Learning to program is getting harder

#122
post #76

I disagree. Creating a program that meets todays' users expectations is what's harder. But learning programming by itself, is way easier. We have Python, Ruby, Javascript... We have the Web as a platform and as documentation. We have communities and cheap, fast computers. The hello world has never been easier to do. What's hard is to make a real time offline first SPA with a beautiful responsive design that uses the…

But the learning curve of getting an environment setup to do that is steeper.

Even for more advanced web-dev stuff I'd argue that the tooling has made things much easier for getting started. For instance create-react-app does all the heavy lifting in basically a one-click package.

Re: Learning to program is getting harder

#123

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 don't really think of programming as a career skill - I'm a hobbyist. But I love it, and I love learning about it, even the really low-level stuff. I like reading about algorithms, and data structures, and architecture.

Computers, on the other hand, I despise. Every piece of knowledge I have to learn about how a specific computer works, not in the sense of ALUs and registers and whatnot, but in the sense of 'if Windows gets a BSOD it's probably the boot usb you've left plugged in', I hate - and only let into my brain with a great deal of teeth-grinding and swearing.

Fundamentally, computers are interesting devices. Using them, however, is generally horrible. So I can see why people get into programming without really taking an interest on the devices we normally use to program on. I think programming would be an interesting activity if you were just doing it with pen and paper. For me, it's really a shame that the best device we have available for it is some kind of crazy-house compendium of horrors and bizarre compromises.

Re: Learning to program is getting harder

#124
post #76

Earlier quoted context omitted.

But the learning curve of getting an environment setup to do that is steeper.

It's not. Installing a C++ tool chain two decades ago is much harder than any current environment.

For decades, "development tools" was a (relatively) standard bit of kit on any Linux distro; in fact, you needed it to compile basic software you needed to run on the machine.

These days, every environment/framework has a different distribution method/model involving running random shell scripts or learning git or whatever.

For example, on OS X (I imagine this is harder on Windows, possibly easier on Linux)

Python:

To install REAL Python on OS X:

* Install GCC

* To install GCC you need XCode

* To install Homebrew, use Ruby to curl to a random shell script on github.

* Export a path

* Use brew to install python3

* Brew installs pip for you (and then?)

React Native:

* Assuming you have Node installed (yeah, sure, why not!):

* npm install

* create-react-native-app

* npm start

* Then download Expo client on iOS or android phone and scan a QR code...

Re: Learning to program is getting harder

#125

I disagree. Creating a program that meets todays' users expectations is what's harder. But learning programming by itself, is way easier. We have Python, Ruby, Javascript... We have the Web as a platform and as documentation. We have communities and cheap, fast computers. The hello world has never been easier to do. What's hard is to make a real time offline first SPA with a beautiful responsive design that uses the…

> The hello world has never been easier to do.

We also used to have BASIC pre-installed on a lot of different systems, and were able to write a GUI just by writing to the frame buffer directly.

A helloworld was just:

    10 PRINT "Hello, World!"
I learned to program in BASIC, with just the on-disk manuals. I can't say that it's easier today - I didn't need anything extra back then, and had a snake game up and running in a couple days from never knowing programming.

Today, we don't even have access to an unbuffered get_char by default, and you need to either modify how the shell is running or reach for a heavy library.

Re: Learning to program is getting harder

#126

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…

Surprisingly I think I'm the first to disagree. I find a modern IDE comes with so much implied mental baggage that new users can get completely overwhelmed. Sure, languages which require complex build environments almost demand one, but in simpler environments it can be a lot easier to reduce the cognitive load in a simplified environment. One can do a lot of programming and learning with just a simple editor (Nano?)…

For me it's the opposite. A modern IDE is significantly easier to understand, with far less mental baggage than some hacked together combination of several CLI based tools. The mental drain of clicking some nice green play arrow on screen when you want to execute code is non-existent. The baggage of remembering which tool does what, what weird flag you have to keep adding to one of the commands you need, what keyboard shortcut you needed again to exit your CLI based text editor, all of that takes far more baggage for me. Especially when you have 10 different setups like it, and may not return to some of them for months.

And even if you do somehow remember how all of your CLI tools fit together, you're still missing out on an incredible amount of power and clarity that IDEs provide. A CLI just doesn't have the ability to show information nearly as well as a GUI, it doesn't even come close in terms of the amount of bits worth of information you can show simultaneously, nor in its ability to use positioning and formatting to clarify what's important and related. Add that GUIs provide constant in your face hints that tell you what your options are, and it's no wonder almost everyone finds them significantly more pleasant to use. You don't have to remember anything, it shows you.

Yes, people end up developing bad habits and will run into some problems later. But these issues aren't as significant as people giving up early because of learning curves that are too steep on software which is only vaguely connected to what they actually want to do. "I want to build an app" is what drives people, not "I want to learn all the flags for javac".

Re: Learning to program is getting harder

#127
post #65

Earlier quoted context omitted.

VS Code is modern ide. And I would really like to know which IDE takes an hour long install. Because I tried multiple on windows and they all required download, double click and that was it.

Visual Studio, Jetbrains, if you happen not to have a fast internet connection and SSD can take a long time.

Installing Android Studio over a slow connection was a real PITA.

Re: Learning to program is getting harder

#128
This is a REAL problem. The information overload for becoming a coder is going way up with all these "great" new tools we're getting.

Try messing with the build of a React.js app, and I'll come see how you're doing next week.

Things should be getting easier, and the information overload less. For all scenarios, not just the easy ones. I think more advanced developer tools will be the main driver of this.

Re: Learning to program is getting harder

#129
post #76

Earlier quoted context omitted.

But the learning curve of getting an environment setup to do that is steeper.

It's not. Installing a C++ tool chain two decades ago is much harder than any current environment.

Really? I remember it being rather easy circa 2003. On Windows, you could download an installer for Dev-C++ or the Borland compiler, install it like any other program, and you were done. On virtually every other platform, you didn't have to do anything at all: the system came with a C++ toolchain ready to go.

I'd say it's still just as easy to get going with those sorts of tools now, and the same goes for many other languages, like Java and C# for example.

That said, I think the question of whether it was easier to start programming then versus now has a more nuanced answer. The kinds of programs people are likely going to want to write—like mobile apps, web apps, and games—are a lot more complex these days than their equivalents were back then. On the other hand, there are boatloads of free tooling and information readily-available to help people through it. On the third hand, there could perhaps be issues of information overload if you go looking without a guide.

So, getting started is one thing, and I can't say for sure whether it's harder now versus then. Of course, that's a slightly different question than whether it was easier to learn programming then versus now. This question is easy for me to answer: of course not, learning it now is just as easy[1] as it's ever been!

[1]: Or hard, if you're of the glass-half-empty persuasion ;)

Re: Learning to program is getting harder

#130
post #65

Earlier quoted context omitted.

VS Code is modern ide. And I would really like to know which IDE takes an hour long install. Because I tried multiple on windows and they all required download, double click and that was it.

Visual Studio, Jetbrains, if you happen not to have a fast internet connection and SSD can take a long time.

Having to wait an hour for a download/install to complete is completely different from requiring an hour of browsing stackoverflow to figure out why the CLI install instructions given aren't working on your device.
Post reply on HN