Saturday, February 14, 2009

Who's insane?

Why does the government insist on spending the money it doesn't have?

I want to share an interesting article that reminds me of that quote from Einstein: "Doing the same thing and expecting a different outcome is the definition of insanity".

Saturday, February 7, 2009

Harder than it seems

I want to lead a team on a successful business venture. That is my long term professional goal. Loosely defined like that it seems so easy, but I am quickly finding out that it is much harder than it seems. I have been working in my new role, with much more responsibility, for about a month now and I have come to realize how hard this is. Leadership has many dimensions, such as strategy, future planning and motivation. The dimension I have been worrying about recently is management: people and project management.

Although people and project management go together - because people are the ones who work on projects- I will focus on project management on this post. One of the things that I have struggled with the most in recent weeks is setting appropriate timelines for a project. It is not hard for me to set timelines when I am the main performer, because I know my strenths and limitations, and if necessary will stretch myself to meet my self-imposed deadline. Setting timelines for a project where the performers are others is a totally different story. Eacy performer will have his own goals and motivation (or lack there of), skill sets and experience. Furthermore, if I have never performed the task that I am creating the schedule for, I don't know how long it would take me to do it, and I can't ground my estimates.

I have found a few things very helpful when setting expectations for a project, and they mostly center around communication. They range from attitudes (such as putting your self in the shoes of both the performers and the stakeholders) to pieces of software (such as MS Project).

The first thing I learned, and have been trying to do, is to get the assessment of an expert. IF your project is to develop a piece of software, then look for someone who has coded and tested software in the particular language you will be using. If at all possible you want someone who is an outsider to your project to ensure an unbiased opinion. I find that people are usually very willing to help, especially if you are in the same department or company.

Another important step in the process is to clarify expectations with all the stakeholders involved and make sure they agree. Maybe a "successful" project does not require you to deliver all items from A-to-Z, so you want to know exactly what is expected. Furthermore, if you are in charge of the project you want to drive a hard bargain between what is really important and what is just icing on the cake. Making the 80-20 calls explicit to everyone (higher-ups and performers) is very important for a successful project. I have been pushing the team very hard to meet a deadline and also pushing back on the expectations of higher ups in one of my current projects, until I realized (just yesterday) that their definition of "complete" was different that mine and that we were much closer than I thought. This was a terrible flaw in communication, but I'm glad we all re-aligned our expectations.

Lastly, you need to be explicit about the work that each individual needs to accomplish. Everyone has to know exactly what they are responsible for and when the due date is. Some people require more detail around expectations that others, and this can be hard to provide when you are unfamiliar with the details of the work, wich you should be. Creating a project plan with specific tasks and deadlines is a tough job, and sticking to it is even tougher, but at the end each week/day you can look back and know exactly where you stand agains your project plan. This way you will quickly realize when you are slipping and do something about it.

It is important to note that these timelines should not be created in a vacuum. You have an assessment from the expert on how long it should take, know exactly what the deliverables are, but should always consult with the performers themselves whether or not the expectations are realistic. It is not fulfilling to have someone impose timelines on you, and it is also not satisfying to have people underdeliver and then tell you "You never asked me if I could deliver X in two days".

For this particular project we are supposed to be using the Agile methodology, so there is not an explicit progression of tasks, and things kind of just get done and then we assess the accomplishments and iterate. It is a very popular methodology in software development and my guess is that it works well there because of the young and creative types doing the works. Personally, I like to work with a very explicit set of goals and timelines (which I am admittedly not so good at creating) against which to measure progress. Maybe I just haven't spent enough time trying to study and understand the Agile method, but so far it hasn't worked for me.
In essence, good communication is the key to setting timelines, and plays an important role in delivering them.

Next time I want to talk about developing team members to reach their full potential and managing extremely smart/talented people (Which I am trilled to be doing now).