The CRUDLAFS Technique for Software Estimation
I have always, like so many other programmers, had a problem with software estimation and costing out a software project. Most of my career was plagued by software estimates so bad that I made significantly less money on my independent projects than I did at my low paying day jobs. This was not the reason I was working through my vacations!
The turning point came when I realized the CRUD acronym encompassed most of the functionality of the line of business applications I was writing and could be used as a check list to ensure I wasn’t missing functionality. Later, this checklist was refined to CRUDLAFS.
Wait! What? CRUDLAFS? … did I just coin a new acronym? …. Hmmm, looks like I did!</egosmirk>
While I’m sure you are already familiar with the CRUD acronym, here is CRUDLAFS:
|Create||All functionality around validating and creating an entity|
|Read||All functionality around reading and displaying an entity|
|Update||All functionality around validating and updating an entity|
|Delete||All functionality around deleting an entity|
|List||All functionality around querying and displaying a list of entities|
|Additional||All additional functionality related to an entity|
|Filter||All functionality around filtering a list of entities|
|Sort||All functionality around sorting a list of entities|
I set up an Excel spreadsheet with CRUDLAFS as column headings, all my known or probable entities down the left, and probable hours to accomplish each in the cells, like so:
So in my example, the estimated time to create a list of orders is 5 hours.
And when I say known or probable entities, I mean; on smaller projects, I usually have a pretty good idea what all the entities will be, but on big projects, I charge hourly until requirements, data model, GUI design / functional specifications, and initial risk assessment is complete. Most larger projects just have too much back and forth communication and the customer usually doesn’t even have more than a vague idea of what they want. This was a very important distinction which has kept me out of bankruptcy.
I get the feeling this may not work well with agile approaches, but for Big Design Up Front projects, it has been a major leap for me.
Copyright © John MacIntyre 2010, All rights reserved
No comments yet.