In order to fix that bug I had to:
- have a good night’s sleep
- take a 2 hour hike
and then write one line of code.
That sentiment neatly ties up my experiences. To wit: I remember trying to grok this theory that I had, where I (should) be able to write a simple, recursive template parser. It took me so long to just load up the problem into my head (something my favorite coder John Siracusa talks about) so I could think about it. Once it was in my head, the difficulty was turning over this virtual thing, studying it from different angles, to make sure that what I thought was possible was actually possible. My breakthrough actually happened on a walk I took for the purpose of trying to get to a breakthrough.
It seems programming consists of refining your ability to both write and step through logic in your head, until you are able to get through a couple of iterations of improved mechanics before you ever sit down and start pecking out lines of code. It is analogous to the process of learning to write: first learning vocabulary, rules, idioms, techniques, exceptions to all of those. Then, the painful process of grinding out rudimentary and unsatisfying prose. And finally, writing something with which you are moderately satisfied. And another part of the analogy: when you code, you work with the world’s most ruthless editors: compilers. When your code fails the expectations of the compiler, it does so in the most spectacular, unpredictable ways.
Comments
Mykala
Both?
Ha. I kid. I would not discount the sleep deprivation as a possible contributor…
Alexander Micek
Both. Which reminds me of a perfect summary of what it is like to code, in this tweet from Pixar guru Dr. Wave:
That sentiment neatly ties up my experiences. To wit: I remember trying to grok this theory that I had, where I (should) be able to write a simple, recursive template parser. It took me so long to just load up the problem into my head (something my favorite coder John Siracusa talks about) so I could think about it. Once it was in my head, the difficulty was turning over this virtual thing, studying it from different angles, to make sure that what I thought was possible was actually possible. My breakthrough actually happened on a walk I took for the purpose of trying to get to a breakthrough.
It seems programming consists of refining your ability to both write and step through logic in your head, until you are able to get through a couple of iterations of improved mechanics before you ever sit down and start pecking out lines of code. It is analogous to the process of learning to write: first learning vocabulary, rules, idioms, techniques, exceptions to all of those. Then, the painful process of grinding out rudimentary and unsatisfying prose. And finally, writing something with which you are moderately satisfied. And another part of the analogy: when you code, you work with the world’s most ruthless editors: compilers. When your code fails the expectations of the compiler, it does so in the most spectacular, unpredictable ways.