LJ talked about humilty and arrogance in our profession. After an email that I had responded to in haste last week, I was afraid that I might have been the subject of arrogance, but I was assured that I was not. What sparked the blog entry was overhearing another developer reviewing code and database work on the other side of the cube wall. The phrase "The developer who did this should be shot" and "I wouldn't have done it this way" floated over for all to hear.
Once upon a time, I know that I have said these phrases before. Hopefully, not out loud though. But something along with experience comes maturity and realizing that you never know the conditions under which another developer is working when they are writing their code. To be sure, there are times when you come across something that indicates a knowledge issue on the part of the developer. But, in my job, I have found that I have to make decisions based on external factors.
I once blogged about the "Marco Polo Design Methodolgy." The game of Marco Polo is played in a swimming pool, where the person who is "it" closes their eyes and cries out "Marco." The other kids respond with "Polo." "It" moves in the direction of the sound and repeats the process until he catches another kid. The other kids, however, are free to change their positions at will. I feel that sometimes, as the developer, I am "It" calling out "Marco" and the requirements are the other kids. Sometimes they stay where they are, but many times they just move around to another part of the pool.
Another methodology is the "Larry The Cable Guy Methodoloy." Larry the Cable Guy is a comedian who uses the catch phrase "Get her done." And sometimes, we just have to get our jobs done based on what we know at the time. We have to move forward even when we know things could change. This can result in choices that are functional but maybe less than optimal.
Writing software is hard. The syntax is not difficult, but the art of moving from concept to execution and managing all of the external factors in between is hard. But the client does not care about that. They only care about the end product. Did they get what they thought they were getting and did they get it when they wanted it?