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


What’s your major?

The most common opening line at a bar near a college campus is, “So.. what’s your major?”  To be honest the answer does not really matter because the question is designed to start a conversation.    The same is true when I ask, “Where does software development belong?” because the point of the question is to stimulate some conversation.   Does software development or computer science warrant its own department or division like physics, economics or accounting?

You are probably thinking stop asking questions and give me some answers.  It is not clear at all where the discipline software development or computer science belongs.   There are some that argue software development is branch engineering and degrees related to software development need to be conferred by the department of engineering.  Others maintain it is a management science and should be part of the college of business.  Still others think that software development is a natural branch of industrial design.   One thing has become clear there is no consistent coursework for those getting degrees in software development or computer science.  Software development is an industry that struggles defining terms like software life-cycle or software methodology.  It is common that new software methodologies pop up like Agile or RAD (rapid application development).  These methodologies go as fast as they came.

I believe software development belongs in Industrial Design.  The professional organization Industrial Design Society of America (IDSA) defines industrial design (ID) “is the professional service of creating and developing concepts and specifications that optimize the function, value and appearance of products and systems for the mutual benefit of both user and manufacturer.” If we change the last sentence to read … for the mutual benefit of both user and developer, then we have a good definition for software development.  Where the field of industrial design differs from software development is ID places an emphasis on those factors that relate most directly to human characteristics, needs and interests.  The field of ID teaches how to study customers using techniques like ethnology.

A bit of history
In the early 1960’s universities decided they needed a new department called Computer Science (CS).  These new CS department would be equivalent to the existing departments like Physics, Mathematics, Engineering, Economics and Business.    Graduate schools appeared first and nearly all those getting PhD’s were mathematicians.

One of the first texts used in computer science courses was An Introduction to Digital Computing published in 1963.  The book describes the method to write code to solve complex mathematical problems like least square analysis, Taylor series and differential analysis.   The new programmers, most of them mathematicians, used computers to solve really hard math problems.  Before the arrival of computers a small army of graduate students would have to make tedious calculations using a slide rule.  Most of the early computer programs were used to solve complex math problems and the user and programmer were the same person.

Today about half the degrees related to “software development” are earned in the department of engineering and the other half are granted from either arts & sciences department or the school of business.   The course work required for these degrees varies from one department to the next and from one university to the next.   There  is no consistent required course work for a career in software development and this is in sharp contrast to just about any other career.

Where software development really differs from the field of ID,  ID includes a concern for marketing opportunities, sales, servicing products, and economics.  Software developers have basically no education or training on anything relating to marketing, sales, economics, and especially design.   Unfortunately software developers have little desire to learn about marketing or sales either.  To many software developers believe their role is to just write code or just to program.

Study The Customer
The field of Industrial Design includes a significant amount of study of the actual customer and his or her business.   Today most software developers move from industry to industry and have no specialized industry knowledge.  This would be Okay if they understood how to study an industry, a business or a customer, but they don’t.

One of the largest problems facing software development today is gathering or eliciting requirements.   The reason  developers are not skilled at studying the customer environment is because they have not been trained to do so.  In the end most people do not know what they want, so it is wrong to expect a user to provide requirements.

I would recommend that all software developers join the Industrial Designers Society of America (IDSA) – http://www.idsa.org and learn some new tricks from another discipline.

Read more at the free online book Reboot!  Rethinking and Restarting Software Development.  (www.RebootRethink.Com)

How do you write great user manual, you don’t.

A user manual is created to provide step-by-step instructions on how to use a product. The product can be a lawn mower, iphone or a software application. Software applications that are designed well do not require any user manual. Instead the software application is designed to be intuitive.

To design something that is intuitive requires a great understanding of how the product fits into the natural flow of things. This means the person or group of people that will use the software application have to be studied.  Too many software applications require the user to adapt instead of developing a software application to the user’s natural environment.

It does not matter if we are talking about people or gorillas. It is best to study people in their natural habitat instead of dragging them into a conference room and asking, “What do you want?” It is always best to go to the jungle and study your customer.  Ethnological analysis, going to the jungle, is alien in software development.  Most software developers have little or no contact with an actual user.

If you don’t understand how a person does his or her daily tasks or the natural workflow, then you can’t design software applications that are intuitive. Let me guess – you don’t have time to go to the jungle because you are busy writing user manuals and other documentation.

When you are good at coding everything becomes a programming problem

Everyone has heard the adage if the only tool you have is a hammer every problem becomes a nail.  The actual quote is from Abraham Maslow and he said, “He that is good with a hammer tends to think everything is a nail.”

This is especially true with software developers.  There is a tendency to start programming because developers are good at programming.   To often the only tools that developers use to express his or her idea is the actual code or something he or she created in a Word document.  

Those developers that have tools in their creative box like Photoshop, Illustrator, or Indesign or some other design tool create creative and informative design documents.   They do not use code to develop designs.

Most software developers have never had a course in design, graphic arts, drawing, illustration or composition. I am writing about design courses offered by the industrial design department or the art department not courses offered by the computer science department.

The bottom line is that developers need to increase the number of tools in their toolbox; otherwise, every solution becomes writing code.  They need to seek out books on design, videos and even courses offered by the industrial design and art departments.  Otherwise they never see the world beyond code.  Every problem becomes a programming problem because he that is good at coding tends to think everything can be solved by programming.

Published in: on February 9, 2009 at 18:08  Comments (1)  
Tags: , ,