Style over Substance

I come from a pretty rigourous software background. I've been coding since I was little, but like most people I reaslise that the trade education doesn't really start until you get into a work environment. My first commercial software role was in the defense industry working on some safety critical systems - as you can imagine software architecture, design and process was extremely important to my employers. I then went on to spent nearly 5 years at a big telecoms company who had if anything a more stringent research and design process. Software design for maintainance and robustness was everything, often at the cost of adding new features or polish within the project time line.

Design, Design, Design,

Review, Review, Review,

Some 12 years later I'm still in the environment basically. It's not a bad thing, but even given my years of brainwashing into the software design is everything mentality, I find myself recently swaying way back. I'm not saying I don't throughly think out my code, or design for future extension and maintainance - but I do most of these tasks retrospectively through refactoring (arn't modern tools great?). While I still love clever and elegant software design, I've come to realise that by far the majority of customers and users don't care about it :)

"Functionaly Complete" is a term we use round here alot. That's mostly what users care about from a code perspective. Does the program you've written do what they want it to, or what they need achieve? As long as it does without falling over thats great. In most cases even if there are some odd cases that either don't work or need to be worked around most user will continue using it as long as it "feels right".

After functionality comes how it looks and feels. In games this is especially important but it's true with most all the software I've come across. The user doesn't care whether the code is extremely efficient if it doesn't impact their use. They don't care if you've spent an age getting that object hierachy just right, especially if you've not spent time making it look right :)

What they care about is how easy it is to get their objective complete or to configure whatever they need to for an active system. Without knowing it most users also care how software feels to use. Is it flashy? Does it make intelligent assumptions? Does it impress them? Does it change the way they work/play? Does it make them feel like your software is smart? Perception is everything - you're not going to get to explain to user most of the time what makes it so smart.

Usability, Usability, Usability,

Polish, Polish, Polish,

If the software design is a means to this end, i.e. you're spending your time making the software clever so you don't have to waste time later that you can spend on adding the nice touches - then great. If you're trying to make your software be percieved as smart, through making it smart, it *might* work. Most of the time it won't. If you're spending an age over software design that doesn't give anything other than acadmic beauty then you might want to stop and think who's going to care? If the answer is "I Will!" then you might seriously want to consider what you're trying to achieve - if it's anything but an academic goal and you're probably on the wrong path.

While most of the above should be obvious, it appears it isn't. Like most software engineers, I like software design, it's what I do. The temptation is to put it infront of everything else - even without need.

Extreme Programming, here I come.

Reply

*
*
The content of this field is kept private and will not be shown publicly.

*

  • Lines and paragraphs break automatically.
Verify comment authorship
Captcha Image: you will need to recognize the text in it.
*
Please type in the letters/numbers that are shown in the image above.