Programming, specifically the intelligent design of such constructs, has always been at least twenty percent mimicry. Someone shows us how to write an efficient binary toggle and the practice stays with us. Learning how to find exclusive results between two SQL tables can shave minutes off of execution time, and your boss will certainly be impressed if you boost throughput by 85%.
Along the road to enlightenment, I’ve had some superlative teachers, professors, and friends instruct me on the best ways they knew to implement everything from Levenshtein Distance to Diffie-Helman compression, from polygon intersection to Relational Division. These lessons weren’t always apparent, and hardly ever enjoyable, but the knowledge and satisfactoin at the end of the project often put me years ahead of self-study.
Several times, I’ve been asked questions to which I’ve had absolutely no idea as to the solution. Yet, right then and there, an answer was demanded of me. It’s difficult and embarrassing, but situations like these are more about the reasoning than an off-the-cuff answer. This is an important concept, since it is a large step on the road to Doing Big Things.
Such occurrences were relatively commonplace, and for a long time I couldn’t figure out why someone looking to help me was asking a question that I either obviously had no business answering, or that was completely over my head. Then, just a few days ago, I stumbled onto the concept of zen. Zen, for want of a clearer definition, is the internal feeling and state of mind which is, in rudimentary forms, omniscience about a subject. It is the absence of bounds or form of knowledge in an area of concentration or meditation.
Zen and the art of programming was an interesting thought experiment, and until then I had no idea zen was being taught to me the entire time.
A mondo is a component of zen scripture where the roshi (`roh-shee) [teacher] asks the student a question, demanding an immediate answer. Since this question is often complex or multi-part, the process of developing the answer is more critical than the answer itself, akin to the Biblical scripture of teaching a man to fish. Had the pupil regurgitated some decade-old algorithm learned in Intro to VisualBasic doesn’t further the understanding of the problem at hand. Just because you may have learned bubble sort first doesn’t mean it’s the best choice for your production code base. A mondo would solve whether insertion sort would suffice instead of spending two days of company time implementing heap sort; and, more than that, it should help you realize the patterns in the future to prevent the same questions from needing attention again.
This insight, the ability to anticipate or at least keep pace with the business’ needs, is one of the most efficient ways to show off one’s skill in a profession. Especially now, when employers need to “cut off the fat” out of their budgets and reign in on ambitious funding of pipe-dream projects to stay competitive.
And there’s no reason you shouldn’t want to continue to learn. If nothing else – and trust me, there’s plenty else – you will bring those skills back to the workplace every day, inspiring those around you and impressing your superiors. That’s not even counting the personal satisfaction of reasoning through an enigma and coming out the upper side with a better solution or clearer understanding of the problem.
Dude, your philosophy is showing.
Nice post, Zack. I find it particularly thought provoking. Mondo is a bit scary. If a zen master doesn’t receive an answer quickly enough from his student, it’s not uncommon for him to beat his student until some sort of answer is uttered. This seems unnecessarily brutal to me. Perhaps an occasional thump to the head from one’s teacher isn’t such a bad thing; however, as I understand it, zen masters often beat their students. If we leave out the beatings, Zen Buddhism seems pretty neat. I think you hit upon a chord of that neatness in your entry.
-Sean
I’m not well versed in the ways of Buddhism by any stretch of the imagination, but the concept of having no bounds to the knowledge on a subject is extremely enticing.
I would have to agree that the beatings are unnecessary, and I wouldn’t want that to be a part of my education. However, Wikipedia defines mondo thusly, and as a concept of advancement, it’s certainly worth entertaining. Learning without scripture means learning without form strict form, another component of zen.
Or is zen the practice of forgetting what you thought you knew, so that new knowledge can come forward?
I’m not so sure about the dynamic purging of existing knowledge for the absorption of new, I don’t think Shiva was the founding goddess of the concept; but perhaps the allowance to forget or blur memories which are of lesser temporal importance to make way for more adept, instinctual and comprehensive intellect.