← Back

Sep 12, 2013

Strap Your Boots

10 Things Computer Science freshmen should know before the first day of class.

Almost a year from now I will be graduating. Degree? Computer Science. I had not programmed much at all before I started university, I just had sure that it was what I wanted to do. I am just not sure why exactly.

Please note that I am not saying that the words you are about to read are neither right nor wrong, these are just things that I have learned over the past 2 years, based on my experience. Nothing but, quite simply, my 2 cents worth. Here’s what I wish someone told me before I started this degree.

  1. If you hate Programming, find something else to do.

    Or don’t. But I guarantee one thing: You will see a lot of that. In university and most likely post-university too, even if you try your very best to avoid it. Now I don’t hate programming, I like it. I Like it. I wouldn’t say that I love it as such, however do I love the ability that it gives me. Once joined up with my designing skills it enables me to make, build or break anything that I can pretty much think of, which also doesn’t mean that I can or that I will do that. It simply means that it gives me the ability to do so.

  2. Learn beyond ‘hello world’, straight away.

    Programming is ‘simply’, about data manipulation. Get data from a source, do something with it and spit it out. Now, I know you will feel great once you get your System.out.println(“Hello World!”); statement running for the first time inside your main function. That’s great! We have all been there. Learn what the different data types, the built-in structures a language has to offer and how to build upon that. Understanding how these components (data types, classes, objects and what not) function in depth can be necessary in order to understand how to use less resources and get the best performance out of your code. I need to improve on this myself.

  3. Take out a book on Data Structures and Algorithms.

    This is extremely important. Set yourself a target to implement and learn them inside out, one-by-one, in multiple languages. One Algorithm or DS per week will do you fine. You will thank me for this one. And stuff will actually start making sense.

  4. Understand Big-O Notation and why efficiency is important.

    In a world of large amounts of ram it is easy to get lost and in your own little world write terribly inefficient code. So read up on Big-O Notation. Here’s a good explanation of what it’s all about on Stack Overflow, which by the way, is now your new best friend.

  5. Learn git.

    This is also quite important, a lot of companies small or big, use git to control software versions. Here’s a good starting point to learn that. Build a code portfolio on github. It’s an awesome tool, and it may give you some nice exposure. You can watch this talk by @phuunet.

  6. Build an application. Any application. ASAP.

    This will teach you an insane amount. I tried a web-framework first, and you’re more than likely to know how to throw a Html page together and ‘spice it up’ with some JavaScript and make it look ‘nice’ with some Css. Laravel was kinda my first. I am now looking into Ruby on Rails and Ember.js, but there’s plenty more out there. Note that it is somewhat difficult to grasp some of the concepts but once you do, you will not understand how you found it so difficult beforehand. For ‘webby’ type people: Try Implement an API, understand HTTP requests (GET, PUT, POST, DELETE) and how to use them well, understand the hooking to the database. And keep in mind the ‘simplicity’ about programming I mentioned earlier, taking data from one state, making changes and anything else you need and spewing back some result. Always.

  7. Befriend everyone.

    Specially who you think is good at what they do. There will be people starting just like you, all on the “same boat”. Some of those guys will have experience programming, even developing professionally already. You do get both ends of the spectrum, some of the people will never ever written any code. (Almost like me). The people that do good work, learn what they do. These are the people that will add a lot to your knowledge. Look up to them, but do not see them as a superior, you’re just as capable. Ask what tools they use, what they like to read, ask simple questions like that. Don’t be afraid to get things wrong. This is the time that you can mess up, and make yourself look silly in front of a lot of people in the process. And if you have knowledge, share it. (Don’t share code though, or you won’t need to worry about this list.)

  8. Find yourself some part-time work.

    An Internship. A website for the neighbour. If you can’t find work, hack someting together, always work on some side project. But do this as soon as you can. I promise you that one week working for real in the industry will teach you more than your first year at University, or at least your first semester.

  9. Always know your surroundings. Be up-to-date.

    Read blogs, listen to podcasts that interest you. Dive into the subject, there is so much to learn and so little time. Use twitter, there is a lot of good stuff there, follow people that do what you would like to do, set the standard high. Get off Facebook. Now! Read ‘Hacker News’. Write a blog. Read recent and decent books about modern development in your favorite language. Modern Web Applications is a good topic, to get yourself into for instance. There is no time to waste.

  10. Do not forget about the world. Or your life.

    It will be easy to focus hard on problems to solve, things to build, and all that will run in parallel with university activities. Make sure that you set time to socialise, exercise or just go for a walk. Trust me it will do you good. Relax a little too. Once you’re out of university you WILL have less time. Companies aren’t just looking for an rock-star developer, sure we need them, but if you have more to offer they will be interested in you so if you have other interests like business, startups, music or any craft. Make sure you carry those interests on.

That’s it. It’s worth mentioning that I haven’t done a lot of the stuff I listed above on my first 2 years, so this is one of those “do as I say, not as I do” talk-thing. I hope that it shines a light on what you should be looking to do as you go through your first semesters at university. Best of luck.