Laura: An International Student’s Computer Science Journey

Imagine your normal daily routine, you wake up, and enjoy a day full of normalcy — a day full of familiar faces, familiar accents, familiar culture. Imagine the next day, you look around and find yourself in a deep sense of unfamiliarity, as if a giant had scooped you up and dropped you in an alien world.

This is a taste of my experience moving abruptly from small-town USA, to a city I had never been to, on the literal other side of the world. In 2016, I moved to Cape Town completely alone to begin my journey as an international marine biology student at the University of Cape Town (UCT).

Wait, I know what you’re thinking, isn’t this supposed to be a post about computer science? Well, my journey was not completely black and white, I went through a time of self-discovery, as we all do, that led me down a difficult, rewarding path to becoming a software engineer at Amazon Web Services (AWS).

I’m going to break down my experience from biology student to computer science student, and share the various bumps in the road that caused me to almost drop the pursual of a tech career. I will share my rediscovered love of CS, along with how I went from average just-getting-by student, to landing my dream job at AWS.

From Biology to Computer Science

Growing up I always had a deep love for animals and nature, and I always imagined myself working outdoors. Naturally, this led me to first pursue a major in a related field, namely marine biology.

Queue my first semester at UCT, and I very quickly realized that my love for animals and nature did not at all translate into a love of grueling lab reports, or scientific writing. The thought of being in school for many, many years (as is the usual for a scientific career) began to weigh on me, and I quickly realized I was unhappy in my major — I needed to make a change. 

In my mind, I wanted to take the path of least resistance to a more sustainable career choice, and coincidently, I had chosen to take CSC1015F (the beginner CS course at UCT) in my first semester. This put me in a position where I could switch majors to CS without having to add additional time to my degree and so I took the jump head-first without much knowledge of the field. This marked one of the best decisions I have made in my life to date.

Life as a CS Major

The transition to the tech world was exciting and weird, and unlike anything I could have predicted. Although my jump to tech was not fueled by a previous ‘passion’ towards computer science, my love for the field quickly grew and exploded. I began to deeply enjoy the complex theory, along with the ability to build and create through imagination and code.

Unfortunately, life as a CS major came with an abundance of challenges. Although the material was interesting, it involved difficult, complex logic that was challenging to master. The difficulty of the course work along with the over-abundance of projects and deliverables introduced a startlingly consistent feeling of anxiety and worry. My personal drive to succeed forced me into a state of non-relaxation, and it felt like the thoughts of finishing that one assignment or getting those 5 extra marks became a stormy cloud over my head.

Along with the difficulty of the material, CS introduced many social challenges as well. Being a female in such an immensely male-dominated field forces many things on you, whether you like it or not. I remember one notable course I took in my third year, including myself, there were a total of three females in a class of over fifty students.

“It was often the case that I would find myself being the only female in the whole lecture theater.”

~ Laura

Now, this dynamic brought about challenges, many of which were not overtly obvious. Sure, there are the obvious difficulties of feeling ‘left out’, feeling like you are in a ‘boys club’, and an overall emotion of not feeling like you truly belong. More subtle, however, were the feelings of extra pressure to succeed, the feelings of not being good enough, and the pressure of being an automatic role model.

The pressure of success and being a role model really came hand-in-hand. Being one of the less than 10% of females in CS automatically puts many eyes on you — from young females who are looking to be inspired, to already-successful females in a tech career. You are looked at for guidance on the subject, and it feels as though there is an expectation for you to succeed so that you can show females all around you that its possible. There is an expectation for you to do well and become the next generation of successful females in tech, so that you can replace the current’s shoes.

Unfortunately, this is a bit of the hidden reality of being a female in CS that no one really tells you about. This pressure quickly became too much for me to bare, and I began to look for an escape out of pure tech, so that I could feel ‘included’ and just have an ‘easier’ time in general. Feelings of imposter syndrome were abundant, I never felt that I was the role-model that excelled at computer science. It was difficult to hear all the boys talk in deep technical terms about the hundreds of frameworks, technologies, languages, and projects they’ve worked on since they were ten years old.

I often felt like a true imposter, why had I not heard of that framework? Why did it seem like the boys picked up the material so quickly? How could I possibly succeed and be a role model when I did not feel that my skill set matched up to everyone else? These thoughts slowly began to take over my whole existence, and it brought me to a breaking point.

At the end of my second year I decided that pure tech ‘wasn’t for me’ and that I wanted to transition myself into a place where I could still have some foot in in tech, but focus mainly on a more ‘social’ business aspect. I began to research deeper into the subject, and began to tell all my friends and family about the change. In the back of my head, however, I felt like I was copping out. I felt that I was giving up because it was ‘too hard’, and this caused me to feel like an even greater failure than when I was struggling in my pursual of pure tech.

Rediscovering my love of Computer Science

It was at this point that I had a deep contemplative conversation with myself to try and figure out what I truly wanted and what I needed to do to get there – regardless of difficulty. Deep down I always knew I wanted to stay in pure tech, I was just too afraid of the challenge and failure. I felt that I was putting way too much focus purely into code and tech, and realized I had never participated in any type of tech related extra-curriculars. I immediately realized this was the source of my dread, I knew that if I put myself in a position to connect with other like-minded people, and tech females in specific, I would be able to find that long needed feeling of belonging and sharing.

Queue the beginning of third year. I am walking through the halls of our beloved computer science building, when I see out of the corner of my eye a sign with the words Women in Computer Science – it was almost as if the world had heard my struggles. I briskly walked up to the poster to find that this society would be holding their annual AGM that same week. I took this as a sign (literally) as my chance to find the network I had been longing for.

On the day of the AGM, I remember walking in to the lecture theatre and quietly sitting in the back. There were an abundance of people waiting for the event to begin, and to my surprise, a heft amount of females. At this point, I didn’t know a single soul in that room, and so I kept to myself for the time being. The event began, and the WICS committee went through the usual AGM structure, giving a brief overview of the society and what had been accomplished in the year prior.

The committee then announced that they would be holding a vote for the election of the new, incoming committee. One detail in particular stuck out to me, they announced that anyone could run, even if they hadn’t signed up previously. I took this as another sign, and in what felt like a moment of adrenaline, I walked up to the front of the room to elect myself as a runner for the role of vice-chairperson. I had to give a small impromptu speech to the room on why I was the ideal candidate, and then I was ushered into the hallway while the room voted.

It’s safe to say that I walked into that AGM meeting on that particular day as my regular self, and left the meeting as the new vice-chairperson of WICS. Now, obviously there was no immediate change in who I was just from that one-hour experience. The real change emerged in that first semester of my third year, when I began my position as vice-chair, and properly began to get deeply involved in events.

In this time, I was so fortunate to experience all the things that I had previously been missing. I was able to connect with other like-minded people, I formed close bonds with my committee and my members that brought about a new confidence in my ability to succeed in CS. I was finally able to share my struggles, tears, fears, and most importantly my successes. I was able to give back to the community, and I finally felt that I was genuinely putting my foot forward as a role-model.

Now, there were other things that I ended up getting involved in in my last two years of UCT, but my membership to WICS was truly the core moment that lit a fire inside of me. It was the beginning of my true passion for computer science, and for the field of pure tech. The moral that I would like you to take away from this is not that you necessarily need to throw yourself into an election at a random AGM, but rather,

“… putting yourself out there and building a community of like-minded people is just as important as understanding your course work.”

~ Laura

Not only is it important for building your professional network, gaining a broader understanding of the tech field, and being able to sharpen your social skills, it is deeply important for your mental health. Being a woman in this day and age is difficult, being a woman in an unbalanced, socially isolating field is another monster on its own. Do not underestimate the importance of having other like-minded people in your playing field. The ability to laugh, to cry, to share the pain and excitement with others who understand is vital to surviving and making your way through the difficult path that is computer science.

Pushing Forward to My First Job

I feel as though I could write an entire novel on this topic, so instead I’d rather give a very quick summary and provide you with a list of useful resources that were absolute game changers in my job hunt.

I began to think about the topic of finding a job at the end of my third year. Although I was pursuing my Honours, I knew the journey would take time for me, and I was very conscious of my goal to have an offer before the end of my studies. Now, the honest truth is that the large majority of my success in the job hunt came down to simply making myself informed.

Informed on what kinds of jobs I could get with my degree, informed on what companies offered these jobs, informed on the interview processes for these jobs and companies, informed on salary ranges. I made sure that before applying anywhere I already knew exactly what the interviews would be like, and what I needed to do to prepare.

I gained all of this information through my good friend Google (below, I’ll share a list of my most recommended resources, along with a short description of each). As for landing a position with AWS, I spent countless hours and late nights researching everything I could about the company, about their interviews, and informing myself on what I needed to succeed.

Through my research, I learned that the majority of tech companies (and virtually all the large tech companies) revolved their interview process around coding challenges that test your knowledge on data-structures and algorithms. This discovery allowed me to hone in my preparation, which in the end, truly paid off.

I’ll leave you here with one last important thought:

“Whatever your goals are in computer science or otherwise, they are possible. No matter how dark and frustrating the path seems, there will be a light at the end if you are willing to put in the work.”

~ Laura Cohen

Resources that helped me

GlassDoor

Glassdoor is a place to find real salaries for positions at various companies around the world, including South Africa. This is also a good website to find job postings. You can also read about people’s interview experience for specific positions at specific companies. People self-report the exact questions they were asked, and give a lot of useful tips and hints.

Levels

Another useful place to find salary ranges for most larger tech companies

LeetCode and HackerRank

Both of the above are vital resources for practicing data-structure and algorithm problems. You can find problems marked by companies that ask them. They have an online IDE where you can submit your answers and get automarked.

Leetcode also has great forums where people discuss their interview experiences, and salary offers.

Quora

A general online forum, but I found a TON of great advice and insight into the tech interview process by searching more narrow questions like: How to pass a google interview as well as how to get a job as a software engineer.

TeamBlind

An anonymous forum where people chat about their companies (lots of tech companies) and related things.


I would also like to say a friendly disclaimer that all these views and opinions I shared are entirely my own, and come from research and learning I did in my own time.