Pretty much everyone in software today has heard of the Capability Maturity Model (CMM/CMMi), but while shopping myself around to companies recently I have developed my own set of Maturity Models. The first one I have oh so cleverly called the CMM(a) – Computer Maturity Model (adam).

This model is a measure of how mature the computing infrastructure is of a company. The higher the level, the more mature.

  1. Level 1 – Generic: At this stage, companies are populated with lots of generic machines that were bought on an as-needed basis coupled with how cheap they are. There is little regard to common configurations and swapping of parts.
  2. Level 2 – Standardization: Organizations who make it here have picked a vendor and have deployed standardized hardware and software configurations across the company. The form factor is the big-box-at-the-desk case. There are two reasons for this configuration. The first is cost. Desktops are now, and will be for the foreseeable future be cheaper than portables. The other reason is power. Desktops can have x more memory and y more cpus than portables. This allows for the complete development stack to be provisioned on each developer’s personal computer.
  3. Level 3 – Laptops: Companies at this stage are generally staffed by older (in their ACK! thirties) people who have gotten married and/or have kids. Naturally, with these sort of commitments, you do not want to be stuck in the office at your desktop away from them, so you go portable. Also by this point you (should) have evolved beyond the ‘can we afford it’ phase so the price premium for equipping everyone with a laptop should not be a hurdle. One side effect of everyone having on laptops is that development now takes place on a remote machine in a server room somewhere, so there is a bit of an infrastructure cost associated with this. Laptops also give you wireless so meeting attendees can be wired and writing information down electronically.