Flow state
I am a self-taught web developer. I had a personal desire to learn how to code, and all its complexities. It all began with research... and utilizing simple web tutorials where I received immediate feedback on my understanding.
Once I had an understanding of the basics, I then became ambitious and entered into site development. I had a self-described goal for an end product. I knew how I wanted users to interact with the site, roughed out a design layout (storyboard), and had begun developing content.
I chose to use a static site generator, saving on the complexity of learning server side technologies; I tried, but it was too complex for my ability at the time - see "What is Flow Theory?" as to why this disrupted my flow. A static site generator is a fairly simple idea, based on multiple templates, and inserts unformatted content into the template language using variables. The look comes from a separate CSS package which paints the website. The interactions come from a third package called javascript (JS). The static site generator reads all the files together into one website.
Through trial and error - iterating - through possible template, HTML, CSS, and JS structures, I arrived at a satisfying end result.
However, it was during the trial and error phase that I entered the flow state. Adjusting, rewriting, researching, problem-solving, was all a part of the flow-state. Every time I generated the site, I would have instant feedback on progress, find errors, then repeat the process on a new section of the site. Time would disappear.
Is this aiming too high for eLearning, not at all. Is it easy to achieve, absolutely not.
Through thoughtful design, I think it is possible to immerse a learner into the eLearning content - if the learner has the intrinsic motivation. As identified through non-linear design, building in exit points (branching) into areas for the learner to apply knowledge, having the learner share the experience or product produced, and then continuing on the learner path, may allow the learner to enter the flow state.
I could almost say that I learned to code through a combination of eLearning (micro-learning) and project-based learning.