Friday, May 19, 2006

Something in the Air?

Why are so many software engineers socially retarded, and completely stuck on themselves? I think I have read one too many supposedly technical blog articles this week that are all about software engineers griping about how their bosses don’t understand them, how their business owners couldn’t possibly create a reasonable set of specifications for their project, how their peers are all inferior to their amazing super-ninja code skills, how if you don’t program using x style y method or with z tool, you are a “bad” engineer. Seriously, do all professionals try to eat their own, along with those that give them their jobs?

This isn’t to say that I haven’t done my share of complaining here on this very blog (and that this post isn’t a complaint its self), but it is me asking why everyone has been so negative this week. Maybe there was something in the water, or everyone is particularly stressed out, or the caffeine in their beverage of choice wasn’t strong enough. Whatever it was, the attitude doesn’t seem to be helping anyone. I think this attitude may be one of the results that stems out of software’s unique position in the field of science and engineering.

Being a code ninja is quite the head trip, and there is quite a disparity between software engineers of different backgrounds, but you would think that in a market where the competition is fierce, and there is considerable pressure to bring products to the table quickly and efficiently; more time would be spent toward elevating and motivating the team than complaining about what doesn’t work.

With my experience on a team building several large projects at once (from the QA perspective), it seems to me that there isn’t a silver bullet for project management, team motivation, development processes. A good team will communicate openly, help each other, and work for the good of the whole; usually picking a mix of various styles and methods that seems to work for them in a very organic way.

Yes, computers are exact, as are the laws of logic. It’s a good thing, and something that makes them understandable and programmable. However, in the real world, there isn’t always an on or a off. Programmers are the people who get to figure out how to take the gray, and figure out how to translate gray from black and white. Sometimes they get so stuck in their black and white world that they forget what it is like to see color, or to have a healthy dose of ambiguity in their lives.

To the developer ambiguity is just evil, it makes things harder, and requires creativity and thought to express it in the black and white world. Perhaps this is why developers want the world to conform to their list of “practices”, and why if a person can’t conceive something the way that they do, said person is “inferior” or a “bad programmer”.

The argument can certainly be seen from both sides. Best practices bring software engineering more into line with the traditional engineering disciplines, which is something many of the greatest minds in computer science argue is needed. Formality and rigor allow for definitive proof about a system, and it would be really nice to be able to prove that a system worked before you ever wrote code for it right? From this perspective the rules have a firm foundation.

Which brings me back to the question of attitude with regard to software engineers and the way that they interact with the world. Are engineers in other disciplines as quick to eat their own? Do they argue with the people who have the deep pockets that write their paychecks? Do these other disciplines talk about graduating bad “material scientists”? I would be interested to find out.

In the mean time, I may give my RSS reader a bit of rest because though there is a lot of great information out there, the reading this week is causing me to loose faith in my colleagues. There is a place for “this is dumb and here’s why” (this post is one of them), but maybe if we worked harder to help each other rather than saying “you’re a bad programmer if…” the engineering world might take the software folks more seriously.

1 comment:

GK said...

Ala I have seen the same type attitudes in the car business with the mechanics. Anything that requires human interaction is usally a pain in the ass as far as most techs are concerned. I think thats why they were drawn towards work on mechnical things (black white)or its a occupational hazard of not getting enough time interacting with other people with different backgrounds (color). I know when I spend a ton of time playing puter games and working on puter at work for days on end, I see my people skills go awry along with my personnel serinity. Balance is the only way to maintain a healthy outlook on internaly and externaly. As a guy who has lived a few 24's, I see that life is about the same most of the time, and we all will go thru it one way or another. The only thing that really changes is my perceptions and understanding of lifes events. Another words I change. The biggest problem I see for alot of us is that our people's knowledge has expanded faster than spirtual awareness. When your young and in a career that is new to the world there is going to be some growing pains. When your young you want to change the world, competition is keen and external things drive you. As the years go by you become more internally driven and spirtual awareness becomes a more of a guiding force, rather than pure knowledge. That is my take on "something in the air" for now. It is subject to change at anytime!