Notes for the week of June 28, 2021

Exceptions to YAGNI

“You Aren’t Gonna Need It” (YAGNI) is generally a worthwhile rule of thumb: Don’t build for possible future requirements, because you’ll often never actually need those and will complicate your code in the meantime. Luke Plant made a list of some exceptions and Simon Willison followed up with Probably Are Gonna Need Its. Here’s a quick summary of the two:

Luke’s list:

  • Zero One Many: If you go from needing one of something to needing two, you might as well support many
  • Versioning: Think about how you’re going to handle evolution of client/server, protocols, file formats… anything where you have independent parts that may be changing at different rates.
  • Logging: It’s often too late to add logs when a problem arises.
    • My comment: This one is problematic, because too many logs become impossible to reason about and expensive to store and work with. It depends on the scale you’re talking about.
  • Timestamps: You almost always want a created_at timestamp
  • A relational database: You’ll generally benefit from its capabilities sooner than later.

Simon’s list:

  • A kill switch for mobile apps: You’d be shocked at how long it takes for some people to update their mobile apps. Having a way to force them to update from the get-go will help you.
  • Automated deploys
  • Continuous integration: This one and the former are all about being able to keep a project running, even if you step away for a while
  • API pagination
  • Detailed API logs
  • Interface for executing read-only SQL queries

I agree with these lists in general, but at Khan Academy our scale and tech stack are different enough that they are a little less applicable.

CDC Variant tracker

With the Delta COVID-19 variant gaining steam and having significantly different properties from the other variants, it’s useful to see that the CDC has a variant tracker. Delta is B.1.617.2 and Alpha is B.1.1.7.

AWS Infinidash

The latter part of the week saw tech twitter all aflutter over AWS Infinidash. Awesome Infinidash has a good collection of links.