Most software ideas fit into one of two buckets:

  1. Take a manual process and use software to automate it.
  2. Do something that no human can do, but computers make possible.

The second bucket is where most of the fun new ideas come from. But the first one is where most of our day jobs come from. Are you doing something? Could a computer do it instead?

My current favorite example is unit testing. Writing software is basically a two-step process:

  1. Write some code
  2. Run it and see if it worked.

If item two has any complexity at all, it’s better off done by the computer via a testing program. When done properly, a program should become more stable over time, as every time a bug is fixed, take whatever steps are needed to ensure that it works and turn them into a regression test.

Or you can manually check everything every time. But I’d rather the computer do that for me.