When I had to learn a new programming language in a single day

Kenneth Kasajian
Jul 22, 2017 · 3 min read

This may sound like an opportunity to boast, but it is not. Rather this is a story of foolishness, and how one responds when one’s back is against the wall.

I took a year off in college, got married, moved, and enrolled to new university so that I can continue working toward my degree. How fun it was to transfer credits.

When I got the classes for my first semester back, I noticed one of them required instructor approval. So I met with the instructor who told me I need a data-structure course as a prerequisite. Armed with my transcript, I was happy to inform that I had already taken one in my lower-division curriculum. She looked at my transcript and said, “yes, but it wasn’t in Ada. You’ll have to take our course because you need to know Ada to take my class”

Dubya. Tee. Eff.

Seriously, I don’t want to take the same course again. “Oh, Ada? No problem. I know Ada!”

“Oh, you do? Well that’s good. Then you I’ll approve”

“Thank you!”

“No problem. Please stop by tomorrow morning at 7 and I’ll give you a quiz to verify that you know Ada”

😳
(face palm)

“Okay. I’ll see you at 7”

Dafuq am I gonna do.

Okay, so this is around 3 PM. I have to learn Ada! I have to learn it enough to pass a test! A test to verify that I know Ada. What am I doing!

Because I was now committed, there was no going back. I had to do this. I had to learn an entirely new computer language in less than a day.

I needed to come up with a plan.

First. It’s not going to happen. I’m not actually going to learn an entire language. So let’s not pretend I can do this.

But I need to learn enough to pass a test.

Repetition. Learning something takes not only effort, but duration, so things sink in. But time is what I don’t have, so I have to substitute duration with repetition and quick iteration.

Working backwards, I have to be there at 7 AM. The latest I can wake up is 6 AM. And I’ll need a few hours of sleep.

I also need to come up with some objective criteria I can use to know I’m done learning and can go to bed.

The criteria I came up with is this: if I can sit down at a text editor and write some simple, but non-trivial working program in Ada that works, and: without looking up syntax or example code while I write the code, then I can say I know enough. And I can go to bed.

But also: after I write the code, save the file, and compile, if I have a syntax error, I am required to delete the file and start from scratch.

  • Insane
  • Masochistic
  • Brilliant

Imagine leaving out a semi-colon somewhere and BAM! compile error! You now have to delete the source code and start again. Who does that?! Yours truly with his brilliant ideas.

  1. Negative consequences cause me to avoid them, so I force myself to be careful and pay attention to details.
  2. Forcing myself to write all the code all over again because of any error — gives me the repetition that I need.

This is the Internet before the web, so I ftp to some .edu, download and install a free Ada compiler, and launch a text editor.

Fast forward many hours of me trying learning just enough Ada syntax.

Now I’m ready.

  • Launch Qedit;
  • Write code
  • Save
  • Close
  • Compile
  • Get compiler error
  • del *.ada
  • goto 10

I swear I probably had to do that a 100 times. But eventually it compiled and ran. I got to a few hours of sleep, and I passed the test.

I really can’t believe I put myself through all that. It was so unnecessary just to avoid taking another class. Hubris.

So kids, stay in school, and don’t do this!

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade