I remember my first few weeks of college being completely different than I expected. I had taken computer science classes throughout high school and presumed that I would be at least a little ahead of the curve arriving at college. However, a week went by, and we had already surpassed what I knew. After I finished my freshman year, I felt even more confident in my abilities going into my first internship, and I again thought that I would be overly prepared, and again I quickly realized that I would have to start from scratch. Now after four years of classes, three internships, and starting a full-time job, I have a much better perspective about what school teaches you and what it doesn’t.
Throughout my first internship, it felt as if school hadn’t prepared me for any of what I was doing. I had taken classes on data structures and computer architecture, but my internship was primarily front end work with some focus on data visualization and databases. Although my classes had taught me some new languages and some of the ideas that make for good programs, they were taught with a narrow view of applications, primarily with future classes in mind. I had to more or less teach myself the ins and outs of web development with help from my mentor and used little to nothing that school taught me. I knew that I would have to learn bits and pieces as I went, but I wasn’t expecting it to be that drastically different. As my time went on at school, I figured that I would be able to use what I learned from my internship because I thought I would have more classes that would cover some of the same material. However, out of 12 computer science classes, only one (Software Engineering) had any mention of front end development.
In my mind, within computer science there are hard skills that directly relate to programming i.e. languages, libraries etc. and soft skills such as git, docker, ticketing systems etc. While you get good exposure to many different hard skills within school, training for soft skills is oftentimes lacking in the classroom. Again, out of 12 computer science classes only one (Software Engineering) really taught us how to use many of the different tools that are needed on a day to day basis as a programmer. While it is a little more understandable that there is less of a focus on front end engineering, the fact that these soft skills aren’t taught from day one is somewhat surprising to me. While in school, I worked as a freshman mentor for computer science students and taught a weekly one hour seminar to expose students to some of what they need to know that their classes would not teach them. Through that seminar, many students (including myself my freshman year) will learn a little about tools like git, some about recruitment, internships and going into the workforce, but that alone is not enough to truly prepare someone’s soft skills for the future.
Although I have a few qualms with some of the ways that college doesn't prepare students, over time, throughout my classes and internships I started to see my college experience start to pay off. For example, picking up a new coding language is much easier after using so many for classes. I also find that my development procedure has drastically improved over years of coding for classes and meeting deadlines. I also took a lot away from my extracurricular activities that I was a part of during school. I was a part of an organization that puts together hackathons, and that really helped with my interpersonal skills and leadership. There are also classes that go over necessary skills that have been made public online like this one from MIT.
However I think the internships I got through my education were the biggest teachers for me, specifically my last internship that turned into a full time offer with DevRev. Working for a startup will get you ready to work on anything quickly; but I’ll save that for another day.