# What is question-driven development?

Question-driven development is a technique I use to manage context-switching and getting "unstuck" in software development tasks.

It consists of a list of questions I have about a task which I tick off when I find the answers to them.

Here is an example for a task I recently did:

- [x] How do Twitter handles get saved?
  - Also as a `Contact`, but with the `Twitter` type.
- [x] What other contact types are there?
  - youtube: 1
  - linkedin: 3
  - facebook: 4
- [x] Types to add:
	- [x] twitter
	- [x] facebook
	- [x] linkedin
- [x] Add `voice` to `cell` and `phone` numbers
1
2
3
4
5
6
7
8
9
10
11

Usually it ends up being a combination of a list of questions and a to do list.

It serves the purpose of:

  1. Breaking a task down into manageable steps.
  2. Identifying what uncertainties I have about a task.
  3. Making progress with a task even when I don't have the full solution yet.
  4. Keeping track of what I've investigated so far (especially useful when doing bug investigations!).
  5. Reminding me where I was after context-switching.
  6. Reminding me why I made certain decisions.

Thank you for reading my blog! If you enjoyed this post, you're welcome to subscribe via RSS here (opens new window) (I can recommend NetNewsWire on iOS).

Last Updated: 9/10/2025, 2:13:01 PM