First off, I'm going to just hold my hands up and apologise straight out of the gates for the triggering title. I don't think they're meaningless. I do, however, think that we need to be careful about the importance we place on them and how there is a worrying trend to use them as a measure of another developer's value.
Let's dive in and you'll see what I mean...
What's going on with GitHub's graphs?
OK, so there's a lot going on on Twitter at the moment around the GitHub activity graph. It's a hot topic and brings out the worst in our community; all the bad parts: gatekeeping, abhorrence at someone having a different opinion, debasing people and flat out verbally attacking them.
A couple of the recent tweets that kicked this all off include these two:
A commendable tweet by Laurie Barth (@laurieontech) calling for GitHub graphs to be removed altogether.
GitHub graphs should be removed.— Laurie (@laurieontech) May 27, 2020
They do far more harm than good.
A completely green graph should not be anyone’s goal. Balance is important.
And a very satirical one by Jacob Paris (@jacobmparis), who was parodying a popular tweet asking what was stopping men looking really buff.
dear programmers what's stopping you from looking like this [pic.twitter.com/nDxy7w2ZwA](http://pic.twitter.com/nDxy7w2ZwA)— Jacob Paris 🇨🇦 (@jacobmparis) May 27, 2020
If you read the comments it becomes clear very quickly that it's quite the polarising topic and some people will fiercely defend their beloved graph — personally, this seems like a weird hill to die on, but you do you.
The problem is that there seems to be far too much value placed on what the graph represents. This presents a dangerous ideal amongst the community that more green === better developer doing more code.
Even more troublesome than this, however, is that now some employers are picking up on this as a metric for new hires' abilities or level of effort.
Frankly, this attitude is what needs to stop and, in that respect, then the graph is very meaningless at worst and flat out arbitrary at best.
But before we get into all that, let's just explore what exactly GitHub's graph is, and what it means.
What is GitHub's activity graph?
The first thing we need to understand is what exactly the graph does represent. It might surprise some people to learn that it's not just how much code you push or how many times a day you commit.
In fact, according to GitHub themselves, the graph is an indication of your level of activity in public repositories; the darker the green, the more 'activity' there supposedly is.
However, this activity is composed from a few different sources:
- Committing to a repo's default branch
- Opening an issue
- Proposing a pull request
- Submitting a pull request
Fairly simple and makes sense.
So why is this so bad?
The main problem we have here is that there seems to be a growing trend to look at this little grid of shades of green and directly equate it to other developers' value. This seems to be based on the assumption that doing more code === more green squares.
Technically, this isn't entirely wrong. But as we've seen in the last section, you could literally spend your days just opening issues and submitting pull requests for typos. No code involved.
In fact, someone with almost zero development skills at all could easily get more green squares than me, a professional developer who has built popular open source tools.
Does this make me better than the other person? Not in the slightest, but it does highlight the worthless and arbitrary nature of placing some sort of value on a small green square.
And as I mentioned above, I've also heard murmurs that some employers are naively looking to candidates' GitHub accounts and using their graphs to give weight to their hiring decision.
Again, a rather awful thing to do in my opinion.
It doesn't measure quality
Some organisations do have some internal methods to help gauge and improve code quality:
- Peer to peer code reviews
- Linting and static code analysis (See Episode 3 of my Front End podcast for a whole discussion on this)
- Coding standards documents and practices
However, I could literally check in anything I like to a GitHub repo and I'll get a contribution point or two and a little green square. Does this mean I'm pushing quality work? Maybe, but you have no way of telling from a coloured shape alone...
It doesn't measure value
Value is another difficult attribute to measure. People measure it in different ways, but the worse companies use these sorts of arbitrary means to judge how effective someone is and how much value they're bringing to the table.
For example, I used to work in an awful place where your value, your efforts, were largely measured in how much time you spent at the office.
I'll tell you now, that just because you do 12 hour days does not mean you are doing more work. If anything, this leads to unhealthy habits and, if anything, a drop in quality of work and productivity levels. (If you can, do, and actively like working long hours though, then again, you do you. What works for you is important!).
But some bosses like this level of visibility.
Same thing with our friend the GitHub graph, right? You must be creating something amazing and bringing lots of value to the table because you have a clean sweep of daily markers on your profile...
It feeds a toxic competition culture
Following on from the last point is this rise in toxic workplaces that promote a constant competitive culture, in addition to things like unspoken long hours requirements.
The graph doesn't help this as it can enable this backwards culture. Developers end up comparing their graphs to others' and at best whip themselves into an unsustainable overdrive mode; at worst, can feel like they're not good enough.
Which leads me nicely into...
It fuels imposter syndrome
Imposter syndrome is a funny old thing. Lots of us have it: some temporarily, others on a more frequent/permanent basis.
However it's a largely internalised negative self belief. Usually it's not influenced by people and their actions directly pointing at you and saying 'you're not good enough' or 'you can't do this'. Rather, it's nature is to consume knowledge of indirect achievements and habits of others, and start a nagging little dialog inside our heads that tells us 'we're not good enough at X because person Y has done all this and what have we done?!'.
In some respects it's largely up to the imposter syndrome sufferer to handle their own treatment of this, often by reflecting on their own achievements and blocking out some extraneous noise. It's not up to others to suppress their successes.
That said, by promoting systems like GitHub's graph can feed into this and create real problems for our fellow developers as they struggle to measure up to the perceived activity levels of others.
I should point out that your success is your success. You should never apologise for it, nor shy away from shouting about it. But I think it's helpful to be mindful about how others can perceive these and how it can affect them.
Is the graph any good at all?
OK, so that seems like a laundry list of negatives for the graph, but does it have any benefits or merits at all?
Of course it does. I think if we take the graph away from an external measure of our activity and think about it in a more personal-to-me style, then it becomes quite helpful.
It becomes a coding journal of sorts
A lot of people keep a daily journal and the graph can be utilised in a similar way. Of course, you wouldn't pointedly create some activity on GitHub just to get an (well, some might :D) as you would with a diary or journal — that would come as a result of doing the activity.
However, you can use the graph to look back at past activity and reflect on what you've been up to or projects that worked on in the past.
It can highlight periods of productivity
Similarly, it is very helpful for some people (as mentioned in the Twitter posts at the start of this article) to highlight their productivity. This might be tied to certain things in their lives, or purely their work, but you can — albeit a little crudely —, and without any extra effort, look back at your time and see where you were most productive.
It might be that you have more darker green areas on an afternoon, or that you tend to be less active on Fridays.
This data can help you maintain or improve your productivity or otherwise get a measure of how you're doing with very little extra effort.
It can be used to track areas of interest
Whilst I absolutely disagree with the practice of using a developer's graph to measure their value or standard as a developer, it can be an interesting tool to see where their areas of interest lie.
For example, are they active on particular projects or types of projects? Do they do a lot of open source work or prefer private projects (which may just be their day job)?
Even for personal use, you can look back and see that you were really busy last July on project XYZ and maybe you should revisit it because it was great fun. Who knows?!
It just plain makes you feel good
And let's not forget that it can just make you smile a little to see that little green square appear in your graph. It gives you a warm sense of self satisfaction.
And that's OK too.
Is there a point to this article?
Why yes, I'm glad you asked!
What I want to get across here is that, good or bad, the GitHub graph (and similar mechanisms) are just an arbitrary collection of activities.
They do not and can not measure:
- Your personality
- Your abilities
- Your level or breadth of knowledge
- Your skillset
- Your experience(s)
- How good you are at coding
I think this message is especially important for junior and aspiring developers because they look to more senior developers for guidance and support.
If we send the message that their focus should be on fulfilling a set of tiny green squares every day or you're not fit to be a developer, we have failed them and will continue to do so.