Wednesday, October 3, 2007

I'm Not Self-Taught Any More

For many years, being a programmer with no degree was a point of pride for me. But I've realized, the way programmer education works is totally backwards.

Think about it - what's really more valuable: a degree ten years ago, or training in the latest and greatest last week? There are a few great schools where they make you write compilers, learn Lisp, build robots, and actually learn lambda calculus as math before you ever see a Python or Ruby lambda. But those schools are few and far between. Assume a normal degree, and you've got something of limited value, which value very rapidly decreases. Conference attendance is a lot more valuable than a degree.

By this standard, the tech industry actually undervalues education, except in the most junior and most senior programmers. Education can matter for compiler geniuses with multiple PhDs and fresh-out-the-gate MIT graduates, but for everybody else, it's totally inessential compared to recent experience with Popular Language X.

Personally, I've been on an absolute conference binge these last few months, and I recommend it for anyone and everyone in this field of work. It's good to be well-educated. As good as it is to have recent experience with Popular Language X, it's so much better to have insight, perspective, and detailed understanding of what's going on with Popular Language X - and a few other languages as well.

11 comments:

  1. Giles,

    Ah, 18 months ago, and I would have agreed with you whole-heartedly. I'm a programmer without a degree, and I've known plenty of programmers with degrees I wouldn't hire. I'm ashamed to say I was such a jerk, but when I was hiring people, I would count a degree in computer science as a black mark against a candidate.

    Of course I'm about to say I started school 18 months ago. I did. Basically, I had 50 grand staring me in the face, which I could only use for school, and it was going to evaporate in 3 years, so I decided, why not? I had a good friend in grad school, and she was smart, so I knew it couldn't make me dumber, right?

    I had no idea what I was missing. I'm not even going to a good school. I'd call it marginal at best (http://www.umuc.edu - great for distance education, but I know enough to know that some of my classes are not good.) The computer science classes: well, I'm learning a lot. Even though they are very Java-centric, I've learned how to articulate what I love about Ruby, and shown off JRuby to other students and professors. I'm in a survey of programming languages course now, and it's so interesting to talk with students who are also programmers, but program all day in things like Java, Cobol, Ada, and Visual Whatever. It's a massively different world, and one I'll never work in, but there's a lot there to learn. I'm understanding Ruby more through differential analysis.

    And the non-programming classes! Why haven't I read this stuff before? Discrete mathematics was the most fun I've ever had doing anything in my life. Reading philosophy classics changed me deeply in a way I can't explain fully.

    Ok - I guess I might agree with you. Education is wasted on the youth, without the experience to temper their new-found knowledge. This same education at 18 would have made me a crappy programmer. But to discount formal education and prioritize conferences instead; well, I cannot get behind that.

    ReplyDelete
  2. OK, I went to St. John's for a year and studied Ancient Greek, classical literature, philosophy, history, and science, and it was all very very good for my head. Went back to school and studied Latin and acting, did a bunch of art classes and started to get reasonably good, and have been in acting classes all year (in some cases with actual professional actors). And I'm currently taking Douglas Rushkoff's Technologies of Persuasion class online as well. Education is good.

    But my points are really these: first, conferences win when it comes to being up to date; second, you can't call yourself self-educated if you go to as many conferences and workshops as I do; and third, although I used to be all fiercely proud of being self-educated, because of the independence involved, I think ultimately being plugged into the community is more valuable.

    It sounds like you're not self-taught any more either, so we may be more in agreement than not. But I do have to say one thing: I went through my own survey of programming languages without doing it in school, and I doubt I'd find many schools where I could survey as many, as quickly, and with equivalent freedom. Also, at Rails Edge, the majority of people there, including some of the most respected speakers, had either no degree, or a degree in some subject other than computer science.

    Anyway, you don't have to agree, I'm just expanding my point, I've had this horrible flu forever and it's made my articulation a bit fuzzy. I'm not doing the knee-jerk anti-degree thing, per se, I'm saying that even the most independent self-taught hacker genius can learn something from other programmers.

    ReplyDelete
  3. There are very few professions where an college education is important. VLSI design, microbiology and surgery are a few.

    But programming is not one of them.

    People with CS degrees are, with few exceptions, bad programmers.

    A CS degree will not make a good programmer bad... but the people who were not programmers before they went to college are actually worse programmers when they leave.

    Going to college when you have $50k to blow is probably a blast-- you take good classes where you actually learn something and you have the security to reject the BS.

    But that's not the same as a degree.

    A degree program is designed to maximize political correctness and profit for teh university- so you take a lot of BS classes (like socialogy and "poltical science" where they don't actually teach any political science) ....

    The average CS Graduate is worse than useless....

    and what's really pathetic is, rather than starting out right out of high school and getting four years of experience, they go and get four years of indoctrination by people who do not know how to program which takes another four years to beat out of them.

    College CS students are 8 years behind and way in debt compared to people who start programming right out of highschool (and of course if they are real programmers, they started programming on their own in high school, unless they couldn't afford a computer.)

    College is joke. ITs not surprising that the people who wasted all this money then go around an refuse to hire people on ability- instead only hiring people who have proven to be equally stupid with thier money.

    ReplyDelete
  4. Amen, Giles. I'll get a degree when I'm retired and the kids are out of the house. Until then, I'll go to conferences, meet amazingly smart people, and learn from them.

    Which reminds me, you'll be at RubyConf, right? =]

    ReplyDelete
  5. You'd be surprised, though, how often non-geeks ask me if I've thought of getting a Master's one day.

    WTF?

    It's not worth the opportunity cost, never mind the tuition + effort.

    ReplyDelete
  6. I agree with you for the most part. Formal education is over-valued by many employers and the best way to learn programming is a combination of doing and learning from others who are doing. Conferences rock for doing just this and I am looking forward to Ruby Conf.

    That being said, I live in the government space and so will be completing my BS in CS this December. I have not learned how to be a better programmer at school but doors will now be open in the government that were closed.

    ReplyDelete
  7. Hey Jim - yep, I'll be @ RubyConf, and expecting some Werewolf. Although I have to tell you, I was unable to get David Black to play with us. He told me Chad and Marcel had grown so obsessed that you can't socialize with them without playing Werewolf any more. He sounded fatigued.

    @Joe - people ask me things like "where did you go to school for that?" all the time. When I started out, I was doing stuff as new back then as Rails is today. Apache was new, CGI was new. I remember when people were arguing about whether or not the World Wide Web would ever be as big as Compuserve. I don't doubt that you get a lot of good foundation studying discrete math and such, but you can't get that inventing the future vibe in school. It seems to go in cycles, so I think the smart thing is to head back to school between future-inventing spurts (so to speak).

    ReplyDelete
  8. CS degree not worth it?

    Tell that to the quant programmers making 500k a year working at hedge funds.

    granted you have to be pretty good and from a top 10 CS school which falls in line with your post anyways.

    One day I'm day I'm gonna leave all this webbiness behind dust off my R-fu , move to Greenwich and cash in.

    ReplyDelete
  9. @nima - yeah, if you're a great math geek from a great school that really pushes you, that's something. but as far as I can tell a degree in Web Dev is BS.

    also, more to the point of the post, a great math geek who never published or went to conferences to stay up to date wouldn't be that great.

    ReplyDelete
  10. yea well it goes without saying that a person of esteem in ANY community needs to connect to other nodes in his/her community via information exchanges whether they be virtual (blogs, etc.) , or physical (journals , conferences).

    I just wanted to justify my 4 years of servitude to the computer science overlords at a pushy , over demanding school.

    But much like you state in a later blog post about knowing the building blocks of the framework help you run circles around the people who only know the framework much is the same with computer science.

    Things like discrete math , lambda calculus , lexical theory, etc. are the building blocks of all computation.

    ReplyDelete

Note: Only a member of this blog may post a comment.