How the Best Developers Get Hired: Establishing Your Brand
Interviews are hard when neither party gets to spend more than a few hours with each other. Those few hours leave a lot on the table, especially for experienced developers with a lot to share. It doesn’t feel great to know that you didn’t adequately brag about yourself. So, what can you do?
Make a Portfolio!
This is by no means a new idea to many industries where portfolios are the normal means for showcasing your work to prospective employers. While this term is used less often in software development, it applies to software devs all the same! Each employer will be looking for different things, but here are some things that portfolios can better demonstrate than a resume or a job interview.
- Coding skills - Link to contributions you’re particularly proud of.
- Programming language preferences - Like on a resume, you can list the languages you like.
- Domains of expertise - Do you work in robotics, HFT, games, HPC, languages, research, etc.?
- Git skills - Show your ability to write clean, atomic commits.
- Collaboration skills - Projects or PRs you’ve worked with others on. Bonus points if you are actively contributing to a large project with many other people.
- Code review skills - Code reviews you’ve done show how well you mentor others.
- Leadership - Discussions you’ve led about large changes to a project.
It is worth emphasizing that simply linking to your GitHub username does not give the interview team efficient ways to learn about your background. It can require a lot of manual investigation into each repository / Issue / PR that the GitHub API supports searching for. It can be very time consuming and does not provide any sense of which contributions are meaningful versus simple spelling corrections.
Hosting Your Portfolio
Browse a few real-world software development portfolios to get a feel for the various forms they can take.
- davidlu.dev - Custom website, one of our favorites but takes lots of work.
- rapop.github.io - Custom GitHub page with a list of projects, contact links, and an about section.
- tylerjw.dev - Redirect to GitHub profile with links to recent pull requests, projects, and contact info.
- christhrasher.com - Redirect to GitHub profile.
- github.com/sea-bass - GitHub profile with some pinned projects and link to a personal blog.
- github.com/ThePhD - GitHub profile with links to recent blog posts and personal introduction.
- github.com/davidtwco - GitHub profile with personal bio and links to important projects he contributes to.
The easiest way to create a profile is to create a repo with the same name as your username on GitHub with a ‘README.md’ file. Here are the GitHub docs on how the profile page works. Below are a few examples.
On the other extreme, there is David Lu’s portfolio website which is one of the most expressive and sophisticated options. It grants you full flexibility to showcase your work in whatever shape or form best represents yourself. It provides an excellent platform for mentioning non-programming aspects of one’s life or identity that you’d like to share with others. The downside to this option is the maintenance burden a website entails, so by no means is this level of sophistication a requirement. Let’s explore some simpler options.
A simpler option for those who still want to maintain their domain is simply redirecting it to a different webpage. Domains can be acquired for as little as $12 USD/year, and redirecting them to another URL comes at no cost since you’re not hosting your website. In particular, some of the above portfolios redirect to an individual’s GitHub account. A custom domain is by no means a requirement, so some individuals simply use their GitHub username to access their portfolio. The only requirement is that you have some way to share it with potential employers and a public web presence is the easiest way to achieve that. GitHub Pages also offers an enticing option for creating a website using a markdown format for no cost.
What if my company doesn’t contribute to OSS?
If you work at a company that does not sponsor open-source work, you may ask yourself, what can I put in my portfolio? An easy option is to do free online coding challenges and push the source code to your portfolio. This is especially helpful because it demonstrates your skills while honing them. Because these challenges come with clear problem statements, those reading your code have the context required to understand the code you wrote. Here are a few coding challenges you can complete in a couple of days in your preferred programming language.
- Ray Tracing in One Weekend https://raytracing.github.io/
- Project Euler https://projecteuler.net/
- Advent of Code https://adventofcode.com/
- Cryptopals https://cryptopals.com/
A portfolio can be whatever you want, so go out and find a way to express yourself!