Programming is "hard." A lot of software projects fail. A lot of promising students drop out. Many research innovations take years to hit the market.
My work says it's because we do it/teach it wrong.
Luckily, this is fixable.
Most software engineering "best practice" principles are based more on hearsay than data. It's hard to construct an experimental setting that adequately mirrors real world tensions in any but the most trivial applications. So everyone and their mother has an opinion. Most of them are contradictory.
Instructional Design has a cognitive framework called Cognitive Load Theory. It stems from neuroscience and research into the capacity and abilities of human cognition. In experimental trials, repeated patterns have emerged. Ideas such as the Split Attention Effect or the Modality Effect have both sound theory and experimental evidence behind them.
I argue that building software is basically an applied learning process: you are "teaching the dumbest student possible how to think." Some best practices in software engineering are conceptually similar to CLT. Applying its principles potentially gives us a conceptual framework to understand "what makes code hard to understand?" and "how can we write code/think more efficiently/clearly?"
If this line of inquiry teases your interest, you can read my full proposal.
I'm currently seeking participants for further study. If you're interested in advancing our understanding of software engineering and its cognitive aspects, please e-mail me.