A software application should have no unnecessary functions!

Many years ago I learned a very important idea and this idea has stuck with me and benefited me.  The idea is E.B. White’s seventeenth rule in The Elements of Style:

Omit needless words.
Vigorous writing is concise.  A sentence should contain no unnecessary words, a paragraph no unnecessary sentences, for the same reason that a drawing should have no unnecessary lines and a machine no unnecessary parts.

A software application should have no unnecessary functions. Just like writing can be bloated a software application can be bloated too.   The reason software applications have unnecessary functionality is due to the fact the person designing the application did not have a clear understanding of what the person using the software application wanted to do.  Too often it seems like requirements just rain down on the software development team.

The question, “What do you want the software application to do? “ is an incomplete question.   To design a software application well requires the software designer to study how the user does his or her activities.  A software application needs to be designed so it fits naturally into the flow of work or activity.

If the software designer has not studied how a person works and designs the software around the natural work flow, then there is a high probability the software application will be bloated and a lot of unnecessary functionality created.   It would be nice if the rule was expanded and would read as follows.

Omit needless functions
Vigorous writing is concise.  A sentence should contain no unnecessary words, a paragraph no unnecessary sentences, for the same reason that a drawing should have no unnecessary lines, a machine no unnecessary parts and a software application no unnecessary functions.

For more read the free online book www.RebootRethink.Com


The URI to TrackBack this entry is: https://davidlongstreet.wordpress.com/2009/04/16/a-software-application-should-have-no-unnecessary-functions/trackback/

RSS feed for comments on this post.

3 CommentsLeave a comment

  1. This is supposed to be a keystone philosophy in Agile story boarding. However, the movie Amadeus comes to mind…

    Emperor Joseph II: My dear young man, don’t take it too hard. Your work is ingenious. It’s quality work. And there are simply too many notes, that’s all. Just cut a few and it will be perfect.
    Mozart: Which few did you have in mind, Majesty?

    If Joseph were the Business, and Mozart were IT, who is the expert?

    • The idea that software applications should have no unnecessary functions is one of the few things I agree with about Agile. What I disagree with is the approach they take. If Mozart would have applied the Agile method, then he would have sat down and asked Emperor Joseph, “What do you want?” There where other composers of the Emperor’s court the that did just that and tried to please the “client.” Instead, Mozart understood what the market, the consumer of music, wanted.

      Instead of using some client liaison, in this case the Emperor, Mozart took his music directly to the customer. He saw first hand how people responded to his music. He did not rely on the “client” to tell him what he should create. He did not isolate himself behind closed walls because he went and saw first hand what people enjoyed.

      It is worth noting that Mozart followed a structured approach to documentation too and created sheet music. He did not deliver an opera one scene at a time because he delivered it all at once.

      To answer your question, Joseph was the client liaison because he thought he understood what people wanted. He did not want to cause any uprisings with the people. Joseph thought he knew a lot about business like many client liason’s but in the end he did not. History tells us the Joseph thought he knew a lot about music but he was relatively ignorant (but powerful). Mozart was the IT and designer. The customer are all of those who listen and enjoy Mozart’s music.

  2. Well said 🙂

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: