If you're a programmer looking for full-time, consulting, or freelancing work, it's important to demonstrate to your potential employer/client that you're experienced and capable. The easiest way to do that is to maintain a portfolio website that promotes your personal brand. In this post, I'll suggest how programmers should approach making their portfolios, and I'll give a few examples of portfolios that I like.
There are four core skills that a good programmer portfolio should demonstrate: Technical ability, design ability, writing ability, and initiative. There are three key elements your portfolio needs if you want to elegantly display all of these skills:
Selling your programming services isn't any different than selling a product. The core to any online business is a good landing page, and that's the most important thing for you to focus on with your portfolio.
So what makes a good landing page? Most programmers don't want to hear this, but design is what matters most. Sure your potential employers aren't ultimately hiring you for your design ability, but that's the first thing they'll notice and they'll judge your professionalism by the design before they ever get a chance to see your work. If you're a decent designer, take a crack at it yourself. If not, you might consider buying a template from a site like Themeforest. Either way, I strongly urge you to pretend you're making a designer's portfolio, not a programmer's. Focus on colors, fonts, layout, and the quality of your copy. This will set you apart from other programmers (who generally have bland and ugly sites).
Once you've got your design figured out, it's time to figure out the content for your landing page. I personally would advise that you stick with three basic sections:
If you're looking for inspiration, here are a few examples of good landing pages: www.mattdempsey.com, jamisonbanham.com, kerrynehil.com. You'll notice that those are all designer websites. That's because most programmers have ugly portfolios which is exactly why you should act like a designer when you approach this.
Obviously you'll need a section of your site devoted to your previous work. Don't get too fancy with this, because anyone looking at your portfolio has probably already seen your super awesome landing page. Just list all your projects in a clean format, and explain a little bit about them. In particular, you might want to mention some of the skills you used so that you can highlight your talents. When possible, make sure you link to working copies of the projects.
So far you've made pages that demonstrate your technical and design capabilities. That means you still need to show off your writing skills and your initiative. There's no better way to do this than to write a blog. By writing interesting blog posts related to your area of expertise, you can show off your communication abilities and it also lets you demonstrate that you are actually interested, knowledgeable and passionate about your field. This is where you can really show your personality and set yourself apart from all the other programmers out there.
Writing a blog can be a lot of work, so I suggest you consider whether or not you'll have the discipline to post regularly. If you can handle that, great. If not, you might consider formating your blog as a series of articles rather than blog posts. The main difference is that articles are meant to be more permanent, so it's not as important for you to update the content regularly.
The landing page, portfolio section and blog cover pretty much all your bases, but you might want to include a few other things in there too. You could make a dedicated contact page. You should probably link to your resume (and maybe even make an HTML version of your resume). You could also include a short bio to give yourself a little more personality. If you want to get really serious you could make a section to let visitors demo web apps you built specifically for your portfolio site.
With those elements in place, your website should help you really stand out from your competition. Good luck getting your portfolio set up!