What a New Computing Science Grad Should Know Before Joining the Workforce

A blog post written by Jillian Lovas, Developer

When I first graduated from the University of Alberta, I really didn’t know what my future employers expected. I had learned many different aspects of software development, but I wasn’t sure which aspects I should focus on the most in order to attain a job. What were employers looking for, and where should I focus my attention? Which specific skill should I hone the most? The answer isn’t entirely clear, since each employee will be looking for different skills depending on the job, so I can only attest to the work I am doing right now as a frontend developer. When I was first hired at Onlea, I had to learn some additional skills to do some of our projects, so you shouldn’t be expected to know everything fresh out of school. If you are a fresh grad, your employer will realize that you don’t know everything and you will be trained on what you do not know yet. Keeping that in mind, here are some general skills that I use often at work that new grads should have a solid understanding of in order to comfortably join the workforce.

Object-Oriented Programming (OOP)

You’re going to need this pretty much anywhere you go. Object-oriented programming is the understanding of data in the form of objects. Say you have a grey cat named Link. He’s got four legs, a tail, long fur, and green eyes. How can I store that data in a way that is easy to understand, and in such a way that I can take that data with me everywhere without losing parts of it? I can do so with objects. I can make a single ‘kitty’ object from class Cat that holds the information, so that when I type ‘kitty.name’, I get the name Link, and so on. This can be made even more secure with getters and setters, constructors and destructors, as well as custom function calls for that object.
Thinking of data in objects is useful, especially for storing data in a JSON format. JSON stands for Javascript Object Notation and is commonly used when transferring data through HTTP, storing data, etc. The kitty object would look like this in JSON format:

{
“name”: “Link”,
“legs”: 4,
“tail”: true,
“fur”: “long”,
“eyecolour”: “green”,
“furcolor”: “grey”
}

Similarly, knowing and understanding some of the common datatypes is also very useful. Arrays, lists, stacks, dictionaries, hashes, etc, all have their pros and cons. It is important to familiarize yourself with them and how they will interact with your algorithms and how they will function as the project grows.

Git and Github/BitBucket

If you’re going to work on a team, you’ll need to write code together. Your team might need to write in the same files as you at the same time. You need to have a way to do this so that everyone’s changes are merged together in the file, rather than having one person’s work overwrite another’s. That’s where Git comes in. Git is a version control system in which numerous developers can collaborate on a project and push their changes to one location, known as a repository. Git is probably the most important tool you can use on the job that isn’t your brain. You need to know the most common commands, like git add, git commit, git push, git checkout, git branch, git merge, … there’s a lot of commands. Git can be complicated depending on what you’re trying to do, but when it is working right for you, you will typically use git add, commit, and push to a branch or to master. Occasionally, you may need to fix some merge conflicts, get out of detached head mode, and some other weird states, but typically other people have done the same thing, so you can just search for your problem online to find your way out of it. Just don’t do git reset --hard or you’ll lose your uncommitted work!

How The Web Works

This sounds a bit general, but you should know a little bit about how the web works before trying to write code for it. For example, do you know how HTTP requests and responses work? Do you know the difference between HTTPS and HTTP and how the difference applies to you? What about AJAX? There’s a lot to cover, since the web is very complex, but having some of these ideas down will help you in the long run. For example, understand that the browser will do its best to try and speed up your browsing experience by using caching. Caching is when data is saved in the browser’s cache so that the data can be retrieved from the local cache rather then requested from over the web again. This can be important so you aren’t sitting there thinking your program is working great and then, when the cache clears and fetches the new data, it suddenly isn’t! I ended up doing this once in school and it sucked a lot. APIs are another important concept. You’ll need to know what an API is and how it can be useful to your project. Its use is tied to HTTP requests and responses. For example, check out this API for Studio Ghibli films. Though limited, it can be used to fetch films, characters, locations, species, and vehicle information from the Studio Ghibli films. APIs can help you out in a big way, so having a comfortable working knowledge of how to use them will be important on the job.

A (General) Understanding of How Databases Work

If you’re working on something where multiple users use an application, it’s likely they may want to save their data. When I was in school, I took some pretty intensive courses on writing slick SQL queries for oddly specific requests, but when you are working with databases from the web developer perspective, you do not need to be this intense. A general understanding of the SQL language is important as it is pretty normalized over multiple query languages. I think it is also important to know the structure of a typical relational database, such as primary, foreign, candidate keys, as well as the normalization rules.

Use Your Own Skills Too

A lot of the skills I use at Onlea came from my other interests, such as art. Creating artwork from start to finish requires a lot of discipline to get through both the easy parts and the hard parts, which is essential when approaching a programming project. Having some design background is also very useful in a frontend position and it helps me to create layouts in HTML and CSS. Everyone has some sort of non-programming skill that can be applied to the job as well, such as being able to talk ideas through with clients, being able to estimate time to complete certain features, etc - these are all important! What you can personally bring into the job is very important, since everyone applying will already know how to program.

But the bottom line is…

You Have To Be Able to Learn

Learning programming doesn’t end once you graduate. You’ll be constantly encountering new problems you have never seen before, working in languages for all sorts of different purposes, and forever reentering the evolving field of technology. If school taught me anything, it is how to learn, as some of my classes only taught programming concepts/the project lifecycle rather than the new language we were using to complete the course project itself. I didn’t know a lot of HTML and CSS before joining Onlea, but now I would say I am fairly comfortable with writing them. Besides being able to learn programming skills, you also need to learn how to communicate. Employers ask for it for a good reason. You need to be able to talk to your team, how to ask and take peer feedback, and assert yourself reasonably. It’s great to be able to work solo, but it is equally important that you can function with the company and the projects it has.


Share this



Onlea

Onlea

#TeachTheWorld #OnlineLearningRedefined #AccessibleKnowledge