designing software requires creativity