bcholmes: (Default)
[personal profile] bcholmes

I 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.

Addendum

Date: 2002-05-03 07:08 am (UTC)
ext_28663: (Default)
From: [identity profile] bcholmes.livejournal.com

I once heard about a psych experiment that involved two people playing a simplistic card game. The rules went something like this:




  • Each person gets two cards: a high card and a low card.
  • For each round of the game, each person lays down one of the two cards.

    • If Person A plays the high card and Person B plays the low card, then Person A wins and Person B loses.
    • If Person A and Person B both play the same card, then there's a tie.

  • For each round that you win, you get five dollars. For each round that you lose you get nothing. For each round that you tie, you get one dollar.
  • You play one hundred rounds.
  • You can't talk to the other player while the game is in progress.


The obvious result in this game is that the players will end up with a tie in all rounds, and that each person will go home with a hundred dollars. But that's clearly not the best result. The best result is that each player wins half the games and loses half the games, and they each earn two hundred and fifty dollars.

And that's something I find fascinating -- that if I play my best game possible, the end result is less than ideal.

As I recall it, the fact that the players couldn't talk to each other was crucial, and what the experiment was studying was the ways in which people would try to communicate their willingness to lose half the games. For my part, I would have great difficulty trusting that the other player has even noticed that there's an advantage to losing some of the games.

Not enough words

Date: 2002-05-03 02:29 pm (UTC)
ext_28663: (Default)
From: [identity profile] bcholmes.livejournal.com

Is there a word that describes the state of being optimized in one context and not optimized in other contexts?

Re: Addendum

Date: 2002-05-05 10:40 pm (UTC)
From: [identity profile] angilong.livejournal.com
That reminds me of the "red/green game" we used to play at CYO youth leadership retreats and the like. I don't remember exactly how it went, any more, but there were multiple players or teams, and each round you (or your team) could vote either red or green. If some teams voted red and some green, the red teams were rewarded and the green teams penalized. But if everyone voted red, everyone was penalized. If everyone voted green, everyone was rewarded. Usually, there was no communication the first few rounds, then communication between rounds would start (if you were in teams, each team would send a rep to confer with the other reps between rounds).

In one version of the game, it was stated ahead of time that the goal was for "everyone" to get as many points as possible. A big chart was used to keep score of individual teams' scores for each round, with totals for each team. But waaaaay down at the bottom of the chart in the corner, there was a spot for a total for "everyone", and *that* was the total that counted. But even with communication, it was very hard to convince *everyone* to stop playing competitively, and as long as there was even one holdout who insisted on competing, it ruined it.

This models a lot of real-life situations where "playing nice" has potentially huge rewards if *everybody else* plays nice too, but only gets you taken advantage of if anybody else doesn't.

Non ubergeek

Date: 2002-05-03 09:05 am (UTC)
ext_26535: Taken by Roya (Default)
From: [identity profile] starstraf.livejournal.com
I've never wanted to be an ubergeek, although I have the utmost respect for them, I see my role in the geek world as a translater. I can understand and communicate geeks but I can also understand and communicate with end users. I am a very good programmer (yes I know assembler) but I'm even better at sitting down with and end user and understand what they need to make their job easier. (I also use VI)

I'm often made to feel 'non geek' by network and hardware folks. I can usually follow along when things go according to the manual but beyond that I'm lost - I just don't grok it. But when I'm with 'standard programmers' I'm often seen as an ubergeek since I tend to know more hardware, networking stuff and I tend to think in programming languages instead of having to translate from "English"

Wow that pair programming seems very strange, but could be usefull. I have instituted team debugging here - if you are 'stuck' for more then 1/2 a day then you need to have a fresh set of eyes look over your code - often in explaining it to them you realize what your problem is.

But I have found that simple straigh forward programming makes things much easier to maintain especially in a team environment when someone else will probally be mainting the code.

Enneagram

Date: 2002-05-12 11:00 am (UTC)
firecat: red panda, winking (Default)
From: [personal profile] firecat
I relate to the Observer type too.

Re: Enneagram

Date: 2002-05-16 07:34 pm (UTC)
ext_28663: (Default)
From: [identity profile] bcholmes.livejournal.com

I relate to the Observer type too.

<nod> I think I can see that in you.

Re: Enneagram

Date: 2002-05-16 11:30 pm (UTC)
firecat: red panda, winking (Default)
From: [personal profile] firecat
*giggle of mutual observance*

Profile

bcholmes: (Default)
BC Holmes

February 2025

S M T W T F S
      1
2345678
9101112131415
16171819202122
2324252627 28 

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Powered by Dreamwidth Studios