Many people have the ability to cut and paste code from tutorials and forums, its really not that hard to figure out.   What really separates and a terrible program from an excellent one is what’s done before one hits the computer.

Gathering Requirements

One of the most important aspects of creating a high quality computer program is planning.  You will save time, heart ache, and humiliation if you spend time planning your program. The first portion of planning, assuming you already have an idea, is finding out who your target audience is.  Often  your target audience will be yourself which makes it fairly simple to gather requirements, but it can include everyone on the internet, your dad, people that like music, or any number of people.

Once you have discovered your audience you need to find out what they want out of your program. For simplicity lets awesome the program you are working on is a calculator.  It’s fair to assume that your audience would like all the normal functions of an average calculator numbers, addition, subtraction, etc. If your audience for this calculator is extreme nerds, they may provide a set of requirements that involves deep mathematical functions and the ability to have 20 digits of accuracy.  If your audience is the elderly or children, they may provide requirements like a large UI, easy to find buttons, and user help.  All audiences have things in common and they also specific needs, a programmer really can’t please everyone.   If you can gather specific requirement from a specific group than you are well on your way.  There are many techniques for gathering good requirements which I will not go into here, but the first step is realizing you need to do it.


After you have gathered your requirements you will have to decide which ones you want to implement and which ones you don’t.  In business these decisions are often made by deciding how much time, money, and man power you want to expend on each feature and  which feature is more important.  So the most import features go first, but the tier two or three features will often under go cost analysis the ones with lower cost and higher importance will be implemented, the others will not.  There are many metrics that are used in this decision.  For or purposes you will mainly have to decide what you and your audience want the most.  If you are reading this, I am guessing you don’t have much of a budget and you probably don’t have too many people working for you.

When I work on a program this is how I decide which features to implement.  After I have gathered requirements, I create a list of things the program users cannot survive without, and then I create another list of secondary features.  The secondary features are thing that I will only work when I have completed all of the primary features in my program.  When choosing secondary features I like to give them a time value and an importance value.  So, if a feature will take 1 hour to write and has an importance value of 5 out of 10, and another will take too hours and has an importance value of 5,  I will choose the first task.  Which task you choose depends on how much free time you have, your skill set, how you determine importance, and how much value you attribute to any particular feature.

The primary list of features that users can not live without should have little variation from one person to another, every calculator needs to have certain buttons and features.  The list of secondary features will vary widely, because it requires value judgments.

to be continued …  Next up is Feature Planning, Structure, and  Prototyping