Mention portfolio to an artist, and she will be only too happy to show off the work she has done. You can then, based on browsing the portfolio’s contents, decide to commission the artist to paint the centerpiece of your home. Looking and assessing paintings, photographs, poems, books, articles and so on is really the only rational way to understand and appreciate the true skill of the artist, photographer, poet, writer and journalist. Doctors, dentists, lawers, engineers have to have their craft and skills certified and constantly updated and revalidated. It is interesting to see that the legal system will fail utterly if the laws, decisions, judgements and so on are all not available to all and sundry to read, listen to and watch. The skills of a surgeon in pieceing together the severed artery is no less a display of amazing skills, but also the fact that it is open to review by peers.
Given that human endeavours have always needed to be peer reviewed and validated, why is that we do not seem to insist that in the case of software developers? Why do computer science schools continue to teach programming in isolation and not as part of the free and open source community? What better way than to read someone else’s good working code to gain a deeper understanding of both the subject matter, but also the art of coding?
Let me pose this question: when you are faced with hiring a newly minted CS major, how would you assess the person’s coding skills? Would you be going by the candidate’s GPA, or the score in a particular course? How about if you are going to hire a new visual artist for making icons, images etc for your product? It is not unexpected to ask the visual artist to provide her portfolio and following an interview or more, the hiring organization is rest assured of the skills. Contrast that with the CS major. If the person has been coding in, say C# or .Net while in school, would that person be maintaining a portfolio of code written? How would one do with these proprietary platforms when these platforms are hidden behind NDAs and such? How would the hiring manager truly assess the skills of the applicant? If, instead, the applicant had been coding in the open source arena, when asked, the applicant need only point to where her code, image, how-tos, etc are kept and let the interviewer figure the quality.
For many years, hiring a developer has been an exercise in blind faith and Russian Roulette. You had to take a risk on some individual coming with the right skills at a level that is of high quality and acceptable performance. You have no way to check other than to ask previous co-workers and perhaps even her manager (and even LinkedIn for that matter) on the quality. Why can’t we look at the code?
This brings me to epiphany that there cannot be any other way to hire a developer other than by checking out her portfolio. If the portfolio is hidden behind a proprietary NDA-wall, it becomes buyer beware for the organization. That itself explains, via conjecture, the enormous waste in software projects – US$1Trillion at last count. Singapore is currently wasting over S$1b on a proprietary implementation of the Standard Operating Environment, but what is S$1b compared with US$1T – a rounding error. But a huge rounding error paid out of tax payers monies.
We have to require all CS students to maintain a repository of code that they wrote while in (and perhaps before school) so that potential employers can make references to that in hiring decisions. QED.