Using Git for Knowledge sharing

Hemant's avatar


As imperative as it is for efficiency, knowledge sharing is not a behavior that is easily assimilated into the company culture. There is no immediate incentive for a team member to go out of the way to share resources and hacks that might prove useful for somebody else in the future. Even well intentioned employees might not contribute if the process is too much trouble.

There are several threads on Quora discussing the various available ways - Wiki, Google docs, knowledge management software...the list goes on. There is no dearth of options. Even so, we chose to do it our own way. Here we share our 2 cents of wisdom on how we do it and why it works.

Why not a knowledge management software?

As programmers, we generally are either too lethargic or too busy to step out of the comfort zone of a text editor or terminal. In such a case, it would be quite a hassle to open or login to a separate system to share tips and tricks learnt through the day. The only way we can hope to make knowledge sharing possible is by hacking a process which will not interfere with a programmer’s flow.

Our hack is very simple but quite efficient - we have been doing this for over a year now. What we do is - anything a developer thinks worth sharing is written down in a Markdown file and pushed into the collective-knowledge repository which we call ‘Picks’. Others in our team get notified via Hipchat, they can have a look and comment on commit if needed. Content is easily searchable via simple tools like grep or ag.


There is a good reason why developers would prefer a Jekyll to Wordpress. The philosophy of Jekyll (as below), quite reflects our reason to go ‘Picks’.

Jekyll does what you tell it to do — no more, no less. It doesn't try to outsmart users by making bold assumptions, nor does it burden them with needless complexity and configuration. Put simply, Jekyll gets out of your way and allows you to concentrate on what truly matters: your content.

The toothpick gem

We have even created a command line utility that automates this workflow. Using Toothpick, saving the file in your editor automatically pushes the pick to git repository.

Knowledge sharing works quite well this way at our scale; we are a team of 10 devs. We are not too sure about how this will scale as the team scales. But, that is a problem to be solved in the future. We would love to learn what works for you and how you manage it in your company. Looking forward to your comments.