torstai 7. toukokuuta 2009

Debugging ain't rocket science, they say...

Well, apparently, sometimes it is. On other times, it just feels like that.

Many software developers are - for the most of their time - tasked with debugging their software; just in order to make it absolutely impossible for the program to make mistakes that could (in the worst case, for example in case of the above linked lunar module example) cost lives... or - lead "the people in charge" to wrong conclusions.

Why am I blogging about this? Well, perhaps it's easier to tell what it is that I "do" for living... I am a software developer; if I had any family, after work I'd go home and my children might ask me "daddy, what you do today?"... to which I couldn't do anything but simply answer that "I performed my duties as a software developer" - and leave it at that. Anyway, for the past 10+ years, I've worked on a project that supposedly is used to follow who works on a company and does exactly what. Furthermore, the system is designed to keep track of what the said workforce actually can do - and what it is supposed to do.

Even though it is not designed for this, I do know - without a shadow of a doubt - that the system I've designed is sometimes used to "create the unemployed". Granted, the software is not designed with that goal; instead, it is meant to measure what each and every worker within a company should be capable of - and what they indeed are capable of. Unfortunately, these days it very often means that the workers that aren't capable of what is expected from them... are "let go". They are the ones who should be able to do a given thing, but - for one reason or another - arent't capable of doing it.

So... why would I be interested in this? Well, to put it in simple terms - because I think it's necessary. I personally would feel like shit if I learned that someone - even one person - were to be "gotten the boot" because of a program I made told his/her supervisor that s/he ain't fit for the job.

How does this influence my work? For one thing, I want to make it absolutely certain that whatever I code meets the criteria set for it - at least. Also, I want to be able to understand what is actually expected of the code. This helps me point it out for the people who are in charge of determining what it is that is being designed when something it is supposed to do is illegal, or - to a lesser effect - not something it should be able to tell about people. Even though everyone says they want to know everything... honestly - they don't. They want to know what they need to know - and that is usually very far from "everything".

Anyway - to get back to the subject... sometimes debugging software honestly does seem like rocket science. When you work with a given software for a number of years, it tends to "bloat". New features are (often) added, old features are (more often than not) redesigned to work differently. Sometimes, due to all these new things and possibly some old things not working like they've originally been designed... or some old things not working as originally designed because of the new things - well... things just tend to break up. Something that was designed for one thing gets used for entirely different thing. Something that was never supposed to be used at all is brought in as an indispensable new feature. When all these redesigns occur, it is possible that something that (at the time it was designed) was very much something users couldn't live without - becomes the source of multiple problems. A piece of code - that originally did a very distinct work - now does many things... and some of those things manage to mess things other pieces of code are supposed to handle...

Those are the days that make software developers very sad. Unfortunately - all they do is code based on what is needed. When they see their "child" becoming corrupted... what can they do - but weep... and hope for a better tomorrow. And do their bloody best to keep the thing they originally lovingly brought into being from becoming a monster. Well... I think that is something every parent might face at one point or another.

Ei kommentteja:

Lähetä kommentti