People who haven't written large programs think that writing software is easy.
All you have to do is break a big problem into smaller problems until you have
something so small that it's easy to program.
The problem is putting the pieces back together. If you've only written small
programs, you haven't had many pieces to put together. It's harder to put the
pieces together when you write a large program by yourself. It's even harder
when you work on a large program with other people.
Synthesis is harder than analysis. Or as Perdita Stevens put it, integration
is harder than separation.
The image above is a screenshot from herkeynote
at the [RC2020](https://reversible-
computation-2020.github.io/program/) conference on reversible computation.Related post
: [The cost of taking things apart and putting them back