Last night, while i was browsing the latest tweets, i noticed there was a discussion going on about the difference in compilers and debuggers. Two of the comments made by Michael Bolton (@michaelbolton) were:
@testalways Debuggers don’t debug any more than compilers write programs, any more than hammers build houses.
@QualityFrog @testalways @AGareev A thing doesn’t act like a tool until an actor, a person, puts it into action.
I continued reading the tweets on this topic, until I read the following tweet by James Bach (@jamesmarcusbach):
@michaelbolton debuggers don’t ever perform any debugging. But hammers and compilers really do build and build, respectively.
After reading this, I thought: “Well, James, a hammer is a tool. It’s a dead object. It can do anything. So it can’t build”. Now, I could have held my mouth shut. But when I disagree with a comment, there is an incredible urge inside me which says: “mingle, mingle, mingle!”. So I did. I mingled, without asking (which some might consider as rude. But I like discussions. They help me learn. They help me understand. They educate me. A good discussion helps me to see things from different perspectives. At least, I hope so).
It’s the person handling the hammer that creates the pattern of a house. A hammer is not required to build a house. There are many types of houses which are entirely made by hand. Just imagine the clay houses in some 3rd world countries. So I replied to James:
@jamesmarcusbach How does a hammer build? It’s not the hammer that creates the pattern of a house. /cc @michaelbolton
It’s the person handling the hammer that creates the pattern of a house. A hammer is not required to build a house. There are many types of houses which are entirely made by hand. Just imagine the clay houses in some 3rd world countries. And then I received James reaction:
@MichelKraaij don’t ask silly questions.
What, whut? Silly? My question wasn’t intended silly. It was a dead serious question. I was asking how a hammer builds. In my perception the hammer doesn’t build. It’s a tool. It is the person handling the hammer that builds. But did I really ask a silly question? Or did James interpret my question as silly? Maybe I was asking something obvious, because to him a hammer actually builds? Then indeed, it might have looked like a silly question. Maybe I’m just misinterpreting something. Or he is. Words can get misinterpreted very easily. Let’s continue. There is only one way to clarify all of this. Respond:
@jamesmarcusbach It might have sound silly, indeed. Maybe just as silly as saying that hammers do build.
Yes, my question had a little sarcastic undertone. And I chose to answer using his own words. What I didn’t expect was James’s response:
@MichelKraaij instead of insulting me, use your brain. Come on, man. Don’t play dumb.
@MichelKraaij I could answer your question, but you already know the answer. Don’t waste my time, please.
Huh? What happened here? My tweet wasn’t meant insulting?! To me, the word silly means “funny” or “humorous” in a bit of sarcastic way. Did I make a bad translation here? Let’s look it up. Oh wait, the word “silly” has several meanings in English. And some of them can be interpreted as insulting indeed! Damnit, that’s why I prefer to speak face-to-face instead of *just* chatting. So many emotions don’t get transferred when sending a tweet. Something went terrible awry here. Why would I waste the time of someone whose opinion I value? Let’s ask for some clarification, because he really lost me here…
@jamesmarcusbach Then pls help me understand “But hammers & compilers rlly do build & build, respectively”, b/c clearly i’m not getting it.
A short 15 minutes later, James responds:
@MichelKraaij I’ve taken you close enough to the solution. Get up and think, now.
This one sounds a bit more challenging. After all, I consider James (and Michael) to be my mentors. So I value their responses. Especially when they sound challenging. Now, where was I. Did I really miss something?
In the meantime, I see a tweet from Peter Houghton (@petehoughton) pass by:
@MichelKraaij I think it’s along the lines of debugging is a cognitive (exploratory) activity. Building is more mechanical, formulaic.
Yes, this is true. Debugging is about exploring and about revealing, which can be done either manually or with support of tools. So this is a cognitive activity, indeed. In addition, a potential bug has to be interpreted by a person, again, a cognitive activity. So I respond to Pete:
@pete_houghton I think of building like testing. A set of activities, some of these activities supported by tools, with a purpose.
Okay, back on topic of the misinterpreted sentence. Have I misinterpreted it? Wait, is he actually talking about a “hammer”. Like, the tool which I use to hit my thumb? Or is he referring to something else? Am I missing something? MC Hammer? Nah! A different tool, called “Hammer”? Let’s Google. Well, yeah, there actually is one! It’s a mapping tool by Valve. No, I don’t see James as the type who fiddles around with maps for online gaming (actually, I used to do that a few years back, when I played CounterStrike. So I actually knew the program!). I continue to ponder… In the meantime, I receive a reaction from James:
@MichelKraaij have you figured it out yet?
No, actually I don’t. I start questioning my own judgment. Am I actually dumb? Is he right? Am I missing something that obvious? Or…. am I misinterpreting words in the sentence? Let’s ask:
@jamesmarcusbach No, not yet. But i do want to ask a question (yes, it might sound silly). Are we talking about this?: http://bit.ly/hv9mCH
Oh, drat, I used “silly” again. Well, message has been sent. Nothing I can do about it anymore. And then it remains silent for a while… Maybe this was really too insulting?
Suddenly Stephen J. Hill (@stephen_J_Hill) responds:
@MichelKraaij @jamesmarcusbach Hammers & compilers are both _tools_ used directly in building. Debuggers highlight pattern for others to id.
Well yes! I totally agree. Nevertheless, you’re saying what I was thinking…it’s a tool! (And my brain fills in: “It doesn’t build on its own!”). After a while, James responds:
@Stephen_J_Hill It’s true that the hammer and compiler are tools used in building, however, they are also themselves actually building.
@Stephen_J_Hill You have to ask yourself: what does it mean to build something?
Okay, he addresses the question to Stephen, but I take on the challenge to answer the question, since I has on my mind for quite a few hours now. I answer:
@jamesmarcusbach @Stephen_J_Hill I suppose it means to structure/merge parts (e.g. materials/pieces of code) in a certain way.
Within a few minutes James responds:
@MichelKraaij To connect parts together into a greater whole is a kind of building. Hammers and compilers both do that.
Yes, hammers do connect parts together into a greater whole. But if I place a hammer on the floor, nothing gets connected. Michael mentioned this in his tweet, stated in the beginning of this blog post. Nevertheless, a car also drives. My eyes also see. But, they all need additional components. They need components, like my brain, to be able to understand the convert light. Only then, it sees. (There are people can look, but do not see anything. The light doesn’t get interpreted, either by the eye or by the brain. These people don’t see). I consider building as a system. It needs certain components to function. Yes, you can take away components. But that destroys the system. So I answer:
@jamesmarcusbach Nevertheless, neither are mandatory for building. Also, they will not build by themselves.
@MichelKraaij Neither of those elements are required to make what I said true and relevant.
@MichelKraaij A debugger is not a debugger, but a hammer and compiler both build.
I agree with the first part. A debugger doesn’t do any debugging. All the bugs remain, until they get fixed. This isn’t something a debugger (tool) does. But to me, building is an activity. And a hammer is a tool. So, a hammer can become a building tool. It’s still a tool, but now used in the activity of building. So I respond:
@jamesmarcusbach I think of building as an activity. Yes, a tool can become a building tool. But it’s the combination that builds.
Even my hands are tools. They can be put to use to help me, my consciousness, to build things. They can be put to use for a lot of things. Like transferring my thoughts into movement, which in turn makes letters appear in this blog post (thanks for technology!). James responds:
@MichelKraaij Building is an activity. It’s an activity that is performed by hammers and compilers.
By now it’s almost midnight. I head over to bed, confused about this conversation. In bed I ponder about “action causes reaction”. A hammer in motion has an effect on other objects, like nails. Is he thinking this? Well, in that case it’s the action from the hammer that builds, yes. In that context he might be right. But to me this isn’t the complete context. It’s “a” context. I’m thinking more in terms of the action from the person handling the hammer which in turn moves the hammer. Still confused, I fall asleep….
A rather long blog post this time. But I felt the need to put my thoughts on (digitized) “paper”. This is my opinion. It might not be yours. However, I do am interested in yours. Feel free to give your opinion about this discussion.