The gap between understanding and implementation
As I may have mentioned, in my non-pairing time in Chicago, I’m working on building a server in Java. I’ve encountered a real gap between understanding what a server does and understanding how to build something that does those things.
For example: A server listens on a port. But what does that actually mean? As far as I can tell, a port is just a process, an orifice on a computer that can be connected to, written to, and read from. Port numbers are assigned to make them distinguishable from one another, so that we can easily talk and program about them. And what does it mean to listen at a port? I’m reasonably sure that when a port is ‘listening’, this means it’s waiting for something outside of itself to try to initiate a process at a given port number.
Writing that out was actually pretty helpful. Even though I’ve been working on this here and there for days, I had to do some googling once I sat down to write this blog post, since articulating an idea requires a precision that my brain doesn’t always demand when thinking generally about a problem. I think that’s where the gap between ‘understanding’ and implementing comes from. There is an even bigger gap between these two things, because building something requires an even greater degree of specificity. In that way, maybe we only deeply understand the things we’ve taken a crack at building ourselves.