Complex systems can evolve from simple systems only if there are stable intermediate forms

In note-taking, our notes can become a complex body of work if we are constantly thinking about intermediate packets for your projects.

Another idea is that our systems should have support checkpoints. After reaching a milestone, there should be assurance that work cannot be reversed.

In software engineering, there are several types of tests we can design. Unit tests ensure functions behave as expected. Integration tests ensure modules behave correctly and they assume unit tests are stable. Functional tests ensure use cases of a system are working and they assume integration tests behave correctly.