Concrete does not have an undo button. Three years working marine piling and concrete QC on berths 1–7 of Shuwaikh Port taught me that before I ever taught it to a codebase — every pour is a decision that outlives the meeting where it was made, and the tolerance for being wrong is measured in millimetres, not in a follow-up sprint.
Load paths, not just endpoints
A structural engineer traces load paths: where does the force actually go, through which members, to which foundation. Reviewing an API is the same exercise with different units — which service actually owns this write, what happens to every caller if this table gets a new required column, what fails first under load. I still sketch it the same way I sketched a pile cap: the diagram before the pour.
Tolerances are a design decision, not an afterthought
On site, tolerance is specified up front because reworking cured concrete is not a code review comment, it is demolition. That habit is why I default to schema validation at the boundary and typed contracts between services rather than “we’ll catch it in testing” — the cost of a bad tolerance decision compounds the same way whether it is rebar cover or an unvalidated payload.
Why the pivot, not a rejection
I am not leaving engineering — I am changing which material I build in. Civil engineering gave me the instinct to ask what a system has to survive before I decide how elegant it gets to be. Software just lets me ship the next revision without pouring new concrete.
