tortill.as

brief notes on breaking up large pieces of work

2023-07-20

Sometimes they are called “spikes”, or “technical discoveries”, and sometimes just “features”.

Considerations

The most important aspects are ensuring you have iterations that deliver value and keep the train moving forward. That means whatever you’re designing won’t land in a single high-risk, complex piece. That also doesn’t mean you’re delivering half-baked capabilities.

Big features can always deliver value in a piecemeal way, so you just have to find where those boundaries are. At a very high level my basic breakdown tends to be “Now”, “Next”, and “Later” for bucketing iterations. That’s general enough to make it easy to classify, but sufficiently informative until you need concrete deadlines.

How do you start? Here’s some basic questions I like to ask myself:

  1. What’s the easy part? What’s the hard part? How do we give room to solve the hard part later without painting ourselves into a corner?
  2. What parts are well-defined and what parts are “fuzzy”?
  3. What are the integration points? Interchange formats (HTTP, JSON, gRPC, files on disk, …), authentication boundaries, etc.
  4. How can we deliver value for each step in an iteration?
  5. If this is a paid/premium feature, how does the licensing and/or tiering work?
  6. Can I build this myself? What can’t I and who do I need to involve?
  7. What can help me that’s available off the shelf? Don’t use a dependency to implement your core business.
  8. How do I measure success? How do I measure failure?

Templates

GitLab has a few high-level templates that can help out too (Note these are the plaintext links since much of the docs are markdown comments)