Now, some of you may note that “Substandard” is probably a more polite term than most would use in the acronym “COSH” – but this is a family friendly blog (just in case there are any 8-year old ETL developers out there)
I’m sure all of us in our developing career have been given the worst PC in the building, dev servers made of bricks and the wonky chair that needs a Degree in Engineering to sit on without sustaining injury. Which, on a personal level, sucks as you can’t work as fast as your brain wants and rapidly becomes frustrating. The thrill of a dangerous chair wears off pretty quickly, too.
However looking at it from above, this also attracts a cost to the project as a whole. For example, say you have all your development machines hosted virtually. Makes sense – easy to reproduce your dev environments for everybody, avoids having to get lots of stuff installed on desktops – all round a sensible approach. This works in practice, but there’s 2 things you have to really think about:
If your Host goes down, then your developers are offline. Let me spell out how much that costs to you in cold, hard maths:
Number of developers * Developer cost per hour * Hours of downtime = Cost of failure.
So, assuming a standard Australian dev resource @ $100ph, that means if you have a team of 4 devs, a day of downtime costs this:
4 * $100 * 8 = $3200 / day
Plus of course that doesn’t allow for the cost of delaying the project by one day. Suddenly that backup host doesn’t seem so expensive. Or the cost of some Infrastructure consultants to make sure that the homebrewed Hyper-V setup is actually configured properly, which leads me on to…
Poorly performing hardware can slow developers down. Beautiful though your documentation and planning may be, much development is still only practical by repeating a “run-check-fix-rerun” cycle, and is the only way to unit test. If your dev hardware runs twice as slow as it could (say, relative to production) then that slows your developers down. It’s not quite as clear cut as above, as developers develop as well as run – i’d say the factor is probably about 50% of dev time is spent running – feel free to make your own judgment, but here’s the maths:
Number of developers * Developer cost per day * Developer Run Time * (Relative performance -1) = Cost of poor performance.
So, assuming a standard Australian dev resource @ $100ph, that means if you have a team of 4 devs, running 50% of the time on twice as slow hardware, the daily slowdown cost is this:
4 * 800 * 0.5 * (2-1) = $1600 / day
Not quite as expensive as downtime, but a subtle, creeping cost nonetheless.
The above examples apply to any setup, not just Virtual – slow desktops, flaky database servers, slow networks – they can all have an impact. You may disagree with my maths (I’m happy to take your views on my formulas) – but what I’m trying to illustrate is that there is more to poorly performing development environments that just annoyed developers. It costs the project time and money – and these costs can get easily get big enough to warrant spending on expertise or hardware to remediate.