No code this time!
Lately I've had to deal with some optimization problems. Mostly related to large DB, and some from the communication areas. The first thing that comes to mind when you get a problem of those types is: "Use design pattern". Welp, NO-GO!
Apparently design patterns are great for the computer science department, but when it comes to real life there are always limitations which renders the design pattern useless.
The one I encounter most is compatibility. Either to an old component written in Delphi/VB6/VC that has no source code available, yet it's used company wide. Once there's no budget to replace it, than there's no time and the best is "will remove it in the next version". Yeah right, I'm in the field more than 10 years, I have never (and mark it in whatever way you'd like) seen an old component being thrown without intervention from a regulator.
Leaving a "TO -DO:" line in the code means "maybe in a decade or two somebody would be bored enough to do that". I know I did leave a few of those comments on some pieces of software due to deadlines set by an un-interested client.
It appears as if a programmer's alert about a future problem can go unnoticed for as long as the software doesn't blow. When it does blow, a must happen unless the business is going bankrupt, the usual treatment is "patch it here" and "give extra whatever" to the server.
Unfortunately all of the above treatments are "snake oils". It reminds me of an old UNIX joke: "What does a sysadmin do when the CPU reaches 100% load? Adds monitoring service that sends mails to the abusers..."
Don't get me wrong, I still love programming. I'm supposed to call myself "Software Engineer", I hate the term! As a programmer I do more than simply engineer it, I design it, I code it and for most of the day I debug it.
A software engineer means there's a software architect which does the designing. So far I've seen a few "design by architect" projects. None could be shipped to a client, all of them were perfectly sensible from a programming point of view. It appears that a "programmer" means you can talk to the client, engineer mustn't, and architect usually thinks the client is his own personal toilet and pisses on it (sorry for the language, being politically-correct is not on top of my list).
That's it for now, next, another debugging session with a bunch of "nice" bugs lurking around the code and showing their tentacles from time to time just when you think they're gone for good.
Sunday, October 31, 2010
Subscribe to:
Posts (Atom)