OK so here I am sitting in a restaurant in Salford Quays, aka MediaCityUK, aka BBC North's now home, on my tod, and bizarrely finding myself reflecting on personal history. In particular, at the moment, wondering how the heck I am in the position of presenting Python training courses (*). For some obscure reason I am transported back to a lecture room at UCL, sometime around 1985, where I was presenting one of a 30 lecture course on Software Engineering. I recollect in particular two faces, one I shall label Winnie Pun, the other I shall label Martin Fowler. The question in my mind is: is Martin Fowler Martin Fowler? Winnie Pun I know to be Winnie Pun as she subsequently undertook, successfully, a PhD with me as supervisor. But is Martin Fowler Martin Fowler?
I remember a number of conversations in the corridor between the aforementioned lecture room and John Washbrook's office involving John Washbrook, myself and the individual I have labelled Martin Fowler - who may or may not be Martin Fowler.
I then skip across the Paradigm Wars (object-oriented vs. functional), various OOPSLA conferences involving drinking sessions with Bruce Anderson trying to kick start the pattern movement (cf. OOPSLA 1990 and 1991), and workshops with Kent Beck on "what is an object?" (cf. OOPSLA 1990), but I come back to: is Martin Fowler Martin Fowler.
What is really at the heart of this angst is: have I done enough real world work with Java, Python, Groovy to be able to teach Java, Python, Groovy? In 1985 I had had so little experience of actually doing big systems development, that my lectures were basically entirely theoretical based on published work by people who had even less practical experience than I had - is this a synonym for bullshit. I had at least been a successful UNIX systems programmer before becoming an academic. I continue to wonder if any of the people writing about software engineering in the 1980s had any actual experience of doing it at all: far too many of the 1980s software engineering community clearly had absolutely zero real experience of developing systems. How can anyone who has not done something for a period of time even pretend to be able to teach that something?
OK, a necessarily rhetorical question in reality. Or perhaps not...
If Martin Fowler is indeed Martin Fowler, did he realize at the time I was lecturing that it was all theoretical waffle or did that realization only come later?
There is a flip side here: being an effective teacher/trainer is a skill in itself. A good teacher/trainer needs some real experience, but do they need more than is required to have empathy with the practitioners and what it is they do? Or is this just self-involved double-think?
I guess the real question here is what gives a person the right to be considered as, and consider themselves as, a guru on a given subject. Does being a guru allow one to pontificate? Or even teach/train? What balance of practitioner and teacher/trainer is the right one? Oh and is Martin Fowler Martin Fowler?
(*) Now don't get me wrong, I really like Python and presenting training courses on Python. Not only do I like doing this sort of thing, I like the income it generates :-)