It's harder than it should be to program a computer

Computers are made to be programmed, but we've somehow made programming really hard for some reason

I'm immediately going to out myself as being An Old™ by telling you that one of the first experiences that I had with a computer was with the Atari 4001. We picked it up at some yard sale or another and mostly used it to play games. But it also had a cartridge that included BASIC. BASIC is a simple programming language that is much easier for a certain type of beginner to wrap their head around than using something more 'low level' and cryptic. You can input your programs in more or less plain English and get a result. Sometimes even the result you wanted!

Over the years that followed, my family and I would go through a lot of yard-sale second-hand computers. We had a TI-99 4/A, a Commodore 64, and a Commodore 128. All of which had some variant of BASIC either built-in (with the Commodore computers) or as an add-on cartridge. We even got a few BASIC programming books with example programs that you could type in2. I checked out several books on BASIC from my grade-school library so I could learn some BASIC myself3. My grandfather even subscribed to a Commodore magazine4, and would pore over every issue, mostly looking at the ads for games I would never actually get a chance to play, but I would also check out the programs that were included in every issue and try to figure out what they did without actually having to type them in.

Even through high school, when the venerable Commodore computers were replaced with PCs5 running some version of DOS and QBasic, which was still standard equipment for DOS computers.

I'm not going to run down the entire history of personal computing, but the point is that during the Home Computer Revolution, every computer that I had access to had some easy way to get to a programming environment, limited as it was. It seemed to be expected that if you had a computer, you had easy access to be able to write your own programs to do the things that you wanted your computer to do. Of course, programming complicated things is hard, and it's sometimes easier to just pay someone to write some program for you, and it's also sometimes easier to find someone who's already written a program to do the thing that you want to do and buy a copy6.

That's all fine. There will always be more non-programmers than programmers. There are movements out there that are designed to 'correct' this imbalance by subscribing to the insane belief that everyone should learn how to program. I take the stance that everyone should have the opportunity to learn how program, and they can take that programming as far as they want to.

And that's where those old computer shone. The Commodores dumped you right into a BASIC programming environment, the others had BASIC as an add-on cartridge or baked in to the operating system where you were free to play with it or ignore it. That's where a lot of people my age got their start: playing with and experimenting with doing basic BASIC programming on their computing devices.

But computer operating systems today aren't like that. Not really. Most modern operting systems don't have an easy way to accidentally discover that you can write your own programs to do stuff. Sure, in Windows you could write a VBScript script or a batch file, or in Linux you could write a shell script, but when you're plonked down in front of a computer for the first time, or even the thousandth time, how are you supposed to know that those options are there? How are you supposed to figure out that you can do those things? Read the manual? Sure, that's great advice if you already know that a thing exists and even has a manual. But if you don't know these things, how can you find them out?

We haven't really even touched on what languages a nascent programmer might want to learn. Most arguments I hear are that new programmers should learn Python because it abstracts away some of the more complicated things that a lower-level language might not, which could scare away newbies. Or programmers should start with something more low-level like C so they know more about how their computer operates at the machine level, because programming is Serious Business⁜ and if you're not elbows deep into your program and moving items on and off of stacks by hand, well, then you're not a real programmer.

But for someone that wants to dip their toes into the programming world and just want to make a silly program to do something simple, all of those options are extreme overkill. Installing a development environment just so you can write a few-line program to insult your sibling7. Once someone has discovered that they can write a simple program to do something, maybe they figure out that they can write a slightly more complicated program to do a slightly more complicated thing. Maybe they go on to have a career in computer science and become one of the greates programmers that the world has ever known.

Or, maybe, and more crucially, maybe that person stays at a low level. Maybe that person does simple programming tasks because that's all the person is interested in. Maybe they parlay that into a hobby and then a career, or maybe they stay at a hobby level. Both approaches are valid. But we, as in, everyone that works with computers, have an obligation to make the 'computing' part of computers more discoverable and more accessible.

Yes, that means that copies of Windows should come with a document, physical or digital, it doesn't matter, that explains what a computer program is, provides an example program, and includes the ability to write and execute a simple program without having to download and install anything.

Yes, that also means that Linux and other Unix-likes should similarly nudge new users in a direction that lets them know, that, yes, you, too can write a program to make your computer do stuff, and you should be able to do that without having to download, install, or configure anything. It should Just Work™ for basic stuff.

I think that one of the reasons we got here is that somewhere along the line the group of 'computer users' got bifurcated into two groups, programmers and users, where they used to be, essentially one and the same. That's another article for another day. Right now the focus really should be exposing the capabilities of the average user. It's true that most users will ignore it. But even if one percent of one percent stumbles onto a programming interface and futzes around with it, that's an enormous number of people who might not otherwise know that writing simple programs isn't very hard. And if one percent of those people is motivated to become the Next Great Programmer™, then that's great. But I would much rather have a million low-to-mid-level programmers writing simple programs in something like BASIC than a hundred programming gurus working on the Next Big Thing™

The gurus, you don't have to worry about. They'll figure out a way to program despite your best efforts. But everyone else, the people who might want to write a simple Hangman game just to see how this whole computing thing works, but gets turned off the moment that they find out that they can't just type it in and go. They have to jump through a lot of hoops instead. That's unacceptable to me, and that's where we've lost an important part of the personal computing experience.

Footnotes

  1. If you get a chance, you should check out the Atari 8-bit line. They had awful keyboards, the cartridge locking mechanism was atrocious and prone to failure, and the tape drive never really worked all that well... But it had some inexplicably good conversions of arcade games.*
    • Seriously, it has one of the only home versions of Donkey Kong that had the 'pie' level included. Not even the NES had that
  2. Of course, we never really ponied up for storage media, so we couldn't actually save anything that we worked on, which was kind of bummer. Especially since none of us could type very well and putting in longer programs was kind of laborious.
  3. Once I somehow convinced my teacher to let me borrow a Commodore tape drive to take home so I could work on something for a special project. I forget the details, but I did manage to destroy the connector by accidentally slamming it into a car door, so that was fun.
  4. I don't remember if it was the Commodore magazine, or just a Commodore magazine, but it doesn't really matter all that much
  5. My middle school got a bunch of Macintosh computers that they put in a lab that was rarely used*
    • My guess is that's because the teachers didn't know how to use them, either, and they had nobody to teach a computer class.
  6. Yes, I know that you don't usually 'buy' Free Software™, but for our purposes, let's say that you do buy it for the princely sum of $0.
  7. 10 INPUT "WHAT IS YOUR NAME"; A$
    20 PRINT A$ " IS STINKY!!!!"
    30 GOTO 20


Read more articles · Go back to the homepage