A wall of green squares
What the squares count, and the version of this argument I take seriously.
I sat in on an interview in February and the candidate, about ten minutes in, said something like “I know my GitHub doesn’t look like much, I’ve been doing a lot of client work.”
Nobody had asked. They’d pre-empted it, unprompted, having decided in advance that the sparse grid on their profile was a mark against them that they needed to get out of the way early. And the thing that stuck with me is that they were right to think that, because plenty of people in this industry do read it that way, and I have absolutely caught myself glancing at it.
They were very good, for what it’s worth, and they got the job. But I’ve been chewing on the graph ever since.
What the squares count
The contribution graph counts a specific thing, and the specific thing is not “work.” It’s public activity, on one platform, attached to one email address.
Which means the following are all invisible: everything in a private client repo, everything on a company Bitbucket or a self-hosted GitLab, everything committed under a work email that isn’t on your personal account, everything uploaded over FTP because that’s what the client’s hosting is, and everything you did in a CMS admin because that’s where the site lives.
That’s most of the professional web. That’s the daily reality of agency work, small studios, in-house teams at companies that aren’t software companies, freelancers on maintenance retainers, and anyone building for a client who reasonably doesn’t want their unreleased site public.
It looks like a measure of how much you work. It's a measure of what kind of employment you have.
So a developer can have eight years of solid, careful, well-reviewed work behind them and a graph the color of a blank wall, and a different developer can have a year of experience and a wall of green because they push a static site to Pages every evening. Both graphs are accurate. Neither one is measuring what people read off it.
Free evenings
Even setting aside the platform question, the graph rewards having free evenings.
It’s a picture of time spent on programming outside the hours you’re paid for it. So it favors people without children, without caring responsibilities, without a second job, without a commute that eats two hours, without a health thing that takes the evening. It favors people who are not exhausted, and being not-exhausted is unevenly distributed in ways that have nothing to do with how good you are at this.
And then that gets read, in a hiring process, as passion. Which is where it turns from a quirk of a UI into something with consequences, because “passionate” is one of those words that sounds like it’s about character and is functionally about circumstance.
In defense of public work
There’s a version of this post that treats a public portfolio as purely a barrier, and I don’t think that’s right, so let me put the other side properly.
For a lot of people, having work in public is the single thing that got them in the door. No computer science degree, no network, no route into the profession through anyone they knew. What they had was a repo you could open, and that repo did in five minutes what a résumé could not do at all. That’s a genuinely leveling mechanism and it has let people in who would otherwise have been filtered out by a hiring process that runs on credentials and acquaintance.
And working in public is how I learned most of what I know, in the sense that I learned by reading other people’s, which was the entire subject of a post I wrote a few years ago. Somebody had to publish it for me to read it. I’d like more people to publish, not fewer.
So I’m not against any of it. What I’m against is the arithmetic that runs backwards from it: public work is good, therefore an absence of public work is evidence of something. It isn’t. It’s evidence of an employment arrangement, and possibly of a life.
My graph is gray
Not asking about side projects, as above.
Not looking at the graph, which I have to do deliberately, because it’s the first thing on the page and it’s designed to be looked at.
And on my side of it, I’ve stopped feeling bad about my own, which took longer than I’d like to admit. My graph is mostly gray. Everything I’ve built since 2014 is in a private repo belonging to somebody who paid for it, or in a WordPress install I’d be embarrassed to show you, and that’s not a gap in my career, that’s my career.
I write this instead, which is a different kind of public and one I find easier, because a post is finished when I say it is and a repo is a standing invitation to be judged on the messy middle of something. I don’t think that’s a very brave position. It’s just the one I’ve got.
Anyway, if you’re the person who apologizes for your graph before anyone asks, I’d gently suggest not doing that, because you’re arguing the other side’s case for them. And if you’re the person on the other side of the table doing the glancing, which I have been, it’s worth working out what you think you’re seeing.
I don’t have a tidy landing for this one. It’s a small piece of interface that quietly became a moral document, and nobody designed it to be that, and it’s not going away 🙃