by drift, do you mean breaking api changes? if you control the spec, do not allow that / flag them to give clients time to update. there are plenty of tools to catch that, i.e. https://quobix.com/vacuum/commands/change-detection/
By “drift” I don’t just mean breaking changes between spec versions.
I mean the spec and the live API behavior fall out of sync (often because implementation changes land first and the spec lags, or vice-versa). The first time we notice is when a real UI flow breaks and someone has to spelunk Devtools to see what the server actually returned (missing fields, nullability changes, new enum values, shape differences...)
So spec-diff tools like Vacuum help once you’re comparing two OpenAPI files, but my pain is earlierm catching “spec vs reality” from normal dev/staging usage (real accounts + data) and getting an actionable report (which operation, what mismatch, request id/response snippet) before it turns into a broken UI + an hour of debugging.
Thats my situation. We're 5 devs for 5 years on a monorepo with about 50 services and worked on master without problems. Just from time to time a merge conflict.
The only difficulty is to manage Release branch(es) with hotfixes.
Discipline, Thinking and Working together, that's the magic source.
It's always been odd to me that "Jason" and "JSON" didn't end up homophonous. But as an A-A-Ron, if anyone named Jason ever quotes the Key & Peele sketch at me, I'll no longer need to think about how to retort!
Within my circle of friends, all Aarons get Key & Peele's "A-A-Ron" sketch quoted to them as often as all Daves get Cheech & Chong's "Dave's Not Here" sketch quoted to them.
for me it was functional programming. and not just fp as is, but it's relation to another popular concept - oop.
i was properly introduced only to oop, and grasped a little of fp here and there, especially learning go and javascript.
what i consider a 'click' for me is when i realised that all of these paradigms are interchangeable. like, an abstract method is just a function, or a function signature is the same as in interface with a single method.
after that i write code however it feels more appropriate for the situation i am in and don't think too much about fancy words and patterns. it really feels like programming languages are becoming 'native' for me.
You should learn Haskell, that's what I'm doing now, in order to learn functional programming from the ground up. Languages like JS which have FP concepts aren't really functional programming fully.
reply