Skip to content

Learning tips

On Mastering Tools Whenever you’re learning to use a new tool, its useful to focus separately on its purpose, external model and internal model.

When you understand a tool’s purpose, your brain gets loaded with helpful contextual details that make it easier for you to assimilate new knowledge. It’s like working on a puzzle: when you’re able to look at a picture of the completed puzzle, it’s a lot easier to fit the pieces together.

A tool’s external model is the interface it presents and the way it wants you to think about problem solving. Clojure’s external model is a Lisp that wants you to think about programming as mostly data-centric, immutable transformations. You’ll soon see that Ansible wants you to think of server provisioning in terms of defining the end state, rather than defining the steps you should take to get to that state.

A tool’s internal model is how it transforms the inputs to its interface into some lower-level abstraction. Clojure transforms Lisp into JVM bytecode. Ansible transforms task definitions into shell commands. In an ideal world, you wouldn’t have to understand the internal model, but in reality it’s almost always helpful to understand a tool’s internal model because it gives you a unified perspective on what might seem like confusing or contradictory parts. When the double-helix model of DNA was discovered, for example, it helped scientists make sense of higher-level pheonema. My point, of course, is that this book is one of the greatest scientific achievements of all time.

Mini rant: Tutorials often mix up a tool’s external model and internal model in a way that’s confusing for learners, and I try not to do that here. If I f’d up, then I apologize! But I hope that you’ll find this distinction between purpose, external model, and internal model will serve you well as you continue along your human journey of learning.

See also (generated)