Friday, June 20, 2008

Speed Coding

One of the more interesting analogies I've seen recently in programming practice is the equating of programming, a mental skill, with a physical skill (karate, painting, etc). This has been expressed as the Code Kata, Code Kumite, and as Software as Performance Art, among other examples.

This idea get the Ninja Seal of Approval(tm). I wish I practiced it more often. Normally, a developer will do this when learning a new language - we take a problem we've done before, and redo it in the new language, honing the program with our experience. We less often work the improvement within a language we already know - improving the performance or the storage, or simplifying it.

For some of us, the projects we are working on have sufficient growth to allow us to improve the speed or memory usage as part of the routine software maintenance. If we don't get this, perhaps we should think about these drills in programming as part of our mental exercises.


Technorati Tags --
, , ,
HTTP

Programmer Macho

Programmers are as competitive as anyone else, but since much of our work is mental, and therefor difficult to judge at a glance, we look to what we used to build the system as the criterion for success.

Of course, being the fractious sorts that we are, we all are using different yardsticks. Some judge by the age of the language, or the esoteric-ness of the language, or the purity of expression, popularity, or even the proximity to machine code.

We have our art school types, who champion languages that nobody else uses, and drop them when they become "common", and our Utilitarianists - the best language is the one that more people are using.

We often consider the things we know best as the standard, and other opinions be damned.

Some of it is protection of our investment - of time, of effort, of mental space. Some of it is our almost innate urge to put our own 2 cents in, and some may just be truth.

Of course, telling the difference is the trick. Let me know if you have a trick to tell this.





Technorati Tags --
, , ,
HTTP

Sunday, June 15, 2008

Killer (Ninja) Instincts

As quite a few people writing about programming have noted, there is a strong vein of creativity in programming. The feeling when that flash hits your brain is one of the coolest things in the world.

I've always said that programming is weaving with logic - building from thought itself. And so when those insights arrive, its unreal.

After a number of years programming, you start to have a sense of "rightness" about the direction your are taking with code, as this blog post notes. Sometimes it's a vague feeling, and sometimes it's a solid idea. If you get one of these feeling, GO WITH IT!

Every time I've failed to listen to this little voice in my head, I've seen the programming so sour. Typically, at the current stage of my career, it's been architectural issues, but they can be at any portion of the development process.



Technorati Tags --
, , ,
HTTP