This explanation from Practical Object-Oriented Design in Ruby by Sandi Metz perfectly captures the difference:
What is the difference between theory and practice? In theory, there is none. If theory were practice you could learn the rules of OOD, apply them consistently, and create perfect code from this day forward; your work here would be done.
However, no matter how deeply theory believes this to be true, practice knows better. Unlike theory, practice gets its hands dirty. It is practice that lays bricks, builds bridges, and writes code. Practice lives in the real world of change, confusion, and uncertainty.
I’ve been straddling the worlds of theory and practice for months now.
Learning to Code *in Theory*
Every book, online tutorial, and exercise that I’ve been working on, in Ruby, HTML, CSS, MySQL, has been carefully selected by the instructors at Launch Academy to lead us step-by-step through the basics.
The examples are clean.
Instructions are clear.
And when we get stuck, we can reach out for help and clarification.
It’s a pleasure to live in this world
Teaching Tai Chi in Practice
For the last ten years, I’ve been teaching Tai Chi, working with students who are brand new to the practice or who are gradually building new skills.
Early on, I learned from my teaching mentor that you should only ever teach material that is well integrated into your own body, so that you can model it clearly, cleanly, and on demand.
The process of translating Tai Chi theory, embodied principles, and new concepts to something that students can absorb is an exercise in moving from the clean world of theory to the messy realm of practice.
How will they interpret a lesson?
What else are they thinking about when they come to class at night?
Is there something they’d rather do with their time?
How do we handle layers of old injuries?
Being on the other side of the theory and practice dichotomy has its own rewards,[which I’ve written about here].
Right now, though, I’m enjoying being in both worlds simultaneously. I can appreciate all the work the staff at Launch Academy has done to present us with clean, clear instructions.
I’m also getting a little space from my own teaching, so I can appreciate the more abstract, theoretical questions of how, why, and what should be taught, unencumbered by a lot of practical constraints.
Balancing Theory and Practice in the Future
Going forward, months from now, when I’m fully immersed in the world of web applications and my day-to-day will lean more to the “practice” end of the balance than the “theory” side, I hope I can remember this feeling of blending both worldviews.
By creating space to find a clean “theory” mindset, you really do get more energy to implement the realities of “practice.”
At the same time, the craftmanship of practice motivates you to explore and refine theory.
If I can find the right balance, work life will be even more rewarding!