Know Thyself
One thing I’ve always been guilty of is honesty.
That might sound a bit weird, but essentially I am alway happy to be clear at what I’m not good at. This is often interpreted as imposter syndrome, or typical scots self deprecation, but its not. I’m also pretty clear on what I am good at.
I’ve been trying to find a nice clear way of summing it up, but I can’t really do better than “I’m a coach, not a manager” and like so much of the XP/Agile terminology, that can really confuse or irritate people, so I’ll try and explain. This will certainly be rambly. As Ron Jeffries has said “how do I know what I think until I hear what I say?”
In the much maligned Myers-Briggs Type Indicator I come out consistently as INFP/ENFP, which is quite different from a lot of programmers who are often ISTJ/ESTJ. I am intuitive. I make a lot of leaps and guesses and many of them turn out right. To quote Mr Jeffries again “I’m not smarter than other people, I just make mistakes faster”. I try things. I talk about how I feel about things, rather than how I think about them. I worry about people. The intangible is very important.
I like a tutorial rather than lecture setting when I’m teaching. I’d prefer people to ask questions and see where the discussion goes, adjusting my answers to the same questions for different people. Looking them in the eye and seeing if I’m making sense. This jibes with using XP to build software. Small steps, feedback informing the next steps. Lectures feel too much like Waterfall and I suck at that. If I have no immediate feedback I will overthink and worry and panic and never get anything concrete done. There will be no software because I’m trying to make sure I get the design just right before I start, There will be no lecture because I’ll rewrite and revisit the content over and over, aware I have to get it right before I start, rather than adjusting as I go.
I like short or multiple choice exams rather than essay questions, because I get bored planning an essay out and want to just write all the things I know and move on.
In many of my consulting engagements I have been glue, helping to bring disparate parts of an organisation together to share a single vision. In others, I have been oil, providing a layer to ease the interface between parts that rub up against each other.
I’m a starter, not a finisher.
I don’t mean that I just want to have crazy ideas and not see them through, I mean that I enjoy being one of the guys running along behind your car, pushing, shouting, telling you whats worked on other cars, helping you get started on whatever journey you want to go on, then move on to the next car. I like building teams that build software.
I feel naturally entrepreneurial, but my family responsibilities override that and keep me (rightly or wrongly) essentially risk-averse.
As a programmer I work best alone when in the early stages of a codebase. I like to get something working in a hacky, spiky way, then refactor until its good enough to share. I think thats a good model for the exploration phase of a project. Let individuals own a piece they’re playing with. On more mature projects, during the expansion phase, safety is paramount and lots of pair programming and testing is a good way to spread that knowledge around. (phase names courtesy of Kent Beck’s 3X theory)
The most productive I have ever felt is using IntelliJ to build Java code. It perfectly fit my “just code it up till it works, then do the actual work of extracting and renaming and parameterising” mode. Once you have the guts of the thing, thats the best time to start designing. What makes sense here or there, is this thing a new object, how could these two similar bits be merged to eliminate duplication? All these questions are better answered once you have working software. Then you’re making exactly the right design for the software you have. Proper, reliable, natural refactoring tools entirely change the way you can write software.
I suck when I’m bored.
My first manager at Panasonic, Don Grant, once had me in a performance appraisal and said “I wish I could give you two marks for everything. When you’re interested, you’re amazing. When you’re not interested, you’re terrible”. I was fresh out of college and horrified. ”Well”, he said, “its not necessarily a problem. The question is are you only interested in doing things you’re good at? Or are you only good at doing things that interest you? If its the former, thats an issue for you. If its the latter it’s just my job to keep giving you things that are interesting”. Its definitely the latter. I’ll have a go at anything as long as its caught my interest. I might suck initially, but I’m good at figuring stuff out with limited information because of the aforementioned making mistakes fast.
I was the third independent signatory on the Agile Manifesto. I was knee deep in XP for ObjectMentor when Agile became a thing, back in 2001 and as soon as Ward allowed people to sign up, I did.
My favourite thing I have ever achieved is bringing Zoe Keating to play at the Scottish Ruby Conference. Twice.
I have nothing concrete to point to. No big open source projects, no books written. My name is in a couple of the original XP books as a reviewer, but my one attempt to write a book for the prags failed because I’m an overthinker.
I’ve organised six Scottish Ruby Conferences and 4 NSScotland conference but I’ve only ever given two conference talks (one of them twice). My entire career is based almost entirely on word of mouth recommendations. ”I worked with him and he added value”.
From one perspective I feel like thats what I’m proudest of. It should count for the most. From another it makes it hard in situations like now where I’m considering “cold calling” for something new. If you don’t know me, or know someone who does, how can I convince you I’m a good hire?”.
I got into the ThoughtWorks interview because I put Kent Beck and Martin Fowler on my CV as references. At one stage I listed a reference for every single job. These days my CV is too full of jobs, so I just say “references available on request” and wonder who I’ll call if I get a request.
I don’t really have an ending to this. I’ve just kind of run out of things to say. I did mention I suck at planning and finishing.