Skip to content
GitHub LinkedIn

Advice that I wish I was given (or wish that I followed) as a Computer Science major in college

When I was studying computer science in college, I felt like I was drinking from a firehose. I was learning a ton and struggled to understand and apply what I was learning. I wasn't sure what was code syntax, design principles, or just the teacher's way of saying things. By the time I graduated though, I felt like I knew a lot. I was the team lead for my senior capstone project and graduated with a decent GPA. The problem was that I had no idea what I wanted to do in the real world.

Should I be a frontend or backend developer? Maybe mobile? What sector do I want to work in? What kind of problems do I want to solve? How do I work within an actual team? How do I level up my craft as a software engineer? How do I add value to a business? And as a student I didn't even know to ask these questions. I won't lie, it took me 2-3 years and a few gracious mentors to have a solid understanding of all of these things.

So I want to be a similar kind of mentor in this post. If I could go back in time and tell 17-21 year old Ryan to do things differently, this is what I would say.

Freshman year - Learn the syntax of a basic language

Whenever you see code, you see magic characters on the screen that when typed in a certain way make the computer do something. You have no idea what characters or words are necessary, which can be changed, or which can be removed. The structure of a program is completely foreign to you. That is your first gap in knowledge. So how do you level up? Pick a relatively simple language to familiarize yourself with. Preferably this language would also have a vast amount of resources for you to reference while learning. If I could recommend two languages that fit this description, they would be TypeScript and Python. You may ask, "Why not JavaScript instead of TypeScript? I heard that TS is just JS with some more stuff." Yes, at the end of the day, TS does get compiled into JS. However, TS adds an extremely important programming concept, types. While Python and JS are weakly types languages, TS is a strongly typed language. Both weakly and strongly typed languages are important to know in your career as a software engineer.

Sophomore year - Go outside of the console and familiarize yourself with a modern IDE

For the first couple years of my education, I only developed and learned within the terminal and the code I wrote was in a no-frills editor called gEdit (if I remember correctly). While providing some benefit, development never felt "real" to me. It felt like school work that was produced in a sanitized environment that the professor setup. Luckily, it is pretty easy nowadays to start coding "for real." You can download a modern IDE like VSCode and spin up a web application using a modern JavaScript framework within 30 minutes. You can start developing a mobile application in a similar amount of time. Coding in these environments will teach you many things and will provide much quicker feedback. The process of setting up your system itself will teach you many coding-adjacent things. Typically, the error messages will also be more descriptive within these frameworks too. On top of these two benefits, developing in these environments will be significantly closer to what you will be doing in the real world.

Junior year - Publish an actual application that people can use

This can be scary advice to some. What could you even make? That was my biggest question and the thing that prevented me from even trying until recently when I started seeing problems and inefficiencies all around me that I knew software could help solve. Once you start thinking that way, you won't be able to not see opportunities all around you. Does your church have a signup sheet for events or potlucks? That could be digitized very easily. Does a small business around you struggle to manage inventory? A system could be devloped to help them manage it. Heck, you could even try to make a clone of a service you are familiar with like a messaging app, Reddit, or X (Twitter). The point is that making something will be the thing that grows you. Whatever you make is secondary. The easiest platform to develop on is undoubtedly the web so you may want to begin there!

Senior year - Find ways to work with others

During my senior year, I was part of a team that was making a game for our senior project. While it did introduce me to some team dynamics, I still never really worked on an actual team until my current job. So how do you find opportunties to grow your ability to work with a team? Open source projects present a fantastic avenue to work with others. You will be forced to learn version control systems like Git and GitHub and will be subject to peer reviews (PRs) where other people will review the code you write and request changes. Being exposed to the opinions and demands of others will force you to learn new patterns and will teach you how to write code that others can understand. When doing this, remember that whatever code you write is nothing to be ashamed of. The code you spent hours working on may be ripped to shreds in a PR. That is ok! In fact, it is great since now you have learned what not to do (aka you just gained some experience).

BONUS Summer + Winter breaks - Gain one new technical hardskill

As far as my CS education goes, my breaks from school were squandered. To be fair, I did have a job and did take a few summer classes, but outside of my 40 hours a week, I was home playing Destiny or Call of Duty. Pretty typical for a college dude, but I wish I had done something a little more productive. One easy thing that anyone can do is learn one new hard skill every break. For example you could learn React, Angular, or Vue for frontend development; Flutter, React Native, or native languages for mobile development; Python for data related development; NoSQL or SQL along with the different databases that use each; or Spring Boot or .NET for backend development. All of these skills can be learned for only $10 from sites like Udemy. If you learn one each break you will have 6-7 hard skills that your classmates will not have! Talk about setting yourself apart from the pack.

Conslusion

If you've read this far, thank you! If you are a current college student or an aspiring software engineer, I hope you will apply these things and find success. Let me know what you try or if you have any questions by messaging me on LinkedIn. My profile is linked at the top!