Gould Intelligent, LLC Logo Gould Intelligent, LLC Text

Tips on Software Development

Last Updated: August 29th, 2020

Time & Materials (T&M)

This is typically an hourly rate / pay as you go system. The vendor's staff, programmers, analysts, project managers, are under the customer's direction.
PRO: The customer has a better control on what the project looks like. Budget control can be gained through using a phased approach with breaking the phases into appropriate size chunks that are affordable. 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. This 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 your management to some degree. A project that is staffed with the wrong people is a nightmare. Also, budget control becomes a larger issue here. Again this should be controlled by "managing" the project and not just hoping for the best.

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

Fixed-Price

The vendor gives you a finished program.
PRO: In theory you will pay a set amount for a finished product. However, experience has shown this to be unrealistic. With change orders, the original budget is rarely met. With this false idea at the beginning, tempers usually flare as the project strays further and further 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 the form, is just asking for trouble. You likely will pay additional money as new features are added, or problems are discovered. Otherwise, you will have settled for less than you wanted.

CON: 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 prior to development. Also, typically the business customer wants changes over the time the software is being developed. This creates a "Change Order", and has to be estimated and agreed upon. This could be new features, pages, etc. The business customer doesn't want to deal with 100s of change orders and typically expects most of these to be included in the original price. The vendor, however, has to pay the programmers and other staff for the work. Every change order is an increase in cost. Now the vendor and customer have to negotiate, which is 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 commercial 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 many times 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 are making progress.
CON: This is the worst of all options. You generally have the same cons as fixed price without the pros of time and material.

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 T&M, Fixed price, or Not-To-Exceed estimate and performed. 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 are 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 T&M 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 T&M you use for that phase.

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

A computer program has so many variables, that it's difficult to estimate the time required to estimate the time required to give you exactly what you want.   Now I've heard - "I know exactly what I want!"  Okay, 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 like?   If you really think about it, you don't.

Let's try a little example.   Let's define a simple program to track phone calls.   Let's keep it simple and say only one person is going to enter information into this system.   Now, we know we need the obvious: time and date, who called, 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? 

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.

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 - Business process flowcharts and analyses
4 - Documentation on how to use the program
5 - 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 and make sure this is in the contract.

There 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 that program or it is a commercially licensed system that is sold publicly, eg: Quickbooks.   Anything else and you are being held hostage, you'll always have to go to them to get modifications done, and they can and typically do start raising their rates.

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 in the future.   Think of it this way, if you want your biography written, do you want it in English or Aramaic.   Think how expensive it would be to have it changed in the future, you'd have to find a person who is an expert in Aramaic - that would undoubtedly cost you 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 include:  PHP, C#, Java, Javascript(NodeJS), Python, ASP, Microsoft Access, and depending on the application along with the web standards, HTML, CSS, and JavaScript (React, Angular).


This information is provided as a general guideline only. Specific implementations will vary the application of this information and/or procedures significantly.

ALL are advised to consult an expert for your particular application.