Tuesday, November 12, 2013

Programming Thoughts

Wow, it's been almost a month since I last posted. I've mostly been very busy with NaNoWriMo and working on my Kickstarter project. Today, though, I was reading various things about Codecademy, including many forum posts and half-assed articles about how it is not good for the programming field in general. I have to say that I completely disagree.

While, yes, programming is more than simply learning how to add and subtract ones and zeroes, and how to write in a certain way that makes a computer do that for you, it is also not about some highly-abstract process that can only be learned through "years and years" of practice. Programming requires two things:

  • The ability to think logically and interpret sequences of events, both real and imaginary, through those logical filters
  • And the ability to learn the keystrokes necessary to make a computer do the logical processes you need it to do to simulate said sequences and events
In the end, writing a computer program is no more complicated than writing a moving poem or novel. The only difference is that is is far more difficult to make people feel/do what you want than it is to make computers do what you want.

In that sense, programming is syntactically less complicated than learning a foreign language, especially if you already speak English, for which most programming languages are designed. Of course, logic and math play into the equation, but that isn't my point.

Learning the syntax of any given language is the absolute first thing you do when learning to speak a new language. However, this is not the case with programming languages. In order to learn any programming language, you first have to understand the basic logic and math that goes into computers. You typically learn about for and while loops, if/else flow-control, and functions long before you ever truly write any code.

What Codecademy does that almost every other programming lesson (online or offline, print or pixel) does not is teach you these ideas. Sure, it uses a programming language, like Python or Ruby, to teach you these basic programming ideas. But every basic lesson starts with "these are data types, this is control flow, these are loops". After they teach you those things (again, in every basic lesson, in Ruby, Javascript, Python, and PHP) they then go on to teach you more complicated programming paradigms, like procedural vs. object-oriented programming.

Is Codecademy the be-all, end-all tool to teach programming to literally anyone? No, it is not. But it does an excellent job of teaching programming basics while providing instruction in syntax and style that every single programmer uses. The thing is, not everyone is fit to be a programmer. But any good programmer will only really need Codecademy and a lot of practice to learn how to code. Hell, I'm not even a good programmer, and I have prospered in the coding world thanks to Codecademy.

Basically, if you think that Codecademy is useless because it "only teaches syntax", then you aren't a good coder. If you needed to be taught more than the syntax, you are no better than people who need to be taught how to write poetry, or painting. If you were really good at it, you would have only needed the basics.