🌱 seedling · planted 2 weeks ago

Software Convictions, Mostly Earned.

aiengineeringsoftware

Earned through years of building, shipping, and getting it wrong.

  1. I'll never know it all.

Every new domain reminds you of that. Staying aware of it is what keeps you sharp.

  1. The hardest part of software is building the right thing.

You can build something perfectly and still be solving the wrong problem.

  1. The best code is code you never write. The second best is code you don't have to maintain.

Every line is a liability. The fewer you carry forward, the faster you move.

  1. Software is a means to an end, not the end itself.

If the problem goes away, let the code go with it.

  1. Stop sharpening the saw. Start cutting.

Learning is valuable right up until it becomes a reason not to ship. See Shipping beats perfect.

  1. You can't design a good system if you've only seen one corner of what's possible.

Breadth first. You can't pick the right tradeoffs if you don't know what's on the table.

  1. Every system eventually sucks. Get over it.

The system you're building today will be someone's migration project in five years. That's not failure. That's the job.

  1. Nobody asks "why" enough.

"Should we" always comes before "how do we." Most wasted work starts with skipping that question.

  1. Avoiding 0.1x engineers is more important than chasing 10x engineers.

One person who creates confusion or hoards context does more damage than any star can offset.

  1. Junior engineers have ideas and energy. Senior engineers have opinions and scars.

Ideas are cheap. Opinions forged from experience are what change the direction.

  1. People don't want innovation. They want things to work better.

Frame improvements as relief, not revolution.

  1. Your data outlives everything else.

Code gets rewritten. Platforms get replaced. Data persists. That's what makes it the most important part of the system.

  1. Don't bet against technological sharks.

Momentum, community, and investment beat elegance. Every time.

  1. Don't mistake humility for ignorance.

The sharpest people I've worked with lead with questions, not certainty.

  1. Write things down. Regularly.

If you can't explain it in prose, you don't understand it yet.

  1. Keep your processes lean. Then cut them in half.

Run experiments, share what happens, codify what works. In that order.

  1. Give engineers ownership or watch things rot.

People care about what they help shape. Take away the stake and they stop caring. See Burnout.

  1. Interviews measure the wrong things.

They test performance under artificial pressure, not whether someone makes the team better.

  1. Nobody gets promoted for simplicity, and they should.

Removing complexity is the harder, more valuable work. It just never makes the slides.

  1. Make the right thing the easy thing.

Don't mandate adoption. Reduce friction until the better path is the obvious one.

  1. How we work is the product.

Improve it like you'd improve anything else: experiment, measure, iterate.

  1. Build the system yourself before you let AI build it for you.

Understanding grows from building. If you let AI one-shot the whole thing, you skip the part where you learn the problem. See Steps to AI Engineer.

  1. Treat AI as a force multiplier, not a magic wand.

Incremental, high-leverage workflows beat over-engineered agents every time. More on this in LLM thoughts.

  1. Always build the smaller system.

Every part you don't build is one you never have to secure, monitor, debug, or explain.