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:
- 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
- A relational database: You’ll generally benefit from its capabilities sooner than later.
- 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.
The latter part of the week saw tech twitter all aflutter over AWS Infinidash. Awesome Infinidash has a good collection of links.