Software engineering is cursed with uncertainty. When we’re solving big new problems with software, if the exact problem has been solved before, we could just reuse the solution that already exists. Frequently though, the exact problem (or combination of problems) hasn’t been solved before, and we need to come up with a way to solve it. Have you felt that feeling? That moment of uncertainty, where you don’t know what the solution will look like.