I'll respectfully disagree. Theory is useful for designing algorithms, but has nothing to do with being a good programmer. Perhaps you mean understanding design (of tools, languages etc)? If that's the case, then yes, you need to understand your tools before using them. I'm not suggesting otherwise.
The easiest way of getting better at negotiations, like programming, is actually just about practice.
The easiest way of getting better at negotiations, like programming, is actually just about practice.