Consistency vs Choice

16 02 2009

I would like to share in this post one of my conclusions based on the projects experience.

It is very common situation when something can be done in more then one way. For example, you can have List screens where some lists of items are shown. And you can have a small feature there: search by the item name. There are at least 2 distinct ways how you can design the interaction:

  1. User types in a part of name and then clicks some button or icon. Search is applied then.
  2. User types in characters and as he types the list is continuously being filtered

The question that will definetely appear at some moment is which alternative to follow.
Some people can just not notice this fork and will implement some default solution. This way is not good since there is 50% probability that your users will ask you one day “Hey Jack, why didn’t you choose the other way?” and you’ll need to redo.

If you are more smart you will smell the fork and will ask your customer beforehand: Hey John, how would you like this to work?

That will work but still this is not the best solution.

The best one is to have in your application 2 similar List Screens and implement one way on the first screen and the second one on the second. Then leave it as it is. Let the John-the-Customer touch it, play with it and he will come to you one day and select the solution fitting his needs the most.

You may think there is something wrong with such approach, a need to do double-work, but it is easy to smooth out everything when you have different versions. It actually degrades the probability of those 50% when John ask you reimplement the stuff in absolutely different way.

To sum up the bullshit above: consistency always wins the battle through the powers of choice :)





2 brains are better than just one

12 11 2008

I haven’t been here for a while. Just was too deep in my work and only today allowed myself to take a look what’s going on in the blogs of my friends and make some comments.

Because today was a really good day. In my current project I have a release on Monday and still in my favorite (but most complicated) module there are few really dirty bugs that makes this module to look not that nice as it might be. I came today to the office somewhere at 3 PM with a strong intention to fix one of the problems and a belief that I can really to this. My current understating of Flex allows me to analyze almost any piece of code written by any developer and make there needed changes in case of trouble. I’m lucky that all guys in my team are quite autonomous and can take almost any task by a simple input (sometimes I use a sticky yellow note, write there a short description and stich to the guy’s table) and start working on it without disturbing my concentration on some more difficult thing. So thank you guys for this, I love you all.

There’s a one good mate in my team, Max, who is my primary force for that module development. I worked out few necessary management thigs and then we sat together with Max at my laptop and 4 hours were analyzing, debugging and fixing a trouble. We won. I realized this day few very important things:

  • there are tasks in software development that are unarguably better to do with a friend, not alone. I would not be able to fix this bug without Max, definitely. And he was not able to fix it without me in few previous tries.
  • sometimes quite simple (at the end when you find it) problem can cost you really a few days of work to fix.
  • even BEST, ingenious developers mistake
  • fixing bugs can be just a good quest, a good game and a lot of fun if you perceive this activity positively
  • diagrams and visualization of complex activity chains helps invaluably when you try to understand a complex mechanism created by other person. We created a set of sequence diagrams for different functional flows of that module and then benefited a really from having this before our eyes. Max really cool in doing this, he showed me that Enterprise Architect can import Flex packages and convert it into workable items in diagrams. Once again I appreciated how good tool EA is.
  • sometimes you need to sacrifice personal life and some fun to get the things done at your work. Today I planned to meet one girl, an old friend of mine, who I have not seen for a while. But at 6 PM I was still in the middle of the task so I just called her and told “Sorry baby, we can’t meet today, I have a work I must to do.” I felt that this was not a thing she wanted to hear but she’s a good friend and tomorrow will be ok.

So: if you see that some person in your team can’t do some thing despite of working hard on this – go and help. If you trying to do something and it doesn’t gets working – go and ask for a help.





No panic

19 09 2008

Just a notice from yesterday work:

The amount of panic when a particular person faces some crises and tries to resolve it perfectly measures the maturity level of this person.

Emotions are good and useful things but only in case when they are positive and constructive. Panic doesn’t fit into this pattern.

I had a chance to work with both types of people: those who always stay calm and composed when some abrupt situation catches them in the open, and those who are not able to act in constructive way at all. As far as I’m not ideal in this area yet it is always fascinates me to contemplate and learn from those falling into the first category.





Verity

18 09 2008
  • Search for new friends instead of wasting time fighting with old enemies. Look up for people who like you and want to get closer, try to build relationships with such people. Don’t spent your precious time for trying to persuade or change people who don’t like you and who are not willing to change in better way.
  • Don’t be greedy for a knowledge. Knowledge is not the most important thing you need. Hour of a good sleep or walk in the park or being out in the nature or with your friends adds much more value then hour of reading. The thing you could learn today but postponed for tomorrow you can already treat as learned.
  • Don’t live and act and think in terms of Present or Now. Do routine things Now but think and strive for Future. Future determines what you should do now, not vise versa.
  • If you feel inspiration and desire to share something with others just fix it on the paper and revise next day. Today inspiration will be tomorrow wisdom.
  • Contemplate people: good people tend to change from “egocentric” lifestyle when they always aim to show how good they are to other ways where “how nice and noisy you are” is not so important for you anymore.