Archive for August, 2006

How many times can you make a first impression?

August 22nd, 2006 by Cedric Savarese

If you guess that one, I’ll buy you a beer.

When it comes to web applications, Richard White‘s answer is one.

“You only get one shot to impress people; don’t blow it because they won’t coming back next week to see if you’ve improved.” (link)

This is one of the lessons he draws from the demise of his employer, Kiko. Because of a less than perfect first version, nobody seemed to notice the much improved 2.0 release. With a disappointing adoption rate, the founders eventually lost their motivation and called it quits.

While it seems like a strong argument, I don’t think it is actually the right conclusion.

Whatever your target market may be, your pool of potential customers who have never heard of your service is much larger, by several degrees of magnitude, than the people who actually tried it. You may leave the early adopters unimpressed but if you can learn from them and focus on your next users, then you get another chance to make a good first impression.

So how many times can you make a first impression? About 1,043,000,000 times, which is roughly the number of people using the internet these days.

Why I write

August 15th, 2006 by Cedric Savarese

Writing does not come to me easily. Days slip by and I find myself spending more time on things I am comfortable with (like coding) and less time on the things I know I should be doing. Writing on this blog is one of the latter, here is why:

  1. Writing about your work and ideas helps you keep your focus and organize your thoughts.
  2. Writing is a way to reach out and invite opportunities.
  3. Writing (eventually) raises your profile and visibility.
  4. Writing is like everything else, the more you do it the easier it gets.

My goal is to spend a hour each day writing. Since I am a very slow writer (and english is not my native language) that will probably lead to only a few posts a week, but hopefully they will be interesting and somewhat unique.

I must confess, I used to be a sloppy programmer.

August 8th, 2006 by Cedric Savarese

VespaThere is something exilharating about speeding on a Vespa through the boulevards of Paris at 3 in the morning. The thrill of speed, the empty streets, the cold wind – but most of all, that fact that you are on a rescue mission.

Well, not the glamorous type of rescue. Just the kind that can only fall on the shoulder of a geek: Saving your fellow collegues from the mishaps of a buggy mission-critical application.

I did more than my fair share of it and it was fun. That was probably as close as I will ever get to feeling what a fireman must feel on his way to a fire.

Except I was the pyromaniac too.

For a long time, I considered a test environment some sort of superfluous luxury reserved to engineers with too much time on their hands. I fixed – and created – bugs directly on production applications because it was easy and fast. I designed systems that were like ticking time-bombs (who knew hard-drives had limited capacity?)

I didn’t know better and I learned the hard way.

Now I am running a commercial web-based service and I am not looking forward to middle-of-the-night emergencies.

The truth is that I am still a sloppy programmer, but I have taken steps to protect my business from myself.

  • The production site is checked out of the repository and never modified directly.
  • The development site is also checked out. It is the working copy.

A typical update of the site works like this:

  1. FTP changes to the development site.
  2. Tests in the development environment.
  3. Commit changes to the repository.
  4. Update production site from the repository.

The commit operation is neither quick nor easy – intentionally. I use subversion clients like TortoiseSVN for other projects, but not for my work on the Form Assembly. To commit I first need to establish a VPN to the server, then open a terminal session and enter the command line to commit the changes.

It takes long enough that I am not tempted to commit changes prematurely. I get to think twice about what I’m doing.

Then I can update the production site from the repository. That is just one more command, and one more chance to reconsider what I’m doing. I purposely removed the FTP access to the site to force me to go through the version control system.

Bugs still manage to find their way in the application, but I feel much more productive and empowered knowing that I have a safety net, a log of all my changes and a safe environment to develop.

I am still looking for ways to improve my procedures, so feel free to chime in if you want to share your own experiences and setup.

I know of something else that only engineers with too much time on their hands use – Test Cases. One day it will strike me as the new indispensable tool, hopefully before another emergency ride on a Vespa is needed.