Learning to program has no more to do with designing interactive software than learning to touch type has to do with writing poetry.
The difference between theory and practice is smaller in theory than in practice.
Learn the principle, abide by the principle, and dissolve the principle.
Theory and practice sometimes clash. And when that happens, theory loses. Every single time.