designing software requires creativity and patience