Curated Content November 2022

A few pieces of content I thought were worthwhile in the month of November.

Many trees with orange leaves. (One of the more fun images from Unsplash when searching for November)
Photo by Ruvim Noga / Unsplash

Articles

Things that aren't abstractions

Things that aren’t abstraction

Jimmy Koppel comes with some ways to clarify the discussion on abstraction by providing terms for things that we usually define as abstraction in software engineering, but in fact aren't.

Abstraction is usually said to be something which helps readers understand code without delving into the details.
  • Functions - Just extracting something into a separate function isn't necessarily useful for helping folks understand it without needing to know the details.
  • Anti-unification - Don't repeat yourself (DRY)
  • Boxing - Attempting to take DRY too far and ending up with highly conditional extracted functions
  • Indirection - Extraction of functions, usually across many additional files

This brings us to asking what is abstraction then?

The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise.
- Dijkstra

Which brings us to the point, if something is a useful abstraction for you and your organization is volatile, due to potential shifts in contexts over time (See Volatility and Software Architecture).

The epistemology of software quality

The epistemology of software quality – Increment: Teams
Studies show that human factors most influence the quality of our work. So why do we put so much stake in technical solutions?

Hillel Wayne summarizes that we spend a ton of time focusing on things that research shows have minimal impact on our software engineering. Basically the thing we know has the biggest impact is code review, the rest is minimal or controversially supported at best by research.

What we do know is that human factors, like getting enough sleep and exercising, make a massive difference in our cognitive abilities, but that as an industry we pay relatively little attention to this.

Books

Slack - Tom DeMarco

Slack by Tom DeMarco highlights the dangers of building an organization operating at 100% efficiency rather than trying to work effectively by allowing slack in key areas of the organization.

This is something that I've been reflecting more on, and how it relates to software development and the Theory of Constraints.

The Effective Manager - Mark Horstman

Rather than recap it here, I'll link to my summary.

If you need a teaser it's a great set of concrete tools for any manager to immediately apply in their day to day to improve their management.

Conference Talks

ElixirConf UY 2022 - Yuri Oliveira - Let OTP guide your architecture

A great talk for one of the member's of my team here at Savi Solutions. Yuri does a great job showing how the tools Elixir provides can guide your architecture, replace many potential tools you may also reach for, and grow your application.

Podcasts

No podcasts to recommend this month.

Tweets

An interesting thread from Gergely Orosz on how many large organizations approach building their own productivity measurement tools, making it harder to go down to the individual level, versus external organizations building dev tools for sale that will gladly dive into individual metrics.