How Important Is Education

RenameMe: suggest HowImportantIsaDegree?


I've been debating with myself on how important education is in a career as a programmer. I'd really appreciate some wise words and things you've experienced from others. This basically comes down to three questions for me: What can I do to make myself better at developing software? (currently: practice & read books), What does the industry (including HR) respect as making you a better programmer, and HowMuchDoYouLearnInSchool?

At my current workplace, you won't get hired unless you have a BS in the field you're applying for (ie BSCS for programmers). On the other hand, if you've got an MS, it's a detriment to you because a) the higher-ups (GoldOwners) have bad experience with people who've spent too much time in school (not productive, not team-players, or some other similar basic work problem that would've been cleared up with some real-world team experience) or b) the corporation I work for requires people with an MS to be started at a higher level even if the hiring manager doesn't think they're necessarily there yet. How common is this?

It appears that SteveMcConnell and his crew at Construx software highly value the higher level degrees based on what they have on their web pages.

What this all comes down to for me is should I get a masters? And if so, in what? I'm looking at Computer Science and Software Engineering (basically CS weighted towards development rather than upper algorithms so far as I can tell).

On a side note, what does everyone think about certifications? I'm going to get a Java certified programmer cert one of these days basically because I can. I'm sure I could get the upper level certs without too much difficult as well.

What are your experiences? -- GeorgeGruschow


I badly damaged my lifetime income by not getting a degree. You can mitigate the damage to some extent by working through a consulting house. For reasons unknown to me, most employers don't seem to care whether a consultant who is coming to them through a consulting house has a degree.

One reason is that if it turns out that the consultant really doesn't know what he's doing, it is very easy to terminate the contract. That is harder to do with a new employee. At least, in the lawsuit-happy USA.

The recruiters and interviewers I've spoken to say that if there's a tie between two candidates, the one with the certification will win. In my current job, they hired me for C++ but were planning to convert to Java in the future. After I was hired, I asked my interviewers if the certification made a difference. They said that it did.

The number one thing that makes a programmer into a professional is passion. For me, it's a passion that pervades my life. I do not program so that I can eat - I eat because dead people (as far as I know) are not allowed to program.

Number two is doing it. Have a computer at home, and not just for games. Install more than one operating system. Learn the ins and outs of each one. Learn several new languages a year. Read lots of books! Write lots of code!

When I am interviewing someone, I love to hear this passion in the person's voice. It's hard to go wrong hiring passion. -- WayneConrad



With the MSc, I would say it depends; unfortunately, in the UK, there seem to be a lot of IT MSc's which are basically conversion courses, so you could get someone with, say, a BA in Media Studies, taking an MSc in IT - these people tend to avoid the tricky programming stuff and concentrate on the woolly management stuff during their MSc's.

However, there are plenty of good MSc courses for those who already have a computer science BSc; I think they can be better recruits than those with just BSc, as they will have tended to have worked on bigger projects. Of course, once someone has got a couple of years' real world experience, it doesn't make much difference.

A good way to get a feel for any fresh recruits out of university is to look on their university's web site and look at the course content.

Also I wouldn't take BSc as a minimum requirement, there are plenty of good programmers out there with HND / HNC, which tend to be more practical than degree courses anyway.

-- SteveEyles

The qualities of a good programmer would enable them to get a degree (assuming they can afford to do so, and have sufficient interest in some subject).


Education is important to the individual. Formal Education as the means to get an Education is not important to the individual. Companies, however, use Formal Education as an evaluation of the level of Education of an individual.


Formal Education is worthless on a personal level if you already know the subject. But people are dumb and therefore will think that you know nothing about the subject at hand unless you have had a formal education in it.

''I'll second that; I find it difficult to get through brain-dead courses in stuff I have known for years. It is hard to get yourself to care about an assignment that you could do while sleeping. Maybe I am just lazy though.

A formal education with a 4-year degree is generally considered a prerequisite. But beyond that it does not matter much in this industry unless you are targeting cutting-edge research. But for typical "cubicle jobs", what they teach in school has only minimal bearing on what you actual do on the job. Writing skills and the basics of programming are probably the most important things you get out of it, but basic programming is easily self-taught if you have the knack.


(IronyWarning)

Learning is more important than education. Sometimes learning happens during education. Sometimes not. Learning is the thing.

How do you measure learning? By application. Can you do what you learned?

You learned photography. Can you take photographs? Can you compose a decent shot? Can you select a good film, lens, filter, shutter speed, shooting angle?

You learned typing. Can you type? You learned philosophy. Can you think? Reason? You learned electronics. Can you build a circuit? Repair one? And so it goes. The applications of things like history are a little hard to express in punchy, three-word sentences, but the applications exist.

So, why is education so highly prized?

I had it expressed to me this way: at the completion of an interview, as I was being told that I didn't qualify ("We're looking for at least a BS ..."), my tormentor pointed out that a degree is a good measure of whether someone can actually undertake and complete a major project.

So where's the irony there? My resume: dozens and dozens of completed major projects, big name customers, non-trivial technologies. Five years of teaching the stuff. No degree.

Will education teach you more? Well, it would have saved me some time in one respect - my terminology would have aligned with those around me. I would have been exposed to classical CS problems and solutions.

Is education important? Well, learning is important, and if you can get that done with an education, then fine. In the end, it may be that the "education" is merely your cost of entry (can't get in without a ticket, and the ticket is called a diploma).

However, if you just have to get a degree, may I suggest an EE degree over the CS. Take CS as a minor. Audit the classes. Whatever. If I had to do it all over again, that's what I would do.

-- GarryHamilton

I've seen that attitude. Based on that behavior, you didn't want to work there. ;-) Let's face it, credentials are important for getting your feet in the door, but there are many forms of credentials. A degree is only one, and its worth depends on many variables.

As for EE over CS, it depends. I was working in electronics hardware design with a BA in English (Yes, even that degree was a help in hiring situations.) and wanted to study EE. The MSEE programs wanted a BSEE as prerequisite, but the MSCS would accept any bachelors degree. It turned out to be a good move, as I've migrated from hardware development to software over the years. My experience has been that the major of a degree doesn't matter much to most hiring managers. They're looking for an indication that they should bet on you. Most, in my experience, will prefer demonstrable experience over a degree. There are always exceptions, though.

I somewhat agree with the above, but I see much more of a sliding scale. Clearly if one has no work experience, the degree is necessary to get a chance. As years of experience accumulate and job titles advance, college degrees become unimportant. Please note that I mentioned both experience and job title. If one has 10+ years of experience but a title of "Developer", I'm going to look for a degree. Be sure to include those adjectives (such as "Senior" and "Principle") as much as legitimately possible. Show experience and an advanced job title, and the degree becomes insignificant.


...should I get a masters?

In general, I would only recommend getting a Masters degree if one wants to move from software development into management. For the places that I am familiar with, a Masters degree does not really affect the hiring process and the main focus is on years of experience. Companies and industries do vary, however, and if you have a particular company or industry in mind, determine its criteria. I am sure there are places that do put a great deal of value on a Masters.


I've been programming nonstop since 1982, learned around a dozen languages, and have a CS degree from one of the top universities. Nothing about my current level of achievement came from college. Almost nothing was applicable from college. The sole determinant of my mastery of programming has been my rabid interest, self-conducted research, and desire to learn in breadth and depth. College did however stimulate that desire and allowed me to find my true calling. Though I had programmed since I was 12, I still didn't know I wanted to be a programmer till Junior year in College. When my daughter grows up I will send her to one of the least expensive colleges I can find. If you have the desire, nothing can hold you back, it doesn't matter if you go to college or not.

Also all of the silly 'book examples' and completely impractical exercises do nothing to prepare you for the real world. Why don't they at least have 1 CS course with a real world example the whole way through? Where you overdesign up front, then the requirements change halfway and come in twice a week, the user rejects the GUI, the database vendor switches, then all these business rules come in that violate your nice class hierarchy so much that you code for the exception not the rule. And of course at least one method with a super-complex switch statement and multiple dispatching that if you don't perfectly refactor you will spend all your time on it. It would have roles and rules that cut across certain classes and modules and affect their behavior. That would drill refactoring into your head so deep you could not get anything above an F with crap code. That one course would be orders of magnitude more invaluable than a CS PhD in the best university in the world.

-- BrianG


I think one problem is that CompSci? degrees are thought to be and in some cases try to be about both computer science and software engineering, when these are rather different fields. I went to a good school for a CS degree, and I rarely find use for what I learned in class in my workday. However, I still value the theory that I learned and it does come in handy now and then. Education is handy in that it gives you the opportunity to learn from some who already know and have your learning verified. No coursework is as good at preparing for a job as on the job experience, but a good education is the best way to know what is possible and what has already been done so you can say, "Oh, I'll just use bresenham" or "Oh, yeah, this is NP. hmm.." or "Oh, so it is just a DFA" instead of walking well-tread territory. Regularly I find myself thinking on a topic for weeks, finally coming to a pretty good conclusion, then later finding that all sorts of folks wrote about it better than me in the '80s (sometimes 1980s, sometimes 1880s). At those times, I realize that I need to get a better education so I know which giant shoulders to stand on.


The short form: The degrees and certifications get you past the HR/Recruiter filters. Real knowledge, experience, and passion are important for getting the work done. Which one gets you past the interview depends on the organization.


Why don't they have even a single course that reflect real-world experience? It would be invaluable... Basically, there would be a problem that requires very messy class interactions, rules and dispatching. Then every week a new major change would come in etc. Every exercise I took in college was way too clean for the real world. I don't know why professors are so afraid of challenging their students to apply their designs to imperfect hierarchies. -- BrianG

Because colleges aren't trying to teach you how to survive in any particular work environment. There is a variety of them out there. I, for instance, have never had to work in conditions anywhere near close to what you are describing for this course. -- MartinShobe?

I'm talking about the challenge of applying abstract theory to the real world, not a particular environment. The exercise takes place in a simulated 'worst environment' with the goal being if you can design/refactor well in that environment, you are able to apply abstract clean theory to real-world practice. Reminds me of a quote:

If your goal is to teach how to apply abstract theory in the real world, why not require internships? Some education degrees require this, as does the medical profession. In addition, I'm not convinced (not that convincing me would have much effect one way or another) that a "Programming In Hell" course is good use of the colleges resources.


CategoryEducation


EditText of this page (last edited December 15, 2010) or FindPage with title or text search