Ever wish you could go back in time and give yourself some advice?
Unfortunately that’s not possible yet.
However I was recently asked if I would be open to give some advice to a Computer Science undergraduate.
I rattled off a few things and agreed. To be honest I wasn’t sure exactly what I would say.
It got me thinking about what I might have said to myself.
Code, Code, and Code More!
If you want to be ready for the world outside of college you need to make things. The thing is not that important just start some project that interest you.
This is something I’m still struggling with now.
Find the time to create and build new things. It’s one of the benefits of learning how to code. Being able to have an idea in your mind and bring something in into the world is a super power.
You don’t think you have a lot of time right now as a college student. You know with school work, sports, the part-time job, and your “special friends”.
Trust me you have a lot more time then you think. As someone who has a full-time job, a wife, and a kid. I know that right now you have the freedom to fail.
I mean epic fail. Why? Because you don’t have others that truly depend on you. So go take that risk.
Ok maybe I’m being a little too crazy here. You don’t need to drop everything and start a company.
This is what I mean by make things. It’s getting to the point where most companies don’t care what you say you can do (aka having a college degree), and they’re starting to focus on what you show that you can do ( aka side projects).
So while you have some free time it would be really helpful to make something. It doesn’t have to be overly complicated.
It can be a simple mobile application, or you can contribute to an open source project.
It doesn’t even have to be overly technical. You can start blogging about an industry that you’re drawn to, or start a podcast interviewing people who inspire you.
By doing this you can help solve the chicken and the egg problem. The chicken and the egg problem is this: what came first, the chicken or the egg?
For recent Computer Science graduates the chicken and the egg problem is this: How do you gain experience when most entry-level jobs require some years of experience?
You can demonstrate experience by highlighting things that you’ve made on the side.
Get An Internship
If you can’t or don’t want to make things get an internship. Any internship even if it’s not paid.
You shouldn’t do this to gain skills, though you will. What you really want is to build a network.
By network I just mean make friends. Try to never eat lunch alone. Meet as many people in the company as you can.
If you can’t land an internship at a hug named company (Apple, Google, Microsoft, etc) then you want to intern at a startup.
Even better get an internship with someone you respect or some company in an industry that you might want to get into.
Learn Data Structures
This will save your life during those technical coding interviews.
At most companies the technical interviewers want you to show that you can solve a problem using a basic data structure.
It’s the most important thing you’ll learn in college. It’s also one of the few things that I feel college teaches correctly.
Data Structures is also one of the few things that will help you regardless of which programing language us work with. It’s one of those things that makes you a ‘Programmer’. Regardless of which programing language you end up working with.
This is one of those meta concepts that will pay off throughout your career. Much like Algorithms which we’ll talk about next.
Understand Basic Algorithms
You’re going to learn a ton of complicated things while getting your Computer Science degree. You’re going to have to memories things that you’ll end up just Googling in the real world.
There’s going to be cross discipline things that you’ll question why your college even requires them as part of your major. Algorithms is NOT one of those things.
Learning Algorithms might not seem important right now but they’re at the heart of programming.
Most of what you’re job will be in the future is adapting, combining, or implementing different sets of Algorithms together to help solve your particular problem.
Aim to know a handful of common Algorithms very well.
Don’t Let the Math Scare You
After you pass Calculus, I’m not going to lie that math can get a little squirrely.
Whether you need Math as a Computer Science degree really comes down to what you want to do.
Let me go on a tangent here, one about Computer Science and Programming. I’ve been using both interchangeable but when it comes to math there’s a difference.
Computer Science is an academic discipline that depends heavily on mathematics: probability and statistics, logic, derivatives, etc. You won’t get far in it without mathematics whether that’s trying to get your degree or practicing Computer Science in the outside world.
Then there’s Programming. 95% of most mainstream programming practice has relatively little dependence on mathematics.
The good news is that for most jobs you’re not going to be deep into math theory. Unless you get into heavy graphical engine work, quant based finance, or something super technical.
So Don’t worry you can still find something to program that doesn’t require a lot of math pretty easily. So just get through the math you can do it. Remember C’s still get degrees!
The Language Doesn’t Matter
It’s really easy to get caught up in what programming language to learn first. What you want to do is avoid the ‘Holy War’ at all cost.
Programming languages are just tools. That means each will have their advantages and disadvantages.
Just like you wouldn’t expect a hammer to handle the same jobs as a screwdriver. You shouldn’t try to find one language that will solve every problem.
There’s a lot of questions around do you need to know more than one programming language. The short answer is you don’t need to but you probably will because of how fast technology moves.
So your first language you learn is just that, your first language. Don’t put too much pressure on yourself on which one you tackle.
Another thing people will tell you is that some languages are “easier” to learn than others and you should choose one of these “easy” languages first. I hope you can feel my eyes rolling.
The hard thing about programming isn’t learning the programing language. The hard thing is learning how to solve problems using a computer.
Languages mostly affect syntax, coding tools, and community. These things are important but after having tried a few different languages you’ll start to find concepts that cross over. It’s these principles that you’ll want to focus on, and it’s these concepts that you’ll struggle while learning your first programming language.
It Gets Easier
Like most things the more you do the better you’ll get. It takes work. Don’t get discouraged.
You’re going to have a lot of late nights. You’re going to spend hours trying to fix a bug only to find out that you called the variable ‘sleep’ not ‘s1eep’. You’re going to want to throw your computer across the room.
But when you look back at what you’re able to do you’re going to love it, because knowing how to code today is a super power.
What advice would you give your younger self? Let me know in the comments below.