I spent almost 6 years as CTO of an online education company. We helped teach thousands of students the craft of programming that allowed them to go from complete newbie to employed software developers. As such, I feel qualified to say that the current state of beginner programming languages is much worse than it was when I learned.
The end of VB represents a big opportunity.
My first programming language was QBasic (unless you count DOS batch files as “programming”). It was trivial to get started – all I had to do was type a single command and I would be presented with an editor. I would hit a single button (F9 if memory serves?) and the interpreter would run my code. This is what it looked like:
Here is a list of things I didn’t need to learn:
- Return values
- Objects, classes, encapsulation, polymorphism, etc.
- Databases, SQL, etc.
- Command line tools
- Version control
- Visual Studio Code / Vim / Emacs / whatever
- Regular expressions
You get the point. There are definitely lots of other things missing from this list that you need to know in order to be productive software engineer or web developer in the modern world.
QBasic even came with a couple example programs! There was the infamous gorilla.bas:
And there was even a snake game called nibbles.bas:
Of course I eventually moved on from QBasic to “real” languages. (VB, Java, C, Python, etc). I firmly believe it was significantly easier to learn those languages once I had spent enough time with the QBasic training wheels. The different syntax wasn’t so intimidating, and learning new concepts was easier because I wasn’t also learning the basics at the same time.
In the modern world, there is nothing quite like QBasic out there that I am aware of. And I believe the number of people that get turned off software development because of the steep learning curve can be mitigated by a great first programming experience.
When I bring up this topic, the following are usually mentioned:
- Python / Ruby (still too complex IMO and require too much CLI understanding, no integrated editor)
- Swift playground (integrated editor is good but the language is too complex)
- Forth (high potential but the experience is unpolished and feels like it was built in the 90s, which it was)
- Smalltalk (same as Forth)
There’s too much knowledge required to get started, and too much of our modern development stack influences our thinking when we teach newbies. The curve is far steeper than it needs to be.
You should be able to open an editor, run your code with zero configuration required. And the language you write should be close enough to english that you can learn it by reading code. We don’t need anything else for this task. No syntax highlighting, autocompletion, type checking, and so on. It doesn’t even need to be (gasp) a web application. In fact, it probably shouldn’t assume you’re building an “application” at all. Most newbies don’t even really understand what that means or entails anyway.
But what we need isn’t an emulated version of QBasic. We need a modern QBasic, with a modern editor and a modern look and feel. Nobody wants to feel like they’re running code on an old pentium machine when they first get started. They want to feel like they’re getting to peek behind the curtain of the software they use. They want to be productive almost immediately, with a fast feedback loop.
If you have thoughts or opinions on this topic and would be interested in collaborating, please email me.