I used to think one of my biggest problems was finishing projects. Now I realize that the real problem is lack of specific progress toward a goal. I may never really finish all (or any) of my projects, but if they’re worth doing, I can work on them more productively.
Productively means that I need to work most on the pieces that will have the biggest or most important impact. That’s not to say that I’ll avoid maintenance work, but that I need to balance maintenance work with progress work. I may only clean my kitchen floor once every two weeks, but I have to spend a few minutes keeping it clean every couple of days.
Also, it’s more valuable to do something than to plan to do something. If there’s something I can do in a minute or two, it’s worth doing then and there, rather than scheduling it somewhere in my mental task list where it can crowd out other important things until future important things bury it.
Finally, regular progress is vitally important. If I let my office go too long without tidying, it’s a big job. If I tidy a little bit every day, it’s much, much nicer than if I did a big cleaning every couple of months. It’s also easier for me to focus on progress goals if my maintenance goals are in good shape.
Generalizing this to free software projects and communities is easy.
Without further ado, here are my seven rules for Just Finally Doing It!
- Untested code isn’t done.
- Unreleased code isn’t done.
- Undocumented code isn’t done.
- Set many, small, specific goals.
- Simplicity gives you more options than complexity.
- Do something every day. Finish something every week.
- One feature finished is better than ten features planned.
How do *you* meet your goals?