designing software requires intelligence