Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I've heard about a few mentioning of programming portfolios. A programming portfolio being a significant amount of code or code segments.

Is a programming portfolio a good indicator of the quality of a developer?

Also, another part of this question is how do you reject an potential employer's request for an portfolio?

share|improve this question
    
I wanted to make the entire post a community wiki. I'm not looking to karma-whore. –  monksy Aug 20 '11 at 4:09
add comment

8 Answers 8

up vote 15 down vote accepted

I think a code portfolio is a good idea, but the portfolio isn't like a graphic designer's portfolio.

The thing about developers is that we solve problems, and many times, those problems don't allow us to use the Absolute Best Code/Solution Possible, so context is everything. As an interviewer, you can't just ask for a code sample and expect to understand its purpose.

There's also the fact that we often work with other people's code, since developing is often a collaborative effort (or, we're the poor sap who has to maintain someone else's code). Showing such code doesn't really do much good, because it's not entirely the applicant's work, which muddies the water.

Instead, I prefer to look for evidence of understanding, of being able to work well within a given set of constraints, and the ability to convey their understanding to others. Therefore, a coder's portfolio, to me, would consist of a blog, evidence of activity on sites such as the SE network, and accepted submissions to Open Source projects of any size (or a popular app on the developer's chosen platform). Keeping up with any of these also shows that the developer cares enough about his/her craft to spend time outside of work to do these things.

Also, another part of this question is how do you reject an potential employer's request for an portfolio?

Good question. I've actually only been asked to do this once, and, like you, I was rejected as a candidate. Frankly, I don't think I missed out on much, since I don't think I'd want to work for someone who thinks looking at code out of context is going to do any good, since they probably have other ideals that clash with my own and I wouldn't enjoy working there.

However, as for a response, in hindsight, I think I would say something along the lines of "I feel that a code sample or traditional portfolio takes my code out of context and doesn't account for any number of factors that are beyond my control. However, I do keep a technical blog, which has a number of tutorials and other entries that include code samples in their proper context, and I'm also quite active on StackOverflow. If you are interested in perusing them, here are the URLs to my profile on each site."

Another response could be something along the lines of "unfortunately, I am unable to disclose the work that I do, as I am bound by NDA, and therefore cannot release to you code that I have a large amount of control over. Also, the projects I have contributed to that I am allowed to show you the source for, I am not the only developer and I am working within the constraints of the project. As such, I don't feel they would be appropriate for review by an outside party, since it's impossible to tell where one person's code ends and another's begins."

share|improve this answer
    
And what, in your blog or your SE profile, tells me anything about your ability to write maintainable code? I've yet to interview a developer who doesn't have code they're happy to hand over but, if given your first response, I would take the time to look at your links. Unfortunately, they tell me nothing, and (please, this is meant to be constructive advice, don't take offence) the white serif on green is hard to read. You would need to grab my attention quickly and you don't. So yes, maybe we would have other ideals that clash and you shouldn't work for/with me. –  pdr Aug 20 '11 at 10:52
1  
@pdr - While this isn't really on topic, my website is more of a playground for me. I'm not a designer, so I can't really do some of the crazy designs and actually pull them off, but my website is a place for me to try and to experiment. After some time of having it up, I've decided I didn't like it, either (for pretty much the same reasons you stated), but I currently don't have time to redesign it. ... –  Shauna Aug 20 '11 at 14:49
1  
That said, the point of my answer assumes that one actively maintains a blog and can grow a collection of tutorials or other useful information, such as the tech/management oriented stuff on joelonsoftware.com. Also, anyone's SE profile points to questions they've asked and answered, both of which can demonstrate how the person communicates, whether they actually understand what they are talking about, and whether they're willing to learn. –  Shauna Aug 20 '11 at 14:56
    
And yes, pdr, I agree that we probably have different ideals and we probably would have no interest working with each other. :) –  Shauna Aug 20 '11 at 15:07
1  
If you don't mind me asking, what does your work usually entail? (It might even provide some context for our difference of opinion.) –  Shauna Aug 20 '11 at 22:02
show 2 more comments

Most people who are working for a living as a programmer are not in a position to share their code. It's generally proprietary, whether to the programmer's organization or to the customer.

That, taken with @Shauna's comments about looking at code out of context, really make me wonder what interviewers hope to accomplish by asking for something like this.

share|improve this answer
add comment

Not in and of itself, no. But it is a very good basis for a technical interview.

What are you most proud of about this code? What would be the first improvement you'd make if you had all the time in the world? Why didn't you use a Strategy pattern there? What if the customer came back and requested this change?

These interviews tend to be much less dry than basic question and answer sessions and less stressful than giving them a technical problem and expecting them to be able to show you anything useful in one hour. Get a developer talking comfortably and then you'll learn all about them.

share|improve this answer
    
Usually the good questions are from developers that have asked me "so how did you solve such and such problem." Where did you use "prinicipal" in this project. etc From my experience a limited sample of code really doesn't describe the overview. They want to know well what does it do, what is it for.... imo many times people are bad at reading code –  monksy Aug 20 '11 at 4:19
1  
Do they really want to know that or do they want to know how well you communicate it? Don't ever assume that you know why an interviewer is asking a question. And if an interviewer is bad at reading code, particularly your code, you might want to ask yourself if you want to work for/with them. –  pdr Aug 20 '11 at 4:23
add comment

Is a programming portfolio a good indicator of the quality of a developer?

You need to ask from the perspective of the employer. Do I need the developer to show me a portfolio in order to see his skills? The answer depends on your prospective employer of course, I can imagine that it doesn't matter in large corporations since they have rigorous testing and interviews to gauge the quality of a developer.

Not a lot of developers present a portfolio, I've only seen one do it so far out of hundreds of applications (the one got the job btw). Those who do have a better chance of getting a job, as they are showing off proof of their skills. If you were an employer then you'd be more likely to hire a person who shows off his skill rather than one who doesn't.

How should a portfolio look like? Really, it can look anyway you like. It doesn't have to come with a big black binder. All it has to contain is proof of the work you've done. The simplest would be a homepage that has:

  • A listing of applications and systems you've worked on with a description on what you've done in those projects. The description doesn't have to be long, but if it is then it better be an engaging experience. But for most of us mortals, keep it simple.
  • Screenshots would be nice. If you are applying for GUI or UI programming then this is a must.
  • Links to some open-sourced source code or personal pet-projects, if you've done any. It's easy these days as it is easy to set up an account to github, bitbucket, google code, codeplex etc.

When you have a homepage like this then you can put a link in your CV or personal letter. That way, if your employer is really interested in you they can look at your stuff and have a better picture of how good you are.

Also, another part of this question is how do you reject an potential employer's request for an portfolio?

At the time of writing I haven't seen a lot of employers who request portfolios on programmers or developers. So rejecting a request wouldn't be that big of a deal. It could be as simple as you are not able procure a portfolio at the time, but do keep in mind that the employer then wouldn't be interested in you.

share|improve this answer
add comment

I'm making this an answer (since its an opinion): Programming portfolios only offer a very limited view of a set of code in the scope of one or more projects. It's rather silly to make a decision on someone's code without understanding the context of the code. For example, if its an modification to legacy code, you can't just refactor the entire thing. Another issue [which I have been rejected as a candidate] is if you don't use exceptions (in Java). [The code in question was intended to be performance critical, thus exceptions would cause major slowdowns]

share|improve this answer
add comment

It's not the be-all-end-all, but like most other notches in the belt it can only help. I recommend that you have some semi-enterprise personal projects, or open source contributions.

Show that you have the passion after-hours, and that you are able to grasp the many complex aspects of software development. If that's through a personal portfolio, then great. But if that's through a prior position doing some pretty cool stuff, I feel like that is just as good.

share|improve this answer
add comment

Depending on the context, a programming portfolio may or may not be relevant.

If you're hiring a systems engineer, who has spent most of the last 10 years writing a C compiler, you may not be able to ask for the source code he's worked on. You may not even have access to the finished product, to take a look at how well it works. A portfolio would at best be a list of compiler features and issues/problems solved.

If you are hiring a developer to do work on a mobile application, or an application with significant web presence, it's fairly reasonable to ask for a portfolio of work. Large portions of the tools, libraries, and other components that the developer is supposed to be an expert at using, are open source and community developed, and someone who is strongly involved in using them is likely to have contributed, at least a little bit. It's also unlikely that a talented developer, who is devoting significant free time to improving his craft, will have exclusively worked on proprietary projects and will not be able to include at least a small number of examples of publicly available code in his portfolio. And, if the end product is, say, an iPhone application or a website full of complicated JavaScript, he should be able to provide you with links so you can check out the quality of the end result.

So, depending on context, a portfolio may or may not be reasonable.

If an employer specifically requires a portfolio, and you cannot provide one, there's not much you can do about it. You can't force the company to hire you, or even consider you, if you can't meet their requirements (even in the fairly common case where they don't seem reasonable). Provide a polite, professional response, along the lines of:

"As you can see from the attached CV, the work I have performed to date does not lend itself to providing a portfolio" or "Due to restrictions imposed on me by previous employers, I cannot provide access to source code of my previous work; you can, however, access some of the end products at the following urls:"

share|improve this answer
add comment

I've been asked many times about a portfolio since I'm a "Web Application Developer".

Typically, my answer is simple. The work I do is almost always covered under an NDA and therefore I can not show it. I am always happy to share links to sites I have worked on; but since my specific contribution to the projects are always on the back-end, it really doesn't help demonstrate my ability to solve problems.

While I don't believe the lack of a portfolio is an indicator of the quality of a programmer, I do believe that a portfolio can sell the quality of a programmer. In my opinion, it would be a great benefit to develop high quality (even if they're small) open source projects to include in a portfolio. This way, potential employers can simply browse your GitHub account or what-not to see what you're capable of and decide if your coding abilities or style matches whatever preference they are seeking.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.