I was reading this post on starting a new software project this morning and basically nodding along with everything the writer said (with an emphatic nod at point #1), until I hit this part at the bottom:
Do not hire people without [a] Computer Science education.
So, back to the question in the title, do you really need a CS degree to be a good developer? I obviously hope not, since my education and early career background is Mechanical Engineering. I’m admittedly weak in terms of some low level concepts, but I’ve never felt that I wasn’t as effective as the CS grads I’ve worked with. I’m certainly not Jeffrey Richter or Raymond Chen, but I do know how to build maintainable code. I certainly have no business writing compilers or embedded processor code. But in the world of business applications where most of us live, my engineering background is actually an advantage because engineering in practice is largely an exercise in modeling the real world in abstractions. I’d even go farther to say that I’ve never observed a general trend of the Computer Science graduates I’ve worked with being any stronger than the rest of us. <RANT>Actually, the irritating thing for me is working with code written by a CS major that obsesses over low level garbage collection and CLR mechanics while writing unmaintainable code with a stratospheric Cyclomatic Complexity number without any unit tests.</RANT>
Just off of the top of my head, many of the strongest, most effective developers I’ve worked with have had degrees in:
- Music (surprisingly common, but it’s understandable)
- Engineering of all types. Engineering is dull with a capital D. Lots of us wander into writing code if given half a chance.
- English (!)
- Theoretical Mathematics
Of course, the common trait of *all* the strong developers I’ve worked with is a passion and enthusiasm for software development. I’m not discounting the CS major, and certainly not the knowledge behind it, but I’d worry a lot more about enthusiasm, passion, discipline, collaboration skills, and even raw intelligence first.
And don’t even get me started about certifications…