Tuesday, July 17, 2007

Managing user expectations

Managing user expectations is really important skill at every level of your career.

At the beginning of a career, you will most likely to answer the ultimate question of
"How long will it take this to finish ?" type of questions. Your manager will ask this to you.

Later as a consultant you will need to answer same question to clients, or as a manager you will need to come up with an answer for your senior manager.

As an entrepreneur you will need to answer this crucial question for cost estimation and bidding.


How long will it take? and by what percent will it be finished?
Should i put an beta version out and improve it as customers use it?
or wait for an stable 1.0 release?

At the root of all these questions lies the expectation management.

Here are some tips i have been employing when i need to answer how long it will take?

  • Try to judge from previous similar experience, if you wrote down your previous work allocation via time sheets on the average you know how long it will take
  • Do a quick POC type development which will not take more than a few days if possible
  • Do prototyping of important use cases and features, (important being defined by the customer) and try to estimate from that knowledge
  • If there are external stakeholders you can't control, estimate with relativity of their work. i.e It should take no more than a week, after we receive design templates from XYZ.
  • If possible, Slice the project to little periods, try to keep quality, time constant and vary the features. i.e We will work on these features for a month. We may not finish all features but we will keep our quality metrics to this level. If you are not satisfied with our work, you can always cancel the contract.
Note that the last strategy is not for fixed price projects. But it works because contractor will work honest to get the remaining big portion of the project. It shields the bidder from excessive unpaid change requests. And you can morph to fixed price later, after unknowns are eliminated.

Also last one has the nice feature of "fail fast". If a project is doomed to fail, it will fail in the first one little slice..

And during project implementation:
  • Don't present the work you are doing as too easy or too hard. In other words, communicate clearly.
  • Don't ever demo a feature complete UI early, because users will expect much more complex screens at the end. This is physiological. Instead show some cool features and build some excitement.
  • Always safe estimate a little more than it will take, this way you will always finish before time and earn some credits.
  • Never overestimate with a huge margin, next time they will not believe and your estimations will be halved by customer or manager. You will lose credibility once and for all.

What are your suggestions for estimating how long it will take?

Monday, July 16, 2007

Accessing dotted attributes from JSTL EL

One of my friends was in trouble with accessing scope attributes from JSTL expression language.
He wanted to use <c:out value="${myDomain.myObject}"></c:out>, to access an object under the key of "myDomain.myObject"

EL tries to retrieve an object under the myDomain key and then tries to invoke getMyObject() on that object. Obviously that wasnt working.

There is no standart way of accessing such attributes. But if you know which scope your object lives in, you can access like this.

<c:out value="${sessionScope['myDomain.myObject']}" />

A while ago Gavin King blogged about his EE6 wishlist, i add this one to my wishlist...

Using the right DOCTYPE

I have been busy updating the look and feel of an extra-net application.
I was using corporate id guidelines, so it wasn't a very creative process at all.
I have tried to use CSS as much as possible without resorting to tables for layout.

Apparently declaring doctypes is very important for all CSS/layout configuration to work properly.

Wednesday, July 11, 2007

Form design with CSS

I say enough to table based form designs. It is quite shocking to learn that you have to do lots of hacks to get form elements aligned properly across all browsers.
Still the outcome is beatiful.

5 tools you can't live without

Lately I am doing some web application restyling, cssing. I find myself using more and more of these tools.

There are some more useful utilities in the link i have included.