Theory matters after all...

Published 8 August 7 4:53 AM | William

There are many discussions developers have with each other that always make for interesting discussions.  One of the best ones is "How much does a Computer Science degree matter?"  If you argue that it's really important, you'll invariably have your argument countered with anecdotes of 'some idiot who was totally Ivorty Tower" and examples of people who were self taught and complete bad asses. 

I definitely know many many examples of the latter.  I'm pretty skeptical about the former which I'll get to in a minute.  I don't consider myself a bad ass or guru in any sense, but I've had a pretty successful career and been able to excel in every job I've held.  I'm kind of a hybrid though b/c I have taken 30 credit hours of CS even though most of what I know is self taught.  However had I not had the education that I did, I know there's more than a few subjects I would have had a lot more trouble with.  Outside of the formal education, there's a lot of vicarious learning thrust upon you while taking college courses and at least in my case, I'm pretty sure a good bit of my success is attributable directly to my education.  I work/have worked with more than a few folks though who had little or no formal CS education and are far better developers than I am.  Experience and learning are ultimately what matter and at the end of the day, if you learn to create effective classes for instance, it doesn't much matter if you learned to creat them in a class room or at work.  Ultimately, the reason this always makes for such a good discussion is precisely because  there are so many excellent examples to support either side of the argument.

One thing I hear a lot though are people that criticize people that 'think they are still in college', 'all theory' 'too much textbook' or 'ivory tower'.  I have yet to meet or work with someone who's so well educated that they are poor at development. Like most things, I think good theory makes good practice.  What I have come across however is posers who hide behind big words.  In every single case where I've been told someone is 'all theory' and had the opportunity to work with this person, what I've found is that they aren't all theory at all. They are all 'use words and phrases they don't understand to  compensate for their disturbing level of ignorance'.  In most cases, these folks learned just enough to sound like they know what they are talking about (to others that aren't familiar with the theory they claim to espouse).  A few notable examples come to mind, in most cases, I've run into and/or heard from friends about this more times than I care to remember:

Tonight though, I was flipping through Wired and came across an article which proves that without a firm command of theory, you're going to be in over your head in some cases.  Even cooler than the article is the source code they posted with it .  I'm not very familiar with the .jpg file format, but this article really got me thinking.  I mean, I would never have even thought to look for such things.  The code isn't really all that complex, but understanding what it's doing and why is something you aren't just going to figure out on your own.  At least I know I wouldn't.  Not surprising, Neal Krawetz  the guy who performed this analysis has  a Ph.D in Computer Science.  Read the article, look at the source code, hit his web site - seems to me this is true Ivory Tower stuff and it's pretty darned impressive if you ask me.

 

 

Comments

# Jason Haley said on August 8, 2007 9:07 AM:
# Tobin said on August 8, 2007 4:36 PM:

I am one of those "uneducated" people you wrote about. In many ways, I wish that I had received a CS degree at some point (or any degree for that matter).  There are things that I didn't learn in college and wish that I had.  Instead, I forced myself to just read the books that I would have read in college (Patterson/Hennessy, Kernighan/Ritchie, etc, etc). Despite that, I lack knowledge of some aspects of programming that I fear I will never learn now.

College should be, in theory, more than just teaching someone to regurgitate what a book told them.  I don’t feel that everyone needs college to teach them how to think outside the book bindings. Some, however, need a great deal of instruction and that’s where the degree helps.

# Tobin said on August 8, 2007 4:37 PM:

I am one of those "uneducated" people you wrote about. In many ways, I wish that I had received a CS degree at some point (or any degree for that matter).  There are things that I didn't learn in college and wish that I had.  Instead, I forced myself to just read the books that I would have read in college (Patterson/Hennessy, Kernighan/Ritchie, etc, etc). Despite that, I lack knowledge of some aspects of programming that I fear I will never learn now.

College should be, in theory, more than just teaching someone to regurgitate what a book told them.  I don’t feel that everyone needs college to teach them how to think outside the book bindings. Some, however, need a great deal of instruction and that’s where the degree helps.

# William said on August 8, 2007 11:05 PM:

Wuzzzuppp My Brotha.  

Actually, when I hear this argument come up and someone making the case that a CS Degree is a *must* to being a real developer, you are one of the people that immediately comes to mind. Not having a CS degree myself, it's a cheap technique if I say "well what about me" b/c few people would really be putting people on the spot.  But having worked with you, you are as much da man as anyone I've worked with and you certainly don't shy away from Theory.

What I was speaking to though, and I think you know where I'm coming from, is that there are many folks that like stroking their own egos by making things complex.  Typically, if you question them on it, they reply with condescension or hostility.  Other folks will typically know the design may be hosed, but don't want to get into a theoretical battle which they feel they'll lose. This in turn causes them often to criticize the design, not with "he doesn't know what the f~ck he's talking about" as much as "Well, that stuff works great in  a textbook but in the real world, it doesn't work"  The real problem isn't too much theory in the cases I've seen, it's usually either too much ego or not enough knowledge, and in some cases a heaping helping of both.  I mean, have you ever worked on something that really sucked b /c the designer(s) knew OOP, Networking, artchitecture, hardware etc "too well"?  Some stuff is inherently complex like the subject the guy in the article presented on.

It's just that I've seen way too many ego driven nuts who think that people can't be good developers unless ______________ (fill in some sort of criteria like 4 year degree, master's degree, 10 year experience etc).  Generally,  these guidelines have some value but when adhered to blindly, cause people to make dumb decisions.  I've also run into a lot of chip on their shoulders type who either haven't kept up with technology, or are pissed off the world isn't still using VB6 and variant datatypes.  So they trash designs that mean they'll actually have to learn something new as 'too textbook' all the while it's more a matter of 'too much learning I don't want to do.'

There are just too many examples of superb developers who don't have CS degrees.  In our whole crew in greenville and atlanta, other than Burton I don't think any of us had a 4 year cs degree.  On the other hand, we've all had to clean up Access/VB disasters by pure pragmatist types who hated everything that seemed like it came out of a university.  

If you don't have a degree, I think you really need to have a real passion for programming and a good bit of experience to make up for it.  If you do have a degree, you do need to keep in mind that the business world has issues that are impossible to simulate back in school and consequences that will last a lot longer than a report card.  There are too many examples of people on both sides of the equation who are damn good at what they do though for me to ever be able to take a side one way or the tohtter on the argument, it's totally a matter of 'It depends"

# Andy said on August 9, 2007 12:13 AM:

I bet you could use this to pin point the location of any stego in a pic with a little tweaking.

# Henson Benson said on August 12, 2007 10:19 PM:

Few things do add..

There are CS degrees and CS degrees...School one went thru matters.

Also a CS degree, a serious one, teaches you how data structures work, the big O thing, how pointers (yeah, who remembers pointers now:)) work and one understands that todays languages provide lots of layers and wrappers on top of those basic data structures and one should be able to understand how things work under the hood of a language.

But for brainless web development stuff (reading and displaying stuff)...a degreee is not needed.

Search

This Blog

Tags

Community

Archives

News

  • William G Ryan William Ryan Bill Ryan W.G. Ryan Charles Mark Carroll Charles M Carroll
    My Blog Juice Microsoft MVP
    Bill Ryan W.G. Ryan William Ryan
    Cuckooz' MySpace Page View Bill Ryan's profile on LinkedIn
    My Profile on Twitter
    Please note that this is my personal blog and the opinions expressed are my own. Also, comment moderation is about one of the least important things in my life so please keep that in mind. I can't vouch for the authenticity of any of the posters so please don't hold me accountable. And whatever you do, don't pretend to be Noted Option Strict Off expert and AspFriend Charles Mark Carroll when you post. Doing so will lead him to become apoplectic and write absurd accusatory posts about me that are as coherent and thought out as they are factually correct. He does a stellar job proving his reputation is well deserved and he doesn't need any help from you making himself look foolish. If I have to listen to him banging his spoon off of his high chair one more time, I'm going to burst into flames so please don't make that happen!

    My other sites

    Cool Stuff

    Book Stuff

    Security

    ORM

    Data Access

    Funny Stuff

    Compact Framework Stuff

    Web Casts

    My KnowledgeBase Articles

    My MVP Profile

    Design Patterns

    Performance

    Debugging

    Remoting

    My Fellow Authors

    My Books

    LINQ

    Misc

    Speech

    Syndication

    Email Notifications