A Vision for Online Learning

I lie awake at night, almost every night thinking about Online learning, and ways I could make it better.  This has gone on for about ten years, and even started before I ever knew anything about Pluralsight.  I am versed in online learning, and could go on at great length about the virtues or the lack thereof of every major online learning platform in existence.  This would include: Lynda, Treehouse, Code School (which I know you bought), Udemy, Udacity, and Coursera.  In this document, I would like to cover the following topics in the interest of perhaps stimulating a discussion about how to make online learning more incredible than it already is.

  1. The Plasticity Problem
  2. Coding And Learning Are The Same Thing
  3. Coding and Learning To Code Should Be A Social Experience
  4. Show The Path
  5. Encourage Modularity and Delegation
  6. A Couple of Simple Things Since You’ve Read This far

The Plasticity Problem

You might want to know why I think about this particular topic so much.  The reason I do is because to me, it represents an interesting puzzle: how can learning material keep up with the breakneck pace of technological innovation?  Finding qualified help is but one problem, but the other is that the medium of choice, video and audio presentation, has an inherent problem: it is time consuming to produce and lacks plasticity.  Additionally, those who make changes to software do so according to their own time schedule and that is why the newest thing is seldom in sync with available learning material that describes how to master and take advantage of the changes in new or updated code.  I believe that whoever figures out the best way to crack this riddle stands to reap significant rewards.  Further, I believe that the riddle remains to be cracked, for the most part.  Further still, I believe there is a way to crack this problem.

Thinking in this vein, I would like to recognize that the didactic materials associated with code are thought of as second class citizens.  Not by those at Pluralsight, I realize, (where didactic materials are clearly 1st class citizens) but by those who spend their time making improvements to, say, Ember, Angular, React, or .Net, and so on.  I’m sure this is so not because anyone writing code doesn’t recognize the importance of good, thoroughgoing tutorials.  And I’m sure if they had the time and resources to devote, the improvements would be forthcoming.  So it must be, in the overall calculus of things that the people who are making improvements to code already have their hands full doing what they already do.

So consider this bold idea: what if you could unobtrusively integrate a learning environment into the actual process of improving and updating code?  What if it were possible to make changes to the learning material far more rapidly than is currently the case?

Maybe the best way to improve online learning is to tackle the problem of plasticity so that it can keep pace with the changes that are constantly being made to technology.  Has anyone even recognized this as a problem, I wonder?  Has anyone ever tried to imagine a solution for it?

Text conquered the plasticity problem in AD 1040 when movable type was invented by the Chinese.  Imagine what a similar solution could do for online learning.

The solution, actually, probably has a lot to do with text, or, at least figuring out how to use video minimally.  As a longtime learner, you know what I’m MOSTLY doing when I’m watching video?  I’m watching someone type!  I’m watching video of text being typed onto a screen in a code editor.  But the code in the video, certain to become obsolete very quickly, is trapped in video making it impossible to make edits to it without going through the laborious process of making another video (or something else equally dreadful like shoving in a notice).

Ironically, the problem is a lot like an earlier version of how most web pages worked before the advent of AJAX and the js libraries it inspired.  In my studies I’ve learned that SPAs such as Angular II  represent an improvement over the old ways of doing things.  In the old days, updating a webpage was an all or nothing proposition, and one that was therefore highly inefficient.  Angular came along and made it possible to update only the information on a web page that needed to be change while everything else could remain the same with significant improvements in speed. In a similar fashion it is not possible to change an individual character of text seen in a video without changing the entire video!  Only by using video sparingly will it be possible to introduce the needed modularity and  plasticity that materials used to teach coding need.  I won’t go into the particulars of what this might look like, but it should be enough for now to simply state that the learning experience is served to the degree that course material can be changed rapidly.

Coding And Learning Are The Same Thing

If you code, how often do you look at documentation?  How often do you ask a colleague how to do something, or how often are you that colleague explaining something to others?  How often do you post on Stackoverflow?  It seems to be that a good deal of coding is about finding the answers to questions, which is a way of saying that coding is learning.  I’m guessing that there are few coders who would disagree with this statement.  Nonetheless, the process of coding, and the process of either learning to code or, if one is already sufficiently versed, simply finding some particle of information needed to make something work exists in different silos.  There’s Stackoverflow where people go to ask questions; there’s Pluralsight where people go to learn; then there’s Github where all of the code is pushed and pulled, and shared.  Ideally, all of this should be integrated.  Think of the efficiency gains.  Who will move into the other’s palace, or whether a new palace, grander still, awaits construction, I do not know.  But what I do know is that once an ideal is identified, the move will eventually happen.

One key concept here that deserves further explication is the versioning of learning material.  Imagine alterations to course material happening on a weekly, or, in some cases, a daily bases.  At any given moment in time, the learner needs the most recent version of the lesson.  So the principles of Git would come into play here for a purpose that it doesn’t currently serve (but should).

Coding and Learning To Code Should Be A Social Experience

The internet forum, still used widely by prominent sites all over the internet is inadequate for the needs of the online learner.  Pluralsight currently uses one of these outdated forums.  What is really needed is a social network for learners with great tools designed to cater to their needs.  Imagine that in such a network everyone viewed themselves as both teacher and learner at varying stages of mastery in one topic or another.  Imagine such a tool serving as a permanent digital portfolio and archive to all of the contributions that a person might have made in helping others learn various topics, or a way to prove to prospective employers that mastery over a particular domain had been achieved.  Imagine such a tool as being an environment wherein someone could instantly seek or offer help with a problem.  Imagine such a tool as not being just a way that someone might provide an answer, but as a way for people to perform the equally important task of routing others to the people who have the right answers.  Imagine a platform which would allow people to meaningfully interact and help each other in a frictionless manner.  This is obviously a very general description, but I believe that such an approach would offer myriad possibilities.

I would also say that making learning more social is actually necessary to shift toward modularity and to create a learning tool that is sufficiently plastic.  The reason this is so is that it will require a hierarchical division of labor that will perform tasks according to specialty and skill level, as well as a way to efficiently delegate those tasks.  The project of mastering code should be a collaborative effort across a range of individuals all making unique contributions, and the task may as well be building the palace of code.  But it could be many other things as well.

Think of it like this.  The first few years a person goes to medical school, they are not earning a salary as a medical professional.  THey are only paying tuition.  But as they near graduation, they well might be earning a salary during their internship, while they are still, at the same time still paying tuition.

That same is also true of the teaching profession, at least as it works in universities.  A graduate student can be called upon to start performing the tasks of the professor that they will eventually be all within the same environment.  The learner eventually reaches a certain threshold and is able at this point, to make his or her own contributions.

Make It All About The Money

The reason that I take online classes at Pluralsight is because I want a better life.  I am hoping that the time and capital that I’ve invested will help me learn a skill that will position me for a well paying job in the technology sector.  Further, I imagine that a healthy portion of your students have these identical goals.

But as things stand, I have no idea how close I am to achieving that goal because I still don’t have a very good idea of what a prospective employer might expect of me.  Yes, I know that knowing CSS, HTML, SASS, Angular, Redux, Git, Node, and Firebase, all have something to do with this, but where am I along the progress bar?  Half way?  Three quarters? One tenth?  And while we’re on the topic, how important is it to build a to-do list?  I realize that the point of some lessons that show how to build simple projects is to help a person establish a foundation in the basics, but are people really pulling down 100K+ a year by only having the skills to know how to build a To Do list?  What I desire is much better information about what level of mastery I need to reach before I’m employable, and I would very much like to have a very good idea about what that mastery looks like.  I know that coders code all day, but in the real world, I still have almost zero conception of what that means.  Getting some kind of idea would be extremely useful.

But if we take into consideration some of the ideas already sketched here, what would be ideal, in my opinion, is for the learning environment itself to provide a way to earn money.  Perhaps this might be from helping master teachers build out a course, or it might be by providing thoughtful questions that course generates and marked as urgent.

In fact, the learning environment could enclose all coding work no matter the level of mastery.  This is the ultimate vision.  The learning environment could be imagined as a place where projects throughout the continuum of difficulty are conceived, organized, funded, and built.  

Eliminate Redundancy by Encouraging Modularity and Delegation

I recognize that there are two online learning models: 1) The entire learning experience is created by an in-house team of designers, producers and technology experts.  Examples of this would be Treehouse and Code School; and, 2)  The learning material is created by whomever it is that has the requisite mastery of a certain topic, along with the necessary narrative, video and audio skill needed to create the actual content.  The first model, I have found, is superior for teaching the fundamentals.  Code School, for example, produced a course on Javascript which, to this day, remains the highwater mark of online learning content.  That stuff was phenomenally good.  Even the little jingles that each chapter started with were amazing.

Having something like that was incredibly valuable as a learner because the same basic javascript is the foundation for a multitude of other javascript libraries that all use the exact same thing under the hood.  Those spin-off libraries come and go in popularity, but the underlying javascript remains the same.  Okay, there are updates to this too, but for the most part it moves a lot slower.

To compare the two approaches, in-house versus the market platform model, the former is too lumbering to really keep up with the changes; but market platform model lacks the needed integration to deal with redundancy.

Let me try to better explain what I mean.  If five independent producers make five different courses covering the same topic, there is going to be a massive amount of redundancy.  For the end users, this feels like a huge waste of time, usually.  It doesn’t mean that each lesson doesn’t bring something incredibly valuable.  This usually happens too.  But if each course goes through the same basic steps to download the latest version of Node, the instructions on Visual Studio, and them more instructions on installing and setting up the CLI, you’re just sitting there feeling the frustration.

But even the lessons themselves can be very redundant.  Lately, Pluralsight has delivered a ton of great content on Angular (II).  I couldn’t be happier about that, but I’ve noticed that almost all of courses go over the same material about how to set up routing, how to create a component, how to use decorators, and so on.  Why is no one ever collaborating with each other?  Why doesn’t someone make the core (like the aforementioned Javascript Road Trip course by Code School), and why don’t others build out from the core?  I am trying to build an innovative parking application using the skills that I’ve gained from Pluralsight, but the learning modules that I need to build it out still don’t exist.  In the meantime, about a dozen or so authors by now keep going over the same stuff, and none of this stuff is getting me further on down the road toward my career goals.

How are Pluralsight author’s paid?  Maybe this is part of the problem?  If, for example, it is amount proportional to the total amount of time someone spends watching one of their lessons, then the author has a strong incentive to make the lesson longer than it might need to be.  But the end users doesn’t care how long something is, only how good it is.

As the end user, what I would love to see is some baton passing.  For example, I believe authors should be given the tools to franchise their content, if you will.  To those reading this who might know a little about Angular, the name Deborah Kurata might come to mind.  In my view, she made a phenomenal course on Angular which rivals even the best stuff from Code School.  Just look at the feedback she gets from other users.  And there are tons of amazing teachers on Pluralsight, of course.  The quality is not the problem.

But Deborah is only one person who can only make so many videos.  What if she could make a course that could serve as the basic corps of dozens of other mini courses by other people?  In her Angular course, just as in most of the Angular courses, she “mocks” the backend, meaning that it doesn’t actually use Node JS.  Well, that could certainly be a separate module.  Imagine, even, how powerful it would be if one of her very own students made the mini module?  Joe Eames is the guy on Pluralsight who has done the most with Firebase, so maybe such a student could credit Joe as well?  If Joe and Deborah are willing to franchise their content (though keeping it all inside the Pluralsight umbrella) their incentives become more aligned with the end users in that they will be able to make a piece of revenue from the added content, and at the same time, the end user gets additional, more relevant content.  

And while we’re at it, how might we use Angularfire and Firebase to achieve something other than a mock backend?  The end users is trying to prepare for a career and needs to know how all of this works, and how it all works together, but it is clear to me that this is really too giant a task for one person alone.

Think of it this way.  Suppose that I wanted to make a rival to Pluralsight using Angular.  Could I learn enough Angular on pluralsight to accomplish this goal?  Somewhat paradoxically, if the answer to this question is no, Pluralsight is in a weaker market position than if the answer were yes.

I would even go one step further and propose that Pluralsight should endeavor to show its users EXACTLY how to build Pluralsight.  What is the only thing that could ever prevent something like that from being a threat?  Well, something called the network effect.  No online learning site really has this yet in any meaningful way, and they are all vulnerable to whoever it is that comes up with the right tools, and the right thinking, and the right execution to do it right.

A Couple of Simpler Things Since You’ve Read This far

The one improvement that Pluralsight made that has really sparked my imagination is the note-taking feature.  Even though I’ve made it clear that I’m leary of video because of its lack of plasticity (or flexibility, if you will), if you’re going to have it, the note taking feature is perfect as the note references the spot where the video was stopped for the note to be taken in the first place.  But there is, in my opinion, a way to make it quantumly better.  Allow users to make their notes public, if they wish, and allow users to flag their notes with preformatted messages like “Help Needed.”  That way, others could come along to offer assistance, or simply learn by reading what others who came before wrote in response to such notes.

Overall, to have that feature integrated into the lesson was, in my opinion, a stroke of genius.  And if there is any doubt, go over to Treehouse, and try to leave a message on a forum should you happen to have a question about something in one of their lessons.  I’m not here to knock Treehouse, (they’re actually really good at responding to messages posted in their forums), but it’s annoying they way they have it set up.

This alone would go a long way in moving this platform in a social direction, and I believe that this is where it really needs to go.

I can see such a feature also being a tremendous help for content authors as it will give them better insight into ways to improve certain tranches of content.

The other issues has to do with the video playback controls.  I hate it when I move my mouse to activate a control, only to have ALL of the controls pop into view, including the message in the upper left hand corner that reminds me of what I’m studying, and what lesson I’m on. lesson title in the right hand corner.  The problem is that the controls often block content in the video at the bottom of the screen, or off to the upper left of the screen.

I’m sure that are some who don’t mind this (as with all things), but I’d be willing to be that a fair number of people do.  Luckily, I think it’s an easy fix.  Why not a toggle that toggles a toggle?  In other words, I would like to have the option to select a toggle that when activated, I could use to toggle the controls?  Instead of every mouse move bringing up all of the controls, every mouse move would bring up the toggle that, when toggled, could bring up all of the controls or make them go away.  I do realize that the way the controls work, in that they fade from view when not being used, is meant to be a thoughtful convenience, but in practice, at least on my screen, it doesn’t work out that way.

I think the idea of the auto toggle (the way it currently works) was to make more screen real estate available for the viewport.  If the controls were always visible, they would stand in the way of content that could be there if they weren’t in the way.  It’s a good idea, but needs just that one extra touch of refinement.

Should any of this be unclear, I’m happy to explain further should anyone be interested.  That’s it for now!  Thanks so much for reading.




One comment

  • Why don’t you ask the many you are in contact with at the tech meet ups? Take notes. Who cares if the others are not.
    Also, driving to ones in Seattle could be more satisfying than in Portland. Why not?