Sunday, January 01, 2006

Resolutions, Goals, and Process

Happy New Year to all! This being my first post for the new year I thought that it might be a perfect time to write about setting goals. First, lets look at some definitions.

goal
The purpose toward which an endeavor is directed; an objective.

resolution
A course of action determined or decided on.

process
A series of actions, changes, or functions bringing about a result.

This last word, process, seems to be one of the most disliked words in the workplace. It ranks up at the top with phrases like "sensitivity training" and "downsizing". It is important though to have process. Process, per the definition, is the journey between goal setting and goal completion.

Resolution #1 - Take process off my bad word list, put it on my good word list.

We all follow some process, even if it isn't written down. Some may disagree, for example, in The Pragmatic Programmer the authors talk about programming by coincidence. They define it as relying on luck or accidental success. I don't think that this is accurate though. In Tom DeMarco's book The Deadline, he talks about how managers use their gut, and I think that programmers do the same thing. Programmers draw on their experience of knowing what works and what doesn't, and even without a formal design document can build a good system.

Don't get me wrong though, I am not advocating programming without some sort of design. What I am saying is that programming by coincidence isn't really a coincidence.

In Tom DeMarco's book he discusses how to explore your gut feel for a matter, and define it, write it down on paper. He talks about creating models based on your gut feel, then use these models to make educated guesses. The benefit of putting your gut feelings on paper is that you can test these feelings, and tweak them based on their accuracy.

Resolution #2 - Define some of my gut feelings on paper, use them to guide my work, and adjust them based on real world results.

The last part of that resolution, the part that talks about adjusting based on results, is the hard part. The only way to do this is to take time out of your busy schedule and discuss the history of a project after it's completion. Some use the term "post mortum", but perhaps a happier name like "post project reflection" is better.

Perhaps you have heard the phrase "Those who forget history are doomed to repeat it". The same goes with programming projects. If you don't take the time to reflect on the results of a completed project, and determine what was good, and what was bad, you can make the next project that much better.

Resolution #3 - Perform post project reflection, keep a history of what worked, and what didn't.

This brings us full circle, to the good word, "process". Process is about the journey, it is about defining the steps to meet our goals.

Resolution #4 - Define the process that I will follow to be able to document my gut feelings, and improve upon them. Define a process that I will follow to document post project reflection so that I may learn from past mistakes.

These are some hefty goals, but with some work I might be able to meet them.



"goal." The American Heritage® Dictionary of the English Language, Fourth Edition. Houghton Mifflin Company, 2004. Answers.com 01 . 2006. http://www.answers.com/topic/goal

"resolution." The American Heritage® Dictionary of the English Language, Fourth Edition. Houghton Mifflin Company, 2004. Answers.com 01 . 2006. http://www.answers.com/topic/display-resolution

"process." The American Heritage® Dictionary of the English Language, Fourth Edition. Houghton Mifflin Company, 2004. Answers.com 01 . 2006. http://www.answers.com/topic/process

No comments: