Thursday, March 8, 2007

Team Design

The other day I was wondering what are the flavours that are necessary for a good team to function. Let us say I want to start a company and want to choose some colleagues ... people of the same age as myself what will I be looking for in them, or even for a company project. What are the essential qualities that should be present in a team ?

Now one can go at lengths to explain how to pick up the right team and what kind of qualities should one have ... let us keep it for some later time. Let us say that there can be three primary drivers for any project. The drivers come from the problems that a team faces in implementing anything. Let us consider a generic engineering problem and expand it on a managemnt perspective.

To start on any problem one needs good technical skills. So you always need a few guys or at least one person who has good technical skill. The skill-set may not be so important but the ability to evolve and to learn new stuff fast is really important.

Now typically any implementation is faced with hurdles apart from technical. These can be tedious political processes, long corporate cycles or hostile market dynamics. Situations where a person's skills at dealing with people with the right attitude is required. People with attitude are very important to a team which has to do a lot of public dealing. You need to know when to show the right emotion to the right guy.

The last key point is to have feelings about the work you are doing. If people do not feel for their work they can never perform in it no matter how much brain or attitude they carry. One always need to have someone who believes that they have a great idea or someone who believes they are going on the right path. Somebody to move the flagged souls of their peers.

To sum up the three things that make a good team body are brain, attitude and heart. Whaddyasay ?

Wednesday, March 7, 2007

Upgrading at the speed of thought !!

The other day I was thinking about designing systems that are upgradeable. While working on the alumni project (it is basically a social networking site) several time sI had this thought of making the design upgradeable.. so much so that you think of a feature and u can implement it in a few hours.. say 2-3 hrs. Thats what upgrading at the speed of thought should be like.

It is certainly difficult to make systems that are so upgradeable.

.. and with the way most people use languages it seems more so impossible now !! Lots of code and long call stacks one leading to another and hell of code to understand.

(I started this post long ago .. its kinda incomplete)