Monday, May 21, 2007

Fighting Perfection (Task Management)

While watching an amateur basketball game between police and firefighters, I saw a player try for a three-pointer. He failed. In fact, it wasn't even close. I bet he could have made the standard two-point shot though!

I'm trying to teach my son how to keep a clean house. When I give him task lists, I break a room down into specific detailed chores, such as 'polish every piece of wood'. I also indicate that chores not on the list should NOT be done, unless I am asked (read: change request). If the floor gets mopped every day, there just isn't time to take care of all the other areas. We can't polish all of the cupboards if we have spent time re-organizing the pantry, AND have mopped all the floors that same day.

I have a natural tendency to want to do it all, to want to take any task to perfection. This is not necessarily a good thing. I have to identify what is FEASIBLE, and force myself not to go beyond that, or else other tasks/chores will not be completed. Lately, I've been trying very hard to remind myself that I can come back later, and do it up with awesome flair----after all the basics have been knocked out.

The words "Change Request" sound ominous to me, and perhaps to other software engineers. We know how to write quality software, dammit. So when we are reminded to stick to a specific list of tasks, and other items seem absolutely necessary, we have to fight with ourselves. We must calmly stand back and identify what may actually need to be added to the plan. We must be truthful with ourselves; be able to handle reality and let go of unnecessary enhancements to the tools we are writing.

Skeleton code (non-functional code-like language that guides software development), is an excellent time-management tool. Laying out the what and where, before the how, can help corral our natural desire to do it all, and buffer the drive to do it superbly.

Any other tips on taming the perfection beast? Let me know.....

1 comment:

Adron said...

One thing, check out the "graphical" development tools of WCF, WWF (Windows Workflow-whatever the acronym is), WPF and the other "design diagram to code" generation foundations/factories/whatever they're called.

They help keep things organized (especially from the graphical design perspective) and at the same time give you the skeleton code. It's kind of a two for one type approach and at the same time it usually can help a person keep from trying to get all inclusive if they can actually see the specific scope and designs they're working with.

Just jumping into code immediately places one into the "do everything perfect all the time" scope, which equates to eternal scope creep and frustration.

Post a Comment