4 ms·
Making debuggability (transparency) a first-class design criteria. For many (most) systems, there are designs that make perfect sense, but will be hard to debu
by ericb 7y ago
Making debuggability (transparency) a first-class design criteria.
For many (most) systems, there are designs that make perfect sense, but will be hard to debug.
When I started designing so that programs could tell me what they are going to do, what they are doing, and why, and so that their state, wherever possible, could be expressed into a structure where I could "see" the wrongness, my development time went way down--because it was really time spent debugging, so my productivity went way up.
- gtirloni 7y agoInteresting. Any examples of libraries or papers?
- ericb 7y agoI can give an anecdote. I needed to design a load testing system that would ramp up to an arbitrary number of users of certain types, over an arbitrary amount of time. Rather than just make a loop and increment every so often, I made the system output it's "plan" for the user ramp, and a second component execute the ramp plan. We had a bug in the calculation which we were able to see easily by reading the "plan." Without this step, we would have been unsure if it was the calculation of when to add users, or the implementation of adding a user that had a problem.
- goto11 7y agoYes! This is so much more important than whether you use "for" or "map".