← all writing
/2 MIN READ

Leave it better

Great engineers improve everything they touch.

Starting a new job is hard. It might take 6+ months to really hit one's stride.

Depending on the organization, pockets of legacy tech, turnover, culture of technical excellence (or not) and a hundred other reasons, the state of tech could be anywhere on a spectrum of terrible to amazing. And most likely it leans a little more toward terrible.

There are many things competing for an IC's time:

  • Interviewing
  • Reviewing PRs
  • Meetings
    • Eng allhands
    • Team standups
    • Org standups
    • Company days
    • Demo days
  • and on and on and on

Internal projects tend to have a perpetually-alpha quality. I've seen it at every company I've worked for. It's rare to escape the sticky gravity well of perma-alpha. (One trick for doing it is to open source your thing, when appropriate).

To combat this, as software engineers we should leave things in a better state every time we interact with them, even if we don't technically own the thing.

For example, if I need to make a change to an existing codebase, I hope and pray that I can clone the repo and very quickly find:

  1. links to the environments it's running in
  2. how to build (this should be 1 command that works on everyone's machine)
  3. docs (even some basic pointers)
  4. specs for expected shapes of data - hopefully you use a typed language
  5. how to run the tests
  6. a link to the project's CI/CD
  7. etc...

As an engineer, I want to interact with well-defined black boxes. Until I have a reason to understand the internals and turn the black box into a white box by consuming available materials, including the code itself, which is the ultimate source of truth, as well as the other hooks the authors have given me.

A system is a composition of black boxes, each with its own unique characteristics.

A great engineer should be taking the apps and services they work on beyond alpha.

A great SRE or platform architect should be applying the same holistic excellence to the collection of apps they care for. How are you exposing a consistent interface into the system? Is it a GraphQL BFF? A consistent adherence to gRPC with well-defined Protobufs?

Leave it better.

Search

Loading…