We’ve explored a long list of ingredients that are critical to successful software development.
Start with a small group of smart programmers. Fertilize the team with a strong culture of humility, trust, and respect. Lead them as a servant, empowering them to collaborate and make good decisions. Give them water, sunlight, direction, and intrinsic motivation as needed. Protect them from negative influences—destructive behaviors (or environments) that threaten the culture and the ability to make progress. Bake at 163°C for six months, and you’ve got some great software. All done, right?
A lot of programmers stop there. They write software for themselves, are pleased with the end result, and then declare victory.
Unfortunately, that’s not how the real world works. “Good software” is an overly narrow definition of success. If you’re trying to pay the bills (or simply boost your résumé) you also need a lot of other people to use your software and be happy with it. The software development process doesn’t end with throwing a product over a wall; it never ends, in fact. People use your software and you need to react to them, improving the product over time. If you don’t learn how to master this feedback loop your software will die.
We’ll examine three general phases of user engagement in this chapter. First you need to get users to notice your software—are they even aware that it exists? How do they perceive it before they walk in the door? Then you’ll need ...