Archive for December, 2009|Monthly archive page

Let’s Actually Deliver!

The whole purpose of software development is to deliver working software, so I am continually amazed how many people in the process do not want to deliver.

  • QA complains about every little bug
  • UAT complains about every little bug
  • Customer complains about needing training

Apparently anything less than perfect software is not acceptable by these folks.

Sorry, guys. Perfect is going to take awhile. In the meantime, why don’t you take this release which is miles better than the previous?

Perfect is the enemy of the good. Often the cost-benefit of perfect shows that it is not worth it. Spending days of programmer time to save some admins a couple of seconds is value destroying.

Even if you spent the time to get to perfect, you will find that the definition of perfect has changed. Look at Microsoft Word – 15 years in development comprising hundreds, if not thousands, of programmer-years and still not perfect. Of course, the current version would have been seen as spectacular 15 years ago, but today people still find things to complain about. 

Duke Nukem Forever fell into this trap – trying to be the perfect game when the definition of the perfect game constantly moved.

The criteria should be, is this release a step forward or a step back? If it is forward progress, then deliver!

Types of Problem Solvers

I’ve run into these types:

  • Satisfizers
  • Maximizers
  • Optimizers

Satisfizers stop after finding an acceptable solution. Some do it because they are lazy – “I was asked to fix the problem and this spagetti code fixes it.” The others do it out of egoism – “I came up with this wonderful solution and there could not possibly be anything greater than my genius.”

Maximizers latch onto one criteria and knocks it out the park, totally ruining all the other criteria. Does the solution need to be flexible? “Great, lets have a meta-data driven solution with 3 ways of indirection! Not maintainable or high performing? Not important!” Sometimes I think these types think cleverness is an important criteria – one that needs to be maximized. 

Optimizers carefully consider multiple alternatives. They weigh the pros and cons of each to find the one solution with be the best combination of factors. Of course, this takes some time. And actually considering the cons of their ideas means facing their own imperfection. I can see why few do this.

What have I missed?

Maintain Pressure

Intensity is the price of excellence. 
– Warren Buffett

In The Snowball, Buffett makes this statement many times. And author Alice Schroeder makes clear that price is paid two ways – by Buffett devoting almost every waking moment of the past 60 years to making money and by those who have to work with him. Buffett is compared to the sun – nice and warm from a distance but you don’t want to get too close.

While we don’t want to be at Buffett level, excellence requires intensity. And intensity can only be maintained in an pressurized environment. Even if someone has inner-drive, it is no good if no one else will work with that person. It is a blow to the ego to have mistakes pointed out and to have seemingly clever solutions rejected. Without pressure to tilt the playing field, excellence will be outnumbered and attacked by the lazy, egotistical, and jealous.

Without pressure, the cream does not rise to the top.

Power without responsibility causes corruption because without responsibility there is no pressure.

Sure, there must be time to relax and recharge. But don’t coast.

Why iPhone?

I’ve joined the in-crowd in one aspect last week – I got an iPhone. I’m enjoying it immensely.

However, most of the things I’m doing on it – surfing the web while waiting for the kids to brush their teeth, listening to music, replaying Go games – I could have done on my 5-year old Dell Axim PDA. If I’m enjoying the new iPhone, why was the Axim sitting aside for most of the past couple of years?

  1. While I liked the Axim, I just forgot about it in all my busyness. Once it got set aside, it stayed aside. The iPhone is also a phone which I tend to carry around.
  2. Technology has improved over the past 5 years so the iPhone can hold more and process faster.
  3. The iPhone does have few killer features that the Axim did not – GPS, cellular data downloads, and motion detection.
  4. There are lots of free or cheap apps that are of some additional benefit.
  5. The iPhone does have a better user experience. The Axim ran Windows Mobile and used a stylus which was fine. But the iPhone is distinct.

Apple famously failed with the Newton a decade ago, it just seems now is when all the pieces were finally ready. Items 1-3 are just improvements in technology that are available to all competitors.

Item 4 can probably be credited to the App Store innovation. There were lots of apps for the Windows Mobile – after all each new environment is a new land grab for developers – but there was not a central place to find them. And each developer had to setup a credit card payment system so the prices were higher.

Item 5 was probably Apple’s main contribution and may be the advantage of controlling the complete vertical. The Axim was built by Dell running an OS from Microsoft. Neither one owned the user experience so could not aim to maximize it.

Item 5 also speaks to the importance of design generally in software design. Windows Mobile was functional and usable, but it did not have ‘cool’. My Sony Reader is functional and usable – by an engineer. When a friend asked about a e-reader for his mom, I had to recommend the Kindle because it is so much easier to download books.

When creating software, it is so easy to concentrate on maximizing the features and stuffing as much as possible on each and every screen. However, the most successful software will concentrate on letting the user easily do what they want to do most of the time. It took digging through 3 menues to connect the Axim to my home WAN. The iPhone asked to connect when I first tried to go online at home. If my Axim was easier to use, maybe I would have been raving about it 5 years ago. 

Unfortunately, when you are knee deep in the weeds discussing features you are in the worst place to design the user exerience. It takes fresh eyes and a bit of idiot-user to see the rough edges. The iPhone shows why the effort is worthwhile.

Listening?

Have you ever talked to someone where they look at you intently while you are talking, nodding occansionally, maybe even grunting a bit? You thought they were listening but later they act in direct opposite of what you were talking about.

Were they listening but not telling you they disagreed? Were they even listening?

What is the difference between listening and simply not interrupting?

I have to say, I was impressed with the looking at me intently while I talked. I thought this person was really interested in what I was saying. But like any fake – it only fools for short while.

How to Disagree

As I pointed out in my earlier post, often people get stuck on arguing whose solution is better. It does not really go anywhere because

  • they are really solving two different problems, and
  • they are not even listening to each other – just listing the benefits of their own clever solution

 The way around this standoff is to

  1. Tell the other person the benefits of their solution. This will shut them up because they see that you finally understood what they have been trying to tell you.
  2. Then tell them the problem with their solution.

Notice that nowhere does it say to describe how your solution is way better. No need to even mention your solution. Just list the problems with the other solution. Either the other person will deny that those are indeed problems, in which case you can address the real issue – that you disagree on what the problem is – or they will agree that their solution is imperfect which should lead naturally to a discussion whether there is a perfect or more better solution.

By just insisting that your solution is better (and thus you are smarter) will get you nowhere. But by continuing to list problems, the other person is challenged to solve them and will then discover your solution (or perhaps a better one) themselves.

And then you agree 🙂