Tuesday, February 27, 2007

Forgotten Knowledge

I'm rolling off my current client engagement within the next few days, and as a result, everyone is trying to pick my brain for those last few nuggets of knowledge that they know is squirrelled away.  One person, who happens to be a relatively new programmer, is having to make some changes to an old Visual Basic 6 program that I had nothing to do with.  But, my depth of knowledge is pretty big, so she knew I could help her.

She's trying to solve what used to be a common problem, but one she'd never had to do before.  Identify whether an instance of your application is already running, and if it is, send a message to it before you close yourself.  It's a surprisingly common task which Visual Basic 6 is awful at doing.  She started asking around to various people in the company on how to do this, and they started telling her that she needed to use API's (or Appy's as she called them).

I don't fault her one bit for not knowing what to do, but it's lead to more than 3 days of her asking me questions, her investigating things, and then more questions.  What's SendMessage?  CopyData?  What's a WndProc and sub classing?  Having grown up in the world of Charles Petzold, and still owning a copy of Programming Windows, I was able to explain all these concepts to her.  She was being exposed to internals of Windows that Visual Basic 6 and .NET have gone to great pains to hide from her.

And yet, she's not the only one in the company who doesn't understand these things, but should.  We still occasionally have to make API calls through pInvoke.  People should still know what a handle is, and what a WndProc is.  One person here didn't understand how a bit mask worked.  All those old concepts which I'd taken for granted, even though I rarely used, are slipping away from our programming consciousness.

I suppose it's natural as libraries progressed, and the number of layers between us and the operating system grew, that we'd lose knowledge of these things.  Yet I still find it saddening.  Aren't these things that all programmers should still know about?

#    2:01 PM by Nick | 4 Comments |