Ask HN: What portfolio items are most impressive to you when hiring developers?
The best devs I know dont have portfolio pieces. They tend to work on problems that the people employing them pay a lot of money to prevent being public.
So for me portfolios are for junior devs & graduate students looking to leave academia. Therefore, I look for things that are uncommon in those environments, engineering over theory, documentation & tests over novelty.
Note: if I were hiring for a researcher the above would not be true.
This is refreshing to hear. I've been a successful developer for years working for a few different clients but don't have this portfolio of things I've done after work.
What I do have is a bunch of great reviews from my managers in the past years. Do those carry any weight in an interview?
See my other answer to the subthreads. I could go on and on about software hiring as its something I've spent a fair amount of time testing and thinking about. But in a limited answer:
- If I had a good work sample based proxy for hiring, I'd use that and basically nothing else.
- But that never happens, so what I (and most places I've encountered) actually use is network based hiring. So a bunch of great reviews from your managers is awesome for hiring assuming I know them. If I don't its basically a crap shoot, but I view it as much more valuable than some half baked collection of github repos proving to me you've done the the first couple chapters of several hot "how to" books.
Just curious, how do you consider maintainers of popular open source projects? I broadly agree with your thinking here, but I'm wondering if you consider an open source project part of a "portfolio" if it's mature software.
Sorry just seeing this question. Without getting into a giant rant about software hiring, there are things I think should be and things I think are.
In a should be case you'd have a hiring pipeline that had a good objective work sample proxy for the work you were trying to do and you'd judge blind other than that.
In the real world, I've found what actually happens is network based hiring. I hire the people I already know are good. After that, its mostly a crap shoot but I'd take popular open source contributors over other candidates all things being equal (though by the time you've contributed to a popular open source project you are dramatically past the bar for hiring outside of the "network" tract).
Look for "fit & finish" in a completed app. There is an old saying: "we're 90% done, now all we have to do is the remaining 90%!" I like to see that polish. It implies an understanding of the craft that is required, attention to detail, good debugging skills and an appreciation of human-centric design principles.
This sounds really great - but how does something look 'fit & finish'? Is a decent Readme.md with descriptions + screenshots of a sharp app good enough, or does it need to be actually deployed somewhere public?
Typically when I am presenting a project as part of an interview I spin it up in AWS (or elsewhere) and provide login credentials for them to actually play with the application. It makes it a lot easier to discuss the specifics of how an application was built when you can demo the application directly.
Anything at all relevant to the role - same language, same functionality at least.
Ideally things like good tests, good code structure, personally I'd also like to see a stable language choice too - if you're jumping from one language to the next to the next I'll probably assume you're going to want to rewrite everything in the new hotness every other week and that's a pain in the arse.
Associated blog posts that explain how your code works and why though? I'd put your name to the top of the "get this person in" list on the spot
That seems like a wierd expectation for evaluating peoples home side projects.
One reason people do side projects to develop and demonstrate effectiveness with technologies they don't use at work.
If I saw someone using a familiar and established stack to build fininshed, highly polished applications as side projects... I'd assume they were trying to make a product. That's what you do when you are making a product. You'd need to bring it up because they might be more interested in building their own startup than working for me.
The question was "What portfolio items are most impressive" not "What portfolio items are required" :P
Infinite disagree on the "they might want to work on their own thing more than my thing" angle
They're keeping their skills sharp on their own dime and that's a bad thing? Many employees only stick around for 2 years or so anyway who cares whether they move on to the next 9-5 or their own thing?
I sometimes do projects in new frameworks or languages as a learning experience - in a professional setting I would still default to tried and true tools that I have a lot of experience with and are relatively stable. How do you differentiate between individuals like you describe and people like me who like to experiment for education's sake?
> How do you differentiate between individuals like you describe and people like me who like to experiment for education's sake
I wouldn't, that person would - I don't imagine many people put their experiment/education projects in their portfolio
> I don't imagine many people put their experiment/education projects in their portfolio
I highly disagree, experiment/education projects aren't necessarily low-quality by default, so I don't see why they wouldn't make it into a portfolio.
I'm in a situation where a lot of my work projects have been axed or replaced with newer projects. I have very little professional stuff to show, sadly. But I do have some side projects I'm very proud of, and I'm dammed if I'm leaving them out
That's a fair point but if it was an absolute top notch experiment/education banger then that person's going to the top of the pile anyway because my experiments in new languages are 10% todo lists and 90% abandoned hello worlds
I can see why some people might use to-do lists as their go-to, but those often are not representative of actually exploring a language.
I guess there is probably a large community of people who only share publicly projects they consider portfolio Worthy. I have found sharing valuable in both failed and successful projects when interviewing, teaching, and spec'ing a new project.
You're correct in noting that some of these projects fail, but as long as there is sufficient code the projects they can often be interesting.
Sort of side projects that I pull together in another languages are often to explore language features that are not readily available in my common tongue. Certain languages have made completing certain tasks far easier like heavy Matrix programs in Octave or Julia, n-body simulators with extended unit types in Julia, multi-threaded cryptographic toy project in erlang, statistics problems and visualization in R, easy concurrent types and strong explicit typing for model train controller and Ada. I have also used a new language for a interview coding challenge (for fun).
One of the ways I learn new languages/frameworks is by porting something I've already made before and don't really have to work out how to design it again.
For example, I've ported my Proximity game a bunch of times. Some of these never got completely finished and released:
* Actionscript (Flash, released and playable online)
* Java (J2ME and later Kindle -- the Kindle version looked awesome, too bad Active Content is no longer a thing)
* C++ (Popcap framework)
* C# (XNA, released on Xbox 360 on Xbox Live Indie Games)
* Objective-C (OpenGL ES, released on App Store)
* Python (I just used text graphics)
* Lua (Pico-8, almost done but not quite)
* Physical board game prototype, hoping to find an interested publisher
* C# again (Unity this time, and making it in 3D)
Physical board game is a cool language. You have to roll your own garbage collection though.
Authentication.
i.e. Have you successfully implemented a good OAuth[2] security system? Can you explain the difference between JWTs, and session auth? Why choose one over the other. Talk to me about SSL a little bit, even at a high-level. How do you secure APIs? Talk to me about how you encrypt passwords, and sensative data.
Have you had to deal with PCI DSS?
This is one of the differences between "I'm a developer who has maintained a simple CRUD app" and "I'm a senior developer who can build a secure system".
Or in other words, authentication separates the men from the boys.
I like seeing personal projects that solve interesting problems, and that show that the person really considered the use cases and application of their project (UX design, functionality, etc.). There are good engineers, and then there are engineers that focus on why/who they are doing the engineer and I think that's really important, especially in a startup setting where people need to be intelligent self starters and hold themselves to high standards without having someone breathing down their neck.
I like to see lots of personal projects, the more complete and fleshed out the better, it shows you have a passion for the craft. I'm also slightly biased in favor of people without a college degree like myself, but I certainly wouldn't hold a degree against anyone.
so my most impressive candidate would be someone without a degree and quite a few very complete and well polished personal projects.
I like to see lots of personal projects, the more complete and fleshed out the better, it shows you have a passion for the craft
Translation: young, impressionable, willing to work lots of unpaid overtime
There's still hope. Glad I saw this comment.
I like to see projects that people are obviously passionate about. A project that someone worked on with passion is likely to be some of their best work and best ideas melded together. If the output of that is good, they're probably worth giving a shot.
Anything that has shipped.
If you run an open project on GitHub I'll also look at your wiki and issues, to evaluate communication.
Something that has shipped, acquired customers and made money. Those things are more impressive to me than what framework, programming language, etc. you used.
Why would a programmer who can do all these things work for you?
It doesn't have to be a lot of money or customers. Even a small portion shows they can think about the bigger picture and ship something user/customers want to use.
You are right, a programmer who can make $80k+ building their own stuff is most likely not even looking for a job.
Because those things imply a team effort not an individual one? But demonstrating you've been part of one of those teams is a good indicator.
If it's a team effort, then why are you judging the developer candidate based on what other members of the team did or did not do well (acquire customers and make money)? It makes no sense to judge a developer based on criteria he's not directly responsible for.
Please don't generalize without evidence to back it up.
The first version of the Linux kernel wasn't written by a team, for example, and writing an OS is clearly impressive. Linux didn't ship, get customers, and make money.
Something with a vibrant community built up around it is most impressive to me. It shows a degree of communication and management, not to mention marketing.
Otherwise, most github repos are not that impressive as I have no idea how long it took to write (did it take a few months to write something most devs could write in a few days?), or if the candidate even wrote it at all.
> It shows a degree of communication and management, not to mention marketing.
Which is important when hiring a programmer who won't be managing anybody or marketing anything.
The question was what I find most impressive in a portfolio, not what I require in a candidate. "Soft skills" on top of good engineering is extremely impressive.