GitHub

GitHub 101

Git is a popular version control system (VCS). In simpler terms, it is a change management system that helps multiple people work on the same project without accidentally erasing each other’s work. Most CS projects are hosted on a VCS like Git.

GitHub is a cloud-based platform that hosts projects and runs on Git. This website is hosted on a GitHub repository.

Some terms to be familiar with:

  • Repository (or repo) - a folder that contains related items, such as files, images, videos, or even other folders
  • VCS (Version Control System)
  • Branches - a different version of the repository at a particular point in time. This is how multiple people can make different changes without impacting each other’s work
  • Commits - the saved change of work
  • Commit History - as the name suggests, a history of the saved work changes. This is how you can track the code changes.
  • Pull Requests (PR) - this is how you combine code changes in a repository
  • Push - this is how you send your changes from your local system to the repository

GitHub has a simple guide with clear steps and images on creating your first repository and pull request. I’d highly recommend using this as your starting point.

💡External resource link:

Setting up a personal READ.ME

You can set up a personal READ.ME for your GitHub profile is an extension of your LinkedIn. Some community-built features can add some cool stats for your profiles - including the most popular programming languages among all your repos.

A personal READ.ME can also direct recruiters to projects you’re most proud of and inform them of your skill set quickly. It can also help other collaborators gauge your interests and see if they should reach out for a project.

💡External resource link:

Maintaining your GitHub

Once you start building out projects either solo or with other folks, you can start hosting them on your GitHub. You can also work on side projects that could turn into startups with folks across the world, contribute to open-source projects and show off all your hard-earned technical skills.

I’d recommend having your hackathon projects, any university coursework you’re proud of (with instructor approval), a tutorial you followed along or even your Leetcode practice. Pick the top 4-5 projects that best showcase your skills and pin them on your profile.

Portfolio

Portfolios are a good way to showcase your projects, the skills you used in each project and your CS journey. The portfolio you create is also a project, so treat it well!

Your portfolio building will depend on your skill level, the amount of time and money you’re willing to spend and the type of CS job you’re looking for. Design-heavy fields like User Interaction/User Experience (UI/UX), front-end, and video game design and development would expect a portfolio whereas fields like software engineering/development, back-end, database design, system design, cybersecurity, product/program management (PM) would not expect it but it’s a nice to have.

A portfolio can be broken down into 3 sections: the website, the hosting platform and the domain. The hosting platform and domain are where the monetary aspects of portfolio building. I’ve outlined the various options you can use to build out this portfolio below:

Free and beginner-friendly portfolios

  1. GitHub Pages - this is a free hosting platform with a free domain name that is typically github_username.github.io. This works fine for most use cases, however GitHub pages are limiting in their design.
  2. Webflow, Wix, Squarespace, etc - this is a web-builder platform that is beginner-friendly and has custom CSS properties that you can tweak

Free, skill-heavy portfolios

Building with React/Vue.JS/Angular or other front-end frameworks requires a good amount of coding skills but is a great side-project. Oftentimes, these portfolios can also be a project on your resume.

Once you’ve built your website, you can host it for free through GitHub pages or other free hosting services like Railway, Vercel or Heroku.

Sometimes a free hosting platform could be limiting or you might need features offered in a premium plan - so these can turn into paid software. You would need to buy a domain name and a hosting platform subscription. Some options here would be domain.tech, GoDaddy, etc.

Projects

There are various ways to build out projects and gain experience outside of coursework. Depending on the skills you’d like to gain, the level of mentorship needed and time commitment, you can either build at a hackathon or join a program like Google Summer of Code.

Open source

Google Summer of Code (GSoC) is an excellent open-source project with mentorship. Companies will post their projects every February and you can pick the ones you’re most interested in and apply. Applications for this tend to close in April

Hackathons

Major League Hacking (MLH) is a hackathon league that hosts a hackathon almost every weekend - either virtually or in person. Hackathons are a great place for exploring new technologies, building out projects and gaining mentorship.

Fellowships

MLH hosts a fellowship program that can act as an internship alternative. It is a 12-week remote work opportunity where you work with a company, like Facebook, to build out a project and get mentored by the company’s employees. It also has a small stipend.

Student Organizations

A lot of student organizations also have tech projects. You can either join a group that solely focuses on this like UofT Blueprint or join a student group that has project-based activities like UofT AI, UofT MIST, UofT Self Driving Car Team and UofT Computer Graphics Club. Other student groups like UofTHacks, U of T Application Development Association and more featured on the CSSU website also have websites and would hire web developers to help maintain them.

Some non-CS clubs also need websites, like orientation, and would post hirings on their social media for this position.