Aug 3, 2009
“Tests are a technique to manage programmer anxiety about code. When I feel
anxious about some aspect of my code I write a test case.
Does programming language affect level of anxiety? Definitely. Does
programmer skill affect level of anxiety? Absolutely.
Writing tests becomes more important when you're part of a team. Your
choices affect not just your anxiety but that of your teammates. That's why
it's reasonable to be more dogmatic about TDD in a team.
A lot of 'getting better at TDD' is just getting better at listening to
yourself. When I started programming the little anxieties would pile up
until I'd painted myself into a corner. With experience I pay more attention
to the little anxieties.
The secondary effect: after some time doing TDD I feel less anxious just
knowing that I can write a test if I want. The benefit of the tests as an
artifact is secondary to me; what they primarily do is keep me from getting
stressed and giving up to go play poker.
— me
* *
May 23, 2009
Realism in simulation"The goal of simulation is not to simulate reality as closely as possible.
With an accurate model you cannot find commonalities."
— Tom Slee
* *
Oct 8, 2008
“ You’re going to have to rewrite code. All the time. You have to be ok with it. You have to be
willing. This is the secret of the great programmers, and the great stumbling block of those new to refactoring and TDD.
The bad news: Refactorings like extract object will require you to test drive a new class from scratch. All the time.
The good news: It’s much easier to rewrite when you have tests. You just haven’t noticed yet.
— me
* *
Aug 26, 2008
“ The
problem in scaling software projects is not a communication problem; it’s a dependency problem. Control quality by being hierarchical and rigorous about how you test and accept changes, not how you generate them.
* *
Aug 5, 2008
“ Analytics are a 25-40% tax on your product development process. They take engineers lots of time and development effort, produce numbers that people argue about, and require additional infrastructure.
Having 1 in 4 engineers working on analytics may seem like a ton, but it helps validate assumptions, pinpoint key features and bottlenecks, model the business during decision-making. At the cost of building fewer features, learn as much as you can so that you can “run up the score” on the features that work.
* *
Jul 20, 2008
Linus Torvalds: ..now all your code depends on all the nice object models around it, and you cannot fix it without rewriting your app.
me: That doesn’t have be a big deal. Rewriting becomes more normal when you have automated tests.
* *
Jul 20, 2008
“ I will tolerate a buggy compiler, lack of editor/IDE/debugger/profiler support, crappy syntax, gotchas in semantics, pretty much anything, if a language easily and naturally supports automated tests.
* *
Jul 15, 2008
“ Rewriters are more like XSLT than macros. They can match and replace fairly arbitrary expressions, not just implement things that look like function calls and method calls.
* *
Jul 10, 2008
“ The great advantage of the fountain pen is that it is slow. Ideas come faster than we can
serialize them to paper. Therefore, the ideas are stored in an “accumulation buffer” in the brain. When in the buffer, the ideas interact and purify. If we empty the buffer too soon, we don’t give the ideas enough time to mature and we get half-baked prose.
Code badly written the first time remains buggy and filled with holes no matter how much it is debugged.
* *