Saturday 24 January 2009

I Do It Because I Have To Keep Up

Have you ever seen that episodes of scrubs where Dick van Dyke plays Dr Townshend? No? Well it tells the story of an ageing doctor who's using out of date medical practices and gets called on it. You know what, I'll let the story be told as it was intended...

Dr. Kelso: I'm sorry, buddy. Say, listen, uh...nowadays it has become kind of hospital protocol to do modified Seldinger in a case like this. You _do_ know how to do one of those, don't you?

Dr. Townshend: 'Course!

Dr. Kelso: Good. Because the patient in bed number 2 needs one. You mind doing it for me?

Dr. Townshend: What the hell's this all about?

Dr. Kelso: Nothing! I was, uh, just looking over your files and, um...well...your osteoporotic patients aren't on Bisphosphonate; your diabetics aren't on ACE inhibitors. Doug, a lot of your treatments are pretty out of date.

Dr. Townshend: Come on, Bob, I'm--guys like us, we're set in our ways.

Dr. Kelso: Well, this is not an age thing, Doug. Hell, these days if you've been out of med school five years, half of what you learned is obsolete. Why do you think I spend every other weekend at a seminar in some two-star hotel ballroom that still stinks of last night's prom vomit? I do it because I have to keep up.

Dr. Townshend: Also, it gives you two days away from the missus, right? [laughs] Once again, I am sorry I was the one who introduced you in the first place!

Dr. Kelso's expressions remains serious.

Dr. Townshend: Look, Bob, I just...I don't have the energy for all that stuff.

Dr. Kelso: Well...then we got a problem

What's this got to do with software development? Let's pretend the above exchange was 2 developers chatting....

Alice: I'm sorry, buddy. Say, listen, uh...nowadays it has become kind of standard practise to use dependency injection in a case like this. You _do_ know how to do that, don't you?

Bob: 'Course!

Alice: Good. Because the code in the accounting module needs it. You mind doing it for me?

Bob: What the hell's this all about?

Alice: Nothing! I was, uh, just looking over your source files and, um...well...your database code is open to SQL injection attacks; your classes are large and in-cohesive. Bob, a lot of your techniques are pretty out of date.

Bob: Come on, Alice, I'm--developers like us, we're set in our ways.

Alice: Well, this is not an age thing, Bob. Hell, these days if you've been out of uni five years, half of what you learned is obsolete. Why do you think I spend every other weekend at a seminar in some two-star hotel ballroom that still stinks of last night's prom vomit? I do it because I have to keep up.

Bob: Also, it gives you two days away from the husband, right? [laughs] Once again, I am sorry I was the one who introduced you in the first place!

Alice's expressions remains serious.

Bob: Look, Alice, I just...I don't have the energy for all that stuff.

Alice: Well...then we got a problem

Doctor's have to constantly keep up with the latest techniques and practices as do accountants, lawyers, engineers, and countless other professionals. Software permeates every facet of modern life, so why do we get away with it?

Ask yourself this, if you had to pass an exam set by a professional body, would you be able to do it without reading alot of books first? Off the top of your head Can you explain what the Single Responsibility Principle is and why it's important? Liskov Substitution Principle? The Law of Demeter? Dependency Injection? How about why Singletons are evil? Can you give me 5 benefits of unit testing or what effects test-driven development have on software design?


Perhaps you're fresh out of university with a CS degree under your belt and you think you know everything. Maybe you've been in the industry 20 years and realise you know nothing; have you ever asked yourself how much you really know about programming?

Virtually nothing that I'm going to tell you is original, but then again unless you're at the bleeding edge, not a lot is these days. What I'm going to do is distil some of the information and techniques I've learned in 10 years of being a professional software developer. You might disagree with some, or a lot, of what I have to say and that's great, I'd love to hear what you have to say, perhaps we can learn something from each other.

2 comments:

  1. I'm an EE student who has no idea of the pure SE concepts you mentioned. Can you recommend a primer for them?

    ReplyDelete
  2. This comment has been removed by the author.

    ReplyDelete