Oh, Steve, you've picked a topic that I'm passionate about. I'm going to do my best to keep my response as short as I can.
In my previous job, where I was at for many years, we started with an IT (both dev and operations - we had to wear multiple hats) of four people. We started defining standards. For the most part, we stuck with them. Like you said, as we moved along, we changed how we coded, the patterns we chose and so on. But for the most part, we stuck with what we defined at the beginning.
After being laid off that position and coming to my current job I was expecting lots of things, one of them was some standards. I also expected them to have libraries of components, or source code components. I remember spending several weeks looking for a repository of code modules, documentation as to how certain often repeated tasks should be performed, etc. There was none. Indeed, they were only just getting up to speed on using source control. For a large state government agency, I was shocked at the lack of cohesion in specifying how things should be done and everyone re-writing code to perform some task for God only knows how many times.
But maybe I'm was expecting too much. I wonder, maybe this is just the way it is everywhere? Maybe when you're just getting up to speed with source control, you're so unused to having a standard, or expecting every group to develop its own standard, or expecting everyone to make up their own standards, that that's just the way it is.
I'd like to know, those of you who are working for large organizations, is it that way in the beginning? Does it take several years for a large group to get around to defining standards and building a common code base, so people don't have to constantly re-invent the wheel?
Kindest Regards, Rod Connect with me on LinkedIn.