Sunday 5 December 2010

Reflections on being a designer or engineer

I recently gave notice to my employer, and it reminded me of one thing I hope for... to not be cursed by the people who inherit my work. Too often I have inherited other people's work and suffered for it, so I hope I don't inflict such pain on others!

Many people designing or engineering things concentrate on innovation, unfortunately often to the exclusion of everything else, in particular to how easy the thing will be to build, test, install or maintain.

Software engineering is, IMNSVHO, particularly guilty of this. Developers hate fixing bad code written by other people, and they automatically (with some justification I have to say) approach any task where they have to pick up someone else's code as requiring a total rewrite. I say this is often justified because the reason the code needs their attention is because there's a problem with it - good code will be packaged neatly with documentation and can simply be used without too much
effort! One problem is when lots of different people have been involved and so you get a patchwork effect, each person having their own ways of doing things.

Having highlighted how it is a problem with software, the pattern is repeated when you refurbish old buildings -  the plumbing and wiring and frequently poor and chaotic having had different people working on parts of the system often with little visible of what else has been done. My father often talked about buildings where to get to water tanks and pipework they had to climb through very small hatches and it would be practically very difficult to get replacement parts into place.

Many people with cars will be aware of the problem that a small component that should be trivial to repair/replace requires significant disassembly before said item can be reached - one infamous example is where to replace a car's headlamp bulb you need to jack the car up and remove a wheel!

One of the various jobs roles I've had is as a systems administrator, which requires installing software and tweaking its configuration to suit the specific requirements, which usually entails integrating several packages to work with each other. After a while in this job you tend to get to quickly recognise software which will be a major headache, due to poor documentation, poor or wrong or absent error logging, or plain old buggyness.

I'd therefore appeal to people who design things, whether architects, software engineers or builders to please please PLEASE consider the poor schmuck who will inherit their work to give a decent amount of thought to testing and maintenance. One day someone will thank you for it, even if they don't ever get a chance to thank you in person! And when you do come across a situation where you inherit someone's work and it's not a nightmare to refactor, repair, test and maintain, do thank them if you get a chance!

No comments:

Post a Comment