Have you heard of STEM? It's an acronym for science, technology, engineering, and math. The term is most commonly used by those who wish to update the public-schools curriculum to include more emphasis on technical subjects. This alteration of focus, the reformers say, is necessary to make students employable in the digital future and to secure America's competitive edge against nations that are already packing their kids full of STEM.
I have some sympathy for the reformers. But there's a hole in their thinking.
In software development and other engineering fields there is a disconnect between academic preparation and career success. I've reviewed computer-science course lists at a dozen or more good universities in the U.S., and I am convinced they do a poor job of preparing students for the real challenges of software development. If you want to master the theory behind compiler development or decipher complex computer-vision algorithms, the classroom is the right place to be. If you need to partition projects so a team can work together without stepping on each other's toes, if you need to ensure that the software you develop meets the requirements you agreed to meet, if you need to negotiate complex trade-offs between features, quality, and cost...well, the universities are of little help. That's not what they are about.
Nonetheless, everyone agrees that gaining a degree is a good first step toward making a career in the software world. If you're a job-hunter, you need the degree. It must be said, however, that very few software-development positions require a degree. Virtually all of the help-wanted ads I've seen say “degree preferred.”
What employers need isn't really a degree. They want some sort of certificate that establishes objectively that the applicant meets a certain standard of proficiency in the field. They want a guarantee of competence.
There's a big difference between competence and certified competence. They aren't the same thing – especially in software development, where diplomas tend to document proficiency in skills and concepts that are not aligned with the job's real challenges.
It has never been easier to achieve competence. If you want to learn to program, just pick a language and hit Google – in less than a minute you'll find a wealth of online courseware and videos and tutorials, most of it free. Universities like MIT and Stanford and the UC-Berkeley are making courses available online for anyone who wants them. At no charge.
If the courses are free online, why does anyone pay the tuition and attend classes? I'm glad you asked. It's because the online courses don't lead to a degree. If you want a diploma – a document certifying that you have met the learning institution's standards for proficiency in the subject area – you still have to enroll in the university and pass your classes and graduate.
You can have the education for free. It's the certification of competence that will cost you.
This situation can't last, of course. In the long run, universities can't charge a premium for in-the-flesh diplomas when online courses give the same education to students who don't pay.
What we need is an alternate method of certifying learning. That's the motivation behind Mozilla's Open Badges project, which I have written about before. It turns out there are a number of certificate/badge programs in nascent stages online. They are an idea whose time has come.
Meanwhile, as a developer seeking to maintain and enhance your employability, you need to attend to two related goals. The first is, you must achieve competence. The second is, you must have a way of documenting that competence for prospective employers.
Good luck.
Web recommendation: Wow, this is interesting. I bet it leads to a recall, or a software update at the very least. J.D. says check it out.
J.D. Hildebrand has written hundreds of articles for dozens of publications and online communities dedicated to software development. He prefers slip-on shoes.