Developing software that you expect to work