So I was out some weeks…I had a funny little infection caused by a mosquito bite (not byte) that’s recently popular here in Guadalajara, Mexico. It’s supposed to stay in tropical weather, but for some reason it decided to come to the city, it also decided to get me.
I had to just rest (and work from home, though I mainly slept through it all) for a couple of weeks and it got me thinking about infections in the work place. I don’t mean catching a flu from the coworker next to you but catching a bad programming habit from the repository closest to you.
Bad programming is in inevitably the software industry and it won’t leave I see two reasons for this:
- Maturity of the industry: software as a whole is a relatively new discipline, we haven’t even done it for 100 years. We have been doctors, chemists or civil engineers for thousands of years, but not programmers. Not enough mistakes have been made (mistakes are the best way to learn), not enough experience has been developed, so processes are not in the mind-set of all the software developing community. Civil engineers know exactly what to do to get a bridge to stand, and even after thousands of years of building bridges, mistakes are still made (those of us who are electronic engineers heard the story of the Tacoma Narrows bridge in college as a means of teaching us the effects of resonance in circuits).
- Bad programmers: everything else, falls under this category. It can be laziness or lack of knowledge, but there are bad programmers out there same as there are bad civil engineers out there.
Both of these conditions are severely infectious. The lack of maturity of the industry leads to development houses that don’t do what it takes to put out good products. This infection not only has an effect on the company, but also on individuals: engineers (particularly freshouts) will learns these bad practices and take them to other companies. Sad thing about it is that they probably don’t know any better, just because I can do infinite loops that wait for conditions to happen or I can put functions wherever I want, doesn’t mean I should. Code should be well structured, well designed, well thought of; you wouldn’t let someone build your house if you don’t see the blueprints first, that should be the same in software. But they don’t know any better, our colleges are evolving and adapting, and I do hope these infections are eventually done for. I have surely seen I change in my school. When I studied there, I had no software engineering training, it is arguable that I studied electronics engineering and not computer science, but I wouldn’t agree with that position, anybody who gets to program should get trained in best practices, and they should have passionate teachers who understand and will teach this as best as they can. In recent years I’ve had the chance to work with current students from my school, as well as interns in my office and I’ve seen how schools have evolved in this and new engineers are grasping the concepts much better. Me? I had to downward spiral through the path of a thousand errors and head bumps before I started to get it…but that’s just me.
Now bad programmers, those are just infections that every discipline has, I guess there’s no right way the get rid of these except to have managers and technical leaders that are capable to spot these and do something about them (train them, enforce better practices, fire them…though I hope the solution wouldn’t be this last one but something more constructive).
There are also other types of infections in the workplace, gossip and such…but I’ll leave that for another post.