Just about everybody in the technology game realizes that in order to stay viable you need to constantly be learning new stuff, be it a specific technology, a best practice or a new coding framework. Being sent off somewhere to learn something is a common and expected job perk in the IT world. Yet when it comes to getting people smarter, there is a fundamental misconception in play in the corporate world. Often training is mistaken for education. This mistake causes waste: waste of money, waste of time and waste of human potential.
Allow me to elaborate.
Training is the act of instilling a behavior. You can train a dog to sit upon verbal command. You can train a horse to go forward when kicked in the side. You can train a child to go to the potty upon feeling certain biological sensations. You can train a programmer to distinguish the adapter design pattern from the façade pattern.
While training is a subset of an educational experience, it is not the sole component. Training is about behavior. Education is about the broad landscape of cognition.
Training is about behavior. Education is about cognition.
In order to have a better understanding of where training fits into an educational experience overall, it's useful to have a framework by which to understand cognition. http://en.wikipedia.org/wiki/Bloom%27s_Taxonomy Bloom's Taxonomy provides such a framework.
Back in 1956, educational psychologist Benjamin Bloom described a stage-based, hierarchical framework for cognition. It has come to be called Bloom's Taxonomy. Figure 1 below illustrates the various stages of Bloom's Taxonomy.
Figure 1: Bloom's Taxonomy segments cognition into 6 progressive stages.
Table 1 describes the Taxonomy's six stages.
Table 1: Applying Bloom's Taxonomy to learning about a pencil.
Bloom asserts that cognition is developmental. In the developmental model students move through stages of cognition, on to higher order thinking. Thus, educational activities must be appropriate to the cognitive stage being exercised while also providing a certain "push" onto the next stage.
Applying Bloom's model to technical education, rote learning facilitated by teaching through instructional repetition -- the basis of training -- is necessary in order to master a technology at the Knowledge, Comprehension and Application stages. However, moving learners into the upper stages of Analysis, Synthesis and Evaluation requires more.
Software programming is a highly creative activity steeped in an environment of pure abstraction. When it comes to code, there is no "there" there. It's all intangible. In fact, a strong argument can be made that computer programming has more in common with musical composition than not. What is a musical scale if not some abstract concept that describes how different pitches should be organized? What is a melody but an abstract, aural construct that is distinctly identifiable in both the minds of the performer and audience? What is a software program but a presentation of properties and behaviors meaningful to both programmer and user?
Thus, to draw the analogy out, while it is necessary for a piano student to engage in the rote repetition of various scales in order to master the basics of piano playing, playing a scale does not a musical performance make. The same can be said of software programming. While it is necessary for a programmer to understand the underlying nature and utility of URI's when it comes to writing REST code, being able to construct a logical URI does not necessarily mean that that a programmer has the wherewithal to write an elegant REST service. More is required. That "more" lives in the domains of Analysis, Synthesis and Evaluation, the upper stages of Bloom's Taxonomy.
Let machines train. Let humans teach.
Corporations spend a lot of money on technical education. Yet, to my experience most of the money is spent on human beings delivering instruction that satisfies the lower order cognitive stages of Bloom's Taxonomy; less so for money that is spent on the higher order stages of cognition -- Analysis, Synthesis and Evaluation. This is short sighted.
While you need to understand basics in order to get to the higher order thinking, when it comes to software development, the higher order thinking is the place where developers need to play and where educational emphasis is best placed. To use the musical analogy once again: just because a piano student knows the fingering patterns to play a scale, it does not necessarily follow that he or she has the ability to shape a musical phrase in a meaningful manner.
This is not to say that corporate technical education is a futile undertaking. Quite the opposite. Modern educational technology makes it possible to provide employees with a comprehensive, cost effective technical education. The trick is to let the machines do the training and to let humans do the teaching.
The repetitive nature of exercising Knowledge, Comprehension and Application is a dull task for a human teacher. And, it's not a lot of fun for the student either. Students worry about keeping up with the class, being perceived as dumb, etc… Such educational exercise is best done in a private, self paced, predictable, repeatable manner. Allowing the student to go at his or her own pace, privately, makes for a less stressful, more positive educational experience. Thus, with regard to the lower stages of Bloom's Taxonomy -- Knowledge, Comprehension and Application, computer based learning is well suited to the task at hand.
However, when it comes to higher order learning, human presence is essential. It's hard to codify the interactions that take place between a student and teacher engaged in advanced learning. In the realm of high order cognition, there really are many ways to look at a problem; many solutions that can be implemented to solve a problem and sometimes there are many best answers to a given question, just not one best answer. Higher order technical education requires a type of instructional awareness that is best provided by a human being. Such awareness is hard for a machine to emulate.
A call to action
So if machines are best for training and humans are best for teaching, how do we best spend the money in our technical education budget wisely? The answer I propose is to look for courses that blend computer based instruction that focuses baseline knowledge with human led instruction that supports the upper stages of Bloom's Taxonomy. Also, do not expect that once a programmer has been sent off to a class or seminar that that's it. Education is a continuous process that requires continual support. Plan to provide ongoing, in-house support for your company's educational agenda after formal coursework is done. Provide sessions that foster a safe yet thought provoking, focused educational climate in which creativity is valued and many right answers are sought.
Blending computer based instruction with high order teaching delivered by human beings best for providing a comprehensive educational experience in the technical arena. But remember please, machines can teach only that which is known. Humans can teach the impossible.