Another week in October has gone by, and I am still working on my book for the Women Make Challenge. Last week I posted the first chapter, and this week I’m sharing the second chapter, about the programming classes I took in college and what I learned from them. I only have a few chapters to go before I complete the book and then I will create a landing page and format the book for release! If you want to get more updates about my progress, consider following me on twitter @nadyaprimak.
After building my confidence in freshman year I decided to take advantage of my liberal arts school flexibility, and enroll in my first programming class. The thing I remember feeling most at the beginning was surprise. For some reason I expected programming would involve spending a lot more time with the hardware of the computer, and needing to understand how the most primitive parts of a computer worked. That is to say, I thought that I needed to know how to take a computer apart and how to put it back together, and be able to explain how each piece of the computer functioned in order to translate code.
Since nobody had ever given me any clue about what being a programmer was actually like, I really had no idea. I slowly learned that all my preconceptions were incorrect. Even math was not something that I needed to be super adept with. Programming simply adhered to rules which, once understood, were applied in a straightforward manner to pretty much all programming languages. At its core was something I felt like I could master: logical thinking.
It was honestly my first real exposure to seeing code on a screen. I had never been exposed to it in elementary, middle, or high school, nor was it ever mentioned by any teacher, coordinator, or camp counselor in my entire life. This fact, now that I look back on it, ought to have been the most shocking one of all. I had certainly been exposed to math and science, but to this day I cannot believe that nobody had so much as entertained the thought of showing me how to code when I was younger.
My first programming class was pretty much an introduction where we learned Python, a language which very much resembles English. In retrospect I probably could have skipped it and dove right into the larger and more intense Java programming class that funneled students into the Computer Science major. Instead, and because I had very little self esteem and had been told hundreds of time over my life that programming was “hard, challenging, and probably not for me”, I took the less intimidating path. If you identify as a woman (or any marginalized group in tech), that will probably sound familiar.
In the Java class, I spent about a dozen hours each week on the take home projects. This paid off greatly and helped to balance out my grade when I didn’t do so well on the exams. It also meant that the vast majority of my time during that semester was spent on programming assignments. This was the first time I realized just how extremely frustrating and challenging it can be to get something to work with your code, but also my first time experiencing the elation of having a functional program that I created with my own hands.
This elation was especially strong when I got to create the Go Fish game with Java. Since I loved to play games as a kid, making a game felt like going behind a magical curtain. I had never imagined that I would have the ability to actually create those experiences that brought me so much joy in my childhood that they felt truly special. It was such an empowering feeling to create something from scratch that people could interact and play with. Like one of my friends told me years later, programming has a certain element of magic. I loved the feeling of being the magician, and creating something that seems to have a life of its own.
Despite this elation, like the vast majority of my female peers at college, I decided not to pursue a Computer Science major. I heard lots of horror stories about how the next class I would have to take was extremely challenging. That it involved data structures far more complex than arrays or classes, and that I would be lucky if I passed. So even though I would have had a perfect A in my Java programming class were it not for a few pesky exams (I got an A on every take home assignment), I was scared that I would fail the data structures class.
Nobody attempted to dissuade me from that decision. Not even my parents, because they were worried it would be too stressful for me. It seemed perfectly natural that I chose to pursue design and the arts with a bit of programming sprinkled in, rather than the other way around. If I had decided to stay in the major, I would have been the only other woman graduating with a Computer Science degree in my year.
This “sprinkle” of Computer Science ended up being a 12 credit concentration as part of my Visual Arts degree, which was one of those strange creatures one can only find in a liberal arts college. Most of the credits toward my degree came from the Art Department, but I could choose 12 credits from any other department to supplement my degree and call it my concentration.
I was lucky that there were some Computer Science classes that I could take outside the track towards the major. Not all of the classes really added to my knowledge of programming. 3D Animation, for example, was a fun class but was more useful for learning 3D software and modeling skills than writing code. I basically skirted around the difficult classes and took the easier ones that I could find.
I should have realized back then after how much fun I had in my programming classes, despite their difficulty, that it was more useful and more practical for me to continue with the full Computer Science degree. On the other hand, taking those art classes helped me to explore my creative side. I still have mixed feelings about my decision, because I do miss expressing myself creatively sometimes. But back in college my decision was fueled more by fear. I chose what at the time felt like the safer, more comfortable path. I didn’t necessarily regret this decision, but I sometimes wonder what would have happened if I hadn’t been scared away from majoring in Computer Science.
In a perfect world I wanted to work on games, which was the perfect blend of art and programming. From that perspective my choice to major in Art with a concentration in Computer Science makes more sense. Maybe if I had moved to California I would have even gotten a job like that. I had no idea that in large swaths of the country jobs that merged creativity and technology were few and far between.
It was in my junior year I that I finally started revisiting the possibility that I could be a software engineer after college. I was tired of being at the whim of my clients and missed some of the problem solving that I got to do when I wrote code. I realized that I thought that I had been too weak to work in the field of software engineering, because of sexism and because I was non traditional and also because I was sensitive and creative and all of the things that a tech bro was not. I also realized that these were all stereotypes that provided no indication of my actual competence as a developer.
Ironically, the final straw was no big accomplishment in tech that made me realize how wrong I had been. It was actually because I had just done something I never thought I could do… break up with my boyfriend despite my issues with codependency and lifelong fear of rejection. If I could do that, then who knows what else I was capable of?
Even with that extra confidence, I was afraid of the future. With economic turmoil looming, my parents’ anxiety about my career, and by extension my own, increased. I could see the anxiety among my classmates as well; the closer we got to graduation the more it could be seen. I also felt guilty that my parents were paying for this expensive college, and I still wasn’t sure that I could pay it all back. Would it all have been worth it, in the end?
I applied for some developer jobs in my last year of college, but sadly none of them accepted me. Like many people graduating college after the recession, I had to settle for what I could get. If someone had told me in high school what my first job out of college would be I may not have believed them. It wasn’t a design job, or a programming job, or a writing job. In addition, the “where” was equally surprising as the “what”. I was going to be staying in the same tiny town where I had gone to college for another two years. I was going to be an “Art Technical Coordinator.”
Once you master the foundational concepts, it will be much easier to go on to some of those other more niche courses. The hard part is sorting through all of the existing courses and learning materials out there to find something that suits you.
Even though my programming classes were focused on building that foundation of knowledge, they were still not perfect for my learning style. A lot of material for my Java class was presented in a lecture format with long presentations in a large auditorium. It was early in the morning and I have never been a morning person, so I often missed the first few minutes of class.
Because of the large auditorium setting, I never felt comfortable raising my hand or asking questions in class. Even after class, I didn’t want to wait in line to ask a question because there was usually several students waiting to talk to the professor after class.
In addition, the large class size coupled with the less than engaging lecture format made it tempting for me to goof off on my computer or my phone. I didn’t do it often, but it was enough to miss some of the material which was probably part of the reason I ended up not doing well on my exams. This made me more wary of taking additional programming classes as well.
Speaking of exams, there is a lot of controversy around how well an exam can really gauge someone’s understanding of programming. Kind of like the debate around white board interviews, where the programmer must write code on a white board, it is perceived by many to be outdated and ineffective. I am inclined to agree, because writing code on a piece of paper or a white board just throws you out of the mindset you are in when you are programming.