Friday 6 February 2009

Back to my roots

I like my job. The reason? I get to wear many different hats by which I mean I get to exercise lots of different skills. This afternoon I have had a lot of fun getting back into my C programming. That's something that I hadn't done in a while and I was pleased to know most of it came back.

I have mostly finished a piece of glue software to import call detail records from our PABX into our database for billing. I have previously written it in C++ but wanted to whip something up very simple for testing and so in an afternoon (or two) I 've managed to get it working so that it can suck in files like the ones the PABX will spit out.

Of course that's only half the job, the next part is the data manipulation which will be tricky. Deciding who made a call is complicated and will most likely be a manual process. Deciding what room a call came from is easier. Putting that information together we can work out who we should bill for a call.

I believe it's still useful for programmers these days to have some old world skills like C. Yes C lets you make mistakes but how on earth do you learn to program without making some mistakes? When a language takes care of everything for you and hides all the details then you loose the perspective that you gain from understanding these things. Garbage collection is nice but it's good to understand why it's there and how it's a comprimise. Similarly pointers are ugly at times but they are very powerful. Sure you can abstract them out in C++ whilst retaining most of the power but real power must be dangerous and the pointers in C certainly are.

If you've only ever programmed in java or C# then you haven't really programmed. Sure logically thinking the problem through and breaking it down itno smaller problems is a useful skill but where's the debug skills in that? How do you learn what not to do and what is a bad way of getting a result if you don't break things in the process?

Oh well, I guess I'm still old school to boot.