There's a recent Wired article that's been floating around the web that asks if computer programming is the next big thing in blue collar work. I find this article interesting, because I've long though about computer programming a skilled trade. In one sense, it's not unlike being a plumber or and electician, both of which can provide very decent, middle-class salaries.
In fact, thinking of tech jobs in this manner is nothing new! In the '90s every vocational college in the country offered classes in welding, paralegal, PC repair, and computer networking. Just look up your nearest Cisco academy, and I bet it's part of a community college. Chances are good there's a programming curriculum that goes right along with it (I got my "professional" career started teaching in such a program).
Right now is a good time to have programming skills. There's demand, and there's not quite enough people with proficiency to fill that demand. To me, there's really no surprise that code schools and bootcamps are popping up across the country to teach programming skills over 8-12 months. Programming is very much a skill that you can learn, and with plenty of practice, become very proficient withing a short period of time.
However, the work that programmers often do is subtly different from the tangible, physical things that your local mechanic will face. Yes, all skills tradesmen will excell if they've got great problem-solving skills, but at some point programming is a little different. And I think the difference lies in that we deal with abstract concepts. I mean, very few of us ever produce something that's tangible. Yes, there are buttons on a screen, forms you can fill out, reports you can print, but a lot of programmers may never work on such things.
And then there are the "standards". Imagine being a plumber, and knowing that every building had it's own different style of pipes and couplings. Imagine having to buy a new set of tools every single time you went to work on a different building. Imagine needing to be able to connect your electrical grid to your plubming infrastructure (in a sense, I think this already happening, but hang on, I'm trying to be facetious here). What do you do when your client says, **"we don't have electricity on the south side of the building, but I know water conducts electricity, so just connect the water main to the power grid, then install an outlet in every faucet"**?
As a programmer, at some point in your career, you're going to get this request. In the tech industry, we already have a niche whose focus is to make the square peg fit in the round hole. It's called ETL.
So what's the point of my blog post here... In our effort to find _the next big job for everyone in the US_, let's not diminish the amount of time and effort that it takes to become a programmer. It *is* a skill, and it's one that most people could learn. But it's also incredibly challenging and frustrating at the same time. And much like a plumber or electrician, being clever, creative, and having the ability to think through a project from beginng-to-end is going to a set of skills you also need to cultivate.
Finally, the most important skill a programmer can have is the ability to keep learning. This industry moves at a frantic pace. Many people don't realize just how young the field computing is in the grand scheme of things. We haven't figured out how to best solve 90% of our problems. Do not be fooled: You don't just learn how to program, then rake in a posh $80k/year and call it a day. If you want to survive/thrive in this industry, be prepared to start all over every couple years. Your education starts with that first project or job. It never ends.