I’m in a new home (actually, I’m not – I wrote this post a year ago and for whatever reason failed to hit ‘publish’ on it), and I want to get water from point A to point B. It seems easy enough – the sink is over here, it has water; the fridge is over there, 12 feet away, and it needs water. Obviously, I just need to split the incoming water line (to the sink), and route a pipe to the fridge, much like using a splitter to watch cable on two televisions.
Apparently, however, the rules of plumbing are not so obvious. Piping comes in different materials: copper, PVC, galvanized steel, and flexible plastic. Pipes also come in different sizes, and different pipe brands measure size in different ways (inside diameter vs outside diameter). Piping threads also come in different styles. Furthermore, to connect any 2 pieces of pipe (type + brand + threading + size + gender), there’s an equally specific type of connector. Literally, because of all the different combinations, the odds are against you.
And I dare you to find a clear, consolidated explanation of how all this works! The rules of plumbing are available in piecemeal across the web. There is no plumbing bible.
Frameworks
Plumbing is a ‘framework’ for solving water problems, and this framework provides a set of rules and tools. It is useful to understand what sort of problems you can solve with this framework, especially if you want to save money here or there. It took me half a day to get the ice machine working, not including 3 trips and 4 hours at Home Depot; but now I’m empowered for imperfectly solving certain types of plumbing problems.
Software development is a framework for solving digital problems, and this framework has rules and tools. Learning about coding, however, is not the same as learning to solve problems with code. Learning to solve digital problems with code, like learning to solve water problems with plumbing, takes time and dedication, with mistakes along the way. It’s empowering to understand the tools, but it’s important to remember it takes experience and engaged thought to use those tools to solve problems.