I follow an Agile development model for all of my projects. This is primarily to better serve the client and to efficiently utilize my time. Total effort, and thus overall cost, is estimated by the number of "sprints" required to complete a task. One sprint is equal to four billable hours.
There are instances where clear sprints cannot be determined, or the task at hand cannot be divided into equal, discrete subtasks. For these situations a number of hours can be reserved by the client through a retainer fee. This fee must be paid in full before work can commence. Typically, retainer work comes at a higher premium rate per hour when compared to work billed on the basis of sprints.
What You Get Up Front
- Statement of Work
- Cost Estimate
What You Get At The End
- Full source for software
- Full ownership of product
- Full documentation (where applicable)
While I take great pride in delivering the highest quality product possible, all software is provided as-is with no express guarantees on reliability, performance, or security. That being said, I advocate "making things right" at no additional cost when a reasonable case can be made that the product delivered does not perform as expected. This "guarantee" remains in effect for the first six months after the client takes delivery of the product. After the preliminary six month period, if the work modifies the functionality of the product then services must be billed in the form of sprints.
All development, software or otherwise, is to follow an iterative process prescribed by standard Agile principles. A project will be divided into discrete tasks encompassed by sprints.
The minimum billing unit is the "sprint"-equal to four (4) billable hours. All aspects of the overall effort will be assigned an approximate number of sprints required for completion. This approximation is a good faith estimate based on prior professional experience backed by formal education in requirements elicitation, risk analysis, and other areas tangential to software engineering as well as engineering in general. All tasks undertaken, with the exception of those billed on a retainer, regardless of size or perceived complexity will be charged at least one sprint. In the event a risk of exceeding the approximate number of sprints for a given task is present, the client shall receive a notification in writing before the overrun occurs. The notification will contain:
- Deliverable involved
- Reason for expected overrun
- Current sprints completed
- Revised number of sprints
- Request for official direction from client
After the previously agreed amount of sprints have been completed, development will cease until additional sprints, if necessary, are approved in writing by the client.
In the event the proposed effort cannot be estimated by discrete sprints, the effort is long-term, intermittent, or the effort constitutes input into a high-level, strategic function then billing shall be performed on a retainer fee. This retainer is a prearranged number of hours billed at a premium rate with an absolute deadline for final deliverables. A non-exhaustive list of tasks that may be better served by the retainer billing model:
- Requirements Engineering
- Risk Analysis
- Design Critique
If applicable, the client shall be held accountable for completed sprints only. If services are provided under a retainer, the retainer must be paid prior to the start of actual effort. In either case, a dated invoice will be provided to the client indicating the amount owed for services rendered. The deadline for full payment is two weeks from the date on the invoice. In the case of retainers, if full payment has not been received within two weeks of the invoice date then that invoice is null and void, and a new invoice with potentially revised terms will be generated.
Payment can either be in the form of a check mailed to the address on the invoice, or via PayPal. In either case, the invoice will be clear on the forms of payment available.