Awesome quote from Linus Torvalds (creator of the Linux kernel) on the difference between evolution and design.
Don’t ever make the mistake [of thinking] that you can design something better than what you get from ruthless massively parallel trial-and-error with a feedback cycle. That’s giving your intelligence much too much credit.
For implementing the module that I ended up evaluating for my PhD project, we approached the initial phase with design that was heavily based on the literature, learning theories and teaching frameworks because we needed a solid foundation. However, once the module was up and running, we switched to evolving it over time with rapid iteration based on feedback from both students and facilitators. This process of evolving the module based on regular feedback identified problems that we couldn’t have predicted in advance and created solutions that we couldn’t have developed through design alone.