Sometime around 1969, standing in the breezeway of Balch Hall at Scripps College in Claremont, I typed “Echo Hello World” on the keyboard of the metal Texas Instruments paper terminal, saved the string as a text file named (with masterful originality) “ChristeHello” over a 300 baud phone line connection on the CalTech computer 35 miles way in Pasadena, typed “Execute ChristeHello”, and watched “Hello World” appear on the next line. Thus began my sometimes rapturous, sometimes contentious relationship with ARPANET, programming, and distance learning.
I hung around the computer lab and made friends with the senior geeks who performed their workstudy duties by feeding the computers large stacks of buff-colored cards and fixing the magnetic tape leaders when they broke. If I brought food, I could get them to talk to me. They spoke a strange language full of acronyms and electronics terms, little of which made sense, but they did explain how to write simple BASIC instructions, and I eventually got the computer to calculate my astronomy lab results. I probably spent five hours programming successful code for every hour it would have taken me to do the homework the hard way (with a slide rule), but it was satisfying to finish the code at last and push the button and have the answer come out reliably, even if I was never going to run that particular program again.
I kept on writing code, conning system operators into giving me guest accounts on one system or another and asking what must have been not completely dumb questions, since they took the time to answer me. Programming is fun: it’s the only way for the truly lazy person to get by in the modern world. The software engineer’s motto is “Do it once, do it right, and never do it again”. I programmed my way through grad school for a couple of years, into NASA/JPL, and into the Rand Corporation, working with computers running IBM JCL 360, IBM 3300 HASP, and PDP11 operating systems. Eventually I wound up on a VAX780 running Berkeley UNIX 4.2….the forerunner of Solaris and the UNIX systems that now underly MacIntosh’s OS X systems. I wrote programs in whatever I could get to compile: in Basic, Fortran, PL/1, VICAR, C, C++, and then I discovered databases and learned how to use the MarkIV, QUEL and SQL languages to manipulate massive amounts of data.
In that nearly twenty-five-year period, I never once took a formal programming course. If I wanted to learn a language for a new project, I got an account on the right machine (system administrators are always hungry and easy to persuade after a good meal), tried not to bring it down doing something I didn’t understand (in this I was not always successful, but luckily I was always forgiven), read lots of other people’s code, and asked flattering questions of those whose programming style I most admired. I had three incredible mentors in that time; any good software engineering skills I know are because Jackson, Ed, and Jim took the time to explain things to me, often many times, until I thought they made sense and I could translate the concept into code that I could maintain. All the remaining bad habits I have are my own fault for not listening to something I’m sure one of them told me at some time or another.
On one of the projects I worked on toward the end of this period, we hired a newly-minted college graduate with a Bachelor of Science degree in computing science. I was both excited and apprehensive. Here was someone who had actually studied this stuff for real, taken courses, learned how to do it right, passed tests even. I could learn from her — or maybe be replaced by her; I wasn’t sure which was more likely. After all, she had the degree and the professional accreditation that I conspicuously lacked. She joined our project meetings and rattled off proposals to “normalize our databases” and “modularize our code”. When we asked her how we were supposed to revise the code we had, she rattled off rules about entity-relationship diagramming as though it should be obvious to us how to implement the details of her industry-standard proposal.
Somebody finally asked her what programs she’d written, and she admitted that she had done some coding for several classes — exercises of a couple of dozen lines each demonstrating a mastery of a particular technique, but in complete isolation from any other program. She’d never actually had to put it all together to create a complex multiple-function system. She’d never worked with other programmers on a project, or integrated code written by different people with different styles into a single coherent executable program. While she had memorized the textbook and could identify concepts by name, she had never applied anything she’d learned to a real-world program, where the analysis it produced would be used to make decisions that could affect the jobs and lives of real people. Over these discussions, it became clear that she’d studied hard — to pass the test at the end of the course. She had great study skills and good test-taking skills. Her test scores were high, and her grades were correspondingly good. But she had no idea how to begin to analyze a problem that involved any parameters beyond those in her text, or how to formulate an approach that would help her craft a solution suited to a context she hadn’t seen.
To be fair, the problem was not with the student, but with the “educational” system she trusted, one that was (and still is) more focused on turning out workers than thinkers. She wanted a good job, in a well-paying field, and chose software programming because it suited her talents and interests. But what she received by way of “education” was really job training, the presentation of materials targeted toward producing an efficient practitioner of a set of processes with relation to a known set of problems. As job training, it worked well: she knew how to recognize certain situations and give them a name, and she knew how apply a proven solution to the recognized problem efficiently.
As education, in the classic liberal arts sense of producing a clear-thinking individual, it failed miserably. Education is more than training. Yes, education must teach basic concepts, the terms of the field and the steps of the processes: these are the grammar of the topic and fundamental to any further work. Yes, education must teach skills in performing basic tasks efficiently. Certainly, education includes some level of training — but only as one aspect of its proper sphere.
An educational process must do far more than training, otherwise, it merely pays lip service to the rationale that it is “helping students develop their full potential”. This is a worthwhile goal: from a Christian point of view, helping students reach their potential is really helping them recognize, develop, and use their talents to the glory of God. Education should give them the context for the information they learn, and a sense of ethical responsibility for how that information is used. It should hone the students’ use of logical analysis and self-evaluation, so that students can recognize the shortcomings of their own work, without a test or teacher’s feedback. It should give the student self-confidence through experience, so that setbacks and failures to “get it right” the first time become an accepted and expected part of the educational process, not an excuse to opt out. It should encourage creativity, not penalize it for not fitting in one of four answers. It should result in joy in the knowing, that knowledge is worth something in and of itself, and needs no “usefulness” for justification. In this context, a grade becomes a temporary and limited measure of progress on the way to reaching this educated state, nothing more. It is neither the end nor the means to the end.
Unfortunately, the organization of our actual educational system works more like job training than classical liberal arts education. Our standardized tests, which form the backbone of our “educational assessment system”, focus on basic information mastery and limited application skills. They cannot adequately assess a student’s ability to analyze complex situations, to think creatively, or even to recognize fuzzy but often fruitful relationships between ideas in different fields. At their worst, such standardized tests only determine whether the student is able to recognize the name of a concept (without necessarily any comprehension of the concept). At their best, they may push a student to recognize the correct outcome of an appropriate analysis of a situation (and to be fair, most standardized tests do include this aspect). These standard examinations can be excellent measures of effective training, and it is appropriate to use them this way, particularly in establishing basic control of material.
But because they fail to assess creative and insightful approaches to analysis and evaluation, when they are the end in themselves to “education”, these exams effectively discourage methods that do try to develop analysis, perspective, and creativity. Students have limited resources, and they want to put their efforts where they will pay off, so they often ask “will this be on the test?”. Teachers, whose effectiveness is measured by their students’ performance on these exams, teach to the test so their students perform well. The dependence on this kind of testing and evaluation limits our educational system, and prevents it from building on the foundation that this approach does create. We produce students who are proficient test takers, but, like my co-worker, not really well educated.
A recent issue of US News and World Report carried an article on “Surviving the American Makeover”. In it, Rick Newman stated that “The highest earners” in the new American economy “are well educated, but have strong tacit and cognitive skills that are difficult to teach in a classroom: informed intuition, judgment under pressure, the ability to solve problems that don’t have an obvious solution.” (p. 16, USNWR Volume 147, Number 3, March 2010)
Our goal as teachers must be to find ways to help students develop these cognitive skills, informed intuition, and especially judgment under pressure by providing courses that go beyond “basic training” and challenge them to analyze, experiment, create, and above all, try again if they don’t succeed the first time. We want this not because we want them to be “high earners” (although that isn’t necessarily a bad thing), but because the world needs people who can provide real, ethical solutions for complex problems, who will do the right thing whatever the pay, or the cost. We want to produce students who look at problems that don’t have an obvious solution, and rather than resorting to a standard example that won’t help, pawning off an easy but unethical solution, or giving up in confusion and despair, say “Well, not yet…..”, roll up their sleeves, and go to work, preferably singing.