Some General Software Principles I've Accumulated (Circa 2023)

| 2 min read
#leadership #misc

In which I share my two cents (cue laughter), in no particular order. (Which I'm sure I'll look back on with nothing but glowing admiration 10 years from now)

2 Cent Postage Stamp An 1879 Postage Stamp, Smithsonian

Optimize For the Scale In Front of You, With a Bit of Wiggle Room

Premature optimization is the root of all sins and all that. But it's not just hard to understand the shape of the usage of the tools you build. So limit your scope, ship what you understand and learn from it.

Failures are a more effective indicator of what to optimize than best practices

Failures are a reality of modern software engineering. Instead of trying to "move fast and break things" or trying to optimize until the cows come home, try to limit the scope of changes, make failures as non-detrimental to yourself and your users, and use them as part of your learning and development process.

Observability is the only way you actually understand your code

:see here

There's No Such Thing as a Free Lunch

Serverless, Observability, Test Driven Development, LLMs, Event Driven Architecture, Monoliths, etc. There's no magic bullet and they all require maintenance and upkeep to support. Invest in the tools that shift variable, unstable effort into consistent, fixed, and stress-free effort.

Ship Code That Improves Human Thriving and Decreases Human Toil (in that order)

I think too often we focus on "reducing toil" as the ultimate effort of our code. Often it's the lowest hanging fruit. It's easy enough to move things to a CI pipeline that automates X,Y,Z that lowers build times. But it's important to remember that the goal of this is to improve human thriving not to merely reduce the amount of stuff we will do (there will always be stuff, somewhere).

Engineers Provide the Most Value at the Intersection of Business and Technical Understanding

It's worth investing in both.

Invest In Your Skeptics

Complaining can actually be a form of problem solving.

Leadership Is Mostly About Managing Your Emotions and Other People's Emotions (in that order)

The first rule is to not inflict your insecurities on other people. (I am so guilty of this)

Being a "good person" is hard

I don't love the phrase "be a good person". In part because of the psychological evidence that if we identify ourselves as a "good person" we will tend to explain away bad behavior, but also because it doesn't give much of a directive on how to behave. I prefer being good to the people you're with, thoughtful for those who will come after you, and curious about the world around you.

Accomplishing something meaningful with people who care about their craft is one of the best feelings

(This is a poorly worded sentence, but it's the best I got)