Gould Intelligent, LLC Logo
Gould Intelligent, LLC Text

Grand Canyon, Arizona, USA


Tips on Software Development

Last Reviewed: November 30, 2016
Last Updated: November 30, 2016
*Why we show the Reviewed and Updated Dates

General guideline
Your implemention WILL differ
Disclaimer:

* Gould Intelligent, LLC, it's officers, directors, and staff are not responsible for the use and misuse of the information provided on this website and in particular on this web page.  This information is provided as a general guideline only. Specific implementations WILL vary the application of this information and/or procedures significantly.  Improper use of any of this information could have disastrous results!

ALL are advised to consult an expert for your particular application.
In the following information you can substitute cloud, disks, flash drives, etc for the place you are backing up!

1. What's the difference between a "Staffing-based", "Fixed-Price", or "Not-To-Exceed" project
2. What should I receive from a programmer/software developer?
3. What is source code and why do I need it?
4. Why do I care what "language" it's written in?
5. Why do programmers want to charge by the hour and not fixed price?


For more information on software development the free wikipedia has some excellent information at:
http://en.wikipedia.org/wiki/Software_development_model

Staffing Based/Hourly

 This is typically an hourly rate pay as you go system. The vendor's staff, programmers, analysts, project managers, are under the customers control and direction.
PRO: The customer has a better control on what the project looks like. Budget control can be gained through the using the Phased approach with breaking the phases into appropriate size chunks. The right vendor can break it into chunks with the customer and follow the project plan and budget, that both customer management and the programmers can follow and understand. The style has the most flexibility in meeting the business goals while maintaining the budget.

CON: Requires management from the customer. However, there is not a style that does not require management. The trick here is to define the level of staffing to the level of project and of course with any approach, finding the right vendor. A project that is staffed with the wrong people is a nightmare. Also, budget control becomes a larger issue here, again this should controlled by "managing" the project and not just hoping for the best.

Project Management is always a real issue and must be done. We do strong project management with involved major checkpoints at the 25%, 50% and 75-80% budget use stages while also doing the weekly checks. You should know ahead of time if the project is having time and budget issues not after the fact

Fixed-Price

 The vendor gives you a finished program.
PRO: The word from customers is that they have a budget. However experience has shown this to be con. With change orders the budget is rarely met. Budgets are rarely met in IT anyway. With this false idea at the beginning tempers usually start flaring as the project strays farther and farther from the "original" budgeted price. Customers also typically think that they don't have to "manage" this project - this is a very large mistake. Not managing any project no matter in the form is just asking for a lot of trouble.

CON: is the same as the answer to question 5 above. That is, you and your vendor are now on opposite sides of the fence. No specification can be 100% complete, including colors, screen design, and complete processing. Also typically the business customer needs change over the time the program is being written. This creates a "Change Order", and has to be estimated and agreed upon. The business customer doesn't want to deal with 100's of change orders and typically expects most of these to be included in the originally price. The vendor however has to pay the programmers and other staff for the work, and every change order is an increase in cost, so now the vendor and customer have to negotiate, not a friendly situation over time.

Not-To-Exceed:

Supposedly the best of both worlds, the vendor charges you an hourly rate for actual hours used, but cannot go over a maximum amount that you've agreed upon ahead of time. This means you can pay up to but no more than the maximum amount agreed upon.

Not-To-Exceed also means different things to different people. Typically in a commercial environment it means that the project must be completed and not exceed this price. Not-To-Exceed is rarely used in a commerical environment. In government Not-To-Exceed typically means work continues until the specified ceiling is reached and then work stops until a new budget amount can be allocated to the project. We've seen government projects span years because of this but frequently this is the only method a government agency can utilize to get a project done.

The definition should always be clarified before work begins.

PRO: If a vendor actually agrees to this, then they should feel comfortable with the project specifications and that they can meet or beat the maximum. However the customer should watch the vendor to make sure they do know what they are doing.
CON: This has same issues as the Fixed Price but is less pronounced. These projects are usually friendlier until the point that the vendor has reached their "maximum" cost aspect and then the change orders typically start flying around and we are in the "fixed-price" world again. 

Phased/Agile Approach: 

This is where the project is broken into phases or steps. Each phase is estimated. The first phase is then turned into a Staff, Fixed price, or Not-To-Exceed estimate and done. When the first phase is completed, the remaining phases are re-estimated. The very next phase is then turned into a Staff, Fixed Price, or Not-To-Exceed project and done. This is repeated until all steps or completed.
PRO: Greater control on the project. More likely the customer will receive what they want. Definitely maintains a friendly environment between the vendor and the customer, and keeps the vendor and customer aligned towards the same goals. Combined with the Staffing based system provides Budget control, with breaking the phases into appropriate size chunks. The right vendor can break it into chunks with the customer and follow the project plan and budget, that both customer management and the programmers can follow and understand. The style has the most flexibility in meeting the business goals while maintaining the budget.

CON: The cons come down to which style "Fixed Price", Not-To-Exceed or Staffing you use for that phase.

This Hourly/Agile approach is the approach typically used by Gould Intelligent, LLC on our software development projects.

ANSWER:  When you hire a programmer to create a program, or modify an existing system you should receive the following
items. 
1 - The system you asked for. 
2 - The source code. (why you need this!)

AND If you asked for it...
3 - Documentation on how to use the program.
4 - Training on how to use the new system.

In simple terms, programs have two flavors, one your computer understands and runs, this is typically called the
executable.  The other is the source code which is in a computer language that a programmer can understand and work with. 

Without the source code your program cannot be modified, or updated by anyone other than the original programmer who has the source.  If you are paying for programming by the hour then you are paying for the source code and not just the executable. Don't hire a programmer who is not willing to give you the source code. 

Their can be circumstances where you might not get the source code - you are paying a fixed price for the system with an understanding that the programmer is going to resell the same program to somebody else.  Anything else and your friendly programmer is holding you hostage, you'll always have to go to them to get modifications done, and they can and typically do start raising their rates.

p>The language your new system is written in, and the tools used to create it will determine the cost of maintenance in the future.  If your programmer uses a programming language that is not one of the few popular computer languages then you could end up paying a lot more to have changes made than somebody else.  Think of it this way, if you want your biography written do you want it in English or Sanskrit.  Think how expensive it would be to have it changed in the future, you'd have to find a person whose expert in Sanskrit - that would undoubtedly cost your more than a typist who knows English.

Programmers will want to use their favorite language citing many wonderful reasons why that language is the best.  This may be true but it's still going to cost you!
Current popular programming languages would have programs written in for the small business:  PHP, Microsoft Access, Microsoft Visual Basic, ASP and Java maybe Perl depending on the application along with the web standards, HTML, CSS, and JavaScript.

We can go back to the biography example used above.  Can you imagine trying to pay a ghost writer a fixed price to write your biography?  A computer program has so many variables, so many unknowns that it's hard to estimate the time required to give you what you want.  Now I've heard - "I know exactly what I want!"  Ok, do you know what every piece of data, every field on the screen and every piece of data on a report should look like and act?  If you really think about it you don't.

Don't believe me - let's try a little example.  Let's define a simple program to track  Phone calls that come in Let's keep it simple and say only one person is going to enter information into it. Now, the obvious (which is like common sense - there is no such thing) we need time and date, who called and a topic plus maybe a notes field for details.  Simple, but do you need first name and last separately - are you going to want to look up by last name or first?  Do you want to type the names in all the time or do you want to be able to look them up?  Do you want it to type in the date and time or do you want a button to automatically enter it for you? 
What about logging a call that happened earlier - so you need both.  Do you want to track who they were calling for - or what they were calling about from a list so you can keep reports on it later?  Do you want to track the resolution of the phone call?  Whether they need a call back or not? 

And so it goes down to the color of the screen and buttons.

Some people say my home builder can give me a price why can't a programmer.  A home builder has plans that you've either purchased - or had made.  This most likely has cost you thousands of dollars.  Programmers can do the very same thing but you have to go through a detailed analysis document before the programmer can start and just like building a home, this costs thousands of dollars.  Most customers do not want to pay for this.  The alternative is to build in small phases to make sure the program is built how you want it without huge mistakes.  

For those of you who have had your own home built then you know about the things that are missed. Enough electrical outlets and in the right spots, enough lighting, enough cupboard space, enough room here, doorways, ventilation, etc.