Friday, January 06, 2012

We are all script kiddies now

The Way We Were

So if you have read earlier entries in the blog, you know that I once reviewed learning styles as categorized by David Kolb. They were all lengthy thoughts on how each person learns differently and how each person may respond better to certain teaching styles. And I think there is something to what was said there.

But there was a news report not long ago about how Google (or rather the "internet search"; let us not get into the habit of calling all photocopies "Xeroxes") is changing the way our brains work, by wiring them to go for the instant knowledge gratification. The thought is that rapid information access is making short term memory less effective because we use the internet as a crutch. And I thought at the time, "Oh maybe, but that's only for idiots that learn programming by reading those stupid Dummies books. Proper learners like me will always take a class and read quality books written by guys like Steve McConnell and Andrew Troelsen, and take our time learning and refrain from writing code until we have a body of knowledge about the language."

The Calculator Discovered

Then I started picking up Linux and PHP and MySQL. And when I ran into problems, I found that under desire to complete tasks I couldn't help but go to the internet for rapid information access. And then I remembered what I used to think about learning, and I realized I was the idiot.

I was using the internet to glean knowledge from others, even so much as stealing functional and useful scripts through the browser. I could get things done fast, and while I had to use my brain, it was significantly less work than forging painfully through arcane documentation and numerous trial and error sessions fighting with the script parser. Shortly after that, I realized I had become a script kiddie. And I liked it.

It was like I'd become Bradley Cooper's character in Limitless; I could pull down references from all over the world in seconds. I could make my bash script in a fraction of the time that it would have taken to build it from scratch by using what others had done. I could search for what I wanted to do via MySQL's mysqladmin, and I could get exactly or almost exactly what I needed quickly. It felt a little like cheating, but I was getting real work done. It sucks to be wrong, but being a script kiddie has its benefits, not the least of which is a material immediacy that matches the American culture's thirst for NOW.

You Gain more Wisdom from Failure than Success

Isn't there something missing in the new way of learning? I don't mean the obvious things like, "What the heck are you going to do on a camping trip when you're an automaton that can't tie shoes without internet help, you don't have connectivity, and a bear is chasing you?" I mean things like what Carl Feynman and Michelle Feynman were probably thinking about when they came up with the title of the book about Richard Feynman, The Pleasure of Finding Things Out. Smarter guys than me have said that sometimes the journey is more important than the destination. No one seems to care if you finish in second place, but if you learned a boat load on the way there, isn't that enrichment worth more than a red ribbon (or blue if you're in Canada [thanks, quick internet search!])?

In programming, when we copy a script or follow a script that doesn't also explain why something is the way it is, we lack the history of the issue and thus the context that helps us understand why we do the things we do, or perhaps that gives us the knowledge we need to know when something is extraneous and can be removed or changed for efficiency.

But does all of that even matter anymore? Software development, except in the very few places that truly revere quality over deadlines, has been transformed by corporations into the world's second sloppiest profession (the first is law. Sit on a jury or even jury panel selection sometime and then tell me I'm wrong). I can only think of one development shop that dared to say, "Design is law," and it is out of business. Two other shops have a quality focus, and even they're changing. Id Software and Apple Computer both like to say, "It'll be done when it's done." Id's latest releases might be technical marvels, but they've proven Id is more about programming than game development. And Apple, although one of the best at managing the convergence of hardware and software, has nevertheless taken criticism recently for an underwhelming iPhone 4 release, perhaps finally showing that even they can succumb to market pressures to put date before quality and innovation.

We are all Script Kiddies now

The world moves at pace that I've heard referred to as "internet time" or "web time". Example: "Two years in web time is an eternity." Given that, can developers afford a classical style of learning? For that matter, are calls for educational reform just about class sizes and getting teachers more money, or are they also considering the way the internet is changing the way we learn and calling for a major paradigm shift in the way we teach?

Another report I've heard is that our youth today may seem superficially proficient with technology, but that while there are indeed some brilliant coders in their ranks, there are even more that are actually just comfortable "users" of technology, rather than masters of it. They can dig into menus and launch apps with the best of them and can seem, and are, supremely functional with their technology. They can text at lighting speeds, slap photos onto facebook in a heartbeat, and find a nearby restaurant on Google Maps, but they can't replicate the tech and most of them probably are as lost as their elders at configuring items in the deep recesses of the sub menus. It reminds me of the Issac Asimov story about the society in which everyone used calculators and only one person knew how to perform math by hand; he killed himself under the burden of the knowledge.

In the end, is becoming a script kiddie a turn to being a cheap, lazy programmer or is it just being an efficient one? Is it simply accepting that this is the way the world works and that you'd better adjust to compete? The truth is somewhere between the extremes, where it usually is. But I fear more people are turning to the script kiddie way and that it can lead to side effects, and a whole different kind of "dependency injection", that we're not preparing for.