Documentation Rot
Enterprise development teams have a bad case of documentation rot. Maybe not all, but the places I’ve worked that had a strong in-office culture sure did. In contrast, working remotely organically yields better documentation practices in my experience.
It makes perfect sense when you think about it. Remote workers are generally better at asynchronous communication. They also know the value of good documentation as they can’t just yell over a cube wall to get answers. This alone has tremendous value in terms of productivity.
In-Office Documentation
I’m pretty sure everyone has had this experience. You start at a new client or employer and need to set up your dev environment. So you ask the nearest Dev about documentation to accomplish this and get that familiar apologetic look. She says to check the team Wiki and let her know WHEN you hit a roadblock.
The Wiki was last updated by “Deleted” in 2013. They also no longer use Apache Ant, Ivy, or Lucene. At least it correctly tells you to download a JDK, though not Java 6 anymore, thankfully.
And so you begin the painful first week in-office by stumbling through an obstacle course. The best of us will update the team Wiki with the latest information so the next poor soul doesn’t suffer the same fate.
However, in-office environments are not conducive to this. As most problem solving is done verbally in person, which makes it far more difficult to capture for posterity.
This of course is just to get your dev environment up and running. You’ll have to repeat this process in order to perform any number of useful tasks. That is, finding sparse to no documentation available and leaning on in-person collaboration to learn and accomplish the tasks.
Therein lies the biggest problem with in-office dev team cultures. Too much tribal knowledge lives in the heads of the development team and not enough lives on a durable medium in the form of accurate documentation.
In-office work encourages this manner of work, especially in these days of Agile, which I’d contend is suboptimal in many instances. In person, synchronous communication certainly has its time and place, but it is far over-utilized due mostly to inertia.
Good Documentation is a Company Asset
Any good company has a collection of processes to deliver a valuable outcome to its customers. These processes are a valuable asset. Imagine if every time you went to your favorite Italian restaurant and the chef decided to make your lasagna with a completely new recipe. You’d be annoyed because it would taste differently every time.
Good documentation yields a predictable and repeatable result. This allows us to iteratively improve upon the process. Others can perform the process themselves and perhaps find improvements that we might have missed.
In the development world, good documentation means greater self-sufficiency. We work with a lot of incredibly smart people in this industry. And documenting well allows us a much greater ability to evaluate the efficacy of any given process.
This documentation then becomes a valuable company asset. It becomes easier to onboard new developers.
New developers become productive far more quickly when team practices are well codified. And perhaps most importantly, processes can be improved upon far more easily when they are clearly written.
Remote Developers Do It Better
I’ve found documentation rot is much easier to avoid when working in a remote team. We simply must document well given the context in which we work.
I believe our reliance on good asynchronous communication practices tends to yield superior results. It’s imperative that we’re more thoughtful and deliberate in how we communicate in a remote environment.
Therefore the quality of our communications tends to be higher and also gives us a huge head start when creating good documentation. Often it’s simply a matter of taking things we’ve already written in chat or an email and editing them to put on a team Wiki.
Contrast this with an in-office environment where you’ll often create documentation from scratch as the process you’re covering has only been relayed to you verbally. This is added friction that often means developers just throw up their hands and leave things undocumented. The tribal knowledge remains tribal and the landmines remain for the next unlucky developer who joins the team.
Summary
Documentation rot is a scourge upon development teams. Especially within the in-office culture which is far too conducive to unhygienic documentation practices.
The in-office work environment tends to rely far too heavily on synchronous, in-person communication. As a result, too much tribal knowledge ends up in the heads of the development team and is rarely codified and well maintained in a Wiki.
Good documentation is a valuable company asset. It allows processes to be continually reviewed and improved upon. Developers can be far more self-sufficient and ultimately more productive when they maintain and have access to quality documentation.
Experienced remote developers are skilled in asynchronous communication. The remote context prioritizes aptitude in this area and gives us a leg up on our in-office counterparts. Thoughtful asynchronous communications tend to easily translate to durable documentation on a dev team Wiki.