I remember undergrad like it was yesterday. I still miss it. The late nights in the lab with my friends, the fast food runs in between long procrastinated project sessions, the frantic scrambling trying to get code to work an hour before a submittal date…
Yeah. It was awesome. And looking back I don’t think I would study any other thing, even though there were nights that I questioned my sanity and cognitive abilities. It was a great experience, I learned a lot, and made amazing friends along the way. What more can someone ask for?
So with that I want to go into the top five things I learned from studying Computer Science and why I think they are important lessons that carry on within me, and the tech industry, even today. Alright. Let’s get started!!
1. Lectures Don’t Matter When It Comes To Code
If you ever meet me, you’ll know that I am a huge proponent of learning by doing. That concept is even more relevant within computer science and software engineering specifically.
When I was in school, I will admit without shame that I would spend lectures half listening to my instructor and half scrolling memes on Imgur or Reddit. I’d take a note here or there, but for the most part it was hard for me to pay attention. Missed a lecture due to some shenanigans the night before? I didn’t stress too hard. I could live with it.
Missing a lab however? That was another matter. I’d still go in even if I had to spend 72 hours awake straight on some weird coffee experiment that only paid me a Doritos Locos Taco and a coupon to Coldstone Creamery (not that I did lol).
The lab was the only part where I could fully understand the concepts being taught in the class. If you are new to the computer science study, usually a lab is where a bunch of students sit in a room in front of a computer and try to code up exercises specific to the curriculum or just to work on their projects, always with the help of an instructor and TA on hand. Essentially…getting their hands on the code.
An example of the importance of a hands on education is when I learned databases. I sat in the lecture going through primary keys and foreign keys and the moment I left the lecture hall it left my head. However, when I was forced to actually create a database and go through the hell of finding out why these relations weren’t working (surprise it was a key issue), I was able to understand exactly the concepts of a primary keys and foreign keys as they apply to what I have been studying.
The takeaway from the labs is that you will never get a full understanding of anything you study until you actually get your hands dirty and do it yourself. There’s only so much you can learn from books. Go out, create your own projects, and actually stumble through the development phase. It will be good experience and show future employers that the knowledge you gained wasn’t just force fed to you through a lecture hall.
And if you have to skip class? Miss the lecture. Never the lab.
2. Don’t Start Coding Your Project Right Away
This tip will contradict with lesson #3, but it’ll make sense as you keep on reading.
When we get a project, there’s always an urge to start coding. If that’s you, then stop! Breathe! Relax! I’m telling you that you’re wrong, you’re hasty, and you’re gonna set yourself up for a bad time later down the road.
The first thing I learned from my professor is to design your application based on the project requirements, on paper, before you even begin. This allows you to design your code based on a modular principle and to understand what you actually need to do to make it work cleanly. The worst thing you can do is to start at the first requirement and then get to the last requirement and realize that it’s not going to work because of some conflict in how you developed your project.
This applies to a lot of principles that you will see later on in the industry. Taking the time to understand what your client wants before building it saves money, time, and the heartache of stumbling through code changes that you might have to do later down the road.
Always design your project or have a good understanding of the project on paper before you head off to the computer. Future you will thank you down the road.
3. Start Your Projects Right Away
Start your projects as soon as you can.
After you design it of course.
This is a lesson that many people can probably agree with and have learned through their own studies. This is something that you cry on when it’s 11:30PM, your code is not working, and Canvas is waiting for a submission at 11:59PM. Oh, the memories…
It helps even if you’re just creating your empty files early. 30 mins every day even if it is just an iterative process helps and accumulates. It’s the principle of compound interest and discipline. This part is short because it’s simple and self explanatory. You do better work when you don’t rush. You can go through and test, reevaluate your design, and maybe make things better. It’s also less stressful when you’re not scrambling to meet a deadline.
Some of my best works may have been done when I procrastinated to the last minute, but man, my blood pressure can’t handle that anymore.
4. Communication Skills Are Still Important
For all my introverted developers, I understand that all you want to do is code. I get it. I’m with you as well. I like nothing better than just getting deep into some cool stuff. But man. I lost count of all the times I have seen great coders lose out on positions because they don’t know how to communicate.
I learned that no matter how good you are technically, recruiters and companies are going to be hesitant in giving you an offer if they find that you will not be a good fit for the team. Maybe you’re thinking that’s unfair. Your code is way better than the next guy, why did he get an offer and you didn’t? Well…
Life is unfair.
You can’t expect people to read your mind and know you’re super proficient in some popular language. You can’t act better than anyone because you’re a developer and they’re not. And you definitely can’t stay silent because the “resume speaks for itself”.
I’m not saying that you have to be someone you’re not. You don’t have to be extroverted or charismatic. You do you. There’s only one you after all. But it’s important to have a solid foundational communication base even if you’re in the tech industry.
Give a firm handshake (if that’s still a thing post-COVID), look people in the eye, know how to listen and not just hear, and be open to learning. Know how to get your point across simply and clearly, and always articulate your message.
Even though we work with computers all the time, it’s good to still remember the best way to interact with a human.
5. There’s More To Life Than Programming!!!
This is the most important lesson and the shortest.
I’m going to give a short story. There was a project I worked on once where we had to build out a ray tracer to create 3D images. I built something simple that worked and ran pretty good. My other classmate built something super complex that speeded up its runtime to abnormally low speeds. It was fast. Faster than mine by a lot. Want to know the grades we both got?
Final score: 100/100.
How do you think he felt spending three times the hours than I did to get the same grade as the resident CS slacker? Probably not good.
You can argue that if we were in the industry, then he should have gotten a bigger raise than I did. And maybe you’re right. But this is university.
I came to the conclusion that I could make something simple that worked in half the time and get the same grade as the people adding in unnecessary fluff to their code. This allowed me to enjoy the other aspects of life and reduced my stress. Obviously never reduce quality by cutting corners, but sometimes the best solution is the most simple. Look at Google. Literally one search bar. You think it would have been as sleek if they had the advanced Google search as the homepage instead?
All I’m saying is that there’s more to life than coding when you’re in school. Don’t spend your whole life behind a computer screen unless it makes you truly happy. If you think you need to do it for the grind and success…you don’t.
If I can do the same thing you can in half the time, that doesn’t mean that I’m unmotivated. That just means you’re inefficient.
Explore other things. Build upon your interests and hobbies. It will make you a more well rounded individual, and ultimately, a better tech professional!
Let me know in the comments below what are some of the best tips and lessons you learned from your undergrad and it can be in any discipline! We all have different experiences through life and this is my five high level takeaways from studying Computer Science. As always, thank you for reading and hope that my experience may be able to help guide you in your journey.