Friday, June 22, 2007

Not my problem (I wish)

It can suck sometimes to be left working on a project after the original project manager has left the company. All their mistakes and oversights become your property - even the ones that are invisible until the fan is at full speed and the excrement is in flight.

Customer: “We tried to use the system today with the PC disconnected from the network and it does not work.”

Me: “No I don't suppose that it would. It needs to connect via the network to its [hardware device] at all times.”

C: “Well what about each year when we sell things outside of the store with no network?”

Me: “I don't know.”

C: “Why didn't you think of this before?”

Me: (Because it's not my job? How the fuck should I know? Maybe you should ask the guy who is not here anymore. Maybe you should ask why we don't have a project manager at all?) “We will certainly have to look into that.”

C: “You realise we need this to work by [the day two days from now] don't you?”

Wednesday, June 20, 2007

Output filter!

A corollary to the input filtering rule:

Couch your demands in terms that will make your actual desires apparent to the person whose assistance you are soliciting, rather than explicitly telling them what to do.

Let them work with you to solve the problem. Explain what effects you would like to see rather than how they should act. Let them figure that out for themselves.

One, they are probably better qualified than you to judge what they really need to do - assuming that you are involving them because it is their area of expertise.

Two, people are more likely to want to do something if (they think) it was their own idea to do so. Rather than looking at your demand and defensively trying to avoid change, the impetus for the action comes from within and they will likely feel empowered in its performance.

A, B, C

What part of “it has to done in the order A then B then C” do you not understand?

First you do A. Then later you can do B. Finally, when A and B are done, you may do C.

“Okay so, I have not done A yet, but B is done. Can I just do A now then C?”

Nooo! You have to do A first, then B then C.

Input filtering

One important difference between working with a boss and working without one is how you think about what you are asked to do.

Normally when you get a demand from you boss it comes with an express or implied priority, you slip it into your schedule, do it, and report back. Sometimes you may have some say in modifying the priority, sometimes you may question the validity of the task, but mostly you just do it.

Working now without any direct boss, just vague priorities from on high, this sequence of “receive work unit”, “execute” is often counterproductive. I knew that some filtering would be required, but I did fully understand the extent to which one must think about what people are asking for, why they might think they want that, hence what they really want, weigh that with who they are, and decide what I should give them. People seldom take the time to explain why they want something, and often what they want is not the right thing.

I need to focus on getting them to explain the problem they are trying to solve rather than let them specify which actions they think I should take. From there I can understand what really needs to be done (perhaps nothing) and help them to understand how this new action actually solves their problem. Only then can we decide on who will do what and when.

It is the same as with any problem solving. It is important to start with the definition of the problem - particularly when you are asking the help or advice of someone else. It is important not to colour their thinking with your supposed framework for the solution.

Friday, June 01, 2007

Hungarian notation

This (useful) notation prefixes each variable with a label or tag indicating the kind of information that is being stored - what is its purpose.

KIND. Not type. Please, either go and read the original (Simonyi) specification of Hungarian or just don't use it.

Calling your variables bSomething or iNumber or lpszBlahBlah is worse than useless.