I think maybe Peter Norvig would qualify.
"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."
Not that there is anything wrong with wanting to love with/under Carmack...
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.
"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."
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!
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.
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.
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.
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.
When your safety or life is on the line, there is no longer any such thing as "fighting dirty", only fighting.
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?
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.
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.
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.
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.
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.
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.
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".
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?" ;-)
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).
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).
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)
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.
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.
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:
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.
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.
On that note, a JHU student killed a burglar with (I believe) a katana a couple months ago:
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.
Mixed Martial Arts http://en.wikipedia.org/wiki/Mixed_martial_arts
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!).
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.
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.
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.
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.
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.)
Or maybe I'm just against any metaphor that leads to a stronger rationalization for the title "Ruby/Python/etc. Ninja"
But, don't ask me what becoming a master looks like.
does that change the argument somehow? the article is more general than programming.
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.
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.
"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 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 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.
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.
There. Fixed for you.
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...
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.
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.'
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.
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
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.
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.
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.
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).