Posts filed under 'Personal Development'

Of Coders, Professional Programmers, Martial Arts and Ginger Cats

Reggie, My Ginger CatDavid Blix at NetFX Harmonics posted this article, Coders and Professional Programmers, about a month ago and it came to my attention via DZone last week. I had posted a comment on his web site mildly critical of his point of view but he decided to moderate it out and not show it on his blog, as is his right, just as is it is mine to extend my comment into a blog post of my own.

The main part of his post that I disagreed with was his suggestion that to become what he calls a ‘professional programmer’ you have to engage in a bit of mental self-flagellation as he describes here:

At this same time I realized that I really, really wanted to be a professional programmer and not a coder in any way. So, I said goodbye to Visual Studio and took back my EditPlus to do all my .NET work. I was not about to rely on Intellisense to do my work for me and already knew the danger of learning a new technology by error messages. For the next year I deliberately did all my development without color syntax and without Intellisense. I’ve never had any respect for “drag-n-drop” property developers, so I never used the designers anyhow, but now I wasn’t even going to let Intellisense help me either.

And here’s my original comment:

I like some parts of what you had to say but I have to strongly disagree about not using the Visual Studio environment to code and not relying on online resources to assist you. To do so handicaps your ability to learn and produce.

I dealt with one contract ‘coder’ who insisted on doing things “the hard way”, using a text editor rather than the IDE and not using all available help resources like you described, and I had to let him go. The problem was that he was too slow as compared to the rest of the team and his code was often poor in comparison.

I agree that internalization is the goal but I don’t see punishing yourself as the way to achieve it. Doing so reminds me of the ginger cat in this martial arts parable:

David also seems to place great stock in tests, like the 70-536 (Microsoft .NET Framework 2.0—Application Development Foundation) test. It’s his opinion that one should not be a .NET developer unless they have memorized huge amounts of trivia. My disagreement here isn’t with learning about the Framework, one should. It is with cramming on a lot of trivia temporarily into ones brain with the mere goal of passing a test or two. This is what most people do and what is encouraged by this money making enterprise. The ability to pass a test and internalization of skills are two very different things.

As I said in my comment, his approach reminds of the ginger cat in the classic martial arts parable, The Cat’s Martial Arts Assembly. In this tale, told by Taisen Deshimaru, several cats tried to catch a particularly tough rat and failed while a wise old black cat caught the mouse with seemingly no effort. The cats meet to discuss with the old black cat why they couldn’t catch the mouse. You will want to read the whole thing to get the full context but here’s what was said about the ginger cat:

Then the ginger cat spoke: “I am enormously strong, I am constantly exercising my ki and my breathing through zazen. I live on vegetables and rice soup and that’s why I have so much energy. But I too was unable to overcome that rat. Why?”

The old black cat answered, “Your activity and energy are great indeed, but that rat was beyond your energy; you are weaker than that big rat. If you are attached to your ki, proud of it, it becomes like so much flab. Your ki is just a sudden surge, it cannot last, and all that is left is a furious cat. Your ki could be compared to water pouring from a faucet; but that of the rat is like a great geyser. That’s why the rat is stronger than you. Even if you have a strong ki, in reality it is weak because you have too much confidence in yourself.”

Ki in the context of discussing programming could be considered the internalization of skill as David mentioned. My point is that it is easy to become too attached to a specific skill or language and to become prideful and overconfident about it. There is also the problem of becoming prideful about how you learned it, ie “living on vegetables and rice soup”. Sooner or later a ‘rat’ of a project will come along and defeat you.

As anyone who’s programmed for a while knows, things change. If you spend a lot of time learning the trivia associated with .NET Framework 2.0 it will become useless to you in a few years time. You may find your career stagnant because you’ve become pigeonholed into being an useless expert in an old technology. Many expert level VB6 and FoxPro programmers have found themselves in this position.

However, if you learn how to program where you can easily adapt to any language you encounter you’ll usually do well. As Bruce Lee said, “Don’t get set into one form, adapt it and build your own, and let it grow, be like water. Empty your mind, be formless, shapeless — like water. Now you put water in a cup, it becomes the cup; You put water into a bottle it becomes the bottle; You put it into a teapot it becomes the teapot. Now, water can flow or it can crash. Be water, my friend.” When you’ve truly internalized programming as David suggested this is the state you’ll be in.

Share This Article: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • Reddit
  • StumbleUpon
  • Technorati
  • DotNetKicks
  • DZone

6 comments September 16th, 2007

Next Posts

Visit Me At My New Site, Programming In C#

Most Popular Articles

Highest Rated Articles


Most Recent Articles


 Subscribe in a reader

To subscribe by e-mail
Enter your address here

Delivered by FeedBurner

VB Opportunities