We've been developing custom software for our clients ever
since our founding in 1986. We've found that a fixed-price bid based on
written requirements works best for us as well as for our clients. Clients
like knowing exactly what they are going to pay, and not paying until predetermined milestones are met. We like knowing exactly what we have to
do to earn our fees -- and knowing when the job is done. We are proud of our Quality Assurance program. Large projects
(beyond two or three months in duration) are typically split into phases. A working product is delivered at the end of each phase, and it gets
better with each phase. Here's a typical project lifecycle.
We meet for an informational interview, at no charge, and gather an idea of the overall size of the project and what technology might be appropriate or required.
If your project is large, we will quote for a feasibility study. This produces an analysis of your needs, initial requirements, architecture and vision for your project, with a
technology review and a suggested plan of action and phasing.
We will provide an estimate for the entire project if it's small. For large projects we will provide an estimate for
each planned phase after the feasibility study is complete. Estimates usually include
prototypes and written requirements.
When the work is sold and a retainer (typically 20%) is invoiced, we produce detailed requirements and design documents. These are accepted by the client to release a milestone payment.
The coding can proceed once the requirements, prototypes, and design are accepted. Depending on the project size there
may be one milestone at the end of coding, or at the end of each phase.
Our developers finish unit testing on each component as they develop it, but before it leaves our premises our own dedicated testers set to work. Using a test plan that was written from
the requirements accepted by the customer, they make sure that the product is stable and meets the client's stated needs. The end of our internal testing is often another milestone.
When the testers are sure the product works, we move it to a testing server to test our installation procedure. Then the client can perform acceptance testing on this server. We support and
encourage thorough and effective testing at this stage, never a rushed acceptance, even though we have another milestone payment waiting when the client does accept the product.
We install the product on the client's computers, deliver the manual if one is part of the project, and deliver client training if that is part of the project. The product "goes
Our final payment is delayed until the product has been live for some meaningful length of time: a month, typically. This shakedown period increases everyone's confidence that the product
really does work.
Should any bugs escape this rigorous process, we fix them for no charge (of course) with our promptest attention and sincere apologies.
If the client decides that further features or enhancements are required, we can quote for them using the same process just outlined, or a streamlined version of the process for
small changes. We never skimp on testing or design: we have found through bitter experience that the tiniest changes can become unmanageable if we start without planning or deliver without testing.
The client is always in control of this process. We
provide regular status reports with working demonstrations at key points
for feedback and acceptance. We can't move to the next step until everyone
agrees the current step is complete, and we don't invoice until the client