Notes

Everything here is a work in progress. I thought about making something like this while teaching my girlfriend some code. I realized, as someone outside the IT community, that I'm surrounded by people who can't code. It's not that it's difficult. Sure, a lot of languages are, but you don't need to know how to hack on the Linux kernel to get some value out of learning what that machine you interact with daily is doing.

While there's an initial learning curve, from there you receive many benefits.

Frustration

If I may use my broad brush for a second, I'll declare that the biggest turn-off for aspiring programmers has to be a bad first impression. What is that first impression? Well, if you're starting off on web programming it might be PHP. If it's scripting for productivity suites like Office, it's likely VBA. If it's your first computer science course, that would be C or C++. If you just downloaded the first IDE you heard of for the OS you likely have, Visual Studio, it might be VB .NET.

C and C++ are wonderfully powerful, but the initial learning curve is steep: you have to learn all the basics of programming plus things like memory management, pointers and compilation all at once. And it's quite likely that that power is lost on the beginner trying to learn how to print user input backwards gets mysterious errors on segfaults and missing semicolons and not enough or too many asterisks. C++ is great for experienced professionals working in large teams with other experienced professionals and focused on efficiency.

The other two, PHP and VBA, are just painful in a way that most languages aren't. We can argue about Perl vs Python vs Ruby until the cows come home, but it's a debate incapable of resolution: they're all fairly powerful, clean and friendly. While they (potentially) lack the speed of lower-level languages like C, there is very little a novice needs to do that demands optimization.

And then there's VB .NET, whose syntax is deceptively simple. It's really the stuff of rants.