Low Level Should Be Low Priority
I grew up watching the NBA and playing NBA Jam so I fell fast for finger rolls, crossovers, and dunks. I went outside, lowered our basketball hoop, and pretended to be Vince Carter. I picked up a bad habit or two playing on that lowered hoop but that’s how I fell in love with basketball. When it came to practice, I had to do the drills, run layup lines, and play on a full-size hoop. Those are not the most fun parts of basketball but I warmed up to them as time went on while continuing to imitate Air Canada on the side.
Today, I program. The internet and technology offers a similar feeling to me that basketball does: a little showmanship involved and a lot of thinking. When I first started programming in my college classes, I learned assembly. I was less than enthusiastic about it. Show me the games, the websites, the apps. Why do I care about two’s complement or bit shifting? Yikes. I forced myself through CS 124 and a slew of other CS classes but barely made it out alive. I just didn’t care. I just wanted to make something cool.
Now I program every day and I love it. Some of the fundamentals or basics that were taught in my beginning classes, I have forgotten or never learned in the first place. For a bit, I felt like I cheated myself. Perhaps I should have forced myself to learn the programming concepts that put me to sleep. But I have come to realize that I care now so what better time to pick those things up? I have passion about these things now so I’ll retain them better and learn them faster, with less resistance. I really have not significantly suffered from skipping over things that bored me at first.
This mentality is not uncommon for beginning computer science students and it absolutely should not “weed” people out from the discipline. This thinking decreases diversity. Lots of people don’t care about data structures and the “fundamentals” of programming. To start with those things scares people away. If we want more excellent programmers, maybe we should be a little more worried about selling programming to people and a little less worried about when certain things are learned. If they care and they’re smart, they’ll get to it.