Monday Links 12

Simon Willison’s recommended engineering practices are rock solid:

  • Documentation in the same repo as the code
  • Mechanisms for creating test data
  • Rock solid database migrations
  • Templates for new projects and components
  • Automated code formatting
  • Tested, automated process for new development environments
  • Automated preview environments

Also from Simon Willison: Documentation Unit Tests (or Test-Driven Documentation)

Keeping documentation synchronized with an evolving codebase is difficult. Without extreme discipline, it’s easy for documentation to get out-of-date as new features are added.
One thing that can help is keeping the documentation for a project in the same repository as the code itself. This allows you to construct the ideal commit: one that includes the code change, the updated unit tests AND the accompanying documentation all in the same unit of work.
When combined with a code review system (like Phabricator or GitHub pull requests) this pattern lets you enforce documentation updates as part of the review process: if a change doesn’t update the relevant documentation, point that out in your review!

In Aging Programmer, Jorge Manrubia reflects on 15 years of programming and what he has found to be true for himself.

Monday Links 11

Two years ago GitHub archived all the open source repos they host along with copies of StackOverflow and Wikipedia on 188 reels of archival film inside a decommissioned coal mine in the arctic. Last week they talked about the why and how.

Gina Trapani talks about why senior leaders sometimes seem less engaged than you’d expect and presents some tips on how to get your message across to them

Charity Majors’s latest post, The Hierarchy Is Bullshit (And Bad For Business), is chock-full of good stuff like this:

Power flows to managers by default, just like water flows downhill. Managers have to actively push back on this tendency by explicitly allocating powers and responsibilities to tech leads and engineers. Don’t hoard information, share context generously, and make sure you know when they would want to tap in to a discussion. Your job is not to “shield” them from the rest of the org; your job is to help them determine where they can add outsize value, and include them. Only if they trust you to loop them in will they feel free to go heads down and focus.

Hades - Developing Hell

Noclip are a tiny studio who create documentaries about video games. They concentrate on diving deep into the history of studios or the development of specific titles. Entirely funded by Patreon, Noclip’s documentaries are hight quality and fascinating viewing.

In 2018 Noclip published the first episode in a series about the development of Hades, starting just as Supergiant Games were getting ready to put the game into Early Access. The series chronicles the process of developing and iterating a game, responding to and incorporating feedback from eager customers with high expectations, and, as development rolls into 2020, figuring out how to work on a game during a pandemic. The final episode was released in 2021 and documents what happens when the Hades finally reaches 1.0.

If you liked Double Fine Adventure then this documentary will be right up your alley.

Monday Links 10

Techniques for managing your time and cognitive load as a senior leader

The constant context switch is part of the job for most leaders. If you manage to keep the type of activity similar for a longer period of time it will have less impact on your cognitive load and energy level.

I am a fan of time blocking and bundling up work, as this article suggests. Not so sure about doing all the 1:1s on the same day, though, I find that too draining.

(via Pat Kua’s Level Up newsletter)

Cal Newport on time blocking

Sometimes people ask how time blocking can work for reactive work, where you cannot tell in advance what obligations will enter your life on a given day. My answer is again simple: periods of open-ended reactivity can be blocked off like any other type of obligation. Even if you’re blocking most of your day for reactive work, for example, the fact that you are controlling your schedule will allow you to dedicate some small blocks (perhaps at the schedule periphery) to deeper pursuits.