Complicated programs are far easier to write than straightforward programs — the exact opposite of what you’d expect. It’s easy to write complicated programs because you reflect the complexity back onto the user; you force the user to make all the hard decisions.