Humans outclass all living beings in terms of movement efficiency when using a bicycle.
We should have the equivalents of bicycles for developer brains.
This talk is about
mutant, a tool to improve developer efficiency.
Before going into details of the tool, let’s focus on the need for more efficient reviews.
The most valuable and indeterministic resource in software development is human time.
Provide developers with tools and processes to increase their efficiency in productive time windows.
But decrease the likelihood that their bad moments lead to a reduction in product value (also known as bugs).
All of this is easier said than done.
At a high level we can aim for:
On 1) with Ruby we have excellent feedback time. But what about 2), the constraints?
But are tests good constraints?
Tests, at a high level, are: A set of input output relations.
A passing test suite only signals the lower bound of semantics a program can express.
What constrains the upper bound?
Enter code reviews.
Manual verification that there is nothing the code does in addition to passing the tests.
This can, in part, be automated! Saving time, increasing efficiency.
Automated code review output example:
Uncovered Mutation (tests still pass): def foo- do_a do_b end
do_a call site can be removed without the tests noticing.
The mutation testing tool tells you:
Hey Human: Either remove
do_aor prove to me it should exist via a test, but for now it’s floating.
The reviewer saved time and can act on this information to verify if
do_a is actually needed.
[here mutant gets shown in action to the audience]
Consistently applying mutation testing using
mutant reduces the cost of software development.
More time can be spent on non automatable parts.
Most importantly: New developers can self train without needing access to peers!
Reduces the entry barrier to software development with Ruby.
Mutant is commercial software.
But it’s Free to use for opensource projects.
Find me (on twitter):
Find this presentation (wihout the life coding part):