designing software requires knowing how to program.