GitHub Activity Guilt and the Coder's FitBit
I got an interesting email today from Corey P., reprinted in part here, with permission.
I’m curious, how you feel about GitHub’s activity graph? I’ve found myself getting increased levels of guilt/stress over that graph. So much so I’m considering not using GitHub for personal projects (only use it for contributing pull requests, reporting issues, etc.).
I can’t help but feel like others judge me by it (phony syndrome?). I have this gnawing feeling that I need to do something in the open so I can have some sort of paper trail or else I’ll be looked down upon by people (perspective employers? colleagues?).
This is a great question. Let's look at my GitHub Graph.
Yikes. Is this good or bad? It's pretty spartan over Sep-Nov, although I was travelling a lot.
Maybe Damian Edwards? He leads ASP.NET, although he isn't technically a dev (as far as HR is concerned). He's got me beat by double.
OK, what's a serious contender look like? Here's Monica Dinculescu, Googler and dev on Polymer:
or David Fowler, architect and dev on ASP.NET
What's our takeaway here? That I suck and Monica's amazing? (True, though, I do suck, and please have a listen to Monica as she explains Web Components to me on a recent podcast episode)
Here's what I think about charts like this, and I'm interested in your opinion.
- GitHub's activity chart shows public repos, not private activity.
- I have a lot of small projects I work on during the week in private or local repos. and sometimes I don't make them public due to (slight) embarrassment at my works in progress.
- It's not always healthy to measure yourself against others, particularly if it makes you feel bad or is somewhat unhealthy.
- Jobs vary. Being a manager does take you away from coding sometimes.
- If it bothers you, set a reasonable goal and work towards it, but do it for a good reason. (See how Reason and Reasonable factor in greatly there?)
Will I ever be as prolific as Monica or David? Likely not, but it's cool to know what the top of the bar is. Also, we have different jobs. Monica is working actively on a public open source project, while I'm not currently committing code to ASP.NET Core. Even Damian, a Lead PM on ASP.NET Core gets caught up in the "management" of it all. I doubt he gives his green chart a second thought.
My job currently doesn't have me committing to public repros as often as I'd like, but I'm not going let this chart dictate my value to the team. I will use it as one of many measuring sticks and I'd encourage you to as well. Perhaps set a goal to commit to an OSS project a few times a week?
GitHub Acitivty as it relates to Hiring
Sasha Laundy brought up a number of important points on Twitter about your GitHub Activity graph. She says:
If GitHub commits are only side projects, what kinds of people have time to put towards that? and if you can be silently discredited in hiring because of your public profile, how does that impact equity & diversity?
She has a great point. It's worth arguing that given the GitHub Activity Graph shows only public activity, making judgments based on it would naturally skew towards:
- The already skilled vs. the codenewbie
- People with more spare time, e.g. young, single, etc
- Folks who work on OSS full-time (their company pays them to commit publically to code)
To her point, if your GitHub Activity page is given similar weight as your LinkedIn, how will you ever know if you've been quietly excluded from a job based on this chart? If you're just getting started or if you're a 20 year Enterprise software developer you may end up with an empty graph and find an uninformed recruiter glossed over your potential or experience based how much "green" they see.
What do YOU think of this? Does your GitHub Activity Graph stress you out like getting 10,000 steps on your FitBit? Or do you just roll with it? Sound off in the comments.
About Scott
Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.
About Newsletter
Basically, the only thing that really shows up on my public contributions graph are personal projects. Which means that the only thing the graph's really measuring for me is the amount of my spare time I'm spending coding (as opposed to pursuing other hobbies, or actually living life). And you can't compare my graph to someone like Monica or David's graphs, because their contributions are open-source projects they're being paid to work on, during their workdays.
(That said, I've just started off on a new pet project that should make my contributions graph look a little nicer. We'll see how that goes...)
1. Every comment you add to a pull-request increases your "contribution" counter. The 10 comments from person A might be more valuable than 300 comments from person B.
2. Every commit counts as a contribution. Well, people who do not care about keeping a clean history (and squashing commits, etc.) will get more "contribution points" even though their source control history is garbage.
etc...
As the old-timer on a quickly-growing team of youngsters, I spend nearly all my work time on architecture and code review, the overall value of which I would contend is far greater than if I had done everything myself (as often as I am tempted to do that) since it both ensures high code quality and is an opportunity to mentor.
I don't feel the urge to commit to Github just to increase my activity. However, I am starting to feel more motivated to contribute to OSS projects that I care about, so Github activity will just be a natural benefit.
I care more about being seen as a well-rounded person. Forming an opinion about somebody based on their Github profile is about as accurate as forming an opinion solely on Facebook. It's one-dimensional. I prefer to work with multi-dimensional people :). It's much funner that way!
A classic case of Judging a book by its Cover. You don't need to announce to the whole world on the things you are working.
One day I came back from work around 8pm really tired. So, I decided to lay on the bed before jumping into my afternoon routine. I woke up 45 mins after midnight, missing the deadline for my daily contribution.
I won't say that I almost cried for breaking my long streak, but missing the daily deadline was the first thing that came to my mind when I looked at the time.
I was very upset, and started searching online for something I heard about git's ability to re-write history or something, maybe I can trick GitHub. Couldn't find anything and went back to sleep.
The next day, I was still upset till the evening when it came time for my daily deadline. I noticed that I wasn't stressed like I was the past few weeks.
See, at the start, I had lots of things to contribute. I was building my blog and it was a lot of work and fun. Then there wasn't much stuff to do, but I had a goal to achieve. Coming up with things to do was getting hard. Things that had to be small enough that I can do in a day. No, I can't stop and learn something. Reading or watching a tutorial wasn't gonna help keep my streak.
Somewhere along the line, I lost sight of my actual goal of learning more stuff, and doing more side work, and moved to a proxy-goal (not sure if that's a word) of keeping a contribution streak on GitHub. I think of a proxy-goal as a measurable goal that you use to indicate whether or not you're achieving your goal. The proxy-goal became the actual goal, and when the two were at odds, I chose the proxy-goal instead.
In the last couple of weeks of my streak, I would do small tiny changes 15 mins before midnight to keep my streak going.
It's helpful to have a metric of how well you're doing, and how you're progressing toward your goal, but it's important to keep that metric in perspective. When it's at odds with your actual goal, make sure to choose your actual goal.
This doesn't apply only for GitHub contributions, think of the proxy-goals that are replacing actual goals in your daily life.
Thanks for a great conversation starter, Scott!
Why we have to show the graph to the world in the first place? It would be nice if the graph is private not public.
My daytime job we use svn.
Study part time Master in software development. Here i use bitbucket.
My own blog / side projects i use github.
And then theres my "commit"ment to my girlfriend :D
How to i combine all these charts ? :P
GitHub's activity chart shows public repos, not private activity.
Not exactly. :-) if you have access to their private repos they are contributing to, you will get this activity as well. That's what that little lock in the upper right corner of the graph indicates. And it will explain itself, if you hover on it.
As I don't have access to David Fowler's private repositories he is contributing to, I just see around 1650 contributions instead of the ~1800 in your screenshot.
It's natural for people to look for ways to measure themselves against others - and at a first glance, this might be an obvious way of doing this, but the points you raised show that it clearly isn't. People who get stressed out about this are likely to get find something else to get stressed out about if this didn't exist.
More seriously, I think it's a nice indicator, but it doesn't directly reflect productivity. Some work in companies where the work is in the open, others not. For a lot of people it is only the work they do in their free time.
Also, if you are working on a PR and are kind enough to force push to only have one commit in the end, you'll end up having fewer activity "points" than if you leave a long commit trail reflecting the changes and comments taken into account.
Conclusion: if you're in it to make it to the top of some ranking, then good luck to you, but to me it has little to do with the "open source mentality". You should strive to make the project a success. That's it. Pure and simple.
I work a 40 hour week (committing to private Svn), I've two small kids, and my wifes parents (both in their 80s) live with us, there can be as much minding on them as there is on the kids. My wife runs her own small business, and works 5 days a week. I'm de-facto IT support and general maintenance guy for that business too. I also help out looking after my own Dad, also in his 80s.
Time for open source simply doesn't happen for me, it's just not an option.
If "checking GitHub activity charts" is a thing recruiters and employers do, I'd guess I'm not going job hunting this side of 2020.
Seriously folks, there is life outside GitHub, if high public participation is a requirement for hiring, it's as well I've a great job that I'm happy with, and an employer who's happy with me.
There IS a nifty solution, namely github contributions by Ionica Bizau:
https://github.com/IonicaBizau/github-contributions
and ZERO.
If you want to be a good programmer, you have to program. It you want to learn how to program, you have to learn. No matter how you do it, your attainment of programming abilities will have some effect on the world. If it's not GitHub, it'll be a watched Pluralsight video counter... Or a kindle read book counter... Or bent pages in a hardback programming book.... Or a hard drive containing your side project. If someone who is looking for an educated, active developer, they're going to ask for these things. Will you have them?
I agree that a lack of Github activity does not necessarily mean the dev isn't active, but even a light green graph is practical proof of a dev who is. If yours is blank, just make sure you have the other things.
If a prospective client uses my github or stack overflow public profiles to guage my skill level, I don't want to work for them. There is so much wrong with how techies are normally recruited it's embarrassing.
I've been coding since I was 6, I work full time as a developer, I have my own public tech blog and website, I developed and published a small collection of Windows utilities, I created my own Windows Media Player skin, I solo-developed and released my own iOS game (which garnered a solid TouchArcade review), I'm a "top 5% this year" StackOverflow participant...
And I have zero lifetime GitHub commits.
Is that not okay?
In general it isn't something I think too much about - I don't have time for that actually, as I'm self employed working 8 hours a day for clients, then 2-3 hours every night mon-friday on Hobby-Projects, plus I have a wife and 2 kids :)
I have never heard anybody comment on my Github activity when I'm at interviews...and yet, I usually get the task anyway - not due to Github, not due to LinkedIn, but because I'm skilled and a kind person - don't forget the latter :)
Instead, why not use lines changed? I'm astounded that github doesn't provide that info in their stats API, at least not to a granular by day level.
So I wrote a PowerShell snippet to grab the data from git log: Git commit stats for author by date -- bonus, works for all git, not just github. This finds insertion/deletion by date and sums up across all commits.
Not to leave out the SVN folks, I also did SVN commit stats for author by date along the same lines. A bit tougher to get the data for SVN (gotta pull the diffs and look for + or -), but it works.
If you were to rate me based only on my GitHub activity, I'm useless and never write code. If you're aware of my Drupal activity, I'm a top-tier developer and evangelist.
Lies, damned lies, and statistics. :-)
As far as I'm concerned, the only value to the GitHub activity chart is in hacking it to make cool artwork.
I guess that means I'm unemployable?
It seems ironic. GitHub has always pushed for diversity and yet their activity graph hurts diversity. Furthermore, you know the people over at GitHub created the activity graph with one thing in mind-- user retention. I'd like to see GitHub put their money where their mouth is.
If they are pro-diversity, nuke the graph.
If you don't believe me by now, after reading through all the comments up to here, well, I just hope no unfortunate soul ever has to work for you.
Another question. If you say David is a developer and architect, does it mean that per definition an architect doesn't develop or that a developer doesn't architect or why is it important that you made this distinction?
One other thing I don't like is that the commit only counts on a master branch so if your oss project of choice has a different method of Dev you don't get "paid" for that work.
Final ruling: stats are great, add more and more. Geeks love them and naturally obsess over them.
That said, I will mail you my paper resume (professionally printed on special paper), ending with: "References available upon request."
Also, I hope that my resume, boasting of my membership in the Computer Science Club at university 30 years ago, impresses you as much as it does me.
How do I mail something these days? Is there a web site with instructions?
:-)
- It's a measurement of issues, pull requests and commits. I'm a believer in committing early and often, but that's not how things always work out. That means your overall code contributions to a project can be high, and yet not be reflected as such by the graph.
- The graph in no way measures the quality of those commits. I could commit a millions times to a project, each commit adding nothing of real value to the project, but it would look great on the graph! Hmmm...maybe that's another reason why this graph isn't a great hiring metric.
is it by the number of commits? or number commits x number files changed?
Where is the cutoff between single commit which gives you lettuce and dark forest?
is the scale relative to you? to the project, GitHub as a whole?
http://bd808.com/blog/2013/04/17/hacking-github-contributions-graph/
I don't think the public activity monitor is a great metric of anything on it's own (and I'm also sure their are hiring managers who care a lot about it, none of which I probably want to work for).
;)
It has plugins for Visual Studio, SQL Management Studio,NotePad++, and many others :)
You should really check this out!!!
https://github.com/IonicaBizau/github-contributions
You can see a working sample on his Git Profile:
https://github.com/IonicaBizau
It is TRULY Great.
Bearing in mind GitHubs ongoing controversy regarding their outlandish and discriminatory 'diversity' hiring policy, I personally choose to use another service. I guess being male and white makes me unemployable at GitHub, too.
If an employer placed any kind of importance against a GitHub commit profile, quite frankly, they're NOT an employer I would want to work for for the reasons outlined below...
1. I don't get spare time of my own to work on projects. I have a family that I love dearly and spend ALL of my spare time with.
2. Because I'm a middle-aged person with a home, I have commitments that already eat into my spare time. Fixing the curtains up, painting the fence, cutting the lawn. So there you go. If I'm not with my family (1) I'm with my house !
3. My work doesn't permit me the luxury of working on free or OSS. My employer sells stuff to make money. Whilst I believe OSS is a very admirable concept, its a little "communist". OSS doesn't pay the bills. I'll contribute what I can, but first, I need to pay MY bills.
Any kind of significance of a commit profile will result in a company hiring a plethora of people who either: -
Don't have a life... Don't have a house to fix-up... Are independently wealthy and have little need to work...
OK. So I'm being a little tongue-in-cheek, but generally the points are valid in some shape or form. There are simply too many VERY GOOD programmers out there who learned a long time ago that a balanced and proper life is important. All bits and bytes makes jack a very dull boy.
Sorry... Don't want to work for a Git obsessed employer - EVER !
But that's just the start, you need to take care of what are you measuring or what do you want to see. Activity? Size? Performance? Diversity? Demography? Just counting number of whatever doesn't say too much (that metric is easy to cheat)..
More interesting metrics are related with contributor footprint in the project.. How fast your pull requests are accepted? How many of the lines of code you have submitted are still there after a period of time?
Comments are closed.