
The Master, The Expert, The Programmer - azharcs
http://zedshaw.com/essays/master_and_expert.html
======
mixmax
_"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.

<http://en.wikipedia.org/wiki/Peter_Norvig>

~~~
btilly
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.

~~~
nostrademons
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.

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

~~~
lemming
I hope you're missing a second verb there.

~~~
ido
Ah, yes - work :)

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

------
sdb
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

~~~
geocar
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."

------
dylanz
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!

~~~
zedshaw
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.

------
jacoblyles
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.

~~~
btilly
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.

~~~
jacoblyles
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.

~~~
btilly
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.

~~~
jacoblyles
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.

~~~
btilly
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.

~~~
jacoblyles
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.

------
aroon
"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?

~~~
blasdel
_Yes._

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!).

~~~
nostrademons
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.

~~~
Retric
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.

~~~
nostrademons
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.

------
strait
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.

~~~
masomenos
so, very eventful?

------
btilly
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=...](http://www.amazon.com/gp/product/0321117425?ie=UTF8&tag=randomobser0b-20&linkCode=as2)
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.)

------
alexgartrell
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"

~~~
andrewcooke
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)

~~~
hc
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?

~~~
andrewcooke
as far as i know, there's not.

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

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

------
wallflower
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.

~~~
wensing
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
...

~~~
elblanco
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.

------
samaparicio
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...](http://blog.aparicio.org/2009/12/28/the-master-the-expert-the-
programmer/)

------
davidmathers
_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.

~~~
illumen
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.'

------
radu_floricica
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>

------
azanar
_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.

------
andreyf
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.

~~~
loup-vaillant
"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.

~~~
andreyf
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.

~~~
loup-vaillant
I agree

------
mark_l_watson
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.

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

------
GrandMasterBirt
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.

~~~
jbooth
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)

~~~
GrandMasterBirt
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).

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

~~~
blasdel
<http://lamsonproject.org/>

