If you’re at all like me, you’ve got upward of a few gazillion ideas for projects bouncing around in your notebooks, task management tools, and/or head, and you never get enough time to bring them all to a successful conclusion. I hope you’re not like me in the sense of having many of them half-started and silently nagging you to finish every time you wander into your garage, office, or ~/work directory.

For me, I’ve noticed that a lot of this ultimately goes down to losing track of what I came do. It usually goes something like:

  1. “I’ve got a day free. It’s time to add that feature to the Foo project.”
  2. Run the specs and get 971 failures, clustered around 12 core error messages for 3 different gems.
  3. “Oh, right, I upgraded [something] … well, let’s get everything working again. It’s the right thing to do.”
  4. Three days of sweaty debugging, learning, and relearning pass. This includes learning how to tune my shell prompt, tweak Rakefiles (like the one for my blog to make a new post), and do a lot of other non-essential things.
  5. “Well, the specs run clean again and I learned a lot. Guess I’ll add that feature next month.”

Don’t get me wrong; I like the learning, and all the things I end up doing improve some aspect of my life, but I don’t like the unpredictability, the time that I sync into recovery (and not my family, or other projects like BBQ … mmm, BBQ …) and inevitable letdown of not getting the one thing done that I came to do.

I’m going to try a different approach. I’m going to try writing a very short, very lightweight spec for projects that I intend to do, now or sometime in the future. The format will be something like:

	PROJECT NAME

	Goal: A single sentence describing the intent.


	How I'll do it:

	- A short list of high-level steps
	- Each something I can measure the end of
	- And each of which can provide me focus to finish it


	I'll know it's done when:

	- A short list of acceptance criteria
	- Each being something I can demonstate, preferably automatically
	- And bonus points if I can automate the acceptance tests quickly


	I'll need to verify:

	- Things I believe to be true
	- That I need to have working before I can get started
	- So I don't waste time hoping that it all works out


	I'll need to learn or relearn:

	- Tech I don't already know
	- Tech I've used before but has changed a fair bit since last I dived in
	- Other skills I'll need.

I’ll publish some here, under the SPECS nav above. We’ll see how it goes.



blog comments powered by Disqus

Published

31 December 2016

Category

hacking