Friday, September 30, 2005

Invention of the day

Now this is what the world needs - a beer mat that knows when to order a refill.

On the invention theme, I was chasing a fly around the house the other day, and I noticed that every time I picked up the fly swatter, the fly would disappear for several minutes. If I put down the swatter, the fly would reappear.

So how about this - a T-Shirt with a picture of a fly swatter on it! Never be bugged again by flies...

Coming soon to a WalMart near you.

Monday, September 26, 2005

Just sign here...

Not a lot of technical content around here these days. How about this one - I need an Oracle client, so I head over to Oracle's web site. There it is, and it's only 180MB! Ok, I can wait for it, so I click the download link.

Now I'm being asked to agree to a few things:
1) I am not a citizen, national or resident of, and am not under the control of, the government of: Cuba, Iran, Sudan, Libya, North Korea, Syria, nor any other country to which the United States has prohibited export.

2) I will not download or otherwise export or re-export the Programs, directly or indirectly, to the above mentioned countries nor to citizens, nationals or residents of those countries.

3) I am not listed on the United States Department of Treasury lists of Specially Designated Nationals, Specially Designated Terrorists, and Specially Designated Narcotic Traffickers, nor am I listed on the United States Department of Commerce Table of Denial Orders.

4) I will not download or otherwise export or re-export the Programs, directly or indirectly, to persons on the above mentioned lists.

5) I will not use the Programs for, and will not allow the Programs to be used for, any purposes prohibited by United States law, including, without limitation, for the development, design, manufacture or production of nuclear, chemical or biological weapons of mass destruction.

The first one is easy. Canada is not on the list (yet) of countries the United States officially hates.

The second one is also easy. I don't know anyone in those countries, although I do know a few people who regularly vacation in Cuba. Maybe I should be more careful who I hang out with...

The third one is trickier. Do they publish a list of "specially designated" nationals, terrorists and trafficers? What if there was a mistake, and I am on one of these lists? Who do I call to fix that?

Anyway, assuming I'm in the clear, number four has the same problem. I guess I won't be passing along this download to anyone, so I suppose I'm cool.

And finally, I don't know if Oracle should be claiming that its database drivers can be used as weapons of mass destruction, but I'm sure Microsoft would have you believe it to be true.

The case against performance appraisal

Hey look, performance appraisals undermine teamwork. Where did I hear that recently?


Here, then, is what is wrong with performance appraisal. In the era of total quality, performance appraisal supports obsolete values with dysfunctional methods. Specifically, performance appraisal:

1. Disregards and, in fact, undermines, teamwork.

2. Disregards the existence of a system. It encourages individuals to
squeeze or circumvent the system for personal gain rather than improve
it for collective gain.

3. Disregards variability in the system and, indeed, increases
variability in the system.

4. Uses a measurement system that is unreliable and inconsistent.

5. Encourages an approach to problem-solving that is superficial and

6. Tends to establish an aggregate of safe goals--a ceiling of
mediocrity--in an organization.

7. Creates losers, cynics, and wasted human resources.

8. Seeks to provide a means to administer multiple managerial functions
(pay, promotion, feedback communications, direction-setting, etc.), yet
it is inadequate to accomplish any one of them.

While we're enumerating managment tactics, here are two more:

Friday, September 23, 2005

Flourishing mental health

Turns out that if you give more positive feedback than negative feedback, mental health flourishes. Who knew?

Squeeze my lemon 'til the juice runs down my leg

Time for a little role playing.

You're running a software company. You decide that you want to squeeze your lemons a little harder, to turn your assets into high performing worker bees. So you implement a rank and yank scheme.

Let's pretend for a minute that this isn't teamwork poison. Your team members won't be looking for ways to screw each other over, to avoid sliding down the curve. Let's say it works. Your people actually get better at what they do. They start working longer hours. They are more productive. The threats have an upside.

Then what? Six months pass, and it's review season again. The bar goes up. You can't have everyone doing better, because the curve is still there. So you have to ask for more. Now you have a problem though. When does the bar stop? You have a bunch of excellent performers, but you have to penalize some of them, by definition of your stack ranking system. Now you take a few of your excellent performers and tell them that they're not good enough any more. They need to work even harder.

Obviously, this can't go on for long. These (formerly) excellent employees either leave on their own, or they get "gapped out" - yanked because of their rank. The company down the street hires them and congratulates you on having bred a fine developer that you squeezed dry.

Why software sucks

Despite some well-intentioned people, software sometimes sucks. How come? Don't we have good people? Don't we think ahead? Don't we plan? Well, not always.

Scott Berkun theorizes on this topic in a recent essay. In particular, he suggests that bad things get made because of general incompetence, an unclear purpose, unplanned design or poor engineering.

On the other hand, "good things in the world come from people that have the gift mentality. They do care about who they are designing for. They are sincere about trying to build something that will satisfy a person's needs. They are willing to expend time and energy refining their thinking and developing new skills so that when they are finished they can sincerely offer what they’ve made to the world as a good thing. They see their work as a deep expression of generosity and as an attempt to live up to their own ideal of quality and workmanship."

Can people with the gift mentality end up making bad things? You bet. What direction do you think their morale heads when this happens?

There are a number of excellent essays in this collection. Do yourself a favour and give some of them a read.

Advocacy for development?

Here's a novel idea - the project manager sticks up for the developers. To be fair, the article suggests it's self-preservation on the part of the project manager, but we'll take any kind of help we can get.

Thursday, September 22, 2005

Happy "Fucked up Engrish Week"

Hoo boy. [wipes tears from eyes]

I needed that.


But how does that make you FEEL?

A new study finds that blogs are more likely to deal with personal matters than politics or current events, and nearly 50% of bloggers see the activity as a form of therapy.

I guess it's better than yelling SERENITY NOW!

Thursday, September 15, 2005

In the trenches #2

I'll spoil the rest of the "In the trenches" stories by telling you that this is, by far, the funniest one.

It's the end of November, 1998. The U.S. Thanksgiving weekend. We're in Chicago for RSNA and the annual freezing rain festival. We've all had very little sleep for days, and no sleep at all the night before. We fly out of Toronto around noon, and arrive in Chicago an hour and a half later. We catch a cab to the hotel, weaving around a Thanksgiving parade to get there.

We drop our bags at our hotel and head to the show, at McCormick Place. We spend the rest of the day, and all night, setting up. Around 4:30 in the morning we head down to the classroom area to finish the last set of machines. The network isn't ready yet, so we have to wait. John is looking really rough. He hasn't slept for days and he's not feeling well, so we decide to send him back to his hotel so he can get a couple of hours of much needed rest.

The network finally comes up and we finish setting up. We leave around 5:30am, and as we're walking to the front of the building to catch a cab, we hear footsteps behind us. It's John. He's been wandering the building for an hour and he couldn't find his way out. At one point he saw a highway, but couldn't get to it. Why he would want to thumb a ride in this part of Chicago at 5:30 in the morning I will never know. But I digress...

We make it to the front entrance, find a cab and put John in it. We grabbed the next cab and headed to our hotel for an hour of sleep and a shower.

Sunday morning arrives too quickly, and we're back at the show. Steve runs into the marketing folks. They are looking fresh as daisies. One of them gives him a scrunchy face and says, "Jesus, you could have cleaned up a little. What time did you get up this morning?" Steve looks him straight in the eye and answers (the truth), "Thursday."

John wanders in, looking like grim death. We ask him if he managed to get any sleep. "Uh, not exactly" he says. Turns out when we put him in the cab, the driver asked, "Where to?" and John drew a blank. He had no idea what hotel he was staying in. The driver started off down Michigan Ave. Now, there can't be more than two hundred hotels on Michigan Ave, so to narrow it down a bit he asked if John can remember anything about the area. John tells him that there was a Santa Claus parade going on. Of course, this does not compute. John forgets that it's the Thanksgiving weekend, since Thanksgiving is in October for normal people.

The cab driver gets to the first hotel and asks if this is it. John says no. Interestingly enough, this WAS the right one. But I digress...

After driving around for an hour or so, John says screw it, "let me out here". He hops out at a hotel, heads inside and looks for a phone book. It was a Best Western, he manages to remember, and Eric (the company president) was staying there. John finds there are an assload of Best Westerns in the Chicago Yellow Pages. He starts at the top of the list, phoning each one, and asking if Eric is staying there. "No? Ok, thanks, bye." I still don't know why he didn't ask if HE was staying there. But I digress...

After a few Best Westerns he finds the right one. Eureka! He runs outside to catch a cab. The same cab driver is sitting there, knowing John is at the wrong hotel and would be out soon. John hops in and tells the guy to go back to the first hotel they saw. He arrives in time to have a shower and gulp a coffee before heading back to the show.

The next year, John is rooming with me. I suppose this is because I was a responsible person, and could take care of him. Another long night of setup, and we're finishing up around 3:00am. We decide to send John home early again, but not before laughing about the year before. He swears he can find his way out of the building, and that he knows where he's staying this time.

John leaves, and a couple of minutes later my cell phone rings. I answer it, and a voice says "It's the Palmer House, right?"

Yes John, it's the Palmer House.

Now playing...

I have a few Media Player playlists. One's "Upbeat", one's "Mellow". One is "Anger". It needs to have a few more tunes in it. Here's what's playing today:

Neil Young - Powderfinger
Don Henley - The Garden of Allah
Roger Waters - Too Much Rope
Roger Waters - Amused to Death
Pink Floyd - Sheep
Pink Floyd - When the Tigers Broke Free
Roger Waters - 4:50am (Go Fishing)
Pink Floyd - Run Like Hell
CCR - Fortunate Son
Talking Heads - Once in a Lifetime
Blue Oyster Cult - Don't Fear the Reaper

The Positive Impact of Negative Thinking

Maybe I should try to be more negative...

"the biggest risk on any software project is the risks you haven't considered. You can't know the unknown, of course, but you'll do a lot better at risk management if you encourage a culture of responsible risk assessment instead of mindless can-do heroics."

Shock and Awe?

Scoble said to expect shock and awe at the PDC this week. I think he's believing the "weapons of mass destruction" folks...

Here's his scorecard:.

1) Office 12 demonstrated publicly for the first time. Tons of new features and new UI.
2) Windows Vista features demonstrated publicly, including search integration, new performance enhancements, new sidebar.
3) LINQ (Language INtegrated Query). Cool database stuff for .NET developers.
4) Windows Presentation Foundation/E. "E" for everywhere.
5) updates released.
6) Atlas (our AJAX Web development toolkit) demoed for first time.
7) Microsoft Max. A new photo sharing and display application.
8) Digital Locker. A new place to find, try, and buy software.
9) New sidebar and gadgets and new Microsoftgadget Site.
10) Coming later today? Sparkle. A new way to build Windows applications.
11) Coming later today? Lots of server stuff.
12) Coming later today? More Office stuff.
13) Coming later today? Workflow stuff.


1) I use Office 2000. Works for me.
2) Vista? Talk to me when it's released.
3) LINQ. Looks interesting. See #2.
4) Ok, not bad.
5) I'm not sure what this is trying to do, or what it might do better than the competition.
6) I thought smart clients were the way to go?
7) I'll never use it.
8) I'll never use it.
9) Yawn.
10 - 13) Can't comment yet, but probably more of the same.

The last PDC was two years ago, right? And we still don't have shipping versions of lots of the things announced then. We don't even have a service pack for VS.NET 2003, and it desperately needs one. Instead we see videos of folks coding in Notepad. The Notepad fans will be happy that Microsoft eats that dogfood, but it's not encouraging for the Visual Studio users out here.

I know Scoble is paid to hype this stuff, but it's not speaking to the folks I work with.

Wednesday, September 14, 2005

What's wrong with rank-and-yank?

More on the "stack ranking" or "calibration" performance review idea, and why tying performance to compensation doesn't work. Oh, yeah - this is from November 2001.

"At the heart of such pay-for-performance systems 'is the assumption that in order to obtain desired behavior, it has to be manipulated out of people. If you do this, you'll get that,' said Bradbury. 'Constant reinforcement that the reason for doing something lies outside the inherent value of the task itself leads people to measure their self-worth in external terms. It's a form of psychological dependency that is fundamentally unhealthy.'"

Friday, September 09, 2005

What makes a leader?

We have a rich history of trying to become leaders by reading the Harvard Business Review. Strange as this sounds, it doesn't work so well.

Microsoft's Developer Division VP explains what he thinks makes a successful leader.

The "key ingredients for a successful leader.

1. Dream big

2. Integrity

3. Communication

4. Share credit and take the blame

5. Set the right expectations"

Not a bad list. Dream big == vision.

I'd add a few:

6. Charisma. You've got to be likeable.

7. Trust. Your people have to trust you. May be the same as Integrity, above. If you jump up and head out over the top of the trench, you need some followers.

8. Live in the weeds. A good leader needs to be able to dig in and help out. If you lead a development team you have to write code once in a while.

9. Be an advocate for your team. You have to push back on behalf of your team, when you think they're getting screwed.

10. Listen. Know what's going on in your team. Communication goes both ways.

New curling shoes

I went out and bought some brand new shoes, now I walk like someone else.

I picked up a pair of Ultima curling shoes today, from Clean Sheet Curling Supplies in Ancaster. If you live in this part of the world and you need new curling shoes, or a broom, or whatever, you should check them out. Good selection, good prices, great service.

I'll be trying out the shoes in about three weeks, when the season gets underway. I'll let you know what I think then.

The Problem With Configurability

We used to make our application configurable. I'm underwhelming this a lot - we used to make EVERYTHING configurable. Every time we needed to make a call one way or the other, we passed. I think this was partly because the application is used all over the world, and no two countries/provinces/states/etc. do things the same way. It's also partly because we had no real idea how the product was being used in the real world. Even if we did, it was very difficult to find anyone who would admit to being a product manager, and who would take the risk of making a call.

Things are a little better now, in terms of knowing what's going on out there. We've actually done some research into who's using the product, and what they're doing with it. It's still hard to find someone to make a call, though. Don't leave decisions like this to the developers. They'll either take the easy way out, or they'll make it configurable.

Whatever you do, don't leave it up to the users to decide.

Thursday, September 08, 2005

Don't sweat the petty things, and don't pet the sweaty things

What if you held a "who gives a shit?" party, and nobody came? Can you force someone to care about what they're doing? What if you've got a team that is more interested in punching the clock than participating?

Lately it's been like working in a morgue around here. Nobody seems happy. Nobody's talking. We used to have fun. Every Friday afternoon we'd play music. Out loud. Mostly bad disco - K.C. and the Sunshine Band especially. Every time we had a release day we'd play the album Classic Queen. The songs on that album just seemed perfect for a software release:
A Kind Of Magic
Under Pressure
Hammer To Fall
Stone Cold Crazy
I'm Going Slightly Mad
I Want It All
The Miracle
These Are The Days Of Our Lives
Keep Yourself Alive
Who Wants To Live Forever
The Show Must Go On
You could hear the pace of the typing picking up when the fast tunes came on.

We named all our releases. Stupid names, really, and they don't make any sense to anyone who wasn't there, but if you were there, man they are something to laugh about now. Like the time I sent the boss to a tradeshow with the wrong version of the software. Or the time Morgan rear-ended a girl (on the highway). Too funny, but if you weren't there, you're wondering what the hell I'm talking about now.

The point is, we had a ball. We used to stay at work in the evenings. We'd eat here, or go home for dinner and then come back. Sometimes we stayed all night, for an important release. We even had people who weren't developers staying to keep the developers laughing all night long (thanks Matt). And we did all this because we wanted to, not because we had to.

We had a reputation for being the first ones in and the last ones out, for just making things work. I can remember sitting in the basement of the library at UCSF, editing a JPEG that we needed to import into [another vendor]'s system. Everyone else had gone to their hotel, or to eat, or drink. Three of us were hacking a JPEG into a modality simulator, and running a scenario through [a different vendor]'s RIS. We didn't need to be there doing that, but we wanted to. It all worked the next day, and I don't think anybody knew why. But we did, and we felt great about it.

What changed to make us go from a disco to a morgue? I think it started when the triangle flipped. It's something like jumping the shark. We used to say that the people we're responsible to can be drawn in a triangle. At the top is the patient, then the caregiver, then the people paying the caregiver, then our company, then the shareholders. That was in the Before Time. Now, the triangle has flipped upside down. I think we don't care anymore because nobody cares about us. Who's going to stay here all night, to get the satisfaction of being laid off in a numbers game next month, when the sales targets aren't met?

How do we make things better? I don't think you can force someone to give a shit. But remember that silence is not apathy, and it's not non-participation. Let's say we want to pick a team colour. Someone suggests green. Then someone asks, "what shade of green?" You know what? I don't care. Pick any colour you like. Just don't mistake indifference for apathy.

SuperMegaCorp says they like us, and that they're listening to us. Why, just now they're talking about upgrading to a newer version of Lotus Notes, and dusting the place more often, and adjusting the temperature. If we can just get those done, we'll all be happy worker bees. Never mind the petty things like vision and leadership and sound software development practices.

Tuesday, September 06, 2005

Head First Design Patterns

Ok, back to the boring world of computers. Design patterns are supposed to help your project along, right? Maybe not. You can't just pour them into an application because you read about them in a famous book. I'm a big fan of practical software development. What's that?

1) Small teams

2) Well-described requirements, but not a grocery list

3) Intelligent leadership

4) Vision

5) Smart people doing smart things. By that, I mean using the right tool for the job. Need to do GUI work? Use C# or (gasp) Visual Basic. Need to do image processing? Use C++. And so on. This extends to the architecture and design of the application too. Sure, use design patterns where they make sense, but don't just go looking for a place to use patterns because they're cool. They're just another tool.

Back to School

The sad face was on today. The droopy eyes, the heavy sighs. I tried cajoling, "You'll get to see all your friends. You'll meet new people." It wasn't working. My wife trudged back to school today (she teaches at Conestoga College). The kids are excited though - they start later in the week.

The Blyth Festival

In another life, I worked in theatre and radio. I was a sound technician and stage manager at the Blyth Festival for two summers. I met my wife there (our oldest daughter's middle name is Blythe). We go back every summer to take in the season's plays. This weekend we saw the last two - I'll Be Back Before Midnight and The Thirteenth One. I saw Midnight some years ago, and it was just as good as I remembered it. The Thirteenth One is a new play, and one of the best I've seen at Blyth.

From the Blyth Festival web site:

Memory, love, and laughter fuel this beautiful story of Marie Louise, her husband, and their twelve children. The farm is failing, there's trouble with the bank and Marie Louise is pregnant again. Hope is almost lost... when a wealthy neighbor arrives with a proposal that will save the farm at an agonizing cost: she will help the family if she can adopt the unborn child – the thirteenth one. Marie Louise faces the decision of a lifetime. London playwright, Denyse Gervais Regan celebrates solidarity and the power of a mother's love based on the true story of her own life.

Blyth only does Canadian plays, and mostly new ones at that. Each season they premiere at least two, and usually three, new plays. Sometimes by first-time playwrights. You take your chances with this - sometimes you get a lemon, but sometimes you get a diamond, if that makes sense.

This season is just wrapping up, but if you live in Southern Ontario, Blyth is well worth the drive next summer.


Thursday, September 01, 2005

It really is this simple

You don't need to buy into any more process than this. Of course, you need some control over what your people are doing, but here are the three things you must keep in mind:

1. Hire good people.

2. Tell them what you want done.

3. Get the fuck out of their way and let them do their jobs.

Sounds like Software Development for Marketing.