You're absolutely right. It makes far more sense to make the tactical decision to simply change the necessary code to work with the new CRM. I, and I suspect most of us, make the very same decision every day. When your goal is to build a product and ship then tactics, as in chess, will win you the game > 90% of the time.
I apologize if my trivial example failed to illustrate my point for you.
My point is that part of being a good developer is learning how to avoid doing the same task more than once. Tactical thinking inevitably leads to doing the same things more than once. The best programmers I've had the opportunity to work with rarely had to re-write anything they had to written. They had internalized the paradigms, patterns, and practices to avoid writing code that is brittle to changing requirements. This is what I mean when I say part of being a good developer is learning to cultivate laziness.
Focus on the things that matter but learn to internalize ways to avoid making work for yourself.
I apologize if my trivial example failed to illustrate my point for you.
My point is that part of being a good developer is learning how to avoid doing the same task more than once. Tactical thinking inevitably leads to doing the same things more than once. The best programmers I've had the opportunity to work with rarely had to re-write anything they had to written. They had internalized the paradigms, patterns, and practices to avoid writing code that is brittle to changing requirements. This is what I mean when I say part of being a good developer is learning to cultivate laziness.
Focus on the things that matter but learn to internalize ways to avoid making work for yourself.