Nobody needs to know quite how messy the process of making the sausage is though. There are steps that provide information, even about how the bugs got in there. But not every thought needs to be expressed.
So I want to be clear that I'm not destroying other people's ability to learn from me. I just don't tell the entire story in the code, but I'm open about it if you talk to me. It's not a long conversation to figure me out. If it was I'd consider that a failure to do my job properly.
I know I'm done with a module when people add features to it the way I would have done so. That sounds like a non-statement, but I bet if you watch your projects closely, you'll see that's often not the case and sometimes it's laughably bad. It goes along with Knuth's thing about code meant to be read by humans and incidentally by computers, and also Kernighan's Law. My code eventually just says exactly what it does. And I don't use the same noun to mean three different things in three different places. Why? Because then I can take my name off of the bus number list and pick something else up. This module that I wrote is Steve's baby now, and that one is David's. In fact taking it over is how David got promoted.
I cook my own commits 75% for me six months from now and 25% for everyone else. I'm literally only doing about 1/3 more work (on the therapy part) than I would have done anyway.
health inspector is a literal job that needs to know how messy the process of making the sausage is, so they can enforce health standards so nobody gets sick when eating it.
if you're calling what you're doing engineering, you are following a standard best practice, and should easily be able to run through a checklist and show your work at each step.
not every thought needs to be expressed sure. its irrelevant what you thought about your lunch. Its important how you picked what latency numbers are important, and how you went about predicting volume, including what factors your did and didnt look at.
software developers havent been rigourous engineers over the last several decades, and that isnt a good thing
No arguments here. The weird thing is that this was all much more straightforward when we did trunk-based development. You still ended up stashing four different things and having multiple speculative local branches while you tried your crazy ass ideas out, and Mikado Method was your very best friend.
What ended up happening is you committed the safe bits and the reversible decisions first to buy yourself time to work out the tricky bits before you had to commit (literally and figuratively).
I think trunk-based development is greater than PRs, but the values are close enough that the politics of PRs (specifically, consensus-based development) win out, or at least aren't worth fighting.
It makes one vulnerable though, that's for sure. Psychologically I mean.