![]() |
|
|||||||
|
2001
Conference Proceedings, June 11-14, 2001
|
|
What
if J. Alfred Prufrock had been a Robert
L. Sedlmeyer I
have seen the moment of my greatness flicker, Abstract
I
am a 40-something professor of Computer Science, and like J. Alfred Prufrock,
I have a bald spot in the middle of my hair. I am feeling increasingly
anxious over the possibility of becoming technically obsolete. This fear
arises not from a decreasing desire to remain current, but from the increasing
realization that there is too much to know and too little time to know
it. Worse yet, there is often little rationale for deciding what to learn
and painful consequences for making the wrong choice. Is it any wonder
that I lay awake at night wondering if Java is just a fad? If every word
related to business and communication will be prefixed with "e-"? If all
the overhead transparencies that I converted to PowerPoint and then to
HTML will become like so much chalk dust with the next delivery technology?
So what's a professor to do? Throw up his hands in despair? Seek a positronic
brain implant? Or is there a path of graceful degradation? technical
obsolescence (t Let
us go now, you and Ito lead you to an overwhelming question. I have fond
memories of the IBM 029 keypunch. Let me explain. It was the Spring of
1973. I was embarking on the career I had dreamed about for years: becoming
a computer programmer. As an avid reader of science fiction during my
childhood, I had become filled with wonder at the possibilities of technologies
present and future: robots, spaceships, and yes, computers. While Gort
and the Enterprise seemed beyond the reach of my lifespan, HAL, well,
that was a different story. Computers were real. HAL was just
over the digital horizon. And someday I was going to explore that frontier,
to finally go where only my imagination had gone before. So
there I was, sitting at the keypunch, slowly, carefully transforming a
stack of 80-column punch cards into a FORTRAN program. I made a lot of
mistakes, but after thirty minutes or so I emerged triumphantly from the
keypunch room, card deck in hand, with chads clinging like fairy dust
to my clothing. It was a magical moment. With great anticipation I handed
over my deck to the computer operator. As he walked away I leaned over
the small counter and caught my first glimpse of THE computer. It was
an IBM 1401. It was nothing like HAL, but it was mesmerizing none-the-less.
Lights blinked. Tapes whirred. Printers clacked. And cards shuffled through
the reader as if by the hands of a casino dealer. I watched my deck being
loaded, and, after a small hesitation, the greenbar listing emerge from
the printer. The paper was still warm when I examined the listing. It
was full of compiler errors. A character in the wrong column here; a misspelled
variable name there; a missing label somewhere else. It didn't matter.
I was on my way. A few trips back and forth to the keypunch room and I
had successfully written my first program. That
029 and I became quite close during the next three years. Over the course
of the thousands of cards I punched, repunched and overpunched, I discovered
marvelous features such as the programmable drum and the DUP key. And
the chunk-chunk-chunk of each key press became like a soothing melody
(although I must admit that the concerted sound of the keypunch cluster
may have adversely affected my hearing more than the rock music of the
day). The 029, the 1401, and FORTRAN: from my first tentative DO loops
and DIMENSION statements to external sorting, linear programming, and
compiler construction, I exulted in the theory and practice of programming
with these steady tools. But
nothing lasts forever. The half-life, no, make that the full-life, of
computer technology seems to be about three years. When I entered graduate
school, I discovered that my expert FORTRAN and keypunching skills were
already obsolete. Pascal and PROCSY (Purdue Remote On-line Console System,
an acronym that I may or may not have remembered accurately) were the
rage. Only Numerical Analysts, the Neanderthals of Computer Science, still
used that prehistoric language. Leaving behind the technology
I had grown so familiar with was surprisingly simple: I learned Pascal
in a few days, combing through the famous Nicklaus Wirth text, and after
a session or two with PROCSY I knew I could never punch another card again.
I adapted easily to the new technology, my brain still as pliable as a
new can of Playdough. The
years passed. I graduated and become an Assistant Professor. Minicomputers
arose with accompanying terminal servers. Line editors evolved into full-screen
editors. FORTRAN and COBOL did not die as had been expected, and evolutionary
niches were found for many other languages such as RPG, Lisp, and PL/I.
IBM continued to dominate the mainframe environment with MVS, and DEC
had a winner with VMS. Structured programming, soon followed by structured
everything a la Yourdon, became the guiding principle in software
development. And
I knew them all quite readily, knew them all. Glided deftly from one technology
to the next, ever-expanding my reference collection. It was not unusual
for me to be teaching courses that used three different languages on different
platforms. But I was beginning to notice something strange: Not all of
my colleagues were as excited about these new developments as I. In fact,
some of the senior faculty had retreated into a small corner of the curriculum;
and others seemed unwillingly, or perhaps unable, to modernize their courses,
leaving the content grow stale. I couldn't understand their hesitation,
and in my youthful insensitivity, did not sympathize with their hidden
struggles against intellectual entropy. More
years passed. The microcomputer revolution began. I wrote a grant to purchase
three PCs for the Department, but when they arrived they little more than
curiosities. A couple of Apple IIs and some other long-forgotten brand
(Was it a Northstar Horizon?). DOS entered my vocabulary. I earned tenure.
I was promoted to Associate Professor. I was awarded a sabbatical leave.
During my leave I became engrossed in applications of AI to electronic
warfare, and didn't notice that the world had changed again. I
had an IBM microcomputer on my desk next to my VAX terminal. It ran Windows
3.0. I had no idea how to open up a file or execute a program. This graphical
interface was completely foreign to my experience. I had to learn how
to interact with a computer all over again. From scratch. To complicate
matters, Ada, the language commissioned by the Department of Defense,
was now our Department's official language. New hardware. New OS. New
programming language. New editors and compilers. And did I mention that
the University had just obtained an Internet connection? All of this new
technology was very exciting, but demanded that I once again shed, like
an old snake-skin, much of what I had known. It demanded that I once again
retrain myself. It
wasn't quite as easy this time. Was there that much more to learn? Or
was I, like a sopping sponge, less able to absorb any more? I had no time
for philosophical reflection, needing every moment to keep one step ahead
of my students. I read a lot. I practiced a lot. I sought the aid of my
colleagues a lot. Sometimes it wasn't enough. Have you ever had that dream
where you sit down to take a test and realize that you know nothing? Sometimes
I felt like that when a student would ask a question that I couldn't answer.
It was an uncomfortable moment, a humbling moment, a desperate moment.
After all, I am supposed to be the expert. And no, I'm not being too hard
on myself: I think I should know everything in an introductory programming
class! For the first time, I felt vulnerable about my Computer Science
knowledge, and had a small, nagging doubt about my competence rumbling
around my subconscious. Not
to worry. I eventually conquered Windows, Ada, and the Internet. I regained
my old form, but I no longer felt intellectually invincible against the
consuming fire of the dragon of technology. More
years have passed since then. Technology has changed radically again.
It's now objected-oriented everything, Java everything, and network everything.
Advances in all things hardware, software, and, here's a hot term, middleware.
Acronyms enough to make a kettle of alphabet soup. And let's not forgot
that as technological content has changed so has content delivery. Distance
education on the web is the next big thing. Pressure from all sides to
create e-courses. And could you include streaming audio and video with
that? I
am teaching in a discipline that is moving at warp speed and has more
dimensions than "Sliders". I was starkly reminded of this last summer.
I do some corporate training now and then, mostly targeting Java developers.
I was completing a seminar on design patterns when one of the lead developers
asked if I would be willing to teach some workshops on advanced Java programming.
He just happened to have a list of potential topics with him. I glanced
at the list: Servlets, JSPs, JDBC, JNDI, XML. I knew the "J" stood for
Java, but what the heck was all that other stuff? Even in the field of
Java technology, I had fallen behind the curve in a very short time. That
realization was scary. Very scary. Which
leads me to the overwhelming question: Is technical obsolescence inevitable?
I
grow old...I grow old...I shall wear the bottoms of my trousers rolled.
Before I answer that question I want to explore what I believe is required
to be a technically competent teacher of Computer Science. Foremost
is a firm grounding in the fundamental knowledge of Computer Science.
I won't bore you a philosophical treatise on what comprises the fundamental
knowledge of Computer Science. Others have wrestled with this question
for decades, so I will point you to the thoughtful definition articulated
in the evolving ACM Curricula 2001 recommendations [ACM01]. Glass [Glass00]refers
to this as state-of-the-art knowledge. I must be able to teach what authorities
in the discipline say is important to teach! Secondly,
an understanding of the real world. This is similar to Glass' state-of-the-practice
knowledge. There must be a strong connection between the skills taught
in the classroom and the skills applied in the workplace. It's fine to
be on the leading edge of the technology wave, to anticipate the needs
of employers, but it is disaster to allow that wave to wash over me. In
the mid-eighty's my Department modified its entire curriculum to focus
on Ada. It seemed a logical thing to do since the principal employers
of our students were DoD contractors. There was a need and we supplied
it. Fifteen years later the DoD rescinded its mandate, and Ada was suddenly
an orphan (at least in the U.S.) Though strong pedagogical arguments remained
for it use in teaching programming, it soon yielded to Java as our primary
language. Why? Simple supply and demand: Java was fast becoming the lingua
franca of the Internet and the need for Java developers was exploding.
I must be able to teach what employers in the discipline say is important
to teach! Thirdly,
adeptness at applying the tools of the trade. You know the old saying,
"Those who can, do; those who can't, teach." How about that other one,
"If you talk the talk you got to walk the walk." Talking about programming
is not enough. If I want to be effective in the classroom, I must be able
to build a program. I must demonstrate that I can do what I am asking
my students to do. This assures my students that I am not some Wizard
of Oz who has nothing behind his curtain of words, helps me to anticipate
their problems, and, most importantly, gives me self-confidence. To build
programs requires that I know how to use modern program-building tools.
During the past year these included Rational Rose, Borland Jbuilder, Microsoft
Visual C++, FrontPage, IIS, Explorer and Access, Apache Tomcat, Netscape
Communicator, and Oracle. A far cry from the flowchart templates and coding
sheets of my first years as a teacher. I
would also include here tools that I use to create and deliver course
content. My students are more mobile and more time-starved than ever before.
For many of them to be successful, they must have access to course materials
anytime from anywhere. The Continuing Studies Department is also interested
in leveraging new technologies to expand its offerings to non-traditional
students. Today, that means hosting courses on the web. Since I do not
have minions of web developers from the Department of Instructional Multimedia
Development for Weary Professors waiting to do my bidding, I must create
my own content. Of course, this requires another suite of tools. At the
moment, these include Microsoft Office, FrontPage and WebCT. Education
is a two-way street, so I also extend these tools to include email (I
use Novell Groupwise) and products such as Microsoft NetMeeting for supporting
more sophisticated interactions. I must be able to teach with the tools
that confirm my expertise and conform to students' needs! In
a minute there is time for decisions and revisions which a minute will
reverse. So what's the big deal? To fend off technical obsolescence I
must keep up with changes in the discipline, the marketplace, and the
tools. That doesn't seem so bad. I've been doing it for more than 20 years.
How? It's not rocket science. You read. You read some more. And when you're
done reading you find something else relevant to read. Then you do. You
do a lot. Sometimes you redo what you've done because of something else
you have read. Finally, you take what you've read and what you have done
and make it palatable for the masses. All it takes is desire, time, effort.
Ah,
but therein lies the problem. The desire is still there burning as hotly
as ever, but it takes more time and more effort for me to learn and integrate
new knowledge than 20, 10 or even five years ago. I am growing old. I
am slowing down. Technology isn't. Actually,
the problem is thornier than that. It's not only the speed with which
technology is changing, it's the competitive nature of technology. I just
realized today that the Java 2 Enterprise Edition is only about a year
old. Microsoft has recently introduced the competing .NET suite. And there
are the older server-side technologies based on CGI (perl, php, etc.)
Will one technology dominate or will there be an unpeaceful coexistence?
Even a dominant technology today could be replaced tomorrow. And
should I then presume? And how should I begin? Faced with dwindling intellectual
efficiency technical obsolescence may be inevitable for me and it may
be hastened by an inopportune choice of what technologies to pursue. So
what should I do? Should I simply deny what's happening and blissfully
head for the technological abyss? Should I throw up my hands in despair?
Should I, like Prufrock, retreat into the depressing loneliness of "a
pair of ragged claws scuttling across the floors of silent seas" awaiting
the end? No. As a colleague mine often said, "We are engineers. We solve
problems." Here's my solution to this dilemma, or the top six ways to
ensure graceful degradation. 6.
Accept your limitations. I love to play basketball. I was never the
fastest or tallest player on the court, but I hustled. As a result I often
got loose for a fast-break basket. Twenty years later, I still love to
play basketball, but I can no longer beat anybody down the court. I still
play hard, though not as long, and contribute with my defensive hustle.
Adjusting my game to my physical limitations has allowed me to continue
to play, and enjoy basketball. I believe the same is true for teaching
Computer Science. When I was younger I knew a lot more about a lot more.
I no longer have enough time or energy to keep informed of all the technological
advances. But I take solace in the fact that I still know a lot about
some things, and some about a lot of things. I still enjoy learning and
exploring new technologies while limiting my scope of interest. As for
the rest, well, I can leave that to others; I no longer feel I have to
know everything to contribute something. 5.
Read. I've always done this. It's one of the simplest ways to find
out what's hot and what's not. I try to read at least one article every
day from either a trade publication or academic journal. And I constantly
review textbooks for subjects I teach. It's the most practical way to
cull the most important recent developments and which technologies are
on the most solid ground. 4.
Let your students teach you. There always seems to be a subset of
majors who are more curious, more motivated, and more intellectually endowed
than the rest. Use them to your advantage. Sign them up for a directed
studies course on a topic of mutual interest. Give them the responsibility
to become the expert and demonstrate their expertise to you through appropriate
papers, presentations and projects. I have found this to be an effective
means to learn about a single technology, such as JavaServer Pages. 3.
Keep one foot in the real world. Look for consulting opportunities,
preferably those that allow you to apply rather than teach computer science
knowledge. It is not always easy to leave the relatively safe confines
of the ivory tower, but it is always rewarding. Rarely have I taken a
consulting position that didn't demand learning some new technology or
some technology more intimately. For example, I have had a long-term relationship
with a local ISP. In the beginning, I reluctantly, and with much trepidation,
took on the duties of a system administrator. It's one thing to teach
about networking; it's another to actually configure and troubleshoot
networks. My theoretical understanding served me well, and I picked up
invaluable practical knowledge that has enhanced my classroom. I now look
forward to each summer for the challenge of the next real world opportunity.
2.
Work smarter. One of the most valuable lessons I've learned as I
mature is that I don't have to do everything myself. There are plenty
of resources available to support my teaching responsibilities. The two
I have found to be the most valuable are book publishers and the Internet.
The quantity and quality of ancillary resources for Computer Science textbooks
has improved tremendously during the last decade. Where before I was fortunate
to have an Instructor's Manual and test bank I now can obtain almost everything
my heart desires: sample programs, PowerPoint slides, laboratory manuals,
and Internet links. And speaking of the Internet, I have discovered a
wealth of tutorials and sample programs for almost every course I teach.
On occasion, I have even found a kindred soul who is teaching very similar
content and has placed all his/her materials on the web. (Yes, there are
copyright issues to resolve in order to use this strategy. I am confident
you will find great cooperation here!) Using these materials, I have more
time to focus on course content rather than delivery, and therefore, more
time to learn the next new thing. 1.
Do few things, but do them well. St. Francis of Assisi gave us this
wisdom to live a happy and fruitful life. Given my limitations, I will
only become frustrated if I try to know too much or do too much. I must
realistically assess what dogs in the Computer Science pack I can run
with and then focus my training there. I may teach a smaller set of courses.
I may use a smaller set of tools. I may let my more youthful and ambitious
colleagues shoulder more responsibility for course and curriculum development.
Whatever I choose to do, I will do with the same enthusiasm, commitment,
and desire for excellence as I have always done. And that will lead to
a happy and fruitful professional life. And
indeed there will be time to wonder, ' Do I care? ' and, ' Do I dare?
' . I have mused long and thoughtfully over my plight, the dreaded specter
of technical obsolescence. And over these many words I have given you
a glimpse of my personal journey. I would hope that you found something
familiar, a partial reflection of your own experiences. I certainly care
about my diminished ability to keep current. It is an uncomfortable feeling.
But unlike poor Prufrock, I have not been paralyzed by indecision into
doing nothing for fear it will be the wrong thing. I have a plan. It may
not be a perfect one, but I think it is a good one. Only time will tell.
If things don't work out, well, there's always golf. REFERENCES
[ACM01]
The Joint IEEE Computer Society/ACM Task Force, Chapter 5, Computing Curricula
2001, http://www.computer.org/education/cc2001/ironman/cc2001/v2-overview-bok.html.
[Glass00] Glass, R., On Personal Technical Obsolescence, Communications of the ACM (July 2000). |
| ©2001-2002 ASCUE, Inc. |
email:
clsmith@depauw.edu
http://www.ascue.org |
Latest
update: 3-nov-01
|