On HN, Twitter, reddit, and Medium I am told to have side projects to be employable. My thoughts:
a) I have side projects to learn and have fun, not to impress an interviewer. My side projects are for fun, exploration, experimenting, etc. They may not be finished or polished (or they may be!). The idea that I should give my leisure time outside of work to build stuff for the sake of finding better work is ridiculous to me. Granted, sometimes you can do both at the same time.
b) In the handful of startups and big companies I’ve been associated with, I’ve been the only person in the team that has an active GitHub profile or other open source contributions. Most of my coworkers don’t code outside of work and are doing just fine; some having worked at “prestigious” companies. People need to understand that this isn’t actually the “norm” in the real world.
Another ugly detail that’s often glossed over is that most of the people with substantial open source contributions (meaning that they led projects that are now used all over the world and can make money consulting) had the opportunity to work on open-source software on paid time.
In a typical closed-allocation/authoritarian company, these aren’t the best hires, because they often expect to be able to work on open-source software (it’s how they got where they are) and it can inspire resentment. I’ve seen top-notch people actually get let go because middle managers got sick of explaining to the plebs why they couldn’t work on externally visible projects while someone else could.
The more progressive companies have recognized that high-IQ people need something more like a research environment and encourage them to speak at conferences and contribute to open source projects and publish papers. However, getting into these companies is very difficult and they’re inaccessible to garden-variety software engineers.
FWIW, I have recommended this, but mainly for people who don’t have much formal experience or education to get their first junior position. I think it’s a little crazy to require experienced professionals to also have open source side projects to be employable.
I have side projects to learn and have fun, not to impress an interviewer. My side projects are for fun, exploration, experimenting, etc. They may not be finished or polished (or they may be!). The idea that I should give my leisure time outside of work to build stuff for the sake of finding better work is ridiculous to me. Granted, sometimes you can do both at the same time.
That’s exactly what I want to see in a candidate!
Not having side projects is far from a deal-breaker, but it is additional information useful in evaluating the candidate. The projects you describe are precisely what I want to see—not something that feels forced or is clearly put together to demonstrate certain concepts. Or coursework. Show me something derived from passion and/or playful exploration.
That was a refreshing take on it. :) The fundamental thing I’m seeing is that people are expected to be doing what amounts to work or reputation building in their spare time to get a job. That is, unpaid work to please a future employer. The employers believing this consider an employee will not be dedicated doing their paid job unless they were dedicated to unpaid, side projects. Compare this to almost any other industry to find it’s nearly nonexistent outside IT.
They judge people based on education, internships, prior work at other employers, and so on. What they do at work. They may be more likely to take on a candidate doing extra stuff. The colleges and some self-described elite businesses value strong “extracurriculars.” Most companies, though, just base their hiring on perceived skill and performance with common methods for doing that which can happen at work. IT hiring needs to get with the program.
[W]hen companies say they want “the best,” I get nervous. It’s a myopic approach to team building. It’s a subtle way of requesting human machines.
This is correct, but it’s worth noting that these companies don’t want the best, and know they’re not getting the best. It’s fun to rip on non-technical executives, but they aren’t actually stupid and they know that average working conditions and wages aren’t attracting the best. If anything, their impetus is to hire low and cheap. They want people who think they’re the best: people who will work 90-hour weeks to avoid failure (even if that failure’s not their fault, and even if it won’t be blamed on them) and who still believe in deadlines because they’re coming from academic meritocracies where deadlines are well-tested and (if you’re disciplined) relatively easy to meet.
Before the Crash of 2008, if you said, “You should hire me because I’m fucking brilliant” on an interview for an investment banking job, you’d get it. (I don’t mean to make it sound “that easy”; obviously, if everyone did it, it wouldn’t work.) Most of the people in private equity (including VC) literally got there on one skill alone, which is the ability (at 22, and with no notable accomplishments) to look a 6-foot-3 white male millionaire in the eye and say, “I’m fucking brilliant and you’re retarded if you don’t hire me on the spot.” (It got harder to pull this off after 2008.) Boasting about your intelligence doesn’t prove anything, nor does it convince someone that you’re actually smart, but it does indicate that you have that young male arrogance/quixotry that most companies use to get the grunt work done.
The truth about the actual best is that they make mediocre-or-worse hires for traditional authoritarian companies. Becoming the best at something requires a strong work ethic but a conditional work ethic that shuts off when you’re wasting time. These companies want, as OP said, “machines” with the unconditional work ethic. Those people are rarely the best, but they also don’t get in the way.
I agree with this article, but only to an extent. I am not the smartest guy in the room. I am not an amazing programmer, but over time I have cobbled together a few side projects that scratch a personal itch.
Actually, being honest, only two that were functional in any meaningful way. I have a bunch of other repos in my Github account with half finished projects, but only two could be considered to be ‘finished’ and usable. Neither will ever be an open source smash.
But they, and even the unfinished corpus of other projects, ARE a presence. It DOES say something IMO.
It says “I care enough to putter with this stuff in my spare time”. The writer may not feel like she should be REQUIRED to do this, and she isn’t, but it does say something about her, and I think it’s OK for people to hire on the basis of aptitude and interest.
Is it possible to read this without a LinkedIn account?
(No, I have no LinkedIn account to show you.)
gist of the post by Ezekiel Buchheit.
For others having the redirect issue.
It worked for me fine, and I don’t have one either.
The reality is if the choice is between you who doesn’t do coding in your spare time and someone else who does, I’m going to pick the second person all other things being equal. It shows they have more passion for what we’re doing. If you don’t like that, your problem is with yourself or reality.
You have a choice you can either find that passion and interest, or you can accept that coding is just a job for you and you’re not going to be the best candidate for most interviews, maybe you can find some other reason to convince people to hire you like a lower asking salary.
This isn’t unique to coding. This rule applies to a lot of careers. Maybe the answer if you’re in this position is you should switch careers to something you are passionate about.
This isn’t unique to coding. This rule applies to a lot of careers.
It really doesn’t.
Do you honestly think that accountants, or welders, or nurses, are asked if they weld, balance books, or care for infirm, unpaid, on their own time, and could they please submit welds, patient histories, or financial statements for the hiring committee to examine, as a gating mechanism for hiring?
Spare time projects are a piss-poor proxy for “passion”. The reality is that my GitHub account suffers most when I have the most passion for my day job – because I’m putting my all in to developing for it, and using my free time to recharge. When I’m bored by my day job – then, I start to tinker on the side. It really only selects for people with few hobbies, little in the way of family responsibilities, aren’t sinking too much effort into their day jobs, and those who can finagle their way into getting paid to work on open source.
Edit: also consider that the reality of many US employment contracts is that off-hours IP development often still belongs to the company, and open-sourcing it would require convincing them to renounce their claim to the copyright (or at the very least, convincing the company lawers to agree to open source it under the company’s copyright), which is often a complete nonstarter. So you may also be unintentionally selecting for people who aren’t particularly diligent about reading contracts and respecting your Company’s IP rights.
Spare time projects are a piss-poor proxy for “passion”. The reality is that my GitHub account suffers most when I have the most passion for my day job – because I’m putting my all in to developing for it, and using my free time to recharge. When I’m bored by my day job – then, I start to tinker on the side.
This is super true. At my older positions, I wasn’t challenged, I had many menial tasks, I spent a lot of time herding other people in my team. Now that I’ve changed roles, I really get into the technical work at work, and come home ready to work on my other passions, or to just enjoy taking a break.
Any time where I get a week off, I steadily fall back into working on my tech side projects, but when I’m busy and challenged at work they suffer the most.
The reality is, also, that–speaking only for myself–it can be really difficult to maintain the necessary focus for competent programming for more than eight hours a day. When I’ve had periods of unemployment, I get a ton of work done on side projects; when I’m working and engaged in that work, I get almost nothing done on my own things, simply because–no matter how much I’d like to–I’m too spent at the end of the workday to continue coding. (And if I force myself to write code in that state, it’s not going to be very good code.)
The parent qualified their remarks pretty explicitly with the phrase “all else being equal.” To me, that makes a lot of your points moot, especially the phrasing about “gating” hiring. Who is actually gating hiring based on side projects? Certainly, at least the parent isn’t advocating it!
It doesn’t apply to every career, but it applies to a lot of creative careers. That’s what programming is.
Everything you and the OP are saying to me seems like a lot of b.s. excuse making. If you take all the energy you’re spending making excuses for why you have no spare time projects to make a project you wouldn’t need the excuses.
I do somewhat agree with your initial comment, insomuch as “side projects” can be a useful data point in the hiring process. In that respect, I feel like a lot of the responses to your comment straw manned your argument. But…
This is really just unnecessarily combative. If you have a family and various other responsibilities (as I do), it takes real work and effort to make time for those side projects (again, as I do). “making excuses” trivializes that way too much IMO.
I get paid to work on Open Source full time. Literally none of the issues described here apply to me at the moment.
I simply have the empathy to recognize that my current situation isn’t the norm.
It doesn’t show that the candidate has passion. It shows they have nothing else in their life except for coding - no family, for example. That’s this author’s point.
Yeah that’s not remotely true, and it’s a ridiculous thing to say. I have worked on side projects, I have a family and other hobbies.
People without side projects can be perfectly good programmers, I’m not saying they can’t. But people who work on programming side projects outside of their job do so because they have a passion for it. I was really interested in Swift, so I worked on a side project in it. I wanted to write a meeting agenda application because I didn’t see one out there that fit my needs, so I made one. These projects only took a couple of weekends here and there.
I’m not saying that people have to be programming every night and every weekend. But if you’re a developer who’s been doing it more than 5 years and you have NO side projects, that tells me it is not also a hobby for you. It is only a job. I don’t see how you can argue with that.
But people who work on programming side projects outside of their job do so because they have a passion for it
Or they do it to please potential future employers who think like you?
Or maybe they like tinkering with new shiny toys without ever finishing a project?
Or maybe their only goal in life is to make themselves look good?
I’m not saying that people have to be programming every night and every weekend. But if you’re a developer who’s been doing it more than 5 years and you have NO side projects, that tells me it is not also a hobby for you.
No, it does not tell you that. You could be doing things with code every day every night without having a side project to show off for it. Programming isn’t only about producing more new code. A newbie developer could be producing loads of code after a few weeks of getting the basics down. If there’s something they need or want to build, that’s a side project. Meanwhile, the experienced guys could be spending a week or two to find and fix an elusive bug in a large code base they’ve never touched before. This could result in a trivial looking two-line diff. That is not a side project, yet it is likely to require much more experience and skill than the newbie side project. And there are a whole lot of other things you could be doing without producing a side project.
But people who work on programming side projects outside of their job do so because they have a passion for it.
But “if A then B. Not A therefore not B” is a logical fallacy as old as Plato.
But if you’re a developer who’s been doing it more than 5 years and you have NO side projects, that tells me it is not also a hobby for you.
The candidate could have spent the last 5 years making megabucks selling 100% of their IP rights to Raytheon. They’d have had no right to any side project they could make externally visible. You can’t conclude anything about “passion” from that.
Hiring based on whether somebody has open source code on display is lazy, IMO, and without scrutiny it doesn’t really mean anything. Any idiot can throw some code on GitHub.
Also, we’re talking about work and job interviews, and in that context, coding is “just a job” for everybody involved. Bringing passion into it makes it sound like you’re trying to exploit people. I’ve actually come to believe this is why software developers get the short end of the stick so often. They’re so enthusiastic to write code that they do stupid things like work 60 hours a week, take lower pay, burn out, etc.
Finally, being passionate about something doesn’t imply skill or ability. I’m passionate about skiing, yet you’ll never see me in the Olympics or in a ski movie, because I’m not that good. The important thing when hiring should be skill and ability, not passion.
Programming is art. Artists are expected to showcase their work, ergo github projects. Ask your employer to allow you to use parts of your code for your portfolio or (if they are controlling morons) allocate some time to create simple demonstrations of your abilities and leave for someone who will let you code in the open.
If you dislike coding in the open… Sorry, you are obsolete.
What makes it art?
[Comment removed by author]
So the point you seem to be making is that in code, we have lots of freedoms and things that are a matter of taste. I would agree with that. And there are trends, yes. I don’t see how that makes programming art, however. There’s an aesthetic side to it, but that is not the essence of programming.
And if an employer is focused on these matter-of-taste things, then they are completely missing the point: what problems are you capable of solving? Can you solve the employer’s problem? Can you solve it well? These considerations are not a matter of taste. And these are the considerations that should count.
It gets worse if you look at portfolios. Surprise, experienced developers are perfectly capable of adopting a different style or a different trendy & fashionable paradigm/framework/whatever. So if an employer were to look at my portfolio and dismiss me because the things I’ve done in the past are not in their preferred style, they’d be making a gross misjudgement.
Programming is about solving problems. A side project doesn’t demonstrate I can solve someone’s problem, unless it happens to be the problem the project is made to solve. And a portfolio won’t demonstrate other critical skills such as debugging. The larger your skillset, the more likely you won’t ever have a portfolio that demonstrates it all, unless you have a sick amount of free time to spend on coding and proving yourself.
Once you get experienced enough, you can do things that don’t immediately have rational, as in at least initially thought out reasons. Like the ability to discern what are likely causes of bugs in a code base you know fairly well.
Yeah, that is experience, and has nothing to do with art. Look at pilots, drivers, mechanics, machinists and other machine operators, doctors, etc. who can discern problems by listening, seeing, hearing, touching, making educated guesses. They do things that can seem very irrational to the uninitiated. That is just experience.
Note how initially getting useful stuff done can more resemble putting marking instrument to a canvas of some sort, there’s less that must be mastered compared to building a minimally serious bridge.
Yeah, programming is easy to get started with. So is metalwork. So is mechanical engineering when you’re not designing something that must not fail and kill people. Yet they all need creativity in the face of a sufficiently complex task that they are to solve on their own.
So have a mechatronics engineer design a sufficiently complex machine from the ground up, and watch him draw from the nearly infinite set of possible designs, materials, processes, parts, etc. There’s plenty of creativity involved, many things are a matter of taste, and experience helps him come to a good solution fast. It’s engineering, not art.
Now give a machinist a machine shop full of tools, and a few slabs of steel. Give him the drawings of the said machine. There’s going to be plenty of creativity in making the parts. Trends that he may or may not follow. But I won’t call it art. It’s just someone doing their job, a job that requires using their brain too.
A machinist could showcase the parts they’ve machined. A mechanical engineer could showcase the machines (or the drawings) they’ve designed. I don’t think they’re usually required to do that.
Programming is about solving problems.
Sound almost like: “Why are you interested in qualities of the code I produce if it is correct?”
Well, I have some experience with public tenders and the code we usually get is usually mostly functioning, but I have yet to see some that can also be understood, maintained and extended. Some of it is closed, but the visible parts are… disturbing.
Just to give you an example, DERS have sold us their system called Verso, which is a workflow system, programmed to take care of room letting. The normal response time was around 3-10s before they “fixed” it. Now it is around 1-3s. The system performs several database queries on every HTTP request, stores results of those queries in /tmp and executes the resulting Perl script.
I wouldn’t want to hire their engineers by accident…
Nah, I was writing with the understanding that most employers don’t genuinely care about the code in random applicants' side projects, and at best will do a cursory look. A look by the underqualified people that call the shots, as hga put it. Do they really have the time to do an in-depth architectural analysis and try to understand the design decisions made in the code? I really doubt it. I suspect a vast majority of them will only look at superficial stylistic issues, if they look at all. Or they try to derive some measure of experience from the amount of code you’ve published. Even if they did dive deeper, there’s a good chance of misunderstandings and gross misjudgements.
The other point I tried to make is that the qualities you see likely wouldn’t be representative of the qualities I could deliver for somebody as an employee. Side projects aren’t made to impress people (at least I don’t do them for that), they’re made for fun, education, or to serve a real need, all under different constraints, circumstances and values (which may be very different than on a job) that will have an effect on the resulting qualities. Chances are that somebody quickly glossing over random code won’t have any of the background knowledge to understand why it is the way it is. And unfortunately, because of this, I’ve seen lots of developers say that they are afraid to upload & open source their side projects.
Just a one more thought…
The is a Polish video I really enjoyed called How Culture Works, it describes culture as “a set of algorithms created to maximize our prosperity which tell us how to use our hardware in a given environment”.
I prefer to think about art as a cultural pull request of sorts. And it does not matter whether the pull request is aimed specifically at human behavior (Shakespeare) or arbitrary systems (code). As an example of what programming taught me is that pull usually has higher throughput than push, provided you unstuck workers from time to time.
(Sorry for the amount of my inept writing.)
It’s a subtle way of requesting human machines.
Maybe for many companies it is, but that’s an unfair generalization.
(First, to be clear: side projects are far from a make-or-break when I look at candidates. It provides additional information that contributes to the overall picture of the programmer—qualities that might be demonstrated elsewhere.)
When I look for a passionate programmer, I want someone who is going to contribute that passion to the team. If by “machine” the author means someone who’s going to sit down and mechanically pump out code, then this is the antithesis of the team that I want to be a part of. I want organic candidates that contribute not only code but to the processes, knowledge, and culture of the team. I want someone who will work well with others, but isn’t afraid to speak their mind.
Don’t be turned off by all requests for side projects or code samples. My advice would be: be yourself. It is painfully obvious when someone forces “side projects”, or simply commits coursework. That is mechanical. If you do not express passion or interest for your career in that way, then demonstrate it in another, even if it’s in writing. Make me interested enough to interview you so that you can really speak to your interests.
But don’t try to state what isn’t there. I’m often let down when someone states skills on their resume or elsewhere that they don’t actually possess and then can’t answer the most elementary interview questions about them. I’m disappointed when someone provides code samples or “side projects” that look interesting, but turn out to be code copied or slightly modified from elsewhere (someone else’s project, coursework, training sites, etc).