Hi Hanggara,
Well, there are several ways to reduce Cognitive Overload, and the first way is to define correctly the teams:
- https://youtu.be/haejb5rzKsM
But we should not limit ourselves to one technique, we should use several. Each technique reduces a different context. So, we should do not dismiss the capabilities of the rest of the techniques, including the TDD.
You may have your doubts, because often people are not practicing right TDD, but when they do, it reduces drastically the cognitive overload. We can consider it the last step, or the most fine-grained step of the cognitive overload reduction.
1. The programmer does not need to think in the whole problem, just in the following step. That reduces what he has to remember.
2. The programmer does not need to remember all the use cases and business value of the code. If he does something wrong, a test will explain which business rule is broken. (Yes, TDD tests are about business rules, not code).
So, the programmer can just write without thinking in all consequences, he is covered. That is how reduces the cognitive load. At each step, just think in the next step, because you are safe.
BTW: Well practiced TDD also tends to create better code with higher cohesion and lower coupling, which is the technique that you describe.