August 06, 2005 19:30
Programming
I didn't really like University all that much. There were too many lectures based around a curriculum started in the 1960s, and never really updated since then. I still remember the database schema lectures we had which had to be written in the appropriate database set algebra -- completely pointless for undergrads.

So I'm surprised how much I'm going back to university material for information. Part of it is that some of the ideas I'm interested in (automated code review, design by contract, empirical software engineering) are really only covered there. There's relatively few people who are actually interested in covering this stuff, and they're not good at hype or pushing their message out to people in the field.

They know this. I kept hearing David Parnas's name in reference to information hiding, a concept over thirty years old. But he's been around consistently. I bought a book of his essays (Software Fundamentals) and was astonished at his range. He's been around for years. He's been talking on the need for spreading concrete software engineering knowledge for at least two decades, but doing it inside an academic framework. It's not that engineers don't have a good idea of who Parnas is... but the only knowledge they have is from their undergrad CS days, and no-one ever updates them on it. I'm not opposed to Joel Spolsky, but isn't it backwards to have him more well known than Parnas or Basili?

I think part of the problem is that academia assumes that they are listened to and followed in the field. That stops the minute people leave academia, and it's very rare that people ever go back to update their knowledge. Most people rely on their peers for tips and tricks, which is where the whole blogosphere thing comes in.

Academia has one thing going over blogs though. Compared to blogs, they have a very high signal to noise ratio. It is very rare that you will read a bad academic paper; at worst it will be redundant, and at best it provides top quality information with almost no hype or dogma. For example, read The Inevitable Pain of Software Development. Every single word he has written is obviously based on years of experience.

Even better is watching the lectures. The University of Washington makes its lectures available online, and they have several years of lectures given by good, solid people.

For example, watch Computer Science: Still Crazy After All These Years. This is a colloquia that goes over the next five years of computer science, and who is working on what, and it's fascinating. Make sure you watch to the 38 minute mark, as he drops some extraordinary statistics on undergraduate majors. (They also have hardcore stuff on guessing how to fix bugs and automated software testing.)

But they also have good lectures by people in the industry. Want to know what Google is doing? Watch Google: A behind the scenes look and Eric Schmidt's perspective on IT.

Want to know what Amazon is doing? Watch a lecture from Jeff Bezos on their plans and their data.

Like Steve McConnell's books? Watch his interview. In fact, they have a whole series on IT leaders.

I love reading this stuff, because it provides a larger context of what happens outside of my immediate work on one programming language. The irony is that this information is provided to people who aren't actually working in the field: you get out and start doing real work, and you have to work for your information instead of getting it coming to you.

« Simple Heuristics That Make Us Smart | Home | Flex »

name
url