I had another topic in mind for part 3, but a reader asked a pretty interesting question in response to part 2 that got me thinking. It was so good a question, in fact, that I’ve spent most of my idle CPU cycles this morning formulating a response:
How do you think someone who did not get a degree in CS or software engineering, [can] eventually become a good software developer/engineer/architect without getting further formal education, and surpass those who did receive formal education? I know that if one truly wants to be successful in a particular field, one does not need to take classes in that field. But I just wanted to hear your take on this.
I’d have two answers to this question, depending on who asked me, but both are from my own experience.
First of all, if the person asking was 18, and wondering how best to pursue software development as a career, I would, without hesitation, tell them to go to college, and sign up for as much education as they can stomach.
Then I would qualify that by saying college was, for me, almost completely useless — almost.
The reality is, there are no good programs out there that can teach software development. Most Computer Science degrees are in Math, and most applied courses teach languages that are already out of date. If you don’t have the gift of talking to computers going into college, nothing they can teach you there will help you.
When I signed up for Computer Programming/Analysis at Conestoga College, in 1997 I was sure they’d have nothing to teach me. And when I graduated 4 years later, I was still mostly convinced of that. Conestoga was the number one college in Ontario 7 years running, include the time I attended, and has produced a number of very successful local technologists. It wasn’t the school’s fault that their material was sorely out-dated — that’s just the way this industry moves. Maybe 20% of what was offered turned out to be new and applicable information for me. The rest I either already knew, or wouldn’t ever need to know (a year of COBOL?! Are you kidding me?) In fact, I was so thoroughly self-educated at 18, that I was enlisted to help the head of my program re-write the first year Intro to Programming course material.
All that arrogance aside, though, I might not have the job I have without the piece of paper that says I went to school.
In software development (and probably other fields), education does not necessarily prove your skill or your intelligence, it proves your discipline and your commitment, and its those things, as much as any technical bullet point on your resume, that employers look at.
My current boss sees hundreds of resumes a year. He looks for quick ways to pair down that pile, and one of his first qualifiers is education. His short list these days is mostly made up of people with Master’s degrees.
Formal education may be something of a money making scam — I have a pile of useless text books in my closet that cost me from $100 – $300 each, just like I have a pile of course credits that I’ll never use — but the harsh reality of a competitive marketplace is that formal education also opens doors. Perhaps you can get as far with only your intelligence, charisma and experience, as those with less of each but a few letters after their name, but you’ll have to work harder to get your foot in the door, work harder to prove yourself to your boss and your colleagues, and you’ll be offered less opportunities. For example, it would be very difficult, if not impossible, to pursue a job outside of your native country without a formal education.
I have known brilliant people, who by all rights should be rolling in cash, limited to low-paying, high-stress, over-worked positions because they don’t have a piece of paper that says they can do what everyone knows they can do…
That said, I’ve also interviewed people with tremendous academic credentials from prestigious schools, who are less qualified for a job as a software developer than your average high school student.
So in general, my advice, despite my own impatience toward academics, is to stay in school as long as you can stand.
However, if the person asking the question was a colleague, or even someone I was interviewing, my opinion would be entirely different. While I acknowledge college as usually being a necessary evil in pursuing a career, I also know, perhaps more than some, that lack of education means nothing if the individual in question has a good problem-solving mind and experience in the field. Programming really can’t be taught — its an area of giftedness (or a curse, depending on your perspective.)
At my work place, I can almost guarantee that none of the people around me are developing in programming languages they learned in school. You could argue that they learned the discipline and processes, the problem solving techniques, and the logic that could apply to any language, but I would argue that they already knew those things — they were born with them.
Software development moves so fast that you have to be self-taught. In the time it took to complete coding on my latest project, in the then-brand-new .Net 3.0 Framework, .Net 3.5 was released. If I was dependent on what I learned in college, I’d still be using VisualBasic 6 — and I would be sorely unemployable!
No, given the opportunity, I would never evaluate the viability of a candidate based on their schooling, or lack thereof. And I would never judge a co-worker’s ability based on their degree, or lack thereof. An education may help get a foot in the door, but what’s important in software development is what you can do now. Can you problem solve? Do you learn quickly? Are you a logical thinker? Do you communicate well? Can you think ahead? Prove it, and I don’t care what your background is.
And I would remind those who disagree that both Steve Jobs and Bill Gates are university drop-outs, who knew before they finished school what needed to be done, and made it happen. I wouldn’t encourage that path for those starting out — its risky and it may cause people to undervalue you — but if you’ve arrived at your professional career through a less-conventional method, and you have the smarts and the guts to get things done anyway, then don’t let anyone tell you that you can’t succeed.
Far more useful to me than anything I learned in school was the job experience I’ve collected. I was employed in my field before I was done college, and maybe could have gone just as far without the piece of paper. But I’ll concede that its been helpful — especially given my youth at the time I began playing this game — to have evidence that I can do what I do…