by Will Abramson

If you’re going to university, here’s how to make the most of it.

TDKb7rJCDTOH8fXe4WUnosdvIjK7iKhl1Q-v
Photo by Faustin Tuyambaze on Unsplash

University, a place people spend at least three years to get a piece of paper. A ticket into some job. The next step along the road. Or at least that’s what people hope.

But how can we make the most of this time? How can we increase our chances of succeeding, not just in university but at life as well?

I’ve recently graduated from York University. It has been a bumpy road, but I managed to survive and succeed. I got an upper 2nd class honors (2:1), which is seen as a success in the UK despite the majority of students now receiving it. But, what is more important is that I came out of university with a strong belief in myself and my abilities. This is invaluable.

This post will focus on surviving the pursuit of a Computer Science degree, my degree. I hope a lot of advice will be transferable.

My course had its ups and downs. For the first two years, I got lost in a sea of theory that I struggled to piece together in my brain. I learned the basic syntax for a few languages but I never managed to create anything. I wasn’t enjoying my course. I wasn’t making progress.

Then, I did my work placement. A year of programming 9–5. Everything changed. I became a competent, confident developer with a real desire to learn. The following year at university I used my time far more effectively. I learned JavaScript, building a d3.js visualization tool for my dissertation.

I am currently learning: React, Redux, Apollo Client and GraphQL. I aim to produce a website based ideas from this book using these skills, it’s worth a read. I love the challenge.

When I look back I can’t help but think I wasted my first two years. Two years I could have spent learning to code. Where would I be now if I had? The truth is I didn’t know how. I didn’t know understand enough of the principles or know how to go from a tutorial to my own project. Starting is hard.

Here is my advice for anyone in a similar position

A Computer Science degree is…

This is a tough one and I’m still not sure completely. It’s broad term used to describe a lot of things. Here is what Cambridge University says about it:

Computer science is a fast-moving field that brings together disciplines including mathematics, engineering, the natural sciences, psychology and linguistics.

The main point is that it’s fast moving and it covers a broad spectrum of subjects. A computer science course generally tries to give you an overview of as much as possible. It barely scratches the surface of a huge number of different areas. I found this tough. I never felt like I was learning anything. I imagine a lot of degrees are like this. So much content, so little time.

To counter this my advice would be, find an area that excites you and explore it. Move beyond the lectures. It is only by delving deeper into an area that you can become engaged with it. Unlock its secrets if you will, there are plenty of these in Computer Science.

The more you know the more you will want to know. Being interested in a topic makes it so much easier to learn. It makes it enjoyable.

You have no chance of understanding Computer Science, whatever that may be. By specializing in an area that interests you, you will start making progress. And, progress is motivating.

eKgfLxjmFcDh0y06WYMkYle1VWaHnx5OX8SE

A Computer Science degree will NOT teach you how to program.

Most computer science courses focus on theory. Theory of almost anything, but very little actual programming. Do not expect to learn how to program through a Computer Science degree. It will not happen.

For example, I spent 1/12 of my first year learning programming. Accessed through an exam. How can you assess someone’s ability to program in a two-hour exam?

Programming is about building a useful solution to a problem. It’s about team work, code style, refactoring and a whole host of other things. You can’t check these in an exam. Many of these you can only learn and understand by working on a project.

This was disappointing for me because it failed to show me the potential of programming, its ability to bring ideas from a concept to reality. This module should have been the beginning of my thirst for programming knowledge. Instead, it put me off.

However, studying at university gives you time. Time to learn and develop on your own. This is invaluable. Do not waste it. Start building your own projects. Start small, think big. What cool idea would like to bring to reality? It doesn’t matter that you have no idea how to make it. As long as you have a goal to drive you all you need to worry about is taking the next step. Remember the hardest step is always the first.

Programming is fun

I Promise. I learned this during my placement but anyone who puts enough time in will come to this conclusion. I have no doubt. Making my first project, a chess game, was all it took. Then I was hooked.

Enjoying programming is over half the battle, once you enjoy it you will want to learn more. It will become a hobby, something that you most likely do everyday. It has for me.

This doesn’t mean that programming is always fun. There will be bumps in the road, frustrating moments and annoying mistakes. Take a break when this happens, take as long as you need. If you enjoy programming and your project excites you, it will draw you back.

jWXsF-aitgNA1qWS-IDpHA2MBVoBaFwxltBj

Learn How to Learn

There is always more to learn, especially for a software developer. If you can learn how to learn effectively, you will do well in whatever job you decide to go into. There is information about everything you could ever want to learn on the internet. Information in the form of tutorials, documentation and forums. A software developer needs to be able to absorb new information efficiently. This allows them to adapt to a new framework, library or language with ease.

Learning how to learn is the key to this.

I find learning most effective when I am doing it for a purpose. When I’m thinking about the next step in a project, I first decide what I need to learn. What will help me overcome this hurdle?

First, you need to figure out a recommended solution. Then learn how to implement such a solution through a tutorial. Finally, the solution will most likely need adapting. No two problems are identical, so you need to work out how to fit the solution to your problem. This read, learn and apply approach helps the information sink in.

Learning can take ten minutes or days. Having a reason to learn pushes you through the tough times. And rewards you through the progress you make. We all get stuck, frustrated and unmotivated from time to time.

Programming is challenging, learning is challenging. But persevere, learn to enjoy the challenge, and to thrive off it.

Joining the developer community

The community around programming is full of supportive, friendly people. They are usually only too happy to help. There are many ways you can tap into the knowledge of this community. From reading blog posts to going to programming meet ups.

By becoming part of the programming community you realize you are not alone as you struggle to learn and develop your skills. You learn everyone has been through or is going through, a similar journey. It gives you hope.

Get involved. I know it’s hard, you feel like you don’t know anything and you have nothing to add. This isn’t true. Everyone has their own unique set of skills and experiences. Being involved is going to be a positive experience for both you and the rest of the community.

This is my first attempt at trying to give something back to the freeCodeCamp community. I have been reading this publication on medium for over a year now. It has helped me to grow in confidence and ability.

Through the community, you can build connections, make friends and improve social skills. This is crucial for a job in software development.

2O2W5WUQuVDVTqVLbSd2-vmZiXqQW3anWV01

Work Experience

Get some. Work experience has many benefits. I encourage every computer science student to get some. Whether its for a year or for a month, I guarantee it will be invaluable. You get shown a window into the world of a developer. You learn how exciting it is to be part of a team collaborating on a product that is going to add value to peoples lives.

You will encounter a whole host of tools and terminology that you have never heard of. It can be quite overwhelming knowing there is so much you don’t know. This is all part of learning. Acknowledging ignorance is the first step towards acquiring new knowledge.

Work experience gives you access to a network of intelligent experienced developers. Don’t be afraid to ask for help. Sometimes a simple answer can save you hours. However, be careful! It is important to frame your question in such a way that you get to the essence of the problem. Developers are busy people. While happy to help, they don’t want to have to take a couple of hours out of their day to understand your problem. You need to simplify your question without losing its meaning. This is a difficult but incredibly important skill. I’m still working on it.

My placement is where I matured as a learner. I had to. I was given a Java 8 book and told to learn Java. That’s it. Every time I thought I was nearing a decent level I would be shown something new that would blow my mind all over again. For example, reading this book about clean code made me realize that the way we write code is as important as what our code actually does. If not more. The code I wrote before, which I thought was good, was actually terrible.

You can only get these experiences by working on real projects.

Those are the main points I took out of university.

I feel excited and privileged to be at the start of what I know will be a fulfilling career as a Software Engineer. I am thoroughly looking forward to the journey.

For everyone who is struggling through university, and is feeling unmotivated or unhappy. Stick in there. It’s worth it. Beginning to create changed my perspective on computer science. I was no longer daunted by my lack of knowledge. I saw it as a challenge, another problem to overcome.

I would encourage everyone to start a project. Think of an idea and go for it. You never know where it might take you, and you will learn a lot along the way.

Thanks for reading my first ever post :)