Ask HN: How does your company keep track of lessons learned?
As a single developer, I would usually just keep a .txt file with interesting things that I've learned throughout my tenure. It's a lot harder to replicate that efficiency for a large team; especially a distributed team. How do you effectively share knowledge with your co-workers? What have you seen work/fail?
129 comments
[ 2.2 ms ] story [ 263 ms ] threadEvery every system failure, we email the entire org a postmortem google doc describing what went wrong, why, and what we are doing to prevent it from happening again. Postmortems are also as their own JIRA project.
What industry are you working in? (I guess it's not web development).
[Translated from the sustainability report from 2009 - page 31 - GiiMiiPedia] GiiMiiPedia is a free encyclopedia built on the Wiki model (the same as Wikipedia) whose purpose is to transfer Know how. This initiative encourages employees of the organization to contribute knowledge that can be useful in different contexts, optimizing the time of employees. This year, the GiiMiiPedia layout underwent some modifications, with new sessions included, such as: market news, videos and subjects of interest from all areas.
Sorry the report is in Portuguese, we are from Brazil :) http://www.daiichisankyo.com.br/site/wp-content/uploads/2019...
They did make effort to standardize everything, but nobody seems to care.
It's a git repo and everyone can pull/push directly to master.
I skim the commits once a week.
It's basically plain text files. But the md extension triggers some nice eye candy in vim and other browsers.
I think we will keep this structure forever. Maybe we will (additionally) serve the files over http at some point. Maybe we might even add edit / search / push functions over http, but for now I have not planned that.
I have seen CMS come and go. And I'm tired of it. Text files are forever.
My website uses a "Apache-DirectoryListing"-like asp.net core frontend + a backend markdown parser.
If I weren't that lazy, I'm pretty sure I could have written a module for apache or nginx with an integrated md parser. Maybe there is something already.
For example when the graphics person wants to save something for the first time, they might make a new file graphics.txt and put in the information they want to keep there.
If they then continue to just grow that one file, all is fine. If they feel the need to have multiple files, I advice them to make a subfolder graphics/ and have their files there.
Search is simply done via grep.
So to see if someone wrote something about logos, we typically do:
But... sometimes a picture or two would help a lot. Is everything done in ASCII-art or do you also commit JPG/GIF files there?
Can you give a use case?
I think it was Karl Browman from the rstats community that noted: Your closest collaborator is you, six months from now. And you don't respond to email...
+ for being OSS
The dev overall, across the globe: i find retrospectives after a sprint cycle really good actually, it's a good place to call up where improvements can be made too.
On a personal level: When my mess up/mistake causes grief for someone else, I make damn sure I learn from that.
I'm leaving soon.
They have pretty good procedures for keeping track of lessons learned. The book (https://landing.google.com/sre/sre-book/toc/) goes into some detail.
One of the reasons why some people become valuable in long-tenure positions is because of the lessons learned. At a certain point, no one is going to read through every page in the wiki / archive / man pages / whatever is popular this year.
That's where onboarding and process come in: Management needs to make sure that lessons drive improving the process, that newcomers are onboarded with lessons from the past, and that everyone continues to follow the processes.
Now, jokes aside, in my company, the new owners decided they didn't like the people we were outsourcing with, and decided to replace them with their own outsourcing center. Now everyone's re-learning lessons that are probably tracked in our various wikis, repositories, ect. But, the newcomers want to run things their own way.
That's why a few long-tenured people are important.
1. For large issues visible to customers an incident report is shared inside the company. These are written for general consumption and so lack any technically interesting aspects (they're "dumbed-down" a lot).
2. Technical "lessons learned" are curated in a Sphinx based documentation website that I started but which is starting to see more and more contributions from other tech heads in the company.
We used to have a wiki but it ossified after years of no contributions. Personally I didn't like the MoinMoin wiki engine that much but this is just personal taste of course. I started setting up the Sphinx site to encourage knowledge retention despite turnover - I kept explaining the same things again and again. Now I just share a URL when such questions come up :-).
I have quite a few years of experience in using Sphinx to create high quality technical documentation for open source Python projects, which explains why I chose Sphinx for this endeavor in the first place, but that's not an answer to your question.
The following dichotomy that I feel exists may (?) be more useful:
* Wikis tend to grow organically without much restructuring. I don't think this is fundamental to any specific wiki system, more of an emergent behavior, if you will. Enough discipline can surely avoid this, but wiki systems don't exactly make it easy - I haven't seen many "refactoring" tools in wiki engines, though they probably exist (global rename that updates references, moving of sections of text between documents, etc). I have definitely seen quite a few wikis devolve into the documentation equivalent of a "big ball of mud".
* Sphinx being based on a simple directory structure of text files on a local filesystem in reStructuredText format makes it much easier for me to "refactor mercilessly" in order to adjust the structure of the documentation so it keeps making sense as it evolves (e.g. things as simple as "grep -r" and "find | xargs | sed -i" or equivalents built into editors). To make sure no references were harmed there is "sphinx-build -nW".
I've also grown to appreciate the value of generated content. For example we have a dozen software projects and another dozen internal web services. I cataloged both as a directory of simple CSV files that contain details like repository locations, programming languages and frameworks used, type of release management process used, etc. During the documentation build these CSV files are rendered into multiple output formats, for example an overview table that lists the most relevant high level details of each project / service and separately from that the more detailed information about each project / service. The data only needs to be entered once (DRY), but can be rendered any number of times.