Choosing a specific technology for your e-learning courseware

This question came in via email. I figured I would post it (keeping the author anonymous) because these are very common questions, and maybe this post can help other people out. I also want to give others the opportunity to throw in their 2 cents! 🙂

The question(s):

I am trying to decide among three vendors for an e-learning project. Two of them are advocating using Flash/XML, Javascript, .swf files, etc. One is planning to use Toolbook for the development.

I am trying to decide the advantages of one method (rapid e-learning tool like Toolbook) over the other two (combinations of tools). I have a basic understanding of all of the technology, and I have been trying to research this (this is where I got your site), but I’d really like some non-vendor insight as to the pros and cons of one approach over the other.

This is a standalone e-learning course. It can be run through an LMS system, a web browser or if need be, we could distribute it on CD although we don’t forsee doing that. It needs to be SCORM, AICC, and 508 compliant.

Could you help me out? If you could advise on areas such as ease of translation and skills/tools needed to update later on as well, that would be great.

Choosing a tool/course file format

I don’t have enough time to get into the depths of the issue, but here are my gut reactions:

Toolbook.
Avoid Toolbook! It was a great program for its time, but it doesn’t work in a native Web format; anything created in Toolbook is Windows-only (no Mac compatibility). To create a course that works online — and with Macs — you’ll need to export the project to a Web-friendly format with reduced functionality. That’s a recipe for disaster these days. We bought a copy about a year ago — for ~$2000! — and have never used it because of these issues. Yuck.

Note: if anyone from SumTotal’s Toolbook team is reading this, I’d love to hear your thoughts; is the latest version any better? Is there new functionality I’m not aware of?

Flash/Flex with XML
This is a popular option, especially if you’re concerned about localization (XML files containing one language can be swapped with XML files containing other languages), but Flash is not particularly accessible and could potentially hurt your 508 compliance. Adobe is working on this, but they’re not quite there yet. Flash also has limitations when it comes to handling (and styling) large amounts of text.

Most e-learning vendors’ tools output to Flash SWF format; I think it’s probably for two reasons: Flash gives you a lot of control over the course (including the ability to easily add rich media such as narration or animations) and Flash is an easy way to avoid cross-platform (Windows versus Mac) issues.

(X)HTML with JavaScript
Personally, I lean heavily towards (X)HTML-based courses. HTML courses are much more flexible, accessible, and easy to update than Flash/Flex courses. Thoughts on HTML courseware:

  1. Flexibility: An HTML-based course is basically a web site with some extra JavaScript that can keep tabs on a user’s progress. As with any website, you can import almost any kind of rich media, including Flash animations, Captivate simulations, videos, images, music, quizzes, etc. Localization is a breeze because it’s HTML; by nature it can handle just about any language you throw at it. Wikipedia is a great example (though Wikipedia uses a database and PHP to handle the localization).
  2. Accessibility: HTML is much more accessible than just about any other course format out there (including Flash and Silverlight). Of course, the level of accessibility depends how the course is built; it’s up to your developer to be responsible and avoid pitfalls that can make your course less accessible. Heavy use of mouse events or xmlhttprequest in JavaScript, heavy use of rich media without providing textual equivalents, and bad development practices such as using table-based layouts and deep framesets can render an HTML page pretty inaccessible. If you import Flash SWFs on every page then you’re really no better off than you were if you just went all-Flash to begin with.
  3. Cross-browser/cross-platform: This used to be a huge barrier for web developers. Thankfully, with the emergence of Web standards and JavaScript frameworks over the last few years, things are much easier and more compatible than they used to be. Most of us are just waiting for IE6 to go away! 🙂

Delivery options

A couple of things to understand:

  1. SCORM and AICC are competing standards for course tracking/LMS communication… you don’t usually have a course that conforms to both, it’s one or the other. You can think of it as a choosing a cell phone provider: AT&T and Verizon both do roughly the same job, but with a few different ‘plan’ options. After weighing the differences, you pick the one that suits your needs (and budget). SCORM is newer than AICC and is currently the more widely accepted standard, but AICC still has a loyal following and is a viable option.
  2. SCORM/AICC tracking requires an LMS that supports one of those standards. You can’t use SCORM or AICC tracking from a non-LMS website unless someone has built a ‘lite’ LMS for you that implements a database and the API for SCORM or AICC. Likewise, SCORM/AICC won’t work from a CD-Rom.

If you need the course to be able to work (without tracking) from a website or CD-Rom, be sure to discuss it with the vendor beforehand.

Thoughts?

These were just my gut reactions to the questions. I’m sure a bunch of you have pretty strong feelings on the subject. Care to share?

Advertisements

What do you want *your* SCORM to do?

Most e-learning developers don’t care about SCORM and only (begrudingly) learn enough to get the job done. I don’t blame them. The other day I was reading some old Drupal community posts (circa 2005) about adding SCORM functionality to Drupal. One comment stood out:

SCORM was the big buzz in 1999 and 2000 when I was at Oracle Denmark working on “object oriented” e-learning […] but it is no surprise that it is not so much a real world success, as it is more pleasing to the theorist, than to the producer.

More pleasing to the theorist than to the producer.” I’m not sure if the author was referring to his own work or SCORM, but I think the phrase certainly applies to SCORM. This crystalizes what I’ve been trying to do with my SCORM wrapper and ActionScript classes: simplify SCORM so the average web developer can get their courseware to work in SCORM-conformant LMSs without having to become a SCORM expert.

This brings up the never-ending question when it comes to using SCORM in courseware: What are you really trying to do with SCORM?

What was SCORM designed to do?

SCORM stands for Shareable Content Object Reference Model. What does this mean? According to the ADL website, “SCORM is a collection of standards and specifications adapted from multiple sources to provide a comprehensive suite of e-learning capabilities that enable interoperability, accessibility and reusability of Web-based learning content.”

The general idea is that a course developer can re-use elements from course to course, be it a small piece of content such as an image or an entire course lesson. A common example is from the military: if the Army has created a course that contains a lesson in how to safely use a fire extinguisher, any other branch of the military should be able to import that exact content into their course without having to re-write or re-develop any of it. This avoids duplication of effort, which (theoretically) saves the government a ton of money.

SCORM also serves as a communication standard for courseware, which allows a developer to create a course that can be used in any SCORM-conformant LMS. Before SCORM (and AICC), many LMSs only supported their own proprietary course-to-LMS communication systems. This meant that if a course developer or vendor wanted to make their course work on more than one LMS, they had to re-code the course to use each LMSs’ proprietary system. Even worse, not all LMSs had the same feature support, such as quiz scoring and bookmarking. When the US Military required SCORM to be supported by LMS vendors, it was basically ensuring its courses wouldn’t need to be re-developed or re-coded for each LMS, and established a baseline of feature support that would be expected from all LMS vendors.

That’s nice, but…

As I explained, the SCORM developers devised a complex system of cataloging course content (the metadata you find in the imsmanifest file), as well as a sequencing and navigation schema which should allow a developer to simply insert a link to content (or another SCO) in the manifest, and let SCORM handle the rest. Sounds great, but guess what? Full-blown SCORM is impractical and unreliable.

The theorists who devised SCORM will say that you should be building courses using an intricately woven set of reusable SCOs, bound together by an imsmanifest XML file bursting with links to course content files and related metadata. They have attempted to provide a sequencing and navigation system that can be used to navigate within and between SCOs. These are noble efforts, but they don’t really help most e-learning developers.

Why? Two reasons: Shareable content is problematic to implement, making it useful to only a small percentage of developers, and SCORM is usually not the starting point for a SCO’s internal navigation mechanisms.

Shareable content is problematic to implement

The whole theory behind SCORM’s content and SCO interoperability is really nothing more than theory. It’s not useful for most e-learning developers. In their attempt to maximize flexibility and practicality, the SCORM guys actually made SCORM a less practical option, and more of a headache to use.

Shareable content (including SCOs) implies that the content is generic enough to be reused in different organizations and with different course styling/visualization. This a long shot, and doesn’t take into account the myriad visual design styles developers may choose to use. The only way around this issue is to use a strict formatting approach, which might work in a tightly controlled organization, but not in a general community sense. But for argument’s sake, let’s say everyone agrees to use the same color schemes and fonts in their files. There’s an even bigger issue to deal with: the technology itself, namely file formats.

What if one developer only works in Flash, while the other only knows HTML? What if one Flash developer only uses ActionScript 2 while the other Flash developer only uses ActionScript 3 (the two are completely incompatible)? What if one developer uses XML with Flex while another only uses rapid e-learning tools such as Captivate and Articulate Presenter? For that matter, how can SCORM support the growing online synchronous e-learning market or the booming mobile learning market?

When you stop and look at SCORM’s reusability/shared content model, it simply can’t support today’s rapidly evolving web-based technology. And for the few organizations that manage to use SCORM for this purpose, it’s an extremely difficult task to manage. So what about the developers who don’t use SCORM for shareable content, but choose to simply use SCORM as an LMS communication protocol? SCORM becomes overkill, most notably with the sequencing and navigation feature.

SCORM is usually not the starting point for course navigation.

Using SCORM for sequencing and navigation is NOT the norm and never will be. Personally, when I create a course system, I begin by making it work in what I call standalone mode: no reliance on any server-side process. This allows the course to be used in non-tracking environments, such as from a CD-Rom, a USB ‘thumb’ drive, or a plain vanilla website. Standalone mode usually means an HTML-based course using cookies and JavaScript, or a Flash-based course using a Shared Object. Once I get the system up and running and behaving as I planned, including navigation and determining the course’s completion status, I fork my code to include a SCORM option. This approach also provides the flexibility to add a third fork for any other tracking system I may need to support, such as AICC or (gasp!) proprietary LMS code.

Third-party rapid e-learning tools use the same approach: get the course to work on its own, then when publishing, go ahead and add the required tracking code, be it AICC, SCORM, or the numerous other formats that have popped up over the years. Thus, navigation is almost always handled internally and not via SCORM.

Continuing with this train of thought, my interaction with the e-learning community has led me to believe that many e-learning developers are either SMEs using rapid e-learning tools, or are traditional web developers doing some freelance Flash or HTML work. In the case of the web developers, they build the course to do what they want, with the minimal functions they need for their client. When it comes time to load the course in the LMS, they suddenly realize they need to add SCORM support; SCORM was never considered an integral part of the course, and is considered something of an inconvenience that must be tolerated for the sake of making the course work in the LMS and keeping the client satisfied. The SMEs using rapid e-learning tools are lucky because they can just change the publishing preferences; the web developers have to go in and augment their code by hand. In either case, the course developer did not start the project thinking “I’m going to use SCORM to handle my navigation!”

What do you want SCORM to do, then?

SCORM is not perfect, but we must concede that it’s still the strongest available technical standard for elearning. There are others (AICC, Common Cartidge Alliance, etc.), but SCORM is by far the most widely supported standard. The exciting news about SCORM is that it is being handed off to a new organization, LETSI, which will hopefully breathe new life into the standard. Matter-of-fact, LETSI has solicited white papers and suggestions for improving SCORM from the general public. Knowing this, we should stop and seriously consider: What do we really want SCORM to do? What should it handle, and what should it keep its sticky fingers off of?

Here are my thoughts. Please add your own in the comments section!

1. SCORM should be broken into separate and clearly differentiated APIs or functionality. The first — and only mandatory — API should be simple course-to-LMS communication. The second should be a reusability/shareable content mechanism that can be used if desired. The third should be an optional navigation API that can be used regardless of whether shared assets are in play. A fourth potential API could be a quiz/exam API that provides an easy-to-use framework for handling quiz data and results. (And NO, the IMS’ QTI specification is NOT easy to use by any stretch of the imagination! Let’s not pretend it’s the best solution, because it isn’t.)

2. SCORM’s course-to-LMS communication protocol should be simplified and strengthened. As-is, SCORM already does a decent job at this task, but there are a number of ways it can be improved.

  • Simplify (or eliminate!) the imsmanifest file. For courses that don’t use shared resources and don’t use SCORM for navigation or sequencing, the imsmanifest is an extremely bloated and annoying document. It is by far my least favorite part of the SCORM spec., and I know I’m not alone in that sentiment. When talented developers who write code in their sleep have a hard time writing what should be some simple XML, and wind up relying on plugins and third-party applications to auto-generate their manifests, you know there’s a problem somewhere. There must be a way to simplify the manifest if SCORM is only being used as an LMS communication protocol.
  • Use proper data types. For instance, don’t return a ‘stringified’ boolean, return a real boolean.
  • Simplify syntax. This means creating an easy-to-use set of base commands such as API.init(), API.quit(), API.set(prop, value), and API.get(prop) instead of the more verbose (and boring) API.Initialize(), API.Terminate(), API.SetValue() and API.GetValue(). (On a related note, API.Initialize and API.Terminate should NOT be required to pass an empty string (“”); the empty string serves no purpose and only creates the potential for more unnecessary errors.)
  • Create a standardized JavaScript wrapper. This wrapper should use a single global object to contain all variables (properties) and functions (methods). The pipwerks SCORM API wrapper was created to fill this void, but I’m sure it can be improved upon. A standardized wrapper would facilitate interoperability between SCORM-conformant content produced by off-the-shelf products and home-brewed projects.Consider this scenario: Joe Developer has created a full HTML-based course, which is considered a single SCO. Joe wants to drop in a couple of Flash-based interactions created in Adobe Captivate or Articulate Engage; the results of these interactions need to be tracked within the framework of Joe’s course. This is currently not possible (or at least not very easy); if the Flash interactions are published with SCORM enabled, they will try and call LMS Initialize, and they will try to use custom functions contained in the wrappers provided by their respective companies. If there were a single, standardized wrapper, the Flash files output by these products would use the same syntax and functions as the home-brewed course, enabling Joe to easily integrate their code with his own. This might include a check for an active LMS API, which would eliminate the troublesome call for LMS Initialize in the Flash files.Granted, The Flash files might also use a variety of browser communication methods that could cause problems, from LocalConnection to FSCommand to ExternalInterface, but using a standardized wrapper would go a long way towards bridging the gap.

3. All CMI elements should be re-examined for usefulness. Personally, I never use over 2/3 of the existing elements, and find many of them confusing or hard to use. And this is after 3+ years of constant SCORM development! SCORM should be as streamlined as possible; additional functionality should be separated from the core, and usable on-demand as a plug-in module.

4. Provide more space in the database for developers to store custom data. “suspend_data” is constantly abused by developers who need some space to store their custom data; there’s no reason a new, larger space can’t be assigned for developers to use at their discretion.

What do you think?

I’m sure I left a lot of things off this list, and I’m sure many of you have ideas I’ve never thought of. Share your thoughts! There’s a good chance they’ll be read by others, and your idea may be a spark that helps revolutionize online education! Or not. 😉

If you have some free time, take a look at some of the ideas LETSI is toying with for SCORM 2.0 [link no longer available]. I think they’re on the right track, so long as they don’t let advanced functionality get in the way of the (hopefully) streamlined basics, which is probably what the vast majority of developers will use.

Lines in the sand

Before I get to my point, I’d like to give you some background information.

For better or for worse, I’m something of a perfectionist. I’m also something of an idealist; this combination makes life very difficult sometimes. When I embark on a project, I’m usually driven by an innate desire to do it the “right way.”

Before coming to the e-learning world, I worked with print publishing and radio production for about a decade. These are excellent fields for perfectionists! Print production allowed me to work with extreme precision, down to a pixel (actually, a point: 12 points in a pica, 6 picas to an inch!). Radio broadcasting requires precision to a second; there is no room for mistakes. I thoroughly enjoyed the challenges presented by both fields, and, though I didn’t realize it at the time, I enjoyed the constraints: things were black and white, right or wrong, no in-between. Lines were drawn in the sand, cross them at your own peril.

When I went to grad school, I majored in Education, specifically the Instructional Technologies program. In grad school, students are taught instructional design from a ‘best case’ point of view. An idealist point of view, with an emphasis on always performing a thorough analysis of the situation, followed by the implementation of a well-designed solution, followed by lots and lots of evaluation. This was the right way to do things. The line in the sand was clear: skip these steps at your own peril.

Instructional design: the right way or the realistic way?

Being an idealist, I eagerly bought into what was being covered in grad school. I believed (and still do, to a point) that every project should follow ADDIE or a similar model. C’mon, it makes sense, doesn’t it? Again, the line in the sand had been drawn: skip these principles at your own peril.

Now that I’ve spent a few years working full-time as an instructional designer-slash-e-learning developer, I’ve learned first-hand that the instructional design ideals taught in grad school are quickly thrown out the window when you get a ‘real’ job. The most common culprits are time and money, but sometimes it’s managerial ignorance or politics, too.

I’ve witnessed that most training departments don’t do any post-implementation evaluation. It’s not for lack of desire, they simply don’t have the time and/or resources. “Well, they at least do a thorough analysis of the problem, right?” Nope, not so much. An analysis is done, to be sure, but it’s usually pretty quick, and the SME has a pretty influential role in defining the problem, which conflicts with the instructional designer’s main function: define the problem by evaluating the situation and questioning all assumptions, then, if applicable, design a training solution for that problem.

However, many real-world training teams don’t even have an instructional designer, which means the SME carries much more weight. Oftentimes, due to staffing and funding issues, the SME and the trainer are the same person!

And thus the world of e-learning development software is born.

The crazy world of e-learning development

A team with an instructional designer, given the time and resources, would probably not use most of the e-learning development tools on the market because of their inferiority. A much more mature and robust e-learning course can be created by a tandem of an instructional designer, technical writer, graphic designer, and web programmer. But who in this world of downsized training budgets has the funding or time to build a team of experts to create these highly customized courses?

Hardly anyone.

So e-learning development products flood the market, and suddenly SMEs are empowered to create their own professional-looking training materials — fully LMS-compatible! — in a matter of hours. Instructional designers cringe, but the masses have spoken, and they like their newfound abilities!

e-learning development, the right way or the realistic way?

As a perfectionist who is well-versed in the world of e-learning technology, and as a trained instructional designer, I admit I have turned my nose at e-learning development software for a long time. I drew my line in the sand, as I have been taught by both experience and education, and I knew which side I belonged on.

Assuming you even need a course — job aids, podcasts, screencasts, wikis and online forums may solve the problem without even requiring a course to be built — the right way to build an e-learning course is to follow an ADDIE-style model, with an emphasis on instructional design and evaluation. Your courseware should be as interactive and engaging as possible (without falling victim to adding interactions for interaction’s sake), should incorporate the latest Web and accessibility best practices, and should be SCORM-compliant. Avoid clip art and cheesy stock art whenever possible.

However, many people will tell you the realistic way to build an e-learning course is to use a template from an off-the-shelf e-learning development tool. It will contain limited but easy-to-use interactions, allow you to insert whatever free clipart and/or images you can find on the web, and will lead to a simple, decent-looking course in no time, without hiring a contractor.

You wind up not with a Mercedes or BMW, but a with very functional Ford… it gets you from A to B and well within budget.

I admit I find it hard to argue with the ROI of this approach. Having said that, I have always been highly annoyed by the poor aesthetics and code quality of most of these e-learning development tools. But does anyone else care? No! They don’t look under the hood, they just care that the car starts when they need to drive it. I can’t fault anyone for feeling that way. I would feel that way, too, if I wasn’t the mechanic who puts these buckets of bolts together.

I’ve also had issues with how the cookie-cutter nature of the software tends to lead the user away from instructional design considerations — I wouldn’t be surprised if the trainer creates their e-learning course so quickly that they probably haven’t even done any analysis and assessment before digging into the development work.

But again, I’m finding it harder to say that this approach is wrong. Context is key, and in many of these situations, a brief, quickly built and deployed piece of training (perhaps not even a full course) may be a perfectly suitable solution. Bullet points are not always evil.

Can’t we all just get along?

Yes, I have been questioning the ferocity of my beliefs for some time, and conversations with others (and the e-learning blogosphere) have led me to eventually shift my opinion on the subject: No, lines do not have to be drawn in the sand, and the simple act of drawing them may be more harmful than helpful.

Some of my peers are also re-examining their beliefs and asking questions; I think this is great, since our field is a quickly evolving field. Just today, Aaron Silvers wrote about tactical versus strategic planning [link no longer available]:

Lots of organizations in the last 10-20 years solve problems by looking at the immediacy of issues. The brushfires. The low-hanging fruit.

Aaron wasn’t writing specifically about what I’m writing about, but the line struck a chord with me; putting out fires and trying to grab the “low-hanging fruit” is a primary cause of the explosion of just-in-time training, a large chunk of which is e-learning courseware developed using “rapid elearning” development tools such as Articulate Presenter.

Clive Shepherd is excited about this, saying

One of the really exciting consequences of the web 2.0 revolution is the emergence of all sorts of new learning objects, designed for quick access when you need something that’s just-in-time and just enough.

  • Short videos
  • Slide sets
  • Podcasts
  • Mini e-books

Each of these media can be developed using commonly available tools and skills, something that can’t be said for interactive tutorials. They are better suited than tutorials to performance support applications, where learning is not the primary objective.

I’d like to emphasize two of his phrases: “performance support applications” and “just enough.” Most e-learning is designed to help someone do their job. The learner is a busy person and doesn’t really want to take long-winded courses; s/he just wants to know enough to get the job done. Likewise, most training developers will choose the easiest and fastest way to create these training materials, ideals and theories be damned!

Personally, I feel torn between wanting to satisfy the needs of the learner in the quickest fashion possible, and wanting to present a complete, thorough course using sound instructional design, including needs assessments and evaluations.

Warning: gestalt shift!

I think what this boils down to is that we’re in the midst of a gestalt shift from ‘courseware by professionals’ to a rapid e-learning world (and no, please don’t use the term elearning 2.0!).

If this is a rapid e-learning world where SMEs produce courses, where do the skilled e-learning developers fit in? I believe there’s room for all of us. Clive Shepherd admitted “It’s still quite hard for non-specialists to create good interactive tutorials, even of the rapid variety.”

I recently exchanged emails with Tom Kuhlmann from Articulate, and I really appreciated what he had to say about the topic:

It was just a few years ago that only a few people were able to create those horrible gray web pages with [little] more than text. Now, look at where we’re at. You need no technical skills and with some of the new 2.0 web tech, you can create some pretty impressive stuff.

I’m for anything that democratizes the process and gives people power to develop their own training and whatever else they want to do. Are you going to get perfect courses? No. But that will create a market for those that can produce better stuff.

I think there’s a place for it all, and with that a lot of opportunity for people like you who have good programming skills. You’re able to help the novice ID/SME bring their content up a notch.

Where do professional e-learning developers go from here?

I agree with Tom, but I’d like to take it one step further: rather than “helping the novice ID/SME bring their content up a notch,” I feel it’s the responsibility of professional e-learning developers to pressure the e-learning development tool industry to improve their products to meet higher standards, both in terms of web & accessibility best practices, and in terms of educating their customers on what comprises sound instructional design.

I think there’s an excellent model to follow: In the early- to mid-90s, Adobe and Aldus produced high-quality instructional booklets explaining the print production process from start to finish. These guides were distributed free with the manuals for specific software titles (PageMaker and Freehand). The guides were extremely well-written and illustrated, and taught me a lot about the preproduction and printing process before I ever stepped foot in a print shop.

Why did they supply these free books? I never really found out. My assumption is that a deeper understanding of the print process would foster more skilled use of their software, and a deeper appreciation for its power/capabilities.

The e-learning development tool industry would be wise to follow that lead; educating its customers about e-learning and related topics (ADDIE? Gagne? SCORM? Design principles? Color theory?) can only help to improve the industry as a whole. And as we all should know, if we do a good job, the learner does a better job, and the world becomes a better place.

Building e-learning courses: Should we use e-learning authoring tools?

This post was triggered by BJ Schone’s question “How do you build e-learning courses?

So, here’s my question: How do you build your e-learning courses? Do you build them from scratch (ex. HTML, JavaScript, etc.)? Do you use an authoring tool for the whole course structure?

This is an interesting question. Personally, I use home-grown solutions, not any particular e-learning authoring tool, though I often use e-learning authoring tools such as Adobe Captivate to create some of my animated content.

However, I think before you can really dispense advice which particular development approach is best, there are a number of factors to consider.

Questions abound

Who’s using the tools?

Development tools are generally used for two things: creating new courses and updating existing courses.

Here are two common scenarios for teams creating new courses:

  1. The team is large, with specialists. I know of some e-learning companies who have specialists for each type of project task, with strict orders to maintain the development boundaries: the instructional designer only works on curriculum development, the writer only writes, the web developer only works on the technological elements, the graphic designer only works on graphic elements, the subject-matter expert only provides insight about the topic and is not involved in any technological development tasks, etc. Apparently this makes it easier to subcontract the work and replace or augment team members where needed.
  2. The team is small, with generalists. In most cases, each person in an e-learning development team wears multiple hats: the instructional designer also does some web and/or graphic design, the subject-matter expert writes large chunks of the curriculum, etc. There often isn’t an experienced web developer on the team, so the team may be forced to learn an off-the-shelf program such as Captivate or Lectora just to get the course out the door. Sometimes, if the team can afford it or is in a time crunch, they may hire a subcontractor to do the technical work.

I think situation #1 lends itself to standard web development tools, whereas situation #2 lends itself to e-learning authoring tools. More on that in a minute.

When you get to updating courses, the question becomes: Who is responsible for maintaining the course? If the course is internal, do your coworkers know how to use the software, too? If the course was for a client, are they expected to purchase the development tools you used, and have enough technical expertise to use them?

Is portability a concern?

The portability of the content is an often-overlooked issue. When I speak of portability, I mean portability in three senses:

  1. Portability as a course from one LMS to another
  2. Portability of the content fragments within a course from one course to another
  3. Portability of the entire course to other file formats or mediums, such as XML, PDF, a database, etc.

What about accessibility?

We should never forget that there are a significant number of people taking our courses who may have special needs, including people who may be deaf, blind, color-blind, have low-vision, or other physical impairments (such as limited ability to use a mouse or keyboard).

Where are you going with this?

Buckle your seatbelts, you may not like this statement: Most e-learning tools do not promote the creation of effective courses, do not promote web standards, and do not promote accessibility; they merely make cookie-cutter course development easier for technically inexperienced course developers.

There, I’ve said it. Please don’t hate me.

Let me take a few moments to explain my thoughts on the subject.

Effective courses

Let me be clear: I am NOT saying that e-learning tools cannot create effective courses. However, I do believe that the templatized nature of most e-learning development tools leads many course developers to favor convenience over effective communication and education.

More time is spent on shoehorning course content into templates, and less time is spent on the instructional design aspects of course-building, where you stop and ask “how can I really engage the audience during the course?” (And by ‘engage’ I don’t mean just adding a simple quiz question.) Personally I don’t find the pre-built interactions in many e-learning tools to be very good. And the few that are good tend to be so overused that they get stale fast.

Since many of the developers using these authoring tools are not experienced web developers, they rarely venture ‘outside the box’ with the tool, and tend to stick to the course options presented by the software. Thus, the course developer’s options are often limited to the tool manufacturer’s instructional design preferences and notions of what constitutes a ‘proper’ course. This may lead to a boring, unimaginative course, or even worse, a course that doesn’t meet the needs of the learner.

My gist is that the tool, with its limitations and hard-coded inclinations, often winds up driving the end product more than the instructional designer. This is not unlike PowerPoint’s relationship with presenters, and how PowerPoint templates have reshaped modern notions of what a good presentation should be.

As I see it, PowerPoint presentations became the standard for two key reasons: they make presentations seem more ‘official’ or ‘professional,’ and entry-level users found the software’s templates to be very easy to use.

PowerPoint is not the answer

“Need to create an online course but don’t know how? Our tool allows you to convert your existing PowerPoint presentations into effective, engaging courses in MINUTES!”

This sounds like a dream come true for non-technical people who need to create an online course fast. But let me ask you a question: how many GOOD PowerPoint presentations have you seen that were created by non-designers? C’mon, be honest… we all know that 90% of PowerPoint’s built-in templates are ugly and hard to read.

More importantly, truly effective PowerPoint presentations are secondary (and complimentary) to a good, dynamic classroom trainer. These presentations are often simple outlines, minimalist in nature, designed to focus the attention on the presenter, not the PowerPoint file.

Simply stated, a PowerPoint presentation is designed to display a linear presentation of bullet points. How does a linear presentation of text (perhaps with a few animations thrown in) have any bearing on effective web-based training? Short answer: it doesn’t.

To expect a trainer’s PowerPoint presentation to be an effective online course without the trainer is preposterous. The trainer’s experience, charisma, presentation skills, and ability to fine-tune the course content to the needs of the individuals in the classroom is paramount.

(An ugly little secret in our industry is that quite a few course developers — and clients — don’t care about the effectiveness of the training nearly as much as they care about being able to say the training has been created and is available to the client. But rest assured: If you’re reading this, you probably aren’t one of them.)

e-learning development tools

I’m not implying that all e-learning tools follow the “let’s import PowerPoint!” model of course building, but you can’t deny how rampant PowerPoint-to-e-learning conversion tools have become in our industry. My belief is that our industry (and others) has a fixation on PowerPoint simply because of its ease of use.

The most popular e-learning tools I’m aware of today are Adobe Captivate, Articulate Presenter, Rapid Intake’s FlashForm, and Lectora. What do these all have in common? They’re geared towards users with little or no development expertise. Yes, they’re geared towards the PowerPoint crowd.

Each of the tools has its strengths, and I’m not telling people not to use them. However, I’d like to point out that each of the tools either creates files in proprietary formats (which requires purchasing their product just to make edits), or outputs courseware that doesn’t adhere to web standards and best practices.

What’s the alternative?

Using standardized web development techniques, including writing valid page markup, maintaining the separation of content from presentation via valid cascading stylesheets, and using unobtrusive JavaScript, will free your course from the shackles of a proprietary e-learning development tool format.

The most persuasive argument for using specialized e-learning development tools has been maintenance — the desire for easy updates and not relying on technical experts to handle the editing.

But I disagree; not being tied to a particular tool or proprietary format means that practically anyone with general web development experience will be able to make edits to your course or even create new courses using your system. Millions of people around the world work with HTML, and hundreds of thousands work with JavaScript. I’m willing to bet that the number of people familiar with proprietary e-learning development tools is much smaller, probably numbering in the thousands. It’s a niche.

Maintaining courses built with web standards means you can hire just about any college student or web designer to come in and make changes. It means YOU can make changes if you learn a little about HTML, or use a standards-supporting WYSIWYG editor such as Adobe Dreamweaver. The key is for your course system to adhere to web standards.

ELearning software that outputs to HTML (such as Lectora and ToolBook) do not output HTML documents that adhere to web standards. Same for many homegrown proprietary formats that have caused grumbles in offices like yours and mine. Not only are these courses harder to update, but they’re more likely to have browser compatibility issues and are less likely to be ‘future proof.’ Adobe Captivate is a good example: The latest Captivate SWFs aren’t even compatible with Flash SWFs created in Flash CS3 (publishing to ActionScript 3).

Using standard web technology means you will have the greatest flexibility possible, including the ability to embed rich media (Flash, Quicktime, etc.) whenever you like. It also means your courses will work in the largest percentage of browsers possible, including mobile devices and game consoles (depending on what type of rich media you embed in your courses).

Until e-learning development tools offer greater content flexibility and create courses that adhere to best practices for web design and accessibility, I heartily recommend using standard web development tools in place of specialized e-learning development tools.

Accessibility

Web sites built for any federally-funded project are required by law to meet a certain standard for accessibility. So why don’t we ever hear anyone talk about accessible online courses? No matter how well you think you may know your audience, don’t ever think it’s reasonable to assume no one with special needs will ever take your course.

Accessibility is imperative for a certain percentage of people. It’s a complete downer for another segment of the population, who think making a web page accessible means making the web page boring and free of any rich media. Perhaps this used to be a fair assessment, but not anymore. Many good people have put in long, hard hours making formats such as Flash SWFs and Adobe PDFs more accessible. Plus many alternative web browsing devices can now parse JavaScript, enabling some JavaScript-heavy sites to maintain a reasonable degree of accessibility (disclaimer: it really depends what you’re trying to do with the JavaScript).

What’s even better is that web standards have finally taken root over the last half-dozen years, enabling manufacturers of alternative web browsers to improve their handling of the modern web page. This means that adhering to web standards will take most of the effort out of making your site accessible! You may need to tweak a few things here and there, or put some extra effort into improving the quality of the accessibility — specialized CSS, a little extra markup, and descriptive text are good starting points — but you will have at least met a basic level of accessibility without even trying. This is way cool.

This is yet another reason why using standard web development tools is a good idea, and using e-learning-specific authoring tools may not be the perfect tools their marketing departments would have you believe.

e-learning authoring tools need an overhaul

I understand that it is simply not reasonable to expect all e-learning developers to learn code and create courses using web standards. In my experience, many self-described “e-learning developers” are either instructional designers who know very little about web development beyond using a WYSIWYG editor like FrontPage, or are web developers who know little about instructional design. “Dabblers” are the norm, and I accept it.

With such a large number of non-technical people in what is largely a technical endeavor, who can blame the non-techies for wanting to use an e-learning authoring tool? They’re cheap, they’re easy, and — most importantly — they get the course out the door. The demand is there and is undeniable. Everyone wants better tools that will make their lives easier, even me.

But we can make these tools better. MUCH better. And these better tools can lead to better courses. That’s what we ALL want, right? Isn’t that why we’re in this business?

Based on what I’ve seen, the e-learning tools industry needs to shape up and provide better solutions for its customers. Here are some suggestions.

Make your tools adhere to web standards and best practices.

Make accessibility easier

When creating courses using your product, why not include tools and gentle guidance that aids the developer in making the course more usable and accessible? For instance, you could prompt users to enter descriptive text for any image imported into the course. You could have a warning appear if the user writes a sentence in all capital letters. You could have a tip appear informing the user that the table they just imported should have a long description, and should only be used for tabular data.

Use better markup and styling techniques

Speaking of tables, the documents created by your tool should never use tables for layout! Adherence to web standards means all page styling (fonts, color schemes, etc.) should be handled by external CSS, not inline styles or deprecated font tags. You should also use JavaScript sparingly, and as unobtrusively as possible. Let the page markup (HTML) and styling (CSS) do as much of the work as possible. Avoid browser-specific code, such as Microsoft’s ActiveX, like the plague.

Allow users to export their content into easily reusable formats

If your tool adheres to web standards, it should be easy to export (most) course content to a reusable format such as XML. Allowing users to export their content to XML in turn allows the user to easily repurpose the content for different media, such as importing it into a print-based document format such as Adobe FrameMaker, using server-based conversion tools to create dynamic on-demand PDFs, or syndicating the content via RSS feeds.

Give the developer more flexibility — and encouragement — to try instructional design approaches your design team may not have thought of.

Many courses are designed to be page-turners with a few interactions scattered around. I’ll admit I’ve created my fair share of these courses. Tool manufacturers often promote their built-in templates as meeting or exceeding well-established instructional design principles. Entry- and mid-level developers in this field may actually believe your marketing spiels, and think that your templates are the holy grail. This may be good for your business, but it certainly isn’t good for the person taking the course.

Why not build more navigation and format flexibility into your tool, encouraging the user to think outside the box? Remind the user that your templates are just starting points and the real power of your tool is the flexibility it provides. Adobe Captivate’s success with its branching feature is a good example of how hungry developers are for alternatives to standard, page-tuner-style linear navigation.

Wrapping this thing up

Getting back to BJ’s original question, I use custom home-grown course solutions. This isn’t for lack of wanting a good all-round e-learning authoring tool; I just think there isn’t one out there that meets my needs yet. And until there is, I feel more confident working with standard HTML, throwing in the occasional Flash or Captivate file. I recommend this approach to others because I think it’s the most browser- and platform-neutral method, and opens up the development environment to any web developer without requiring expertise in a niche (and ultimately limiting) e-learning authoring tool.

What do you think?

Wow, OK, I sure didn’t intend to write this much. As you can see I had a few things I’ve been wanting to get off my chest for a while. If you’ve made it this far, you must be interested in this topic, too, so I ask you to kindly let me know what you think. Am I off-base here or what?

Captivate-JavaScript limitations

Captivate SWFs can communicate with the host HTML file via JavaScript, but the scripting options suffer from severe limitations imposed by the Captivate authoring environment.

For starters, this communication is (generally) a one-way street: the JavaScript goes out of Captivate to the HTML file, but the JavaScript in the HTML can’t really ‘talk’ to the Captivate SWF.

Here’s a simple example of a Captivate SWF calling a function located in the HTML host. Once the JavaScript in the HTML file receives the function call, it executes it. In this case, the function identify() will manipulate DOM elements to display a message. [ Download the source files. ]

The ability to send JavaScript calls from Captivate SWFs should open up a number of possibilities, even if we’re limited to one-way calls. A few ideas off the top of my head:

  • Use JavaScript to track a user’s choices or actions while interacting with a scenario-based (branching) Captivate SWF.
  • Use JavaScript to control the SWF’s navigation.
  • Use JavaScript to relay SWF data (such as current slide number, clicked items, etc.) to the HTML container for an AJAX-like user experience.

However, Captivate’s JavaScript capabilities suffer from three severe limitations:

  1. The aforementioned one-way-street issue
  2. Only static hard-coded calls can be made
  3. JavaScript can only be executed in limited circumstances, and at the expense of other Captivate functionality

The first item is pretty obvious, so I won’t go into it here.

The second item is absolutely painful. Captivate’s JavaScript capabilities are limited to static hard-coded calls; Captivate doesn’t allow dynamic JavaScript variables, such as a dynamic call based on the slide number. This eliminates the ability to use easy-to-maintain dynamic code, which means you’d have to spend hours hand-coding every little JavaScript call in the SWF. This can get very complex very quickly, and is a royal pain in the buttocks.

Matter-of-fact, Captivate makes it hard to do ANY kind of dynamic scripting, whether it’s JavaScript or Actionscript; Actionscript is the native language for Captivate SWFs, but is strangely — and strictly — off-limits to Captivate users.

(I don’t know what the folks at Macromedia/Adobe were thinking when they implemented such poor scripting functionality into Captivate… they have a proud history of making their applications scriptable — Authorware, Director, and Flash were all astounding successes — but they really dropped the ball with Captivate.)

The third item is when/where JavaScript can be executed from Captivate. Captivate’s developers took an odd approach and decided that JavaScript can be executed:

  • When something is clicked
  • At the end of a slide
  • At the end of the movie

To complicate things further, only ONE action can be taken per event. This means you can either choose to execute JavaScript, OR you can jump to another slide OR you can send e-mail, etc. If you want to execute a single line of JavaScript, you will be forced to give up any navigation option other than allowing the movie to progress to the next slide (playing the SWF linearly).

This eliminates the ability to use JavaScript when working with branching or other non-linear navigation in Captivate, unless you implement crazy workarounds, such as building empty slides that execute JavaScript a split second before transitioning to the intended slide.

Summary

When I started this journal entry, I had no intention of writing a rant. However, while trying to come up with useful examples of Captivate-JavaScript functionality, I was reminded just how ugly Captivate’s JavaScript support is. C’mon Adobe… you’ve created Actionscript 3.0, Flex, Flash, Acrobat, Acrobat Connect, Apollo, the Spry framework, and more… why can’t you give us a little more control over JavaScript and/or Actionscript in Captivate? It’s peanuts in comparison to your other projects!

Thoughts on using JavaScript in Adobe Captivate

Having just finished my Making Actionscript calls from Adobe Captivate tutorial, I’ve been looking at Captivate 2.0 a lot the last few days. Specifically, I’ve been looking for ways to use JavaScript in Captivate. I’m a bit disappointed to report that JavaScript can only be used in very limited instances.

From what I can gather, JavaScript calls can be made in the following instances:

  1. At the end of a slide
  2. At the end of the movie
  3. When a clickbox or button is clicked
  4. When a text input field is used

“That sounds like plenty of ways to use JavaScript,” you say? Well, the major shortcoming is this: if you choose to execute JavaScript in any of those cases, you’re giving up the ability to use the other ‘Navigation’ options, such as ‘go to next slide,’ ‘go to previous slide,’ ‘jump to slide,’ ‘open URL or file,’ and ‘open other project.’

Navigation options in Captivate

As you can see in the image above, Captivate only allows you to choose ONE ‘navigation’ option. You can’t execute JavaScript and jump to a slide.

In some cases this may be fine, but what if your Captivate movie is a scenario with branching? A button click or other interaction must occur to tell the movie to jump to the appropriate scenario slide. If you choose to execute JavaScript instead of using a ‘jump to slide’ action, your scenario is toast… you will not be able to navigate to any slide other than the next slide in the timeline.

Johnny doesn’t play well with others

The bottom line is that Captivate is being developed as a stand-alone solution, and is not really meant to integrate with any other course development tools.

A Captivate SWF can be embedded in an HTML-based course interface, but doing so will render the built-in interaction tracking system practically useless. The tracking system is designed to deliver data in a limited, pre-packaged capacity; there is no obvious way to access to the raw tracking data. For instance, if you want to get SCORM calls such as lesson_location from the Captivate SWF, there’s no clear, easy solution for doing so. And there’s no way to set up the Captivate file as a component of a SCORM course… it’s meant to be a be-all-end-all solution (for example it will do ‘LMS initialize’ calls, which is a no-no in the middle of a course).

A Captivate SWF can be loaded into a Flash-based course interface, but because there is no easy access to the Captivate SWF’s Actionscript code, it’s a huge challenge — though not impossible — to extract Actionscript variables from a Captivate SWF. This includes tasks such as controlling the Captivate SWF’s playback using your own Flash playback controls; The sheer number of Captivate ‘help’ sites dedicated to this normally simple exercise is proof enough.

Have you ever tried decompiling a Captivate-generated SWF and inspecting its Actionscript? It’s very enlightening and utterly confusing! (FYI SoThink SWF Decompiler has a limited trial version you can use if you’re curious).

And NO, asking us to export the Captivate movies as FLAs and then customizing in Flash is NOT an appropriate solution. Big chunks of functionality and settings get lost in the conversion, and you can’t send the FLA back to Captivate. It’s a path of no return. The whole point of Captivate was to make things quick and easy and avoid having to do heavy lifting in Flash.

In many ways, Captivate is a great product. It’s the best software I’ve ever used for creating software simulations, and the SWFs it creates are much smaller than video-based tools such as Camtasia.

However, until the Captivate design team starts acknowledging the needs of course developers who use Captivate as a small part of their development toolbox, we will be stuck pulling our hair out and spending hours on end searching for workarounds. And that kinda sucks, don’t you think?