I thought we had learned these lessons before, but maybe not!
never assume that colleagues won’t try to do something that they think should work , just because we haven’t told them that the feature is available (or not) 😄
time spent writing good automated tests is rarely wasted - they are your saviour when you revisit code that you last looked at months previously and try to understand what that “cowboy builder” (your past self) did exactly!
if we have undeployed code hanging around for months it can be really hard to restart that feature quickly without errors constant interruptions and reprioritisations are a part of life so there is always a risk we won’t finish a feature in one go
we need to think more about how we break functionality up into smaller chunks that have value in their own right - anything that needs more than 3-5 days work before something can be released is too big
we need to consider some of the lessons from Trunk-Based Development - releasing new code into production but using things like feature-flags to disable it until it is ready - that way it should always be possible to pivot development to a new feature