Forgetting How To Program

Posted by Roie R. Black on Tue 05 December 2017
Capt. Sullenberger Quote

I read this article this morning.

Since I am a pilot, that quote caught my eye, and the story it tells about flying struck me as true about where learning how to program is going these days.

The Push to go Online

Classrooms fill up with students eager to learn how to create some new hot program. It seems far to common that the program they seek to create is some form of video game. Shoot, video games are the new baby sitters of this generation. Their parents tossed a tablet at them as soon as they could hold one and not drool all over the screen. Add a nice shoot-em-up video game, and they are totally absorbed for hours. This is the world they know and love. Unfortunately, that world is fake, and they are not learning to live in the "real world"[1]. Sooner or later, everything they do seems to happen on that tablet.

Including education!

And I think that is a bad thing!

Education by Tablet

Basically, there is nothing wrong with using a tablet as a reference. In fact, it is rapidly becoming common to use tablets instead of textbooks. I have over 100 books on my tablet, all stored in the form of PDF files. That library of books of far easier to haul around than my old knapsacks full of real paper books.

Better yet, those books can be updated easily, even daily if needed, something you cannot do with a real book

It is not just textbooks that are affected by tablets. WHen was the last time you went to the library to do some research.

Why do that when you can Google?

Well, the Internet has certainly made information easy to access. It has also made misinformation easy to access as well. Far too much of what you find in your Google research is just junk. (And, don't get me started on watching the news these days.) Learning how to sift through the junk and pull out real information is a skill not often taught in the classroom. You almost have to get burned a time or two to learn this lesson. But this is part of the educational process today, and we have to accept that.

There is no doubt that tablets (or laptops, or even phones) are an important tool in the educational process these days. Being online is a fact of life, it seems, and we have to deal with that as educators.

The Real Problem

So, what is the problem?

Educators are trying to train their students, to give their students a set of skills in the subject that they did not have before they took the class. Teaching that skill involves testing the student to make sure they are learning those skills. And that part of the process is in jeopardy in this tablet-driven educational system.

How do we certify that the student actually has a skill.

Well of course, we give them a multiple-choice quiz and automatically score that quiz. If they pass enough of those quizzes, we certify than as proficient in that skill.

Bull-puckey!

Online Testing

Instructors are rushing to video-tape their lectures so they can be viewed online, and testing has moved online as well. A student can sit under that tree, tablet in hand, and watch the video. (If they even take the time to watch!)Then they can charge off and take the quiz. Once they are through with that, they stand up, brush the leaves off of their clothes, and walk off "certified" as skilled in that subject.

More Bull-Puckey!

I tell my students this:

You will never sit through a job interview and be asked multiple-choice
questions. You will get that job by proving that you can do something.

How do we prove that the student has a skill?

Acquiring Skills

"Learn how to Program in 24 Hours"

You might find a book titled "Learn How To Fly in 24 Hours". I do NOT want to ride in an airplane where the pilot read THAT book!

Really learning a skill takes time, and learning how to learn takes time as well. You have to practice the skill, multiple times, until it becomes part of your nature.

Programming is like that. Certainly you need to learn the syntax rules, like learning how to structure sentences in English. If you do not do that right, the meaning of the sentence is gibberish. Same thing in programming. If you put together a piece of program code that does not follow the rules, the computer cannot make sense of that program.

Fortunately, there are tools to check your syntax, And you now what? I can give you a multiple-choice quiz to make sure you know the rules.

But that is far from enough!

Today, many programming environments will help you write proper syntax in your code, You can even copy-and-paste snippets of code into your program that someone else wrote (sounds like plagiarism to me). In the end, the tools will be happy, and your program will run.

But, do you know what will happen when the program runs. Better yet, do you know if what you just created will actually solve some problem the program needs to solve?

Can you fly this airplane?

Reading a book on flying will never prepare you for the real job of flying an airplane. And just using some automated tool to piece together some code with proper syntax will never prepare you to solve a real problem.

Note

The one moment I will never forget in my life was that first time I left this Earth in a machine totally under my control and soared through the sky. Knowing that if I screwed this up I could die was a real thrill!

I know many instructors who give their students code to "modify". The student starts off with some code that may or may not even work, and their job is to make it do something. That is a skill they need to practice, since they will surely be asked to fix some code they did not create themselves.

Hey Sally, this airplane seems to be out of control. Could you step into
the cockpit and fix that?

Sure, just let me grab my tablet. I am sure there was a chapter on "out of
control" in there somewhere.

Students need to be able to start off with nothing and create their own solution to some problem. The skills involved in doing that are many and complex. That kind of learning needs a lot of practice to do well, and the exact process used may change over time as new ideas and tools become available. Testing that a student can do this is very hard to automate, since there is no one answer. The instructor needs to use judgement to assess how well the student handled the situation, before certifying that they are ready to "fly".

Note

General Stan Czyzak, my first flight instructor, was a master at this. He put me in situations (I had my eyes closed as he did this) and asked me to recover over and over. In the end, I was pretty certain I could handle just about anything I might encounter in flying.

Except flying upside down.

When I realized that, I took a course in aerobatic flying, years later.

Just learning one small part of the trade will never do. You need to build up a full set of skills to really claim to be a master of that topic. Acquiring hat kind of memory-knowledge takes a lot of practice, and it is hard to "certify" those skills.

You cannot do that with multiple-choice quizzes. The instructor has to watch the student demonstrate those skills. Hard to do on a tablet.

Forgetting How to Program

I have an issue with automated tools that help you do something. An "Integrated Development" is a tool used by programmers to put together a program. It helps them get the syntax right, and look up the right way to call certain part of their code into life. It will also help them figure out why the program does not run right.

But it does not train them how to organize a project, how to make sure they are solving the right problem, and how to make sure the program actually works as required. Those skills are outside of that "IDE" tool.

The more you use that tool, the less you really understand what is going on.

In an airplane, there are auto-pilots that can "fly" the airplane. These are nice. You can spend your time at the controls looking out at the pretty scenery. The automated tool does your work for you.

Until something bad happens.

I once had a van with a first-generation cruise control system in it. I had to add that gadget to the van, and I let the local department store where I bought it do that job.

One evening, during a snowstorm in Dayton, Ohio, when it was about 10 degrees below zero, I realized I needed for the cruise control to be off, since the roads were far too slippery. I tied to disengage it, and IT WOULD NOT CUT OFF. Everything I tried was fought and the control wanted me to stay at 60 miles per hour. Fortunately, was on an Interstate. As I sailed past my exit, I struggled to regain control of my van. I ended up yanking the wires off of the control head and the system shut down, restoring control.

If I had not known how that system was installed, how it worked, I might not have been able to do that. There was no time to pull out my tablet. (They had not been invented yet, neither had the Internet!)

What to Do?

I ponder this a lot. I do not let my students use tools they do not understand. I want them to practice all the basic skills needed to handle any problem. If their favorite tablet fails, of their laptop dies, I still want them to get work done.

Reliance on automation does weaken our skills. And testing them with those sily quizzes does not "certify" that they can handle that "real world" {#f1]_ out there.

Time to get back in that simple no-automation airplane and see if we can really fly!

[1]That place where everything works the way it is supposed to work. Unfortunately, that place is never where you are at the moment!

Comments


There are no comments yet.

Add a Comment

You can use the Markdown syntax to format your comment.