Beginner’s Guide to the Programming Portfolio
I recently decided it was time to invest in my portfolio. I’ve had a portfolio for some time, but hadn’t really stepped back and researched how I could maximize it’s effectiveness. I spent weeks pouring over portfolios online and researching the best material to include on my site. What you’ll find in this post is a summary of everything I’ve researched and created to help you publish a stunning programming portfolio of your own.
At the same time I was working to improve my own portfolio, I had the opportunity to spend time interviewing candidates for an open position at my workplace. We were in the process of hiring a new intern on my team who I’d be working directly with frequently. Obviously, I wanted to hire the best candidate and someone who I’d enjoy working with. As I dove into the pile of hundreds of resumes, I found that maybe 20% of the candidates had a portfolio link included and only a handful of the portfolios were well done. This was extremely surprising to me, and is part of the reason I was motivated to write this blog post.
It doesn’t matter what stage of employment you’re in. You might still be in school, recently graduated, or looking to make a career shift. I can tell you with confidence, the best time to invest in yourself is now. You never know when your dream job will be available, and you’ll want to have your online footprint established when that time comes.
Why Do You Need a Portfolio?
One of my main takeaways from researching the programming portfolio was the resistance of creating one. A lot of programmers feel it’s unnecessary, extra work they don’t need to do. What they’re missing (and what becomes your opportunity) is the most important thing. You have the chance to stand out. Let’s use this example.
As of their 2015 filing with the SEC, there were over 23,000 employees in R&D at Google. One source states that on average, Google hires 1 employee out of every 130 applicants, or about 0.7%. In his book titled Work Rules, Google’s SVP (Senior Vice President) of People Operations (basically Human Resources) states:
“We receive more than two million applications every year. [...] Of these, Google hires only several thousand per year, making Google twenty-five times more selective than Harvard, Yale, or Princeton.”
Based on that example, the acceptance rate is even lower - around 0.2 - 0.3%. This just reinstates the fact you need to stand out as much as possible. Taking initiative tends to be a trait employers appreciate in their employees, and creating a portfolio and distinguishing yourself from your peers is a step in the right direction. Creating a portfolio allows you to achieve a variety of things that don’t translate to the typical resume:
- Show your code off! If you’re trying to achieve a sought after job, you probably have spent some time creating projects to learn how to code. Whether that was for fun or for school work, hopefully you have a few examples of your coding ability in existence. We’ll touch on this more later. You want your potential employer to see you’re passionate about programming and you can write readable, eloquent code. Give them a glimpse of what you’re capable of, whether it's a website you designed or a mobile app you built.
- Express your personality. Your life and body of work is more than just a piece of paper. For a hiring manager to really get a good feel for you, they want to know the most fundamental question: would I enjoy working with this person? Your personality doesn’t always shine through your resume and ideally you want it to be an asset that gets you an interview. Your portfolio can help the employer get a better idea of how well you’ll fit in at their company, which also helps ensure you don’t take a job you’re not a perfect fit for.
- Improve your online footprint. A lot of employers judge your initial application based on the quality of your online footprint. Essentially, this just means what they find when they Google your name. They want to see relevant information that shows you’re working to establish a name for yourself in the software industry. What they don’t want to find is your old MySpace profile, filled with pictures of your overweight cat. Regularly checking and working to improve your online footprint is a critical requirement for the software industry. Having a portfolio helps to ensure your best content is shown first.
The positive effects of a portfolio aren’t a newfound discovery, either. In her 2012 article in the New York Times, Eilene Zimmerman states:
“One of the first things a recruiter or hiring manager does after receiving a promising lead is to search for the person on Google. Creating your own Web site or displaying your work on a larger platform gives you some control over what is found.”
“When it comes to hiring, I'll take a GitHub commit log over a resume any day.”
Resig’s main point is that he values actual real world examples of a candidate's work rather than what they claim to do on paper. This is why popular sites such as Stack Overflow now allow you to link your GitHub profile on it’s careers page for applicants. Jeff Atwood, the co-founder of Stack Exchange (Stack Overflow’s parent company) even said this:
“Just seeing what kind of work people have done, and what sort of online artifacts they've created, is tremendously helpful in getting a sense of what people do and what they're good (or bad) at.”
The bottom line is this: Hiring managers want tangible work. They want reassurance that you understand how to code and are a decent human being before they allocate the time and resources necessary to interview you. Your portfolio provides a platform for you to sell yourself to potential employers, including your most relevant and impressive work.
Planning Your Portfolio & Researching the Competition
Before we can begin effectively planning our portfolio, we need to first understand where we currently sit. Let’s research and evaluate our own online footprint. This starts with a simple Google search of your name. Now, depending on how unique your name is, this could be very simple. Your relevant social media profiles might show up, some accounts you’ve used before with similar usernames, or maybe even some new articles or accolades (hopefully good ones). If your name is uncommon however, this might be more of a challenge. Personally, I was not too excited to find out there was a professional football player named Lee Robinson. Luckily, the second result was my Twitter profile. Once you’ve determine where you stand, you can work to cut the fat (deleting old accounts, cleaning up your social media profiles) and start planning for the future. You ideally want your portfolio to be listed on the first page of Google results for your name.
Now that we know where we stand, let’s do some research on our peers. When I was creating my portfolio, I researched my co-workers and other software engineers in the area to see what I was up against. Your goal should be to have the best portfolio out of anyone in your network (which could potentially be difficult, but we should strive for greatness). I even extended this search further to individuals who had the position I was looking for in the future; senior engineers at top tech companies or CEOs of start ups. Getting a feel for your competition will help you determine what you want and (more importantly) what you don't want to include in your portfolio. Use this research to your advantage.
Combining your research from various Google searches, set up a plan to create your portfolio. You should first ask yourself a few questions:
- What type of content do I think I’ll host on my portfolio?
- Will this content be primarily text based or picture based?
- Am I interested in blogging? Should that be a main portion of my site?
- Do I want to limit things to a single page?
These quick four questions will help you narrow down exactly what your portfolio should include. For example, let’s walk through the questions. The type of content hosted on your portfolio could range from simply just your resume and accomplishments to: a series of blog posts, freelance development work, side hobbies, your social media feeds, pictures and videos, you name it. Understanding what this content is will help you decide on a layout for your site. If it’s primarily text based, you might want to emphasize a crisp, clean font and easy to read headings. If it’s more picture based, you'll want to ensure pictures load fast and are in good quality. You want to maximize the user’s experience while visiting your portfolio. If you think you might start blogging, you could always add that in later. However, if you want blogging to be a main focus of your site, that plays heavily into the layout and design. Let's start to put the pieces together as we look at exactly what to include in your portfolio.
What Should You Include?
- Your name and picture. Including your name is a no-brainer, but I’ve seen quite a few portfolios that didn’t include their picture. In my opinion, this helps viewers create a connection with you. It doesn’t have to be the main focus, but it helps add character to your site.
- Contact information. Once they’ve decided they want to interview you, they need an avenue to reach you. Give them as many as you’d like. Include your phone number, email address, or any other method of contact you prefer.
- Resume. Your portfolio will allow you to elaborate more on your work experience, education, and project history, but you should still include a downloadable link to your resume in whatever format you choose (I prefer .pdf) for convenience.
- Your skills. What programming languages are you proficient in? Which ones do you have experience with? What libraries or frameworks have you used? Are you a master of any certain software? These are all great things to include to show your technical aptitude. Be cautious though: this shouldn’t be a list of every programming language or buzzword you can think of. A lot of employers will treat anything on your resume or portfolio as fair game when it comes to a technical interview. If you’ve only used C++ for one school project, you might not want to include that.
- Information about yourself. Use this opportunity to let your personality shine and let the user learn about you. If they’re considering hiring you, they want to be sure they’d enjoy working with you on a daily basis. Include some of your hobbies and what you like to do in your free time. However, don’t just say “I like to code”. I would hope you like to code, and your portfolio should speak for that, but you don’t need to explicitly say it.
- Social media profiles. You might be wondering why I deem this as necessary. If you don’t link them here, you know what the employer is going to do? Search the internet for them. In my opinion, this provides some transparency. If your profiles are set to private, you don’t really have much to worry about anyway. LinkedIn is a must, as well as your GitHub account. If you don’t have a GitHub account, it’s time to make one.
- Projects. This may or may not apply to you. For current students and new grads, this is an opportunity to show you understand how to program even though you might not have a lot of real world experience. This gives the employer tangible examples of your work. Anyone can say they understand a programming language, but a complex project on your GitHub profile goes a lot farther than a simple bullet point.
- Blog (optional). Personally, I love portfolios that contain blog posts. Communication is such a major factor in determining whether or not you will get hired. The bottom line is: if you can’t communicate effectively, you probably won’t succeed. Showing your literacy through blog posts helps the employer see you’re an effective written communicator and also shows you’re passionate about something. Your blog posts don’t have to be technical. Write about whatever you enjoy. If you're serious about this, check our Hugo or Jekyll. (Update January 2019: Another option to consider is Gatsby).
Choosing a Design
- It’s already responsive, meaning it will work on desktop or mobile.
- Most developers aren’t also designers. Designing is tough.
- It lowers the barrier to entry for beginning web developers.
- Ultimately, it saves you time and makes your life easier.
There are a variety of sites that offer templates 100% free under the Creative Commons license. Once you find a design you like, you will need a place to host the content. That's where GitHub Pages comes in. GitHub, which you should hopefully be familiarizing yourself with, offers free hosting for static websites using their service GitHub Pages. They’re extremely easy to setup and deploy, and require only a basic understanding of git, a version control system. Git essentially allows you to track changes for your files and collaborate with others. If you haven’t created a GitHub account yet, you’ll need to do that now.
Roadmap: Hosting, Deploying, and Securing
Rather than re-iterate what's already been documented, I'm going to link you to some great posts and provide you a roadmap for creating your portfolio.
- If you haven't already found a template, here's a good resource
- Create a repository for your portfolio and deploy it to yourname.github.io
- Buy a domain from wherever is cheapest: GoDaddy, Namecheap, Register, etc
- Prefer to use .com, .io, or .me. Try to include what people would search for, which is typically your name
- Add your custom domain to your GitHub Pages repository
- Configure your DNS for your new domain to point to GitHub
- Wait up to 24 hours for the changes
- Use Cloudflare to secure (hopefully, in light of recent news) your portfolio with HTTPS
- Improve your SEO (Search Engine Optimization)
- Set up analytics with Google Analytics
- View/test your website on different browsers
Hopefully you found this post helpful and are on your way to creating a stunning portfolio! Feel free to contact me if you have any questions and share this post if you enjoyed it. Cheers!