How to set up your portfolio

Whether you are a stage one student hoping for a summer placement, a stage two student thinking about a year in industry or someone in stage three applying for roles after university, your portfolio is an essential part of your career as a computer scientist. But how do you make a good one? 

Your portfolio is the best impression employers can get an idea of not just what you’ve done, but what you can do. Showing your different projects, the coding practices and how you have applied your knowledge will be much more beneficial than your CV when it comes to applying, hence why showing your work in the best way possible is so important. 

Here are some recommendations on how to best show off your work in a portfolio as well as some tips to make the projects you show really stand out for employers. 

GitHub 

Chances are you have heard of GitHub, certainly so if you are in your second year or above. The version control titan is the bread and butter for every programmer, allowing you to make use of git to store multiple versions of your projects and access them wherever you may be. But if used correctly, GitHub can be an excellent place to host your portfolio. 

On your GitHub profile you can see all your projects in something like this: 

It likely won’t be too exciting and certainly will not stand out against a slew of other GitHub profiles. But it is a suitable place to start from, you can show off some of your best projects and talk a little bit about yourself in a personalised ReadMe. And it turns out that going that extra step is a lot easier than you would think, all thanks to something called GitHub Pages. 

Making your own website has its advantages (something we will get into later) but some aspects like hosting can be difficult, expensive and time consuming. GitHub Pages solves those issues by letting you use GitHub to host your own portfolio website. And it only takes a few steps! 

GitHub Pages allows you to transform your existing repositories into websites to show off things like your portfolio, projects, or documentation. This is a great next step as it allows you to add your own unique spin to your projects that will make your applications stand out.  

You don’t need to worry about databases or servers; however, you will need a bit of HTML knowledge. But even if you aren’t confident with web development, this is a fantastic way to get some experience and really show off to employers. GitHub pages can be used with Jekyll to ease this process and make use of templates (look here for more details). 

The official documentation for GitHub Pages has a great video breaking down how it works and there is an abundance of content to help support you as you build up your very own portfolio. 

https://youtu.be/2MsN8gpT6jY

It is worth noting that while GitHub Pages does allow you to host your own website, this is limited to one per GitHub account. But you can have unlimited project sites. 

Making your projects “Portfolio Ready” 

Making your portfolio look nice is great, but you want to make sure it isn’t all style and no substance. Here are some tips on making the content of your portfolio really stand out. 

Tidy up your existing projects 

Good, readable code is an essential part of programming, and even more important for employers. When looking at your portfolio, employers won’t spend much time trying to understand your code, so making it as clear and efficient as possible is a great way to start things on the right foot. It will show employers your coding style and make it easier for you to understand your own work when you come back to it down the line!  

There are lots of different ways you can add subtle improvements to your code either as you do it, or in retrospect when working on your portfolio. Making sure your code is consistent with things like sensible names for variables, methods and files is a great place to start. 

One mistake many people make is to comment every single line of code to explain what is happening. This can almost double the size of your files and make them a lot messier than they need to be. If you think you need to explain each line, then you may need to go back and refactor your code with better variable names and simplify it as it is likely too complicated.  

But that doesn’t mean removing all comments in your files. Giving brief descriptions of methods and their return types is a fantastic way of reducing the amount of time you read, as it gives a quick understanding of what something does without having to go line by line to understand it. Just make sure to use comments only when you feel they are needed. 

Here is a simple example below for calculating a factorial: 

Bad factorial function
Good factorial function

Both functions work in the same way, but one is clearly more understandable than the other. The first only uses generic variable and function names whereas the second uses sensible names for both. This makes it a lot clearer even without the excessive commenting that the first method. 

Now that your code looks good, there are some things you can do portfolio side to make your projects stand out before employers even start looking at them. 

Give a brief description of what your project is, indicating the key features that you want to show off, what your contribution is (especially if it’s a team project) and what languages are used. This tells people looking at your portfolio what you can do straight away and make them more likely to look at your work more closely. Here is a good example: 

Work on projects outside of your degree 

One of the great things about your degree is that you get the opportunity to work on several different projects that can help you build up the solid foundations of a portfolio. The only issue is that every other student in your year, ~300, will have similar projects, hence why it is important to work on projects outside of your degree. 

This allows you to explore your interests and fine-tune your skills for the field you want to go into, and it also looks great for employers as you are showing them how you work independently and what your interests are. Also, having more projects is always beneficial as it allows you to be more flexible with what you want to show to different companies. 

When building new projects, it can be quite daunting to figure out exactly what to work on, especially with other commitments, including your degree. But don’t worry, you don’t need to be making some cutting-edge development with every project you have. Practicing new features and developing your programming skills is a great way of showing your personality through your portfolio.  

A great type of project to work on to help build up your portfolio is to recreate existing projects. Be it something as simple as the Instagram home page, it is great practice to try to build something from the ground up and try to understand how it works. It helps give insight into how companies develop software and there is always the opportunity to iterate and improve, something especially good when you end up applying for the same company! 

Tailor the projects you are showing off to the companies you are applying for 

Now that you have tons of professional-looking projects on your portfolio, you need to choose what to spotlight, so be sure to tailor it to the company you are applying for.  

You may have projects covering a wide range of things, but chances are you will be more confident in some than others and each will highlight different skills. Aim to show the breadth of skills you feel are most beneficial for your employability, but make sure not to focus on only one or two. Highlighting six projects that are all the same only gives no real indication of everything you can do.  

Be sure to show a mix of work that highlights your strengths and weaknesses. Team projects and solo projects, different languages and different topics show not just your range of abilities to employers, but who you are as a person – something which should be a focus of every portfolio. 

Remember, Rome wasn’t built in a day, and neither will your portfolio. Take your time and do it in iterations. Be sure to make use of University resources both in and out of the School of Computing to help you as you develop your portfolio and always ask people to check it over.  

upReach Tech500 Technology careers for social mobility

The upReach Tech500 is designed to support widening participation students graduating in 2023 and 2024 who are interested in learning about technology careers.

Delivered in partnership with leading tech employers, including Google, Samsung, GCHQ and Bank of America, the Tech Summer Bootcamp will give participants a headstart in securing internships. As part of the upReach Tech500, participants will also benefit from a free programme of exclusive career events, skills development opportunities, mentoring.

This is a great opportunity for Widening Participation students to receive free, personalised career support for entering the technology sector. 

NCL Internship Scheme

NCL Internships are open to all current Newcastle University students and provide an excellent opportunity to gain valuable graduate level work experience. This year, internships will have a minimum duration of 50 hours and this is undertaken flexibly around your course. All internships are paid and you will either attend business premises, work remotely, or do a combination of both.

We have now started advertising NCL Internships for 2020/21 and will be adding new ones throughout the academic year. You can find these opportunities via MyCareer – simply log in, click on the ‘Work Experience’ tab, then ‘Placement Scheme list’, scroll down to the bottom of the page and select ‘NCL Internships 2020-21’.

Click here to go directly to the current scheme.

Get in touch with us

If you have any queries regarding careers and employment, big or small no matter what stage you’re at, you can get advice by emailing your query to careers@ncl.ac.uk. Please visit www.ncl.ac.uk/careers to explore all we offer!

Interested in working in China?

China Career Gateway starts next Monday 19th October. This annual career development programme is designed to enhance students’ knowledge of the UK and Chinese labour markets and help you understand how to make effective job applications in both countries. Last year, over 300 individual students participated in the programme, with 98% of survey respondents recommending the programme to a friend.   

This year, the programme will be moving online and will be delivered as a 5-week Canvas course. The majority of content will be asynchronous, for you to work through at a convenient time, with new content being released every Monday from 19 October. 

The programme is open to all UG and PG students from China including PGRs, as well as other students with an interest in working in China post-graduation. While you are encouraged to participate in the full programme, you are also welcome to engage in content which is of most relevance to you.

You can view further information about the programme here.  

You can also sign up to participate in the programme directly in Canvas

Test Driven Solutions – We’re Recruiting!

Test Driven Solutions, a local technology consultancy in Newcastle upon Tyne, are currently on the lookout for highly ambitious individuals, who are looking to be part of a company who care about their staff and offer extremely generous benefits.

We’re at the beginning, so we’re looking for individuals to help shape TDS to be one of the best consultancies in the UK. We want people who will not only be gifted technically, but also people who have a voice and will look to make a good impression on every client site we operate with.

We’re currently looking for Software Developers, specifically with Java & Python as well as DevOps Engineers to help us work with our clients. Below is a list of the skills we’re looking for.

Skills needed:

  • Experience designing, architecting, and implementing the next generation of cloud-based applications which are dynamically scalable, fault tolerant, secure, and reliable for a cloud platform such as Openshift, AWS, or Azure.
  • Experience working on highly available, fault-tolerant distributed systems
  • Experience with Linux operating systems & shell scripting, and Containers
  • Understanding and Experience with DevOps tooling such as Cloudify, Docker, Kubernetes, Nomad, Terraform, Chef, Puppet, Salt, and/or Ansible
  • Proficiency in Python and at least one of the following languages: Java, Go, C#. Most of our development is in Python.
  • Experience with CI/CD systems such as Jenkins, and or Spinnaker
  • Experience in developing automated tests
  • Effective verbal and written communication and interpersonal skills as well as the ability to work well in a team environment If this is of interest,

Please send your cv to sam.clark@testdrivensolutions.co.uk