Going to eXtremes
May. 2nd, 2002 06:07 pmI became a geek because:
- I'm good at it;
- it pays well; and
- I'm antisocial, and geeking is mostly done huddled in a corner by yourself.
For most of my career, I was a geek snob -- I figured if you didn't know at least one form of assembler to fall back on, you're not a real geek. For me, being an ubergeek meant (among other things):
- using vi as your IDE of choice;
- never, ever, ever needing a debugger; and
- making code sing.
Four years ago, I went to work for an insurance company. It was the first time I didn't work among other ubergeeks. I remember my boss made a point of telling me that the company was very clear about not wanting to hire "propeller heads" -- they didn't want the kind of geek that I aspired to being. It was a real paradigm shift for me (apologies to Thomas Kuhn).
While I worked there, I learned a heck of a lot about what it means to develop applications in a way that was simpler to understand for people who aren't ubergeeks.
There's a coupl'a quotations that I'm fond of. At JavaOne in 2000, Tim O'Reilly said:
"The Web took off because it was fundamentally simple. You know, it really allowed, if you like, a lower class of individual to participate. You know, there were all these people who were not professional programmers who could still [...] build what you could call an application on the Web."[...]
"So my point here is that the Web is evolving. The future is going to belong to the people who make it easiest to evolve, who make it easiest for people that you don't know to participate and help you join in making the future."
Now, O'Reilly was being rushed off stage when he referred to a "lower class of developer", and so I try to pardon the pejorativeness of his words, but basically, I think that he was talking about the type of people that I mostly worked with at the insurance company.
Suddenly, I started to grok IDEs and WYSIWYG HTML editors and a whole host of other developer tools that I had just never had any use for previously.
The place where I work now is teaching me even more cool stuff about People Who Are Not Me. We're pretty intense about eXtreme Programming -- the Senior Partners in the company have known Kent Beck for years. And that's been another mind shift. Suddenly, I'm not writing code that sings; I'm doing the simplest thing that could possibly work. Instead of anti-socially huddling in my cubicle, I'm pair programming -- two programmers, one keyboard. When I first heard about this idea during my interview, I thought, I don't think I can do that! But what a learning experience it's been.
Recently, I was working with another ubergeek -- it was his first exposure to eXtreme programming, and he said, "Don't you find that some of the practices slow you down?"
"Yeah," I replied.
"Don't you see that as a problem?" he asked.
"No. I don't think that the objective is to maximize my personal productivity -- the objective is to maximize the team's productivity. I may be going slower than I would have if I was working alone, but the eXtreme programming practices help me get much better productivity out of the junior members of the team. Good design practices propagate better, team members are better mentored, and overall, the code is higher quality."
Fredrick Brooks, author of The Mythical Man-Month claimed that the productivity ratio of really good programmers and average programmers was 10:1. And I believe that. So a team of one ubergeek and five average programmers can produce 15 widgets in a certain interval. I've come to believe that the eXtreme programming practices slow down the ubergeek to 7, but they also speed up the average programmers to 4. The same group now has a productivity of 27 widgets per interval.
A while ago, I was reading about Enneagram personality types. I identified a lot with the "Observer" category, and I remember one thing in particular that was said: "Observers work hard to achieve independence in the same way that other people work hard to achieve wealth or power." That's so me. Or it was. Now, I'm intensely involved in team dynamics and tinkering with the way a group works together.
The key "passion" of the Observer type is greed or avarice. There's a big part of me that wants to hoard my own personal productivity, and it's taken a lot of intense thought to change my priorities.
It's been an interesting shift.