Gather round young coders while I tell you a little story. Way back when, far before you were born, we were building programs just like you are. After we trudged uphill barefoot in the snow, we went into a scorching hot room and we hit the plugboards with boundless enthusiasm, plugging switches in to “portable function tables” and doing arithmetic as it was meant to be done…slowly.
We didn’t have any “stored programs” like you spoiled brats, we had blueprints! Punch cards! Stuff written on napkins! You kids download and app to your phone to calculate your food budget but we really earned our keep.
Ok, so it wasn’t that bad and I’m not that old. When I started writing programs in the late 80s it was pretty primitive and required a lot of study and skill. I was a young kid doing this stuff, the adults at that time had it even worse and some of them did start in the punch card era. This was back when programmers really had to earn their keep, and us newer generations are losing appreciation for that.
A generation or two ago they may have been been better coders than us. More importantly they were better craftsmen, and we need to think about that.
Those Old Fogeys Didn’t Know Anything!
The first argument you might bring to this idea is the obvious advances in technology we make today. People did a lot of stuff back in the day that seems wasteful or even stupid now.
We’ve built a body of knowledge and learned from our mistakes, we’re way past those ignorant cavemen, right?
For starters they did do stupid stuff back in the day, and they did write bad software. Bad programmers will still build bad software tomorrow too, but I think there are more of them now than there were then and that’s the real problem.
Those “good programmers” from generations past were really good, good enough that we’re still standing on their shoulders and using their technology. The good stuff was really good and we emulated or improved on it, but what makes them so much better than us?
Old Programmers Had to be More Resourceful and Inventive
Can you imagine what it must have been like to be a programmer before Google? I can, but honestly I barely remember what it was like. What I do remember well is running into problems that were sometimes very trivial but cost me hours and hours of time. They were problems that would take today’s 12 year old coder about 30 seconds to solve. But who learns more? Certainly not someone that types a query into Google then drops in some copypasta and moves on.
In the old days you had to be far more resourceful and inventive. You may only have had one book on a programming language or operating system ( if even that ) and maybe a few peers to talk to but for the most part it was trial and error, and good old hard knocks.
Hardware? Yeah it’s great now but it sure wasn’t back in the old days. Programmers needed to know how to manage memory because it was very expensive, and they had to count cycles because they were being charged for CPU time. Could you imagine that? I don’t even think about CPU performance most of the time because my compiler does that for me, and my dual core computer is going to spit it out fast anyway. I’m spoiled, and I know less about the hardware I’m working on than a guy doing my job in 1982 would.
The Barriers were Higher Back in The Day
To be a programmer back in the early days you really needed to know your stuff. You needed to know mathematics, electronics and countless other skills before you could even think about building anything. If a company or institution dropped giant amounts of money on this machine they barely understand, do you think they handed the keys over to some kid fresh out of school? Not to mention the fact that there were no computer science or software development colleges for quite a while. So who wrote all the software then? Ambitious geeks who were self motivated to learn the craft, and they were passionate about it.
These days you hear a lot more folks that say “Yeah bro I’m gonna get into IT and make the big bucks” and that’s their motivation to get that little piece of paper and go out into the workforce. They spend most of college partying and barely scraping by then after graduation they’re handed a job as a programmer.
This isn’t a blanket statement of all IT developers that come out of school, It’s just more common than it used to be. Don’t get me wrong here, the class of 2012 CS grads are full of brains and talent, they’re just mixed in with more mediocre people than the class of 1972 was. We aren’t getting less talented or smart folks, its our signal to noise ratio that’s suffering.
CopyPasta is Rampant
One of the very things that makes technology advance hampers it at the same time. I mentioned Google earlier because we all know very well how reliant most programmers are on it. I include myself in that statement because I am Google dependent. Get a problem, get stumped, hit Google and see if someone else had the same issue.
It’s a great way to save time and be more productive, but it’s also low hanging fruit for bad programmers. There are far too many people copying and pasting code these days. When I dig into someone else’s stuff I can almost see it instantly, and I do a quick search and find entire functions copied from the net. Sometimes it’s good code, but sometimes it’s not and you need to learn enough to know the difference.
Crowdsourcing has it’s advantages and there is some great code out there, but again it comes down to signal to noise.
People use Frameworks Too Much
Frameworks are great, and I’m not bashing them. The fact that some programmer or many programmers decided to get together and build some common functions into a framework for fast development is awesome and saves hours of time. But I think many new coders are way too reliant on frameworks. As programmers it seems like we’re slowly sliding into becoming folks that glue together the right objects and methods without any real understanding of what’s going on. We overuse frameworks all the time.
Do you really need to use a whole giant framework for some simple site with a few CRUD operations? Probably not.
That goes for a lot of open source software abuse as well. There’s absolutely nothing wrong with installing Drupal and making a few hacks rather than writing a CMS from scratch, but if that’s all you know how to do you shouldn’t call yourself a programmer.
My point in all this is that we should have some appreciation for what we have these days, because whether we want to admit it or not development is pretty easy. We have tons of frameworks and libraries and open source software to save us time. We have tons of resources at our fingertips that we didn’t have just a few years ago. We communicate better and have badass hardware. What we shouldn’t have is excuses.
We have so much. I would have never dreamed in 1995 that I would be carrying a library of technical books with me whereever I go with my Kindle Fire. I have a laptop that I can use to develop stuff in several languages for multiple platforms and products. We are empowered now more than ever.
Why aren’t we learning more? We shouldn’t be as lax as we have become because the whole industry suffers. There are a lot of mediocre and flat bad programmers out there because we’re knocking down the barriers and letting everyone in, plus they have all sorts of crutches they can lean on now.
The kids coming out of college now are bright, talented and energetic and are ready to change to world. But they’re mixed in with a lot of people who are none of those things, and it’s unfortunate but true.
What will happen if we aren’t careful is we’ll have a group of people who know nothing more than how to glue a bunch of classes together and copy paste their way through their careers, then later they’ll be teaching others the same sloppy stuff. As developers we’ll become nearly useless over time, not to mention how bad the software will be. Knowing how to actually write code will someday be as rare as those who know how to use a slide rule now. We go from specialized craftsmen to a commodity that builds crap. That’s something very few of us actually want.
We have to remain true to the craft, and really take pride in what we do. We have to do what the old timer did, which was to roll up our sleeves, learn the most we can and get the job done right. We can turn the trend around.