Software developers often like to think of themselves as artists. We like being unquantifiable and somewhat mysterious. This behavior has roots in the fact that humans generally like to be thought of as unique and special. It also has roots in the all-too-common 'Now I got you you SOB' that many development managers / executives like to play with technical staff (which usually plays out as 'I know I changed the requirements 5 times since then, but you said it'd be done by Tuesday!! You bastard!') The natural result of which is a desire not to give hard estimates so you can avoid being slapped with them later.
The fact of the matter, though, is that applying numbers or at least equations to the process of software development is not that hard. There are a number of concepts that are already out there and are fairly commonly accepted that can be applied toward that goal. Today I want to introduce some of them. I want to take some of these equations and break them down so that we can understand how they operate, and how we operate through them.