Jeff Atwood wrote a great post today. (Scott Hansleman jumped on as well.)

The best part of the post is this:

The value of education isn’t in the specific material you learn– it’s in learning how to learn.

At my job I get a chance to interview new recruits who apply to be on our development team (along with a bunch of other people including my boss and coworkers; it’s a real team effort when someone applies for a job here). I put a lot of emphasis on certain things. One of the things I tend to make a big deal out of is a college education. I think sometimes my focus on the degree irks other people involved with the interview process…

It’s not that I don’t think a programmer/developer can’t hone the necessary skills or acquire the necessary knowledge without a degree; I think they can and I know people who have done it. But college is a gauntlet; it’s a serious trial and people who successfully navigate it acquire a few things that non-graduates don’t seem to acquire with the same regularity.

There’s a mental toughness that develops from going to college; an ability to work under really stressful conditions; an ability to see things through to completion. And like Jeff says: they learn how to learn.

I was in the military before college and that experience molded me quite a bit. When I got to college I saw the same sorts of conditions producing the same sorts of results: mental toughness, an ability to see things through to completion, an ability to work under pressure.

I guess you could put this down under the category of character. When someone applies for a job with a college degree in C.S. I know what they’ve been through and what they’ve had to endure to get that piece of paper. It’s not easy getting a degree in an engineering discipline, and that means something. It doesn’t mean everything, of course. There are still people with degrees who have other character flaws that prevent them from fitting in, and there are still people without degrees who have become great developers. But by and larger a degree seems to continue to be a good indicator of the makeup of the person.

To the rest of this…

Things I Learned about Software in College

  • Writing buggy software is really easy. (I immediately started giving a break to game developers who released patches for their games, or MMOG’s that had weekly patch updates.)
  • Languages are nothing more than tools in a toolbox.
  • Code changes so fast that documentation is almost irrelevant. Comment the “why”.

Things I Learned about Software While Not in College

  • Simpler is better. Always.
  • Some things don’t work as simply as you think they should. See Databinding.
  • Automated Unit Testing beats the hell out of last-second beta testing.
  • Agile beats the hell out of Waterfall.
  • Good design principles make refactoring possible.
  • Refactoring makes better code possible.
  • This line of work is more fun than I thought it would be.

One Comment

  1. Scott Hanselman says:

    Thanks! (It’s HanSELman, not Hansleman…) ;)