There's little argument that being a good CrossFit Athlete is less about the strength of your strengths, and more about the strength of your weaknesses. It's widely accepted that the lowest hanging fruit of athlete development lies in weakness eradication.
In my opinion, the importance of an objective coach who can remove themselves from your natural cognitive biases is paramount. It's human nature to avoid the things we're not good at. If we're not good at something, we tend to not enjoy it which means we tend to avoid it. And here starts a feedback loop of 'the strengths becoming stronger and the weaknesses becoming weaker'.
Granted, there are some merits to programming for yourself (I've always done it, though primarily through the development of software and algorithms that allow the objective application of my programming principles). Though if you do self-program there is one very key factor that will ensure you're not overly reactive and a slave to your mental models and cognitive biases. If you MUST program for yourself...
Program not for you, but for your future self.
Let me elaborate. I'm not talking about programming for the perceived weaknesses, strengths, and required biases of your future self, on the contrary, you should program for the athlete you are today. Rather, I'm talking about 'kicking the can down the road' and programming something that you know you needs to do, not something you want to do. If you program long term, you don't get the opportunity to stand in front of the whiteboard every morning while deciding 'what you feel like doing today'. And there's one key reason this works. One key reason we won't be 'nice' to our future selves and will instead objectively program what we need, not what we want.
You see, we view our future selves not as older versions of us, but as completely different people. Research shows the brain patterns we experience when describing our future selves are closer to those we experience when we're describing other people, than those when we're describing our current selves. We don't identify with our future self. As Homer Simpson says moments before downing a vodka and mayonnaise cocktail, “That’s a problem for future Homer. Man, I don’t envy that guy.”.
So how do we apply this knowledge? Program for the long term. Devise the best possible programming for your 'future self' (as if it were another person) and then let them worry about it! Make the choice to adhere to this programming and you'll overcome the human nature to avoid those things we need the most.
Now of course, (largely) there are negatives of this phenomenon, where we put off doing something so 'future me' can deal with it (when the problem has probably grown), or we set process goals and planned habits for our future selves that are unrealistic for our current selves (and therefore for our future selves too). But if we can turn this concept to our advantage, we can at least begin to remove some of the shortfalls of self-programming.