YAGNI: Answers to some common objections to dropping out

As a follow-up to this post, here are some common objections to the argument that a young software developer is better off dropping out. (For the uninitiated, YAGNI is short for You Aren’t Gonna Need It. It is one of the core principles of the eXtreme Programming methodology)

First, some numbers: $28,080 (or the price of a brand-new top-of-the-line Prius) is the average four-year tuition at a state school as of 2010. $105,092 (or the price of owning a starter home free and clear) is the average cost of tuition at a private university. Let’s split the difference and say $67,000 is the monetary cost of a four-year degree.

EDIT: One commenter objects to the use of the median number $67,700 in this article. If you have the same problem, I invite you to replace every instance of “$67,000″ with either of the numbers cited above, or simply with the phrase “a metric fuckload of moolah”. My arguments stand regardless of which figure you use.
Now, on to the objections.

Most people won’t get the educational equivalent of four years of concentrated focus on algorithms, OO design, performance analysis, compiler design, etc. while on the job.

There are a few fallacies going into this argument.

First, I’ve spoken to dozens of developers about their college educations, and the universal consensus has been that once in the working world, they only used a fraction of what they learned in college – and then needed to learn many more things that hadn’t been on the curriculum. Let’s be charitable and say that you’ll use 10% of what you learned in school on the job. 10% of four years, that’s, let’s see, 21 weeks worth of schooling.

So what we’re really asking is whether it’s possible to get the equivalent of five months of higher education on the job. It starts to seem a little more reasonable, doesn’t it?

Second is a fallacy that I run into constantly in education discussions. It’s the idea that the time it takes to learn a new skill is constant, regardless of context. It’s exemplified by the argument “that took me six months to learn when I was in school, so if you haven’t spent six months on it, you haven’t really learned it”.

But this simply isn’t true. Graduates can (and do) come out of school with a still-hazy understanding of how Object-Oriented design applies to real-world problems. But give them three months with a team of more experienced developers writing software to manage a nationwide logistics system, and they’ll know the subject backwards and forwards. You can learn more in a week of watching an expert engineer dissect and address a problem than you can in a whole semester of lecture and canned exercises.

Finally, the implication with this objection is that while it may be possible to get educated on the job, most developers simply won’t avail themselves of the opportunity and will remain at a disorganized code-monkey state of ability.

My answer to this is simple: such developers probably wouldn’t have integrated more knowledge if they had finished a four-year program, and they don’t belong on my team or any team that wants to ship quality software. Period.

Ask any senior developer what they look for in a job candidate, and I guarantee that one of their top three attributes will be “a fast learner”. The nature of this industry is that if you want to stay on the cutting edge, you have to effectively re-learn everything you know every five years. If you can’t or won’t learn the ropes on your own initiative, chances are you’re not going to keep up when the game changes in five years. Better to get out of the game now.

Maybe you can learn most skills on the job, but what about the fundamentals of computing? A great professor can give you a solid foundation that you might miss in haphazard just-in-time learning.

The one course that I’ve seen consistently remembered as a important or even life-changing by CS grads is the introductory course based on Structure and Interpretation of Computer Programs, aka the Wizard Book. As it happens, both the book and video of the lectures by the authors are available online for free, along with much of MIT’s other courseware. Problem solved.

Which reminds me, I really need to pick up watching those videos again…

Even if it doesn’t do much for your career, college is a unique experience which grows your perspectives and knowledge of yourself.

There are any number of things you could choose to do upon graduating high school. Here are a few ideas:

  • Join the Peace Corp, and do humanitarian work overseas.
  • Hitchhike around the country, couch-surfing and busking on street corners with a guitar and a harmonica.
  • Take a job on a farm. Sling hay bales, deliver calves, and go line-dancing on the weekends.
  • Backpack across Europe.
  • Go to college.

Any of these choices will expand your horizons, introduce you to new people, and teach you more about yourself. Only one of them will cost you $67,000.

The notion that college is a way to broaden your perspective early in life is absolutely true. The idea that it’s the only way is silly. It’s certainly not the cheapest way.

College is an important social experience.

We’re a little off-track now, since the question at hand is whether college is a worthwhile preparation for a programming career, not whether it will get you laid. But it’s true that this is my biggest regret in not going to a four-year school. I’m frankly envious of the college social experiences a lot of my peers had while I was working.

But if you’re making this argument, it behooves you to at least be honest about it: you’re telling a student to spend $67,000 over four years in order to socialize. Is it worth it?

Conclusion

What I hope you take away from these articles is that the decision to go to college, like any other major life decision, should be subject to a cost/benefit analysis. I’ve done the math for my particular industry, and found the argument for getting a degree wanting. On the benefit side you have a marginal amount of work preparedness, all of which could be gathered in other ways; and an increasingly irrelevant piece of paper. On the cost side you have tens of thousands either in out-of-pocket cost or student loan debt, plus four years time, salary, networking, and vital hands-on experience lost. It just doesn’t add up.