Posts

Showing posts from March, 2018

The Impossible Every Day

Image
This is a slightly-edited re-presentation of a thread in Twitter.  Original post Unrolled post As twitter is ephemeral, and blogs are longer-lasting (and easy to point to in the future), I have copied it here and fixed a couple of typos that twitter wouldn't let me correct. Once upon a time, people argued that TDD is impossible. You can't write a test first, obviously, because you can't test something that doesn't exist. It's obviously ludicrous. But you change how you think about "a test" and it works just fine. Likewise, two people working at one machine? Ludicrous! That's twice the cost! Except that when you realize that programming is more about thinking than typing it makes easy sense. It works just fine. And mobbing! Why, how stupid must that be!!!! Having five or six people work on one task is horribly wasteful... until you learn that it gets work done quickly by putting the right number of brains and set of skills on the task. ...

Predictability as Maturity or System?

The predictability of a team is subject to the predictability of the work . Duration of a task depends on three things primarily: Raw effort -- fairly predictable, measurable, repeatable -- easy stuff. Risk -- chance we might break something and have rework or damage; VERY hard to predict in advance of efforts, extremely hard to detect without significant effort in automated testing AND exploratory testing. This can bring us late delays that cannot be ignored.  Uncertainty -- the amount and difficulty of the learning we will do, along with the chance that we may hit dead ends and have to start over. Cursedly hard to predict even order of magnitude. Interesting and Uninteresting Work Work that is mostly raw typing effort is uninteresting. Nothing is learned there, nothing is innovated, nothing taxes or stretches the workers. It is a rare situation in software work because developers have a tendency to automate any uninteresting work. Not only does it save them a...