Hacker News new | past | comments | ask | show | jobs | submit login
The Master, The Expert, The Programmer (zedshaw.com)
195 points by azharcs on Dec 27, 2009 | hide | past | favorite | 104 comments

"In contrast there are masters in the martial arts who learned their art as a means of survival and became masters in a realistic and hostile environment. We don’t have anyone like this in the programming profession, or at least I haven’t met any."

I think maybe Peter Norvig would qualify.


There are many people who I think qualify. Ken Thompson, Steve McConnell, Brian Fox, and Larry Wall would be just a few on my list.

Jamie Zawinski. Jeff Dean and a lot of the other early Google employees, many of whom aren't well known outside the company. Dave Cutler, Steve Wozniak, Doug Cutting, John Carmack.

Bill Joy

"As a UC Berkeley graduate student, Joy worked for Fabry's Computer Systems Research Group CSRG in managing the BSD support and rollout where many claim he was largely responsible for managing the authorship of BSD UNIX, from which sprang many modern forms of UNIX, including FreeBSD, NetBSD, and OpenBSD. Apple Inc. has based much of the Mac OS X kernel and OS Services on the BSD technology.

Some of his most notable contributions were the vi editor, NFS, and csh. Joy's prowess as a computer programmer is legendary, with an oft-told anecdote that he wrote the vi editor in a weekend. Joy denies this assertion.[2]"


Jamie Zawinski, whom Peter Norvig called the best programmer he ever hired.

I would love with(hell, under) Carmack for a year.

I hope you're missing a second verb there.

Ah, yes - work :)

Not that there is anything wrong with wanting to love with/under Carmack...

My vote would be Arthur Whitney: http://queue.acm.org/detail.cfm?id=1531242

+1 he always sounds sound

Ward Cunningham, Don Knuth (mentioned in the OP) and Linus Torvalds also qualify, as well, I think. Note that I'm not simply listing out random famous software people. I don't think Martin Fowler qualifies, for instance.

The OP brought up and specifically disqualified Don Knuth because he had freedom as an academic that working software developers don't. The example given was his ability to take off 3 years to work on TeX.

By those criteria I consider Linus Torvalds likely to be disqualified as well since he made his reputation while using the freedom he had as a student.

Ward Cunningham would be a good addition to the list.

I wonder how Don Knuth would fare writing something like TeX under time constraints. I suspect that most programmers would prefer to have unlimited time to make things "perfect" rather than be under pressure; just because Knuth had the liberty to take that option doesn't mean he wouldn't do as well as (if not better than) anyone else on a restricted schedule.

In my experience, getting anything done when you have unlimited time is a challenge upon itself.

I second that. I also think that a person who quitted using email in 1990 for not loosing time for his studies, wouldn't have unlimited time for writing Tex.

Before I studied the art, a punch was just like a punch, a kick just like a kick. After I studied the art, a punch is no longer a punch, a kick is no longer a kick. Now that I understand the art, a punch is just like a punch, a kick is just like a kick. - Bruce Lee

It's from an old (and famous) Zen saying:

"Before I studied Zen, mountains were mountains, and water was water.

After studying Zen for some time, mountains were no longer mountains, and water was no longer water.

But now, after studying Zen longer, mountains are just mountains, and water is just water."

Excellent post!

Zed, if you read this, what did you take away from Wing Tsung? I've studied many of the martial arts you listed, and, those are very accurate analogies IMHO. My Sifu used to describe Karate punches like a baseball bat, swinging down swiftly. Gung Fu punches were like a chain, with a big metal ball on the end, swinging smoothly and softly, with all the Qi concentrated on the strike. I liked that one. All I know is Wing Tsung is damn fast, and things happened before I knew it ;)

I am too a lazy martial artist, and can proudly say that with my kids in my lap, and a beer in my hand. I swear I'm going to teach them someday, so, it will come back to me then. Round 2!

Well, I had injured my shoulder years ago in a car accident, and for some reason many of the techniques in Wing Tsung irritated it and messed it up. I eventually had to quit and even still I can't really turn my right arm like I used to.

So, I didn't get as much out of WT as I'd hoped. I would say that I learned quite a lot about soft-yet-powerful punching that can cause damage but take very little effort. I also think I learned about the idea of a punch and a block being the same thing, or that there just wasn't a need to have a difference between them.

I thought MMA had killed all the traditional Martial Arts. I'm not aware of evidence that any martial art is effective outside of this list: Muay Thai, Wrestling, Boxing, Jiu Jitsu, and Judo. If they are effective, why aren't there any good MMA fighters using them? The Kung Fu guy got brutally beat down at UFC 1.

Now, you can argue that all the rules of MMA make some of the death-blow containing martial arts less effective. But there were few rules for the first dozen or so UFCs when Royce Gracie was choking everybody out with his Jiu Jitsu.

Yes I am aware of Lyoto Machida. But one good fighter does not mean that karate is an effective style, and most people who watched it thought the Muay Thai fighter Mauricio Rua won that match.

Wearing white suits, dancing around and making noises turns out not to be very good training when it comes down to the business of punching people in the face. I wouldn't be too intimidated facing some traditional "master" across the ring. And if you disagree with me, there are people who will pay you plenty of money to prove that your pet style works in front of a paying audience.

You're missing something basic. In any particular environment, some techniques will be more effective than others. Different martial arts are good for different situations. What works in MMA won't work in other environments, and vice versa. (Not to mention the martial arts that exist for other reasons like meditation and sport.)

For example in the MMA environment, Brazilian Jiu Jitsu is very effective with its emphasis on taking the fight to the ground, then choking people out. That works one on one. However in a bar fight with 2 guys, taking one to the ground leaves you totally vulnerable to the other. Bad idea.

In that situation you'd be much better off with something like Krav Maga with its focus on quick disabling moves, defense and escape. However Krav Maga uses a lot of dangerous moves that are either not allowed in MMA, or won't work against an experienced opponent, so it will never succeed in MMA.

Therefore nobody in MMA will use Krav Maga. Conversely no police department is going to be in a hurry to switch from training in Krav Maga to training in BJJ. The fights happen in different situations with different rules and different techniques are optimal.

I very strongly recommend the book Meditations on Violence by Rory Miller. One thing he mentions is that his police department tried BJJ and found things like, in BJJ you want to pin your opponent on his back because it looks good for the MMA crowd, but in police work you want to pin your opponent on his front so you can then handcuff him.

But the really interesting bit of the book is in the description of the mindsets of different fighters. Cheating has no meaning in the mind of the true predator. Martial arts, even BJJ, designed for the ring, can't be transferred to "real world" scenarios (the author has worked in SWAT and as a prison guard) not just because the techniques aren't suitable, but because the mindset is wrong.

"Cheating has no meaning in the mind of the true predator."

When your safety or life is on the line, there is no longer any such thing as "fighting dirty", only fighting.

It goes for both sides. If you're a cop or a criminal, all you want is a result, which means bringing overwhelming force to bear at the earliest opportunity. There's no "fair fight".

I have a friend who fancies himself a bit of a martial artist, thinks he can handle himself in a fight. Look, I said to him, this is how a fight in a pub goes down. You go to the gents, and 5 guys pile in after you. None of them knows any martial arts, but it doesn't matter. They'll all just drag you to the floor, then stamp on you 'til you stop moving, then they'll go back into the bar, quietly finish their drinks and leave. I don't think he believes me, nor can he, he's got the martial arts mindset too ingrained.

This knowledge can keep you safe too. The last time I was threatened was by some kids (20 at the oldest) in a bar. Middle-class "alternative" types, drinking cocktails, are not a threat, to anyone. They don't even know that they don't know how to fight (neither do I really, but I know it!) It's all posturing. Didn't impress me, didn't impress the girls they were with either, why bother?

recommendation seconded. Miller smashes a number of idols.

No, I don't think I missed that point at all. Both the post that you are responding to and another one I wrote below indicate that the proliferation of rules in MMA designed to protect the safety of the fighters and to allow the sport to remain legal in the US have harmed its previous status as a perfect laboratory for unarmed combat, though it remains the best we have. Also, MMA is unarmed and one-on-one, which does not accurately depict all combat settings.

However, old school MMA and Brazilian Vale Tudo had/have very few rules. It would be easy for a master of a useful art to make his name in such arenas. Even today, I see no obvious reason why martial arts such as Karate, Kung Fu, and Capoeira couldn't be applied under modern MMA rules except for the fact that they are not effective.

It is hard for me to imagine that a truly superior unarmed martial art could exist without having some influence on MMA. No art relies so completely on groin strikes and eye gouging that its central lessons could not be adopted under the rules of the sport.

Arts that claim to be too deadly or too dirty to use in competition (such as Krav Maga) may well be useful. However because they are too dangerous or dirty, they can't show us any evidence of their usefulness. The burden ought to be on the teachers who sell expensive gym memberships to make the case that their art is useful. But there appears to be an audience for martial arts that favors them in inverse proportion to the extent that they have demonstrated their usefulness in actual combat. It is as if some people value the mystique of martial arts above all and are afraid of mixing it up with a real opponent. They want the self-esteem and ceremony of wearing a colored belt and looking good in the mirror, but not the pain and sacrifice of getting actually punched in the face.

Krav Maga suffers from the additional drawback of being a popular fad martial art, so the average quality of a gym varies very widely. Otherwise, I see nothing obviously wrong with the philosophy of the system. At least they put on padding and hit each other at full speed, which is essential to any martial art worth the name.

There is certainly room for martial arts designed to be taught to little old ladies or used under unfair situations. However, the proof of their effectiveness will always be skanty, limited to hypothesized bar situations and anecdotes. Meanwhile, Jiu Jitsu fighters prove the effectiveness of their art by choking people unconscious in a cage fight. Muay Thai fighters prove it with the blood of their opponents. The strength of the evidence in favor of arts used in MMA is much higher than evidence for arts that claim to be useful outside of an MMA setting.

On a somewhat related note - Alistair Overeem and his brother got into a scuffle with six security guards in a Dutch nightclub. They won.

I agree that quality is an issue in martial arts, and some are undoubtably ineffective. (Aikido anyone?) Also many that are not totally ineffective were not exactly designed for maximum effectiveness. For instance Capoeira. It is designed for a combination of fighting and dancing in friendly competition to music. Is it a surprise that it isn't the most effective way of hurting people?

Anyways the design goals of Krav Maga seem to me to be to make something that is easy to teach quickly to groups of people that is reasonably effective in nasty situations those groups are likely to encounter. Groups like military and police. The goal isn't to make great fighters. It is to help a police recruit with only 120 hours of training survive the guy who pulls a knife while resisting arrest. As long as it does that, it has succeeded. And right now most police departments and multiple military forces are convinced that it is good for that.

In terms of teaching MMA central ideas, I'm not sure how it could possibly do so. Since Krag Maga is derivative of virtually everything else, it doesn't really have many original ideas. Its focus on dirty strikes is not allowed in MMA. And professional fighters don't particularly need their lessons carefully broken down for ease of learning.

On your related note, I'm not sure why you thought it relevant. To make my point I talked about the MMA style that I thought would be least useful in the hypothetical bar fight. That doesn't mean that all MMA styles are going to be ineffective against multiple opponents. For instance kickboxing offers a lot of ways to take someone out of a fight fast without leaving a big opening for his friend to attack you. Therefore it is unsurprising that a pair of top kickboxers took out a much larger number of opponents in a fight.

For what it's worth, I do believe that Krav Maga and similar styles are potentially the most useful of any martial arts not used in MMA, for the reason that they fulfill a different niche (fighting in non-fair situations), as you state. It is very hard to compare such styles objectively, since you aren't able to practice crippling/disabling blows or fighting with weapons at full speeds unless you are willing to rapidly lose training partners. Thus we are left with endorsements, but that is the nature of the beast. Perhaps some military or police force could teach different groups different methods and measure who performs the best, but even then there would be too many variables to isolate.

However, for arts that claim to teach one-on-one unarmed combat, including all the ninja/master/sensei arts, there remains an effective proving ground and their absence from it is telling.

Somehow I think we're in basic agreement. How disappointing, it was shaping up into an interesting argument.

Anyways to answer your question about why less effective arts are popular, I think you already gave the important part of the answer. To be effective, the style must involving training at speed with real and continued contact. (Having protective padding is OK, but you need the contact.) If it doesn't involve that, then when you actually get hit in a real fight you are going to be in trouble really fast.

But your random Joe who wants to get in shape and be able to protect himself in the unlikely event of a real fight doesn't want to spar at speed with real and continued contact. And so will gravitate to the most impressive looking martial art that doesn't scare him.

As you said, if you're going to take a bunch of guys and gals with no interest in sport fight and put them through ~100 hours of training in how to defend themselves in real world situations, then MMA fighting is probably not ideal.

However, when I hear young adult males talk about how badass they are for training under some 19th-degree black belt ninja sensei, I get annoyed. I'm not afraid of their sensei. I'm afraid of boxers and amateur wrestlers.

Aikido is extremely effective, but its goal is not winning a fight, but to protect against an opponent. You are just using the same limited measure (winning a competitive combat) for all martial arts.

Aikido is extremely effective at protecting against the kinds of attacks that Aikido practitioners practice with. However those attacks are launched by people who are not really told how to hit, whose muscle memory is all geared towards the experience of throwing a punch then getting thrown all over the room. Those techniques aren't going to help you much against someone who is throwing a proper punch at full speed. You simply won't react fast enough, their reactions won't match your expectations, and (very importantly) the first solid hit they get on you will leave you in shock because your body is not used to it.

Seriously, if any of the ideas were at all helpful in real fights, they would be borrowed by other martial arts. But they aren't and haven't been.

Aikido is excellent form of exercise and entertainment which might help you when faced with someone with no training at all. Thinking of it as anything else could be a dangerous mistake.

> Aikido is extremely effective at protecting against the kinds of attacks that Aikido practitioners practice with

This is true of any martial art, when not on a MMA environment.

> You simply won't react fast enough, their reactions won't match your expectations, and (very importantly) the first solid hit they get on you will leave you in shock because your body is not used to it.

Again, nothing new here. If you are only practicing limited maneuvers, no martial art is of any advantage. True Aikido masters know how to handle the unexpected.

> Seriously, if any of the ideas were at all helpful in real fights, they would be borrowed by other martial arts

They have been, but I agree that they are not an advantage when you want to win a frontal combat. That is why the martial arts mentioned above are considered the "winners".

Then again that is true regardless of what martial art you practice. Without people who are capable of giving solid, well intentioned strikes you will learn little of any practical use. Although the likelihood of finding such people probably does vary by art, and having studied some Aikido besides the teacher and some of the more advanced students, most did not know how to (including myself).

Does this (the mma post) deserve so many downvotes? (-3 at the point of writing)

I think it makes an interesting point. MMA fighters seem (I have limited knowledge here, I practiced Karate long ago and am seriously out of touch)) to focus on Muay Thai, some form of Wrestling and Boxing - . The "effectiveness" of various martial arts in the ring (or the street!) could be an interesting discussion (especially since we seem to be making a direct comparison to the martial arts to explain phenomena in programming). I am fairly sure such a question would be fundamentally unanswerable, but hey we discuss fundamentally unanswerable questions (like how to measure programmer productivity!) all the time here, and HN discussions are much richer than on other forums.

"If they are effective, why aren't there any good MMA fighters using them? The Kung Fu guy got brutally beat down at UFC 1."

This sounds like "If lisp is so cool where are all the killer programs written in it?" ;-)

It frustrates me that evidence is now available on the effectiveness various styles of unarmed combat but so many people seem to ignore it. There is a lot of placebo product sold in the martial arts industry that is designed to make students feel good about themselves while falsely claiming to be effective.

The advent of MMA gave us hard evidence on which martial arts were real. If you can't grapple (wrestling, Jiu Jitsu, or Judo), then you have no business being in a fight with someone who can. The styles of striking that emphasized full-speed sparring and competition (western Boxing, Muay Thai) appear to be much more effective than traditional styles based on learning various forms and katas.

The very rule changes that allowed MMA to stay legal in the US have corrupted its use as a pure laboratory of combat. However it is still the best legal experiment for the testing of martial arts. There is nothing stopping a Nth-degree blackbelt from stepping into the cage to prove the validity of his discipline, except for Thai boxers accustomed to kicking people in the face. So far, the challengers are few (again, except for Lyoto Machida).

"The advent of MMA gave us hard evidence on which martial arts were real."

I see your point, but playing the devil's advocate here, fighting in a ring under rules is still very different from a fight on a street (no "rounds", no referee, multiple opponents, no holds barred, weapons, uneven lighting and general chaos). Japanese martial arts may have been designed to deal with fighting armored swordsmen on a battlefield, for example. So the "framing" of MMA may just show the effectiveness of various styles within that frame. Still useful, but not the ultimate lab (as you point out).

I've seen very few unarmed fights on the street that didn't end up as a ground fight in the first 30 seconds. This is the specific criticism of styles like Brazilian Jiu-jitsu that emphasize grappling and holds over striking: real-world street fights rarely employ strikes refined in sparring sessions or exotic weapons.

"I've seen very few unarmed fights on the street that didn't end up as a ground fight in the first 30 seconds"

you are talking about one on one fights? The few (street) fights I've seen were gang on gang or gang on one Any one grapplng on the ground in those situations would probably have their heads kicked in in the first minute (This isn't to vilify acquiring skills in groundfighting/grappling. Both are useful skills to have in a well rounded fighter. I would be wary of a style with zero striking however).

The best strategy might be(as with programming) learn many styles (languages), one per important paradigm, and mix and match as the situation (project) warrants)

Studying traditional Martial Arts is not only for fighting. In fact I'd go so far as to say it hasn't been for fighting since the invention of firearms - most martial arts focus on other aspects now.

I think your focus is too limited. It's like saying "I thought modern hiphop had killed all traditional music styles," when encountering somebody practicing a violin.

Probably in most cases, people attend their local Karate or Tae Kwon Do school as a form of exercise that's less boring than doing 30 minutes on a treadmill. In many of those cases that might be the only exercise they get. Lots of people study styles because they like how they look, or they prefer a meditative aspect of them, or they enjoy the storied history of the style or really want to learn how to handle a spear or something. Learning to beat an opponent in 1 on 1 combat is merely a single aspect of the Martial Arts.

Interestingly, this is something that's even showing up in other modern non-MMA martial arts that are pretty well tested in combat. http://en.wikipedia.org/wiki/Jailhouse_rock_(fighting_style)

I actually think MMA styles would be more appealing to the public if they learned and promoted the non-combat aspects of martial training (discipline, fitness, respect your parents, etc.). Right now, outside of MMA circles, those styles are largely viewed similarly to boxing -- rough sports for rough people. Not everybody wants to be a rough person. Some people just want to escape their life for 45 minutes, put on a costume and kick their feet a bit.

>"Not everybody wants to be a rough person. Some people just want to escape their life for 45 minutes, put on a costume and kick their feet a bit."

If that is the case, then here among bright people we can acknowledge the reality behind it and ignore the BS. There is fantasy and escapism in traditional white-pajama martial arts marketed towards people that want to look tough but don't want to risk actually getting hurt.

I have to agree with you though, that there are far too many people that try and look tough, who walk around saying "I have a black belt in Karate" or some such, and couldn't make it through a Tuesday night bar fight.

The reality behind the "other arts" is that they were, at one time, highly effective in a particular milieu for fighting and are no longer in that milieu. Nobody should go and learn Kendo or Kumdo or some other fencing thinking that they are now a badass and all they need is to find a 20-30" long stick to defend themselves. But Kendo dominated sword fighting in East Asia for hundreds of years. The same as nobody should step into a strip mall Tae Kwon Do school and expect to learn unarmed combat useful for fending off pirates and concluding dynastic wars.

I've heard several times that "well this is a real hard core school, like in Korea/Japan/China/Israel/Brazil, they really hit you here!" B.S. If somebody isn't trying to kill you, you aren't in a fight. The same hold true for MMA styles, it's just that their "OMG I'm fighting for my life here" is quite a bit fresher in the stylistic memory.

That's not to say that the old styles are out of date, just that they haven't seen real action in a very long time and don't do too well against newer styles in recent action. But, as the styles are catching up again, there are notable exceptions:




Any list of traditional stylists in MMA is incomplete without mentioning the san shou artist Cung Le. Akiyama doesn't belong there because Judo is an ancestor of Jiu Jitsu and squarely in the MMA mainstream. Pat Barry isn't that good, although his weakness stems primarily from having the grappling game of a quadraplegic - his striking is okay.

The only fighter at the top levels that uses a traditional style as his main art is, again, the ever-notable karateka Lyoto Machida. But at first his point-fighting karate style meant that he seldom ever finished his opponent, having a high rate of fights go to decision. Over the years he has managed to adapt it to a more heterodox and more dangerous style. The outcome of the immediate rematch against Mauricio "Shogun" Rua will have a lot to say about whether or not karate can hold its own in a sport dominated by Thai boxers. While Machida won a close and disputed decision in the first fight, he will likely be the odds-makers' underdog going into the second.

In some sense, you are fighting for your life in MMA. The ref stops the fight and declares a TKO when one combatant is no longer intelligently defending himself, i.e. when his life is effectively in his opponent's hands. Suffering real damage and having the mercy of the referee as the only obstacle to departing for the next realm motivates fighters to stick to what is effective.

I'm confused as to what you consider an MMA style (honest question)? Judo, while not terribly new (turn of the 20th century), is a sportified Jiu-Jitsu and is firmly rooted in traditional Japanese styles which is about as traditional as you can get (not Brazilian). Judo was a style for a hundred years before the acronym "MMA" was a twinkle in the Gracie family's eye. I would never categorize Japanese Jiu-Jitsu variants in with modern MMA styles like (BJJ+Muay Thai (which I categorize differently than either pure style on it's own) or whatever the Lion's Den teaches or Vale Tudo). There is something intrinsically different about the modern MMA styles from the old styles (even though they have a heck in a lot in common).

Good call on Cung Le. I didn't count him since I've watched him mostly in pure San Shou bouts before he went MMA.

I think the salient point is that in the modern sense, people go to practice a traditional style, but it's all over-specialized and taken out of context.

The context being that traditionally, something like "Karate" was practiced as part of a holistic training curriculum and not in the singular style sort of over-specialized way people do it nowadays (but much more like how modern MMA trains). A person of the warrior class in whatever society learned a very wide variety of fighting methods, from barehanded fighting, to grappling, to fighting with a pike, a bow and arrow, a sword, from a horse, from on foot, in formation, one-on-one etc. they learned tactics, strategy, command, etc. These people learned to fight from the time they could stand on two feet and that's pretty much all they did all day, every day. You find this same kind of pattern throughout history and across the planet.

But doing something like learning to sword fight today is regarded with mild amusement by most people as not practical and not a serious path to self-defense, yet sword fighting is about as tested and time-honored as you can get. Fighting with swords makes the modern MMA styles look like a 4:00 school yard fight at an elementary school. Musashi for example killed a few dozen people in one-on-one duels, forget some pitiful 15-1 win-loss record in pro MMA bouts or whatever. The Spartans are the stuff of legend, they'd eat somebody like Lyoto Machida for breakfast and the entire Lion's Den for a mid-day snack before lunching on the Gracie Clan and going hungry for dinner unless they happened to march into a Vale Tudo match on their way to the bathroom.

The second point is that almost no MMA stylist is a purist, hence the "mixed". A typical mix is some kind of grappling (BJJ or some such), some kind of striking (typically Muay-Thai) and a bit of a few other things as icing. The point being is that modern MMA is doing nothing new that the traditional "styles" we all denigrate as being unpractical in the modern world have been doing for a few thousand years. I'd be willing to wager that any 17th century member of Japan's warrior class could give a hell of a bare knuckle fight to Brock Lesnar. And that guy most definitely practiced something like Karate. But he also supplemented his striking with a study of some kind of grappling.

Basically the same formula we see today, and have been seeing for time immemorial.

Personally, kendo practitioners taught me how ridiculously hard fighting unarmed against a weapon is - no matter how super talented you are. The teachers that tell you to run away in a real fight have got it correct.

On that note, a JHU student killed a burglar with (I believe) a katana a couple months ago:


+1 for retro usenet nostalgia. This was just like reading rec.martial-arts in 1993. Waiting in anticipation for the first kibo thread.

Sure. Anytime someone wants to bring up the awesomeness of his magic ninja 18th-degree blackbelt sensei who is mysteriously afraid to enter into widely available and legal real combat competitions, I'm there.

Yeah totally. Except there's a lot less ad hominem attacks here :-)

Still, I miss reading Chas and Badger and those guys. I used to (mostly) lurk there a lot in the 90's and early naughties.

What is MMA?

"What is MMA?"

Mixed Martial Arts http://en.wikipedia.org/wiki/Mixed_martial_arts

Not only is that completely unrelated to the article, you're also making a broad category error: karatekas ground themselves in the business of disciprine, not punching people in the face.

If it's not designed for punching people in the face, then it should drop the "martial" from its description and simply describe itself as an "art", like dancing.

It is still martial, because it is related to fighting. Just because the fighting isn't accord to your rules, it doesn't make it non-martial. For example, fighting Kung-Fu style will always be martial art, even if there were "superior" forms of fighting.

Learning to shoot a gun or a bow and arrow or ride a horse is also a martial art.

Sure, those are martial arts. But karate pretends to be a martial art for unarmed combat. If it is not useful for unarmed combat, then it is not a martial art.

Thats somewhat like saying that because an apple has no seeds, it is no longer an apple (as it is missing the primary purpose of an apple). An ineffective martial art is still a martial art.

Is a car that doesn't run an automobile, or a lawn ornament? What we call it is just syntax. The remaining usefulness will be the same.

"if you can’t get fired for missing a deadline then you aren’t a real programmer working in the real world"

I thought the essay was pretty good until I hit that line. I feel like mastering something kind of requires rising above the daily grind. In order to master programming wouldn't one have to be a programmer simply by existence? I, for one, don't consider myself a programmer because I write code for Apple or because I have a degree that says I'm a certified computer scientist. I'm a programmer because I write programs.

Did that line bother anyone else?


If you can get fired for missing a deadline in non-egregious situations, you're working in the real world alright, but as a replaceable cog -- you're a typist, not a programmer.

Firing you means that they're declaring their investment in your thoughts a total loss, implying that they weren't paying you to think (or that you didn't do any of the thinking you were paid for!).

Entrepreneurs have deadlines too.

I interpreted that sentence to mean "If you don't have real-world constraints on your system, you aren't a real programmer." Which I think is true. It's easy to build the "perfect" academic system, exploring every detail until you've got things just right. Problem is, reality tends to bite you in areas that you don't expect (as in, real programmers have real performance/deadline/usability constraints), and those often aren't exposed in an academic paper.

I suspect most of that relates to incompetence. I rarely see unexpected performance issues bite me in the ass. Premature optimization may be the root of all evil, but having a long conversation with the back end database is FAIL.

Most Entrepreneurs are way to young to have the depth of experience to really understand what they are doing. But, they are judged on a separate scale. Twitter design is probably evolving to a reasonable design, and Facebook might be fairly elegant at this point, yet they both started as crap. These entrepreneurs had deadlines but they where not trying to send someone to the moon with the computing power of a watch. Business is about the last hack standing and not creating art, but evolution also works.

I don't think it's incompetence, at least not at the academic/professor level we're talking about. Most people who get to be professors at research universities understand the low-level details of performance quite well.

Rather, I think it's often because the details about how a system will be used aren't clear until the system is built and people actually use it. As you know, engineering involves tradeoffs. It's possible to make one operation run faster by making another slower, or it's possible to make the system easier to use by making them both slower. Academics - and startups - aren't in a position to make those tradeoffs, because they don't know how the system will be used. So they'll micro-optimize along one dimension, but it turns out that people really use the software in a completely different dimension.

Performance under extreme pressure is by definition what sorts out he great from the average in other disciplines: sports, music, performing etc.

If you haven't experienced sport (or similar) at the highest levels you probably won't get how much a few insane minutes can enhance your mastery. It really is a whole new level, where everyone is competing at their peak and you have to greatly improve your level or fail miserably.

This type of pressure & competitiveness just doesn't happen in most business environments, so the degree of pressure to lift your game isn't there.

Well, that was entertaining. Now, back in the realistic and hostile environment of the professional world, I'm thinking up an equally convincing tale of the "master" programmer who, despite much efficiency and cleverness, can't shake the depressing realization that his industry work is about as eventful as that of a janitor or plumber.

so, very eventful?

I've never been a fan of extended analogies as a way of explaining things. At some point you need to understand the subject for itself, and not in terms of something else.

That said I strongly second his point about the value of keeping designs simple. And I have an interesting piece of evidence in support of it.

I just read http://www.amazon.com/gp/product/0321117425?ie=UTF8&tag=... and one of the "facts" that Robert Glass brings up is that a 25% increase in requirements results in a 100% increase in software complexity.

I put "facts" in quotes because the claim is only supported by one study and I have lots of questions around how one would define key terms like "software complexity". However based on experience I am inclined towards believing that something like this is true. If you further believe (as I do), that the source of the requirements doesn't matter, then adding internal requirements about design is going to result in complications.

As a result I am inclined towards simple, clean designs. I gladly introduce polymorphism, abstraction layers, and so on fairly frequently. But only if I see a concrete benefit from doing so. If I am not convinced that this piece of abstraction produces a net win within the context of this software solution, I don't do it.

(For the record I am not a software master by any means. In Zed Shaw's terms I'd be an expert, although early mentoring with the right person kept me from ever suffering from the love of complexity that he pastes all experts with.)

Does anyone else see the whole martial arts metaphor stretched beyond reason here? It's not as if anything in this essay was truly groundbreaking, but was kind of just more of the same stuff.

Or maybe I'm just against any metaphor that leads to a stronger rationalization for the title "Ruby/Python/etc. Ninja"

what he's saying is similar to cockburn's take on shu ha ri, and you might find that makes more sense - http://alistair.cockburn.us/Shu+Ha+Ri (i prefer it - i don't disagree with zed shaw's appeal for simplicity, but i think cockburn's approach shows that simplicity is only possible by passing through complexity)

I'd say that concept is much more on becoming and expert. Actually, he reference "Novice To Expert" at the end of that which should be a good indicator.

But, don't ask me what becoming a master looks like.

sorry if this sounds overly combative, but is there any proof out there that this cockburn fellow actually can program his way out of a paper bag?

as far as i know, there's not.

does that change the argument somehow? the article is more general than programming.

it would make me more willing to expend the effort and time to investigate his theories on programming methodology.

You didn't really read it did you? Your last sentence pretty much proves it.

Bear with me on this, but perhaps he read it more closely than you wrote it!

Do you not see how ripe your metaphor is for a superficial interpretation by the kind of impressionable readers that currently go around advertising for ninja coworkers? A master would have addressed that more directly in the essay: the 'frustrated expert' vignette is good, but should be expanded so that every affected ninja comes away with the realization that they are a moron. You can't leave any room for aspirational mastery. NONE.

I am ignorant, but not a moron, and aspirational mastery excites me. What is your solution?

I was referring to the "X as a martial art" metaphor in general. Not your piece in particular. I should have been more clear.

This whole "Listen to how much Programming is like _____" thing is overdone. We're scientists, engineers, craftsmen, painters, artists, etc. and now we're also martial artists. I just don't understand why we can't be happy with being Computer Programmers.

And I understand that a rational criticism of me saying this is "well obviously this guy isn't exploring the deeper meaning of what's said here," but why does there need to be a deeper meaning behind this all? It just seems so meta.

People learn by analogy.

"I just don't understand why we can't be happy with being Computer Programmers."

Because if you ask 5 people you'll get 8 different descriptions of what "Computer Programmer" means.

Which is fine, because it leads to discussion, and that's where analogy and metaphor come in handy to explain a point of view.

The master programmer is to the novice programmer what the Martial arts master is to the student.

The master moves with little effort and achieves his ends efficiently and easily.

This is not to say that a programmer is a kung-fu expert, instead that mastery is about efficiency.

Between master and student is a third step called "expert" where the student has the required skill but does not yet possess the efficiency mindset. I too have witnessed skilled programmers doing far more work than necessary for no reason.

I think it's foolish to refrain from making an argument or analogy because others might misinterpret or misuse it.

Programming is an art and a discipline like martial arts. Showing off, like Zed says, means you are still learning.

I studied Tang Soo Do. My master was a sixth-degree black belt. Most non-karate practioners don't know that for each successive black-belt degree you must wait a corresponding number of years (e.g. to test for third-degree, three years after second degree). If you like cross-fit/intensity training/cardio, there is nothing like sparring (with protective pads) for two minute rounds. One of the most intense competitive moments I ever witnessed was a sparring match between a 40-something CEO and a 20-something natural athlete. I give a lot of credit to Zed Shaw for learning other martial arts disciplines, like languages, each are the same at the core but physically different enough that you have to study hard. The green belt is the weed-out period - to get there requires lots of training and lots of classes. If you make it to green belt, you can become a black belt. But, as my Master was fond of saying, the color of the belt does not matter - a belt is just something of external significance. Becoming better at martial arts, like programming, is all about focused practice, increasingly correct repetition and practice (with a big social aspect, a peer group who wants to get to black belt).

I could jump pretty high and had good flying kicks. To the envy of others and pride of myself, I loved flying through the air and executing kicks. At a post-green belt test board break, I was so excited that I launched myself through the air at the two students holding the two boards. I jumped so high that I missed the boards and my height was such that I missed the CEO's face by mere inches. Almost certainly would have broken bones in his face, but didn't. So that's my SOB anecdote about showing off and not knowing how to control yourself properly.

If you ever get a chance, go to a friend's black belt test. Depending on the discipline, it may be as short as a long morning or a whole day. A marathon of traditional forms, weapons work, and sparring and endurance. The best part is watching the higher-level belts test (by seniority, later) and the kids there with their eyes a mixture of respect and awe. Some parents, yes, treat karate classes as day care but no kid leaves karate class without learning more about personal responsibility.

Not just karate, in other physically-demanding areas, you begin to push the mind harder. "A sound mind in a sound body". And pushing the mind harder is what makes us grow. It's a cliche but you can't understand the passion people feel for something until you try it for yourself. As the immortal Ken Kesey said - 'they may know where it is, but not what it is'. I love being part of subcultures (salsa dancing, karate, triathlon) that have only experience and a willingness to start/fail/learn as a barrier to entry. Sort of like what the News.YC community is encouraging me to finally start doing. To stop worrying about how good at iPhone/XHTML/mobile app development I may be and to just start putting it out there.

OT (sort of), but have any recommendations for places to watch video of people testing like this? I could search YouTube but thought you might know better ...

Just go to your local martial arts school and ask them if they have any black belt tests coming up. In most disciplines the black belt tests are comprehensive and gives you a great overview of the style. Typically they cover all the forms they learned up to that point, some sparring, and if the style does board breaking they'll do some of that.

Some styles don't quite follow those patterns, but can be entertaining to watch anyways. The Akido black belt tests are like watching a violent dance.

My personal preference is to go watch a black belt/sash test at a local Kung Fu school (not Tai Chi or Wing Chun). Usually you'll see about a dozen really interesting forms, including a variety of traditional weapons, and two and three person forms, and some sparring. Typically you won't see board breaking in Chinese styles. If the style involves Chin-na you'll see some joint locking and maybe wrestling. It's kind of a tour of 1500 years of martial arts history.

At one school I went to, the test was about 4-5 hours long, and continuous (no breaks) -- apparently the student had also undergone a 1 hour fitness pretest before qualifying for the test which included some crazy metrics like 100 v-sits, 100 push-ups, 15 minutes in a low horse stance and some other things.

These guys were very fit.

They would be pretty rare on youtube I expect, the sensei's i have encountered have always been pretty secretive. I would suggest just starting up (they love helping beginners) and going to the first grading to see what it's like.

Not to be picky, but "Showing off, like Zed does, means you are still learning."

There. Fixed for you.

Sorry, Zed. Now, would you please stop nodding me down?

From my blog post response:

Comparing programming to an art form, and the process of maturing as a developer to the process of becoming a master, comes from the mindset of somebody who is trying to create something intrinsically beautiful.

And while beauty is a powerful concept, most software projects are trying to make something functional.

More over here -- http://blog.aparicio.org/2009/12/28/the-master-the-expert-th...

I used to be this way. I used to love complicated designs and read everything I could about complicated technologies. But as I get more experienced and “older” as a programmer I find complex things just annoying.

Me too. I think we're somewhat common. And yet, the analogy isn't working for me. Because there are (too few) people like chneukirchen. I don't know how to fit him into your analogy. How old was he when he created Rack? Too young to be a "master" I think. And yet there it is, a masterpiece of simplicity.

In his most recent blog entry wycats said: "...the fuller emphasis on Rack is a strong improvement from the Merb approach." So many smart people worked on both rails and merb, and now Rails 3 is being written around this simple idea resulting in a strong improvement.

The key here is just that simplicity is an important value that most of us take too long to acquire. But, clearly, it doesn't have to be that way. I wonder how Christian got it so young.

Rack was built on the design of wsgi, from the python world.

So if you didn't know that a lot of the design was copied, I don't think you can give him all that much credit for it as maybe you are.

In the README Thanks To section: '* The WSGI team for the well-done and documented work they've done and Rack builds up on.'

You can get the value of simplicity quite young. 2 years ago, with almost no "real world" programming experience, at 25, I already got it. I am no master, mind you. I just had the incredible luck of being taught several styles of programming. My insight about simplicity was then inevitable.

Everyone knows that other things being equal, a simpler program is better. What is less known is that, almost every time, simpler means shorter and the other things are equal (at least from a technical perspective). I still face disbelief when I say this.

This is a pretty new trend... maybe 10 years? When I was in high-school (before 2000) my heroes were the likes of Linus Torvalds or Mel (http://www.pbm.com/~lindahl/mel.html). I don't think I ever felt a lack of masters.

It could be that things are fuzzier now... more blogs, forums, lots of people writing about stuff they're at best intermediate in. But this doesn't mean the really good guys aren't there any more. For a healthy dose of awe and humility you can take a look here: http://groups.google.com/group/clojure

In the end all of their impressive designs are doing nothing but making more work for themselves and everyone around them. It’s as if their work is only designed for getting them their next job, rather than keeping them in their current one.

Given a particular frame of mind, though, this is perfect.

These complicated designs are about keeping their current jobs. They are making more work for themselves and those around them, and that is entirely the point. They aren't looking to their next job, they are looking to assure there will always be a next task. If they didn't create complexity that need to be constantly coralled, they might run the risk of the project being declared complete; yes, a risk.

The problem is their frame of mind about their professon. If the project is completed, one of two things will come true:

1. They will be moved to a new project.

2. They will be dismissed from the company, and have to find a new company and a new project to join.

So the second is really just a degenerate case of the first. They will be on a new project. There are a few reasons people would honestly be scared of this.

They might assume that there is a small number of projects left, and they are all near-fully staffed. If they lose this current project, it may be the last project they ever find themselves on, because no one needs anything built anymore.

If they find a project, they can't coast. With their current project, they are applying design and refactoring patterns they already learned to a system they already understand. A new project means they'll be faced with an unfamiliar architecture and code, and their usual ways of looking busy aren't going to work until they learn the new system well enough. It means they have to start thinking about what they are doing and start working hard again, and there are a lot of programmers -- and people in general -- who are really averse to being forced out of a routine process they can perform without thinking.

A new project also means they might end up under competent leadership, who can tell when they are coasting, and will call them on it. This means, even if they learned the system well enough to know where to start blindly refactoring to patterns, they wouldn't get away with it, because the people supervising them would know they are just wasting time. Again, a lot of people won't like this.

Finally, a new project means someone might expose themselves as completely incompetent and faking it well the whole time. They picked up enough bits and pieces to sound intelligent to those who don't know how or what to judge, but just for the project they were on. The specialized jargon is now irrelevant, and the general understanding of concepts isn't there.

Even in my short journey so far as a developer, I have run into multiple examples of each of these, and they annoy me to no end. The ivory tower systems Zed is railing on about are just a symptom. The cause is people terrified of being forced into unfamiliar territory, and the risks involved.

The other part of the problem is that the people who judge the programmers are not listening to the masters -- as much as we have masters-- even when the masters kick the experts' ass. Perhaps this is part of our profession needing to grow up, but right now programmers are judged in most places by people who would be audience members at a martial arts tournament. They have no idea about the technical skill of what they are seeing, and so they can only judge things on aesthetics. To them, the experts look talented, because they are doing a tremendous amount of moving around, acting threatening, and expending energy; the masters look lazy and unskilled by comparison. It almost looks like the master has to be cheating when the expert gets slammed to the mat. I wonder if the audience to a master programmer might perceive the same thing.

A question which I am still uncertain of: is this reliance primarily on the aesthetic instinctual, or is it learned behavior? It seems to be responsible for a number of extremely poor judgments made, even in very recent history, and I think it is worth asking if such a reliance is inevitable. I'm not dismissing aesthetics entirely, just wondering why we seem to have it weighted wrong.

While otherwise a great article, the few CS metaphors are a huge letdown. Linked lists and RB trees are very different beasts, each appropriate for its own context. A better example of an artistic part of programming is well-placed unit tests - being able to see where a unit test will be useful in catching bugs, and where it'll sit idly passing for the rest of eternity, is an intuition of mastery.

"Linked lists and RB trees are very different beasts, each appropriate for its own context."

Precisely. And I don't think this is a metaphor. I understood that changing the data structure triples the speed of a particular piece of program.

I bet Zed Shaw omit the "particular" part because it was obvious. Apparently, it wasn't.

Sorry, the metaphor was from R/B trees to flamboyantly unnecessary flip kicks - but R/B trees are quite necessary a lot of times, whereas showoff flip kicks exist purely for showing off. There's more than enough fluff used in software engineering with the sole purpose of being fancy ("enterprise software patterns" come to mind), but R/B trees are not part of it.

I agree

Zed made some good points. I also like simplicity in designs (and make things more complicated by refactoring if the need ever arises). That is one thing I like about Ruby: it is so simple and concise to do things that are not simle and concise in other languages - this makes code look simple and thus easy to read.

Very insightful piece. It would be great for open source if writing unnecessarily complex code went out of vogue.

Ok, heres an example of a master:

Were all talking about how to optimize our lucene queries and cache intelligently and so on, because the memory overhead is getting big (mind you were practically replacing our database with lucene).

After about 30 minutes of hypotheticals and complexity, this one guy (previously sitting there listening) just says "Why not run java 64 bit and set the max memory to 20 gigs or whatever is appropriate, let the operating system page for you". KARATE CHOP! I think if we could, we would re-create the scene from "The Mask" where his mouth just drops to the table.

Better karate chop: Do the above and shell out 500 bucks for another 16G RAM in the server while you're at it. That way you won't wind up navigating an object graph that's been paged to disk (Lucene terms are all loaded into memory while the index is open, could be 20,000 terms or closer to a million if you have a whole bunch of unique IDs)

Exactly. The point was, the deadline was coming up in a few weeks. We had work up to our eyeballs with everything else, if we could punt this issue till it really REALLY becomes a problem, we should. And we did. And it hasn't been a problem.

It was a commercial product, but honestly the people who ran this would have no problem paying an extra 2 grand or so for ram for major performance gains (remember this aint your standard sdram).

That seems like it could easily end up being very slow. The OS doesn't know what data is going to be needed and it could page out the wrong data. It's probably worth trying, but it doesn't seem like a masterful solution.

Of course it was. Because that was better than what we wanted to do, simpler, no development time (cheap , met our deadline), worked well enough. Sure you can get a bit more bang for your buck making a catered-for swapping algorithm, but in the end it does not matter.

So why doesn't Zed Shaw write a framework? That would be a real challenge for a guy like him surely.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact