I’m sorry but I am incapable of approaching XP with anything like an open mind. Pair programming. They made me do it at Microsoft, for three hours. I resigned my job the next day and eleven years later, about six months ago, I engaged an online counselor and spent several thousand dollars to overcome what I realized was PTSD. At the end of the three hours my heart was racing, an all-night panic attack. And when I wrote my “partner” in this crime and told him I’d had a sleepless night and absolutely could not continue, he came to my office anyway and pulled up the chair, apparently intending to do this horror all day.
I told him to leave my office and as overwrought and sleep-deprived as I was I would probably have physically ejected him and not gently. I was enraged that he had ignored my email.
And in case you think I’m some delicate li’l flower, I’m a bodybuilder and I have been in three major automobile accidents that I don’t think about for years at a time. In two of them a single centimeter of difference would have killed or paralyzed me. I didn’t go a day since that early January 2009 afternoon without thinking about the pair programming, biting my knuckles and struggling to calm myself.
As for Agile, everyone I talk to tells me something different about it but there are few indisputable reasons I want nothing to do with it.
- I’m not a “team” guy. I do entire projects and when I do collaborate the splits are at a very high level e.g. me on the back end (servers, database, schema, IIS …) and someone else in the browser, someone else doing graphics. I enjoy this, but then I go back to my office (now, my home in Vietnam) and work alone.
- More meetings, Lots more meetings, including a daily recurring one, and meetings at several stages of sprints, which I see as nothing more than an excuse to keep people working 60–80 hours a week, under pressure that never relents. Recurring meetings are the reddest of flags for me, except pair programming. And as you note in welcome agreement, meetings are interruptions.
- A new nomenclature for concepts that are not new. “Stories” makes me clench my fists, it’s degrading as Safeway cashiers forced to wear pilgrim hats on Thanksgiving. It makes me think of kindergarten. “Refactor” has more meanings than “set,” incompatible meanings. “Technical debt” is an intelligent-sounding way to say “unfinished work.” And people dutifully and conformingly yap these tiresome neologisms over and over. I have a lifelong obsession with precision in language and this Agile Newspeak makes me sick.
I don’t make any distinction between agile and scrum, They always go together as assuredly as bullets and guns. I have always been good at concentrating, even my fifth grade teacher noticed, and I can enter a Flow state pretty easily as long as I’m left alone.
TDD is the worst; it’s faults could not be more obvious and there is a thousand-mile-stare fanaticism about it that reminds of the Second Amendment fanatics in my country. The idea that developers should be solely responsible for testing their own work borders on the psychotic.
I do believe in communication within groups; I also do technical writing and have spearheaded the use of design documents at many companies. Not many developers like to write and fewer can write thoroughly and clearly. I have done everything from requirements specs to user manuals and regulatory submissions (medical devices and mortgage software). I think this is more effective than holding long meetings. I mostly freelance and I will walk away from a client who “doesn’t have time” for at least a requirements spec. The specs sot only settle arguments, they inhibit them from even starting.
Thanks for your detailed response.