I didn't have a lot of programming experience before starting college. I'd loved computers since my parents had brought home our Mac plus around 1985, and I spent hours in my youth configuring, tinkering, and playing1 with the steady string of computers my family owned2, but I never actually programmed anything using them.

That all changed during my first semester at BYU, when I took the introduction to programming course. It was hard, but fun, and I managed to power through it with few problems, and I even did pretty well overall, so I figured this programming thing was going to be easy and with a few hours of work here and there I could conquer it.

Then came the second programming class. The introductory class used an integrated Windows IDE that streamlined the editing, compiling, and running of my code into one easy to use package. That second class, however, switched to Linux and required using the command line for compiling and running my code.

It was a night and day change for me. They moved really fast through the material3 because we all had previous programming experience now. I didn't know Linux, I didn't know what text editor to use to write my code. I didn't know how to compile my code using the command line, let alone run it. Every. Freaking. Thing. Was. Different. And To top it all off, my Grandpa died early in the semester, and I missed about a week of classes.

I got behind, and I mean really behind, and it became obvious when I sat down in the Linux computer lab, the day before my first project was due, and struggled to even open a file. It was my worst nightmare. I remember feeling sick when I realized I didn't understand half the project description and that that there was no way I was going to finish the project before it was due. And then I noticed the second and third projects built onto the first, so I was just going to get further and further behind. There might have even been some tears.

The next week I spent nearly every waking hour in the computer lab making nearly zero progress. And it became apparent I wasn't going to be able to figure things out on my own like I always had before. I was too crunched for time, too far out of my comfort zone, and under too much pressure. So I did something I had never done before, I went to the TA help lab and asked for help.

I'm not going to lie, it hurt my pride quite a bit to walk into that help lab and start asking the kind of questions I was asking4, especially already being a week late on the first project and about to be late on the second project. But the TAs helped me choose a text editor, design my project, and write and compile my code.

It took me about five weeks, and lots and lots of hours in the computer lab, to completely catch up, and I spent a lot of time getting help from the TAs. But I've carried that experience with me to this day. It's the single best thing I learned while getting my Computer Science degree, and it's definitely served me better than anything else I learned, I learned how to ask for help.

This tweet from Maddie Stone (Security Researcher at Google) made me think of my college experience:

2nd semester of CS, I asked "What is a server?" in my intermediate program class.

Everyone laughed, the professor looked at me incredulously & I continued with "What do you mean a computer doesn't have a screen?"

And here we are today. Ask the questions until you understand.

  1. Dark Castle, King's Quest, Space Quest, and Police Quest, I love you all! 

  2. We started with the Mac Plus, then we switched to a Pentium 386DX running Windows 3.1, only to switch back to a Macintosh Quadra 660AV right before the Powermac's came out :( 

  3. Things like module importing, namespaces, and Polymorphism were completely new to me, the first course basically never required more than one file or more than one class, and then I was all of a sudden required to have multiple files, with multiple classes. 

  4. As a former TA myself, questions like: How can I open a file? and How do I compile my code? are not the kind of questions you want to hear from a student that is already a week late on the first project.