In episode three of Oddly Influenced, jUnit and What Makes a Successful Tool, Brian Marick is speculating about the relative lack of adoption of test-driven development compared to the tooling that supported it.
After putting forward a particular theory he wonders whether it's "true" and
says:
That ... gives me an opportunity to state a theme that’s been in my work for decades. I read books ... about how people do their work. I’m not so concerned if the theories are true as if they are suggestive – that is, do they give me ideas about how software people should do our work.
[The] next task is trying out whether those ideas have good results, in our work. Because everyone’s theory about people is somewhere between fully wrong and fully right, and is always incomplete.
I like this perspective a lot. It puts me in mind of Paul Feyerabend's Against Method, a book I failed to finish because it was so dense and widely-read, but which has a core thesis that I found interesting.
As I understood it, Against Method says that all scientific theories have holes and are generally used by practitioners pragmatically. Despite this, there is a risk that theories will calcify over time and become constraints on our thinking.
We can help to avoid that by deliberately looking for alternatives, even
non-scientific ones, that have some useful explanatory power for
some aspect of our observations even if they are incomplete. Feyerabend
coins the term counterinduction for the comparison of approaches with
regard for utility in relevant cases rather than coverage in general. He goes
further and suggests that significant scientific advances tend to come through
these left-field challenges rather than incremental refinement of an existing
dominant theory.
For me, this is a heuristic approach. Theories are
tools to be selected for their potential value in the situation I perceive.
Application of the theory by me, at this time, in this context, with this aim
might succeed or fail. This adds to the knowledge I have about the
applicability of theory under certain conditions, to the extent that I
understand them and care to look into them.
That last sentence is interesting, and in turn recalls a talk and essay I wrote with Sneha Bhat for CEWT #5. In it, we asked which of theory and practice is primary and concluded the required data is the starting point, and also the ending point, of a piece of work.
The theorist/practitioner distinction has no real validity. We’re all on Team Practice, although we may have different levels of interest, ability, and inclination in practising in particular ways ... Don’t just pick up your favourite tool and begin hacking away. Whatever your biases, you can start any task by asking what data you need, then making a conscious choice about how to get it.
I love how ideas chain together. Having written that last paragraph I am reminded of the (over-)thinking I did on tool selection a few years ago. In trying to summarise that particular journey I said:
But every decision to use a tool is also an opportunity to make a different decision. Deciding to think about how and why a decision was made gives insight that can be useful next time a decision is made, including the realisation that a decision is being made.
Which brings us back to the point Marick made at the top: a significant value
of theories, tools, and practices is in the results they bring to a particular
situation, not in whether they are in some sense true.
We can learn about that value, about that truth, by exposing ourselves to ideas and then thinking about and experimenting with them. Of course, this carries risks of incompatibility with existing assumptions, prejudices, and beliefs and the discomfort that results from it.
Do you dare?
Image:
https://flic.kr/p/5BEjm2
Comments
Post a Comment