From running, enduring, and observing several rounds of hiring:
Keep it short, ideally a page front and back. Resume, not CV.
I will check that you have public code. No public code is–usually–negative signal.
I will check that your Github stuff (for example) is not just forks of other work.
Be specific in what you did in a role–I know how people write these things, and it’s a red flag to say “helped ship a project”. You could’ve been the coffee gopher and that statement would still be true.
Cover letter, especially if asked. Easy “can this person read and follow simple directions?” test.
For higher-end and executive positions, write thank-you notes. This one surprised me, but I’ve seen it cost some veep candidates their shot.
Paragraphs are not as helpful as concise bullets.
Dates and titles are helpful.
If you have one, mention your clearance.
Take a second to trim your mentioned experience to the job–if I’m hiring an EM, code experience is not quite as interesting to me. If I’m hiring an IC for a web thing, your school raytracing project is off-topic.
Don’t add any social media you wouldn’t want to be considered from a culture-fit standpoint. Your X account owning the libs or your Mastodon making fun of boomers may not have the effect you expect.
Spelling and grammar mistakes are extra bad. Easy problem to solve, and it makes you look sloppy and inattentive to detail…typically bad qualities in a candidate.
If you are applying for a job outside your skillset (say, MUMPS programming), including experience that emphasizes your adaptability.
All of these of course have exceptions, of course–if you spent a few years at a defense contractor I’m not going to be too surprised if you don’t have a lot of public source code.
…don’t want to jump through the (perceived or real) legal hoops of publishing code under a FOSS license
…do allow their employees to publish code, but put a bunch of red tape in the way, so that it would be self-defeating for any employee to actually try to do it
It’s not at all limited to defense contractors.
The larger problem with using public code as a signal is that it puts people at a disadvantage if they don’t have the time or energy to publish projects outside of work. Lots of people have caregiving responsibilities that don’t leave them time for outside-of-work work, and a hiring process that values a well-stocked GitHub profile implicitly devalues parents and other groups.
I read it charitably as “usually” and “signal” doing a lot of heavy lifting. I.e., no public code won’t instantly disqualify a candidate, but will be a nail in the coffin if there are other negative signals. Which I think is valid.
Right, so in a heads to heads comparison between two candidates you’ll choose the one without kids? Or you’ll favor the young one over the older, because the older one “can’t show what code they’ve been writing because of having an actual job” whereas the young one can more easily point to work done in public recently?
Like you understand “can have publicly listed code” is going to be significantly biased by age, right?
Similarly the way a lot of women are treated on line means many intentionally limit their public presence, so I suspect you’ll get gender bias there as well.
The problem with @friendlysock’s approach with regards to the public code is that a lack of a positive signal is not the same as a negative signal.
Lacking a positive signal means that the things you could have learned (in this case: code quality, motivation to code off of work hours, etc) you have to learn from another way.
A negative signal is something that is either an instant disqualification (a belligerent public online persona) or something that needs to be combatted by more positive signals (a spelling error on the resume might be mitigated by a long-standing blog that communicates clearly).
For most companies/positions, using lack of a Github profile shouldn’t be considered a negative signal unless the position is something like “Open Source Developer Evangelist”.
And I agree with @olliej’s reply below that a lack of a Github profile isn’t a great filtering measure, even if you are so flooded by resumes that you need some kind of mass filtering measure. Here are some reasons I wouldn’t use it as a first filtering mechanism:
It’s not a simple pass (everyone with a Github passes the screen)
It’s not a simple reject (“usually negative” means you need to weigh against something else anyway)
It’s subjective
It takes a significant amount of an engineer’s time to do it
You are trying to quickly evaluate code in an unfamiliar project or projects, and perhaps in an unfamiliar language, which will have big room for error
Bingo. In practice, I almost always ask about it–some people just have private hosting or whatever, or have some other reason.
The thing I also think a lot of people miss is: I had over a thousand (no joke, 1e3) applicants for a junior position I opened up. When you are trying to plow through that many applicants, applicants without easy code to show their talent are automatically lower priority in the heap than those with.
… so you looked all the code from those folk, or you just went “does/does not have a GitHub profile” as a filter?
Again, this seems like a really good way to discriminate against people who are lower income, have families, etc. Not intentionally, just that that is the result of such filtering.
For example, when I was at uni there was a real sharp divide between people who did open source work and those who did not, and it was super strongly correlated with wealth, and not “competence”. It’s far easier to do code beyond your assignments and whatnot if you don’t also have essentially a full-time job, or you don’t have children to care for, etc. The person that I would say was the single best developer in my uni’s CS department was also working pretty much every hour outside of uni for his entire time there. By your metric they would be worse than one of the people in my year, who I would argue was far below in competence but did have a lot of open source code and “community involvement” because his family was loaded.
This reminds me of the discussions about how screening résumés with names removed to prevent bias still end up failing because you can tell so much from other clues like someone playing lacrosse in college, or that they went to a HBCU or an all-women’s college, etc.
Software development is a qualified job – you have to invest something (your time at first) before you can earn money. You read books, follow tutorials, discuss things with more experienced folks, study at university, do your own projects, study existing free software and contribute to it, get some junior job or internship etc. This is all part of preparing for a more qualified job.
How does a university degree requirement differ from taking your own public projects into consideration? Both cost you your time. (not mentioning that diploma is often a mandatory requirement while own projects are just softly appreciated + getting a diploma is a much larger investment than writing and publishing some code, the entry-barrier in IT is very low, compare it also to other fields).
If I ask a candidate: show me a photo of your bookshelf (or list of eBooks), tell me something about your favorite books that helped you grow professionally or tell something about an article you read and that opened your eyes… do you think that it is also bad and discriminatory? Because not everyone has time to study books and read articles…
Another aspect is enthusiasm. The abovementioned activities are not done intentionally to look good for future employer, but because you like them, find them entertaining or enriching.
I will check that you have public code. No public code is–usually–negative signal
Then you’re rejecting a lot of excellent people for no good reason. Many (most?) jobs don’t let you publish your work code, put restrictions your ability to contribute to OSS projects, and consider code developed by employees to be there’s (e.g. you need special permission to publish anything). This is in no way restricted to defense contractors, in my experience this is the norm for any case where your job is not explicitly working on OSS software. You may philosophically disagree with these employer’s policies but that still the reality for most developers.
I will check that you have public code. No public code is–usually–negative signal.
I will check that your Github stuff (for example) is not just forks of other work.
The older I get the weirder this idea seems: evaluating someone for a paid position based on the quality and quantity of work they do outside of the time that they’re paid to do a job as a professional. Does any other profession work this way?
But if your hiring an accountant and there’s one who runs audits for fun and has a blog with the places where they caught major errors in the audits that they did for fun, you can bet they’d be near the top of the hiring pile.
For a lot of other professions, (especially arts and engineering) there’s a concept of a portfolio: a curated set of work that you bring to the interview to talk through, and which you may be asked to provide up front. With software engineering, it!s easy to make your portfolio public so it can be used earlier in the hiring process.
Nobody has an expectation that accountants or many other professions will have professional-quality work done, for free, on one’s spare time, or suggests that the presence/absence of such should be a significant factor in hiring decisions.
Also, it’s not “easy to make your portfolio public” in software. Out of all the companies I’ve worked for across my entire career, do you know how many of them even have a listing of their main repositories public on a site like GitHub? One, and that was Mozilla. Every other company has been private locked-down repos that nobody else can see. I can’t even see former employers’ repos.
The only way to have a “portfolio” like you’re suggesting is thus to do unpaid work in one’s own free time. Which is not something we should expect of candidates and not something we should use as a way to compare them or decide between them.
Also, it’s not “easy to make your portfolio public” in software.
In the time it took me to write my comments in this thread, I could’ve signed up for Github (or Gitlab or Bitbucket or whatever) and opened a new repository with a basic Sinatra, Express, or even Bash script demonstrating some basic skill. Hundreds of thousands of developers, millions probably, have done this–and it’s near standard practice for any bootcamp graduate of the last decade.
The only way to have a “portfolio” like you’re suggesting is thus to do unpaid work in one’s own free time. Which is not something we should expect of candidates and not something we should use as a way to compare them or decide between them.
You don’t have to have a portfolio online. You don’t have to ever do any work that isn’t attached to a billable hour. Similarly, I also don’t have to take a risk on interviewing or hiring you when other people show more information.
Similarly, I also don’t have to take a risk on interviewing or hiring you when other people show more information.
This sounds more like a failure in your interviewing process than anything else.
So, look. I’ve run more interviews than I could count or care to remember. I’ve helped design interview processes at multiple companies. I’ve written about interviewing processes and given conference talks about interviewing processes. I am not lacking in experience with interviewing.
And this is just a gigantic red flag. As others keep telling you, what you’re doing is not hiring the best candidates. What you’re doing is artificially restricting your candidate pool in a way that excludes lots of perfectly qualified people who, for whatever reason – and the reason is none of your business and in many cases is something that, at least in civilized countries, you wouldn’t even legally be allowed to ask about in the interview – don’t have a bunch of hobby/open-source projects on GitHub.
I feel I’ve explained my process (including many “this is not a hard-and-fast rule” qualifications) sufficiently well and accurately, and have given honest and conservative advice for people that I sincerely believe will help them get a job or at least improve their odds. If this is unsatisfactory to you, so be it.
I’m not interested in discussing this further with you, good day.
More than that: introspective professionals are valuable. All paid coders should be able to write up some fun algorithms and discover them for a given need, but not all will go above and beyond in their understanding and mentorship.
It’s a useful signal when present. It’s not a useful signal if absent. It’s a very negatively useful signal if all you have on your public commits is messages like “blah” and zero sanity in your repository layout.
I tell people who are learning to code to get blame in other people’s projects, to learn good style and show some useful activity beyond forking a project and uploading commits of questionable value to the internet.
Supposedly all these hoops we make people jump through in programming interviews are because the interviewers say they see too many people with degrees and impressive credentials who can’t write a for loop.
If the software certification exams were anything like the CPA certification exams, we wouldn’t need to do nearly as many technical interviews. In other fields getting certified is an ordeal.
Other fields managed it: the CPA standardized exam takes 16 hours (not to study, to actually take) and the architecture ARE takes 22 hours.
Or we could not throw software engineers through that kind of meat grinder and stick with using other signals, like portfolios and technical interviews.
If it were possible to build a single exam that actually did it, I don’t know if I’d mind just because it would end a lot of pointless discussions and avert a lot of horrible processes.
Meanwhile, asking for a “portfolio” or using it to decide between candidates has problems that are well-documented, including in this thread, and I don’t really think we should be perpetuating it. It’s one of those interview practices that just needs to go away.
Nobody asks artists for a portfolio? Nobody asks engineers for previous specific projects, even if the details are obscured?
The projects one is way more than a job role. The portfolio is often of paid work where there has been a release for a portfolio, or work done outside the office.
I’ve worked for multiple companies that used GitHub for their repositories. If I were applying for a job with you today, and you browsed my GitHub profile, you would not see any of the code I wrote at those companies, or even the names of the repositories.
When people talk about a “portfolio” they always mean code written, unpaid, in one’s own spare time, unrelated to one’s current job, and many perfectly well-qualified programmers either do not do that or cannot do that due to not having the luxury of enough time to do so and make it look good.
Nobody asks civil engineers to have a portfolio of bridges they built as hobby projects.
Not true. Architects, for example, design many buildings during studies or send proposals for architectural design competitions. Most of that buildings are never build and remained only on paper. And were created in spare time. Guess what such architect would discuss on the job interview… Portfolio of the proposals and unrealized designs is very important.
Doctors spend long time in poorly paid or unpaid work before they gain enough experience. Journalists or even writers have to write pages and pages for nothing, before they earn some money. Music bands, actors, painters, carpenters, joiners, blacksmiths, etc. etc. Actually it is quite common pattern across the society that you have to prove your skills before getting a good job.
Maybe the world is „unfair“ and „cruel“, but if I compare IT with other fields… we have not much to complain about.
Again, nobody expects a civil engineer to have a portfolio of actually completely-constructed full-scale physical real-world bridges built in their spare time for free as hobby projects.
If you want to argue for apprenticeship as a form of education, feel free to, but apprenticeship is different from “do unpaid work on your own time”.
Most open source code exists to ‘scratch an itch’. It’s written because the author had a problem that wasn’t solved by anything that existed on the market today. If you have never encountered a problem that can be solved by writing software in your life then you’re almost certainly in a tiny minority. If you’ve encountered such problems but not tried to solve them, that tells me something about you. If you’ve encountered them and not been able to solve them, that also tells me something.
If you’ve encountered such problems but not tried to solve them, that tells me something about you.
Yes, it tells you that they’ve encountered such problems but not tried to solve them. Nothing more. You can’t know why someone doesn’t spend their free time doing their day job again for fun. Maybe they just don’t enjoy doing their day job again, which would be terrible, somehow, according to this thread. But maybe they just have even more important things to do than that?
Why guess? What do you think you’re indirectly detecting and why can’t you just ask about it?
As others have pointed out to you repeatedly in this thread, no one is saying don’t ask. But if people encounter problems that are within their power to fix, yet don’t fix them unless they consider it part of their job, then that’s definitely an attitude I’d like to discuss in some detail before I considered making a job offer,
Nobody has pointed out anything to me on this thread before, repeatedly or otherwise.
Everyone encounters problems that are “within their power to fix” and doesn’t fix them all the time. I don’t think that’s hyperbole. We could fix any of them, but we can’t fix all of them because our problem-fixing resources are finite. I take your position to be that if they happen to prioritise the software in their life over any other kind of problem they might encounter that that means they are going to be better at their job. I think this is a bit silly.
For what it’s worth, I get home from my computer job most days somewhere on the mood spectrum between wanting to set fire to all computers and wanting to set fire to anyone who’s ever touched one. I’d love to get a job that doesn’t make me feel like that, and it’s rather frustrating to know that my job sucking all the joy out of computing for me also makes me unqualified to get a better one, at least in the eyes of quite a lot of people here.
What does this mean to you? They’re synonyms to me, so I’ve never really tried to define how they might differ.
I will check that your Github stuff (for example) is not just forks of other work
This seems a bit of a red-herring to me. I include my GH to show that yes I really know how to program so we can skip the mutually-embarrassing “are you a complete fraud using somebody else’s CV” stage, not to show that I own several interesting repos. I mean, there’s a few in there that I actually started and they used to be things people used. But 90+ percent of “my” repos are forks because that’s how you contribute to many existing projects.
But 90+ percent of “my” repos are forks because that’s how you contribute to many existing projects.
Two things you can do here that are useful:
Make a branch that contains code that you wrote the default. I will probably click on them. If I see branches that have raised PRs and good interactions between you and the upstream that’s a very positive thing. Especially if the PRs are merged.
Pin repos that you want me to look at. GitHub gives you (I think) six repos to show in the profile screen. These should be the ones that you think best showcase your work.
I’m used (rightly or wrongly) to resumes being shorter documents that are typically more focused for a particular job, especially in the US. CVs are typically longer, have a lot more detail including coursework, talks, presentations, publications, and other stuff. My understanding is that CVs are also more common in academia, which I’ve never hired for.
But 90+ percent of “my” repos are forks because that’s how you contribute to many existing projects.
Indeed, which is why I also tend to click-through to a few of the repos to see if people have commits or attempted commits in those projects.
There are folks that, if you exclude forks, suddenly go from scores of repos to perhaps less than 10. There are folks I’ve seen who only have a few forks and no source repos of their own, but who have made significant contributions to those forks. My experience is that there are far more of the former than the latter, because the first order signalling is “how many repos do you have on Github” for people that care about such things and that’s how you spoof.
It’s pretty common to use “CV” to mean a complete list of all prior work, education, and awards, and “resume” to mean a one page summary of relevant experience.
I will check that your Github stuff (for example) is not just forks of other work.
If those forked repos are there because the person is contributing to others’ open-source projects, I would argue that kind of work is probably more reflective of the skills that are useful in most professional programming jobs in industry than a bunch of solo projects, however impressive.
Great article. One point of contention - under “Don’t Be Generic”
How would you approach the design and implementation of new features for a production service?
The “right” answer given is really the answer to how HAVE you approached the design and impl…, not how WOULD you. If interviewers want real stories, they should specify. I understand interviewing is often about reading between the lines, but I do find myself giving multiple answers to the same question during interviews due to lack of specificity in the question.
I sort of disagree about ChatGPT. I used Claude to workshop a resume for a job I was offered. I didn’t ask Claude to write it though because LLMs are still worse writers than me. I used it as a writing coach to bounce ideas off of. Here are some of my prompts:
Summarize this resume and make a hiring recommendation for the attached job position.
What are the downsides?
How is this version? Better or worse?
Do you see any opportunities for reword this paragraph to improve it or is it fine as it is? Answer step by step:
How about the end of the paragraph?
Basically, Claude just gave me some areas to think about when I was writing for myself.
If that’s a joke/bait, disregard and laugh at me… but if not, it does depend on your accent, because I say “an award” as well. Actually, I can’t imagine an accent where it would be “a award”, but I’m not very imaginative.
I think I find than me somewhat more acceptable than than I, actually, although neither form strikes me (native speaker of American English) as outright incorrect. Assuming that it’s ungrammatical for pronominal complements of the preposition than to be in the objective case is a bad analysis of how English grammar actually works.
The rule is that “as” and “than” are followed by a nominative (because of the following verb, which can be omitted), and “like” (being a preposition) is followed by an objective.
However, most reasonable linguists will point out that “than me” makes sense when not followed by a verb, just like “than I” makes sense when considering the following verb (even if it is only implicit).
The one that is really dying out fast in English is the subjunctive form. Were it to disappear, not many tears will be shed.
Isn’t this a big distinction though? There’s a difference between using an LLM to help you refine what you’re going to write, and having the LLM write it for you.
I think the article covered this when it said to use spelling and grammar checkers but make sure that the writing was yours. There’s nothing wrong with using (human or mechanical) feedback tools to improve your writing, but make sure that the originality comes from you.
Something that I really need to emphasize is tailor your CV to every job.
If you’re apply to a job that’s targeting C/C++/rust/low-level take any python (or similar) and either don’t include them or, if what you were using them for was relevant to the job itself coalesce them into a single point.
If you’re applying to a job that involves creative work, make sure to include creative projects, but if you’re not then just have a sentence in your “about me” synopsis at most.
Your CV/resume should fit on a single page. Priority should be to things that are directly relevant to the job you’re applying for.
If it’s not your first job your uni grades don’t matter, just the qualifications, and the more real experience you have the less relevant those are - unless you’re an international hire and a work visa will be needed, in that case more or less all countries just have hard “you must have this degree or equivalent” requirements.
Include information about what you actual did, not just what project/product you worked on.
I’ve read many CVs that make it actively hard to determine whether interviewing is worthwhile: lots of pages isn’t impressive, all it means I’m more likely to miss info that would make you compelling. Similarly buzzwords aren’t impressive they should only be present in significant amounts if you’re think you’re dealing with recruiter BS.
I just applied to Canonical a few days ago, and got a rejection email today. No idea why. You rarely know (but some companies do tell! I respect those very highly!). Did I have a typo in my CV, or some field of the application form, which they found “unprofessional”? Did they honestly not find me a good fit for the position? Did someone in the hiring review path have a worse day? I learnt to try hard to treat hiring as a lottery and not try to agonize over rejections. I did have cases in some processes where I reached a really smart interlocutor, we had a great discussion, I got rejected, and it made clear sense in this particular case, and I respect them all the higher. Those ones can give me food for thought, although they also tend to hang on some bigger area of expertise that I just didn’t luck into exploring in my career; and I don’t think I can easily and quickly catch up with to such an extent that I could demonstrate the air of fluent expertise at in a short interview slot. I also had interviewers who clearly seemed to want me to recite verbatim the particular list of bullet points from some or other set of “good practices” like “Clean Code” etc., and frown if I showed the audacity to discuss that there are always exceptions and nuance. Please note that I totally don’t claim I would be a good interviewer, or know how to do this well; on the contrary, I am quite dubious of that.
Interestingly, I also had a few times in my career where before some stages of the interview the company suggested a list of books and resources to help prepare for the discussion, and not some “how to interview well” ones, but really concrete “how database internals are built” ones. That really feels to me like someone putting an effort into helping me prep for the particular interview, and what might be expected of me. If I am a fast learner, I can read the book, understand it, and be ready for your needs. A win-win for both sides!
Curiously to me, I found the Canonical’s application form in particular very surprising, in that it is the only one I ever seen that asks me questions like in which Top N% percentile of pupils my high school final score/grading was. And this is a mandatory position in the form. Like I remember much of my high school after 15 years in the industry; not to mention that we didn’t actually have or know that kind of statistics at my country. Is this why I was rejected? Who knows. Don’t see a mention of that one in the linked blogpost.
I find it kinda curious that everyone seems to emphasize “keeping it short, preferably 1 page”, and yet here I am, at about 6-7 pages, drowning in recruiters.
I wonder if everyone is cargo culting the shortness, if I’m some sort of exception (unlikely), or if I could have done even better if I trimmed it down a bit.
Recruiters are a different game than actually getting reviewed for employment. If you engage with any of them I can almost guarantee that they will ask for a short resume when they notice how long it is. Practically all of them use systems that read resumes for them and reach out based purely on that.
Every employer I’ve been involved in the hiring process with, discards long resumes/CV (unless its for a PhD position, where its fairly normal) before they even reach someone technical. Like many things, its a consideration of time game, they can choose to review your resume or 6-7 other candidates that were considerate of the reviewers and companies time.
I keep a website (that is linked at the top of my resume) that is essentially my “full resume” that will give anyone that’s interested as much detail as they want on my various projects and experiences. The resumes I submit places and share are all more or less tailored subsets of the website that are relevant to the job posting.
Dealt with lots of recruiters over the years, never got asked for a shorter CV. Like, ever.
Had two job search periods during the height of the pandemic, where I was actively answering almost every single message on LinkedIn, plus applying to positions directly, with my long ass CV, and never ever got asked for a short version.
I’m not saying common wisdom is wrong, just saying my experience differs, not sure why.
imo that can be even more appealing to the right hiring manager/position - especially if you do things like run your own infrastructure & deploy your own git stack.
I got a LinkedIn account for the first time when a company I was applying to asked for one. I don’t really like their privacy policy or T&Cs, so I didn’t have one when hiring anyone on my last team. You can set a LinkedIn account to be public but the default settings hide it from people who don’t have an account. Anyone like that might as well not exist.
Oh, and LinkedIn’s presentation is awful. It’s fine for seeing ‘is this the right Joe Bloggs’ but it’s incredibly bad for evaluating candidates.
From running, enduring, and observing several rounds of hiring:
All of these of course have exceptions, of course–if you spent a few years at a defense contractor I’m not going to be too surprised if you don’t have a lot of public source code.
As you point out, there are many employers who
It’s not at all limited to defense contractors.
The larger problem with using public code as a signal is that it puts people at a disadvantage if they don’t have the time or energy to publish projects outside of work. Lots of people have caregiving responsibilities that don’t leave them time for outside-of-work work, and a hiring process that values a well-stocked GitHub profile implicitly devalues parents and other groups.
I read it charitably as “usually” and “signal” doing a lot of heavy lifting. I.e., no public code won’t instantly disqualify a candidate, but will be a nail in the coffin if there are other negative signals. Which I think is valid.
Right, so in a heads to heads comparison between two candidates you’ll choose the one without kids? Or you’ll favor the young one over the older, because the older one “can’t show what code they’ve been writing because of having an actual job” whereas the young one can more easily point to work done in public recently?
Like you understand “can have publicly listed code” is going to be significantly biased by age, right?
Similarly the way a lot of women are treated on line means many intentionally limit their public presence, so I suspect you’ll get gender bias there as well.
Sounds convenient!
[Comment removed by moderator pushcx: If you're bringing up Hitler you're not really improving the tone of the conversation.]
The problem with @friendlysock’s approach with regards to the public code is that a lack of a positive signal is not the same as a negative signal.
Lacking a positive signal means that the things you could have learned (in this case: code quality, motivation to code off of work hours, etc) you have to learn from another way.
A negative signal is something that is either an instant disqualification (a belligerent public online persona) or something that needs to be combatted by more positive signals (a spelling error on the resume might be mitigated by a long-standing blog that communicates clearly).
For most companies/positions, using lack of a Github profile shouldn’t be considered a negative signal unless the position is something like “Open Source Developer Evangelist”.
And I agree with @olliej’s reply below that a lack of a Github profile isn’t a great filtering measure, even if you are so flooded by resumes that you need some kind of mass filtering measure. Here are some reasons I wouldn’t use it as a first filtering mechanism:
Bingo. In practice, I almost always ask about it–some people just have private hosting or whatever, or have some other reason.
The thing I also think a lot of people miss is: I had over a thousand (no joke, 1e3) applicants for a junior position I opened up. When you are trying to plow through that many applicants, applicants without easy code to show their talent are automatically lower priority in the heap than those with.
… so you looked all the code from those folk, or you just went “does/does not have a GitHub profile” as a filter?
Again, this seems like a really good way to discriminate against people who are lower income, have families, etc. Not intentionally, just that that is the result of such filtering.
For example, when I was at uni there was a real sharp divide between people who did open source work and those who did not, and it was super strongly correlated with wealth, and not “competence”. It’s far easier to do code beyond your assignments and whatnot if you don’t also have essentially a full-time job, or you don’t have children to care for, etc. The person that I would say was the single best developer in my uni’s CS department was also working pretty much every hour outside of uni for his entire time there. By your metric they would be worse than one of the people in my year, who I would argue was far below in competence but did have a lot of open source code and “community involvement” because his family was loaded.
[Comment removed by moderator pushcx: The political griping here is prompting a way-off-topic subthread. Don't do this.]
[Comment removed by moderator pushcx: Pruning politics subthread.]
[Comment removed by moderator pushcx: Pruning politics subthread.]
[Comment removed by moderator pushcx: Pruning politics subthread.]
This reminds me of the discussions about how screening résumés with names removed to prevent bias still end up failing because you can tell so much from other clues like someone playing lacrosse in college, or that they went to a HBCU or an all-women’s college, etc.
Notes for people outside the USA, a HBCU is a “historically Black college or university”.
Software development is a qualified job – you have to invest something (your time at first) before you can earn money. You read books, follow tutorials, discuss things with more experienced folks, study at university, do your own projects, study existing free software and contribute to it, get some junior job or internship etc. This is all part of preparing for a more qualified job.
How does a university degree requirement differ from taking your own public projects into consideration? Both cost you your time. (not mentioning that diploma is often a mandatory requirement while own projects are just softly appreciated + getting a diploma is a much larger investment than writing and publishing some code, the entry-barrier in IT is very low, compare it also to other fields).
If I ask a candidate: show me a photo of your bookshelf (or list of eBooks), tell me something about your favorite books that helped you grow professionally or tell something about an article you read and that opened your eyes… do you think that it is also bad and discriminatory? Because not everyone has time to study books and read articles…
Another aspect is enthusiasm. The abovementioned activities are not done intentionally to look good for future employer, but because you like them, find them entertaining or enriching.
Then you’re rejecting a lot of excellent people for no good reason. Many (most?) jobs don’t let you publish your work code, put restrictions your ability to contribute to OSS projects, and consider code developed by employees to be there’s (e.g. you need special permission to publish anything). This is in no way restricted to defense contractors, in my experience this is the norm for any case where your job is not explicitly working on OSS software. You may philosophically disagree with these employer’s policies but that still the reality for most developers.
I agree with this. Like programing in MUMPS its not usual to public the code because the type of bussiness
The older I get the weirder this idea seems: evaluating someone for a paid position based on the quality and quantity of work they do outside of the time that they’re paid to do a job as a professional. Does any other profession work this way?
Nobody asks accountants to show audits they’ve run or tax forms they’ve filed in their spare time for fun.
Nobody asks civil engineers to have a portfolio of bridges they built as hobby projects.
Nobody should ask developers to have a “GitHub résumé”.
But if your hiring an accountant and there’s one who runs audits for fun and has a blog with the places where they caught major errors in the audits that they did for fun, you can bet they’d be near the top of the hiring pile.
For a lot of other professions, (especially arts and engineering) there’s a concept of a portfolio: a curated set of work that you bring to the interview to talk through, and which you may be asked to provide up front. With software engineering, it!s easy to make your portfolio public so it can be used earlier in the hiring process.
Nobody has an expectation that accountants or many other professions will have professional-quality work done, for free, on one’s spare time, or suggests that the presence/absence of such should be a significant factor in hiring decisions.
Also, it’s not “easy to make your portfolio public” in software. Out of all the companies I’ve worked for across my entire career, do you know how many of them even have a listing of their main repositories public on a site like GitHub? One, and that was Mozilla. Every other company has been private locked-down repos that nobody else can see. I can’t even see former employers’ repos.
The only way to have a “portfolio” like you’re suggesting is thus to do unpaid work in one’s own free time. Which is not something we should expect of candidates and not something we should use as a way to compare them or decide between them.
In the time it took me to write my comments in this thread, I could’ve signed up for Github (or Gitlab or Bitbucket or whatever) and opened a new repository with a basic Sinatra, Express, or even Bash script demonstrating some basic skill. Hundreds of thousands of developers, millions probably, have done this–and it’s near standard practice for any bootcamp graduate of the last decade.
You don’t have to have a portfolio online. You don’t have to ever do any work that isn’t attached to a billable hour. Similarly, I also don’t have to take a risk on interviewing or hiring you when other people show more information.
This sounds more like a failure in your interviewing process than anything else.
So, look. I’ve run more interviews than I could count or care to remember. I’ve helped design interview processes at multiple companies. I’ve written about interviewing processes and given conference talks about interviewing processes. I am not lacking in experience with interviewing.
And this is just a gigantic red flag. As others keep telling you, what you’re doing is not hiring the best candidates. What you’re doing is artificially restricting your candidate pool in a way that excludes lots of perfectly qualified people who, for whatever reason – and the reason is none of your business and in many cases is something that, at least in civilized countries, you wouldn’t even legally be allowed to ask about in the interview – don’t have a bunch of hobby/open-source projects on GitHub.
I feel I’ve explained my process (including many “this is not a hard-and-fast rule” qualifications) sufficiently well and accurately, and have given honest and conservative advice for people that I sincerely believe will help them get a job or at least improve their odds. If this is unsatisfactory to you, so be it.
I’m not interested in discussing this further with you, good day.
More than that: introspective professionals are valuable. All paid coders should be able to write up some fun algorithms and discover them for a given need, but not all will go above and beyond in their understanding and mentorship.
It’s a useful signal when present. It’s not a useful signal if absent. It’s a very negatively useful signal if all you have on your public commits is messages like “blah” and zero sanity in your repository layout.
I tell people who are learning to code to get blame in other people’s projects, to learn good style and show some useful activity beyond forking a project and uploading commits of questionable value to the internet.
I thought writing software was an art or a craft…
This sounds a lot like people wanting to have it every which way whatever’s convenient.
No, but they do require education and formal credentialing.
Supposedly all these hoops we make people jump through in programming interviews are because the interviewers say they see too many people with degrees and impressive credentials who can’t write a
for
loop.If the software certification exams were anything like the CPA certification exams, we wouldn’t need to do nearly as many technical interviews. In other fields getting certified is an ordeal.
Sure. Now, come up with a standardized exam that everyone will agree covers what you need to be hireable as a programmer :)
Other fields managed it: the CPA standardized exam takes 16 hours (not to study, to actually take) and the architecture ARE takes 22 hours.
Or we could not throw software engineers through that kind of meat grinder and stick with using other signals, like portfolios and technical interviews.
If it were possible to build a single exam that actually did it, I don’t know if I’d mind just because it would end a lot of pointless discussions and avert a lot of horrible processes.
Meanwhile, asking for a “portfolio” or using it to decide between candidates has problems that are well-documented, including in this thread, and I don’t really think we should be perpetuating it. It’s one of those interview practices that just needs to go away.
I’d say that’s not true for any graduate from my university. Many people from the non-CS faculties are even forced through a basic programming course.
Nobody asks artists for a portfolio? Nobody asks engineers for previous specific projects, even if the details are obscured?
The projects one is way more than a job role. The portfolio is often of paid work where there has been a release for a portfolio, or work done outside the office.
I’ve worked for multiple companies that used GitHub for their repositories. If I were applying for a job with you today, and you browsed my GitHub profile, you would not see any of the code I wrote at those companies, or even the names of the repositories.
When people talk about a “portfolio” they always mean code written, unpaid, in one’s own spare time, unrelated to one’s current job, and many perfectly well-qualified programmers either do not do that or cannot do that due to not having the luxury of enough time to do so and make it look good.
Not true. Architects, for example, design many buildings during studies or send proposals for architectural design competitions. Most of that buildings are never build and remained only on paper. And were created in spare time. Guess what such architect would discuss on the job interview… Portfolio of the proposals and unrealized designs is very important.
Doctors spend long time in poorly paid or unpaid work before they gain enough experience. Journalists or even writers have to write pages and pages for nothing, before they earn some money. Music bands, actors, painters, carpenters, joiners, blacksmiths, etc. etc. Actually it is quite common pattern across the society that you have to prove your skills before getting a good job.
Maybe the world is „unfair“ and „cruel“, but if I compare IT with other fields… we have not much to complain about.
Again, nobody expects a civil engineer to have a portfolio of actually completely-constructed full-scale physical real-world bridges built in their spare time for free as hobby projects.
If you want to argue for apprenticeship as a form of education, feel free to, but apprenticeship is different from “do unpaid work on your own time”.
Most open source code exists to ‘scratch an itch’. It’s written because the author had a problem that wasn’t solved by anything that existed on the market today. If you have never encountered a problem that can be solved by writing software in your life then you’re almost certainly in a tiny minority. If you’ve encountered such problems but not tried to solve them, that tells me something about you. If you’ve encountered them and not been able to solve them, that also tells me something.
Yes, it tells you that they’ve encountered such problems but not tried to solve them. Nothing more. You can’t know why someone doesn’t spend their free time doing their day job again for fun. Maybe they just don’t enjoy doing their day job again, which would be terrible, somehow, according to this thread. But maybe they just have even more important things to do than that?
Why guess? What do you think you’re indirectly detecting and why can’t you just ask about it?
As others have pointed out to you repeatedly in this thread, no one is saying don’t ask. But if people encounter problems that are within their power to fix, yet don’t fix them unless they consider it part of their job, then that’s definitely an attitude I’d like to discuss in some detail before I considered making a job offer,
Nobody has pointed out anything to me on this thread before, repeatedly or otherwise.
Everyone encounters problems that are “within their power to fix” and doesn’t fix them all the time. I don’t think that’s hyperbole. We could fix any of them, but we can’t fix all of them because our problem-fixing resources are finite. I take your position to be that if they happen to prioritise the software in their life over any other kind of problem they might encounter that that means they are going to be better at their job. I think this is a bit silly.
For what it’s worth, I get home from my computer job most days somewhere on the mood spectrum between wanting to set fire to all computers and wanting to set fire to anyone who’s ever touched one. I’d love to get a job that doesn’t make me feel like that, and it’s rather frustrating to know that my job sucking all the joy out of computing for me also makes me unqualified to get a better one, at least in the eyes of quite a lot of people here.
Your open source app doesn’t have to look good. It just kinda has to exist, and maybe have a readme. If it works, that’s even nicer.
Accountants are certified. I have a CS degree from a brick and mortar university.
Do you think we shouldn’t hire people without credentials?
Which credentials do you intend to require?
The signal exists. Should it be ignored because other industries don’t have an analogous signal?
What does this mean to you? They’re synonyms to me, so I’ve never really tried to define how they might differ.
This seems a bit of a red-herring to me. I include my GH to show that yes I really know how to program so we can skip the mutually-embarrassing “are you a complete fraud using somebody else’s CV” stage, not to show that I own several interesting repos. I mean, there’s a few in there that I actually started and they used to be things people used. But 90+ percent of “my” repos are forks because that’s how you contribute to many existing projects.
Two things you can do here that are useful:
(answering you and @enn in same place)
I’m used (rightly or wrongly) to resumes being shorter documents that are typically more focused for a particular job, especially in the US. CVs are typically longer, have a lot more detail including coursework, talks, presentations, publications, and other stuff. My understanding is that CVs are also more common in academia, which I’ve never hired for.
Indeed, which is why I also tend to click-through to a few of the repos to see if people have commits or attempted commits in those projects.
There are folks that, if you exclude forks, suddenly go from scores of repos to perhaps less than 10. There are folks I’ve seen who only have a few forks and no source repos of their own, but who have made significant contributions to those forks. My experience is that there are far more of the former than the latter, because the first order signalling is “how many repos do you have on Github” for people that care about such things and that’s how you spoof.
It’s pretty common to use “CV” to mean a complete list of all prior work, education, and awards, and “resume” to mean a one page summary of relevant experience.
If those forked repos are there because the person is contributing to others’ open-source projects, I would argue that kind of work is probably more reflective of the skills that are useful in most professional programming jobs in industry than a bunch of solo projects, however impressive.
Great article. One point of contention - under “Don’t Be Generic”
The “right” answer given is really the answer to how HAVE you approached the design and impl…, not how WOULD you. If interviewers want real stories, they should specify. I understand interviewing is often about reading between the lines, but I do find myself giving multiple answers to the same question during interviews due to lack of specificity in the question.
I sort of disagree about ChatGPT. I used Claude to workshop a resume for a job I was offered. I didn’t ask Claude to write it though because LLMs are still worse writers than me. I used it as a writing coach to bounce ideas off of. Here are some of my prompts:
Basically, Claude just gave me some areas to think about when I was writing for myself.
‘… than I.’ ;)
I nominative Moonchild for an award …
You mean “a award”.
If that’s a joke/bait, disregard and laugh at me… but if not, it does depend on your accent, because I say “an award” as well. Actually, I can’t imagine an accent where it would be “a award”, but I’m not very imaginative.
It’s a joke.
I think I find than me somewhat more acceptable than than I, actually, although neither form strikes me (native speaker of American English) as outright incorrect. Assuming that it’s ungrammatical for pronominal complements of the preposition than to be in the objective case is a bad analysis of how English grammar actually works.
The rule is that “as” and “than” are followed by a nominative (because of the following verb, which can be omitted), and “like” (being a preposition) is followed by an objective.
However, most reasonable linguists will point out that “than me” makes sense when not followed by a verb, just like “than I” makes sense when considering the following verb (even if it is only implicit).
The one that is really dying out fast in English is the subjunctive form. Were it to disappear, not many tears will be shed.
https://www.merriam-webster.com/grammar/than-what-follows-it-and-why 😁
Isn’t this a big distinction though? There’s a difference between using an LLM to help you refine what you’re going to write, and having the LLM write it for you.
I think the article covered this when it said to use spelling and grammar checkers but make sure that the writing was yours. There’s nothing wrong with using (human or mechanical) feedback tools to improve your writing, but make sure that the originality comes from you.
I will add this article as my prompt for Chatgpt resume writing.
I wrote this on HN:
Something that I really need to emphasize is tailor your CV to every job.
If you’re apply to a job that’s targeting C/C++/rust/low-level take any python (or similar) and either don’t include them or, if what you were using them for was relevant to the job itself coalesce them into a single point.
If you’re applying to a job that involves creative work, make sure to include creative projects, but if you’re not then just have a sentence in your “about me” synopsis at most.
Your CV/resume should fit on a single page. Priority should be to things that are directly relevant to the job you’re applying for.
If it’s not your first job your uni grades don’t matter, just the qualifications, and the more real experience you have the less relevant those are - unless you’re an international hire and a work visa will be needed, in that case more or less all countries just have hard “you must have this degree or equivalent” requirements.
Include information about what you actual did, not just what project/product you worked on.
I’ve read many CVs that make it actively hard to determine whether interviewing is worthwhile: lots of pages isn’t impressive, all it means I’m more likely to miss info that would make you compelling. Similarly buzzwords aren’t impressive they should only be present in significant amounts if you’re think you’re dealing with recruiter BS.
I just applied to Canonical a few days ago, and got a rejection email today. No idea why. You rarely know (but some companies do tell! I respect those very highly!). Did I have a typo in my CV, or some field of the application form, which they found “unprofessional”? Did they honestly not find me a good fit for the position? Did someone in the hiring review path have a worse day? I learnt to try hard to treat hiring as a lottery and not try to agonize over rejections. I did have cases in some processes where I reached a really smart interlocutor, we had a great discussion, I got rejected, and it made clear sense in this particular case, and I respect them all the higher. Those ones can give me food for thought, although they also tend to hang on some bigger area of expertise that I just didn’t luck into exploring in my career; and I don’t think I can easily and quickly catch up with to such an extent that I could demonstrate the air of fluent expertise at in a short interview slot. I also had interviewers who clearly seemed to want me to recite verbatim the particular list of bullet points from some or other set of “good practices” like “Clean Code” etc., and frown if I showed the audacity to discuss that there are always exceptions and nuance. Please note that I totally don’t claim I would be a good interviewer, or know how to do this well; on the contrary, I am quite dubious of that.
Interestingly, I also had a few times in my career where before some stages of the interview the company suggested a list of books and resources to help prepare for the discussion, and not some “how to interview well” ones, but really concrete “how database internals are built” ones. That really feels to me like someone putting an effort into helping me prep for the particular interview, and what might be expected of me. If I am a fast learner, I can read the book, understand it, and be ready for your needs. A win-win for both sides!
Curiously to me, I found the Canonical’s application form in particular very surprising, in that it is the only one I ever seen that asks me questions like in which Top N% percentile of pupils my high school final score/grading was. And this is a mandatory position in the form. Like I remember much of my high school after 15 years in the industry; not to mention that we didn’t actually have or know that kind of statistics at my country. Is this why I was rejected? Who knows. Don’t see a mention of that one in the linked blogpost.
I find it kinda curious that everyone seems to emphasize “keeping it short, preferably 1 page”, and yet here I am, at about 6-7 pages, drowning in recruiters.
I wonder if everyone is cargo culting the shortness, if I’m some sort of exception (unlikely), or if I could have done even better if I trimmed it down a bit.
Recruiters are a different game than actually getting reviewed for employment. If you engage with any of them I can almost guarantee that they will ask for a short resume when they notice how long it is. Practically all of them use systems that read resumes for them and reach out based purely on that.
Every employer I’ve been involved in the hiring process with, discards long resumes/CV (unless its for a PhD position, where its fairly normal) before they even reach someone technical. Like many things, its a consideration of time game, they can choose to review your resume or 6-7 other candidates that were considerate of the reviewers and companies time.
I keep a website (that is linked at the top of my resume) that is essentially my “full resume” that will give anyone that’s interested as much detail as they want on my various projects and experiences. The resumes I submit places and share are all more or less tailored subsets of the website that are relevant to the job posting.
Dealt with lots of recruiters over the years, never got asked for a shorter CV. Like, ever.
Had two job search periods during the height of the pandemic, where I was actively answering almost every single message on LinkedIn, plus applying to positions directly, with my long ass CV, and never ever got asked for a short version.
I’m not saying common wisdom is wrong, just saying my experience differs, not sure why.
Could we replace „GitHub profile“ with something like „public repository“ or „own projects“? Anyway, great article.
imo that can be even more appealing to the right hiring manager/position - especially if you do things like run your own infrastructure & deploy your own git stack.
And what do you think about not writing a CV only refering to linkedin?
I got a LinkedIn account for the first time when a company I was applying to asked for one. I don’t really like their privacy policy or T&Cs, so I didn’t have one when hiring anyone on my last team. You can set a LinkedIn account to be public but the default settings hide it from people who don’t have an account. Anyone like that might as well not exist.
Oh, and LinkedIn’s presentation is awful. It’s fine for seeing ‘is this the right Joe Bloggs’ but it’s incredibly bad for evaluating candidates.
I don’t have a LinkedIn account, so it would annoy me.