funny, i’d never heard of chay but stumbled upon a few posts he made about ruby on rails whilst researching the value of ror vs php. i found his posts fit very much into the “intellectual bully” category. he was more concerned with “being right” as you put it, with fairly basic arguments actually “the top 10 companies use X, therefore X is right”.…i agree with the previous poster, coding is not a competition. we want to solve problems with the right solutions. there are many solutions to a given problem, much as that would break chay’s heart.
Yes, Joe, I’m a bully! 😀
Let’s take the evidence at hand (i.e. reality) instead of the arguments based on fallacies (ad hominem: “i’d never heard of chay” or false equivalence: “there are many solutions”) and such. As I see it, the examples of bullying here are:
A) Asking a candidate to define design patterns
B) Asking a candidate to distinguish C++ vs. Java
C) Writing an article comparing Rails vs. PHP
Design pattern bully
I think I’ve adequately defended my design pattern definition. But the issue at hand concerns something I mentioned in passing during an extemporaneous talk on web frameworks, not design patterns. I have two talks devoted solely to the discussion of design patterns. Would I to adequately define design patterns, by the time I finished, it wouldn’t be a web framework talk, but a design pattern talk!
(Ironically, one other talk on object-oriented design is based on the allegory of the “design pattern bigot” as a way to elucidate the potential pitfalls in programming.)
But more significantly, by prematurely ending the quote at my tongue-in-cheek definition, the author and others are inadvertently quoting me out of context. It seems, by accusing me of not defining patterns correctly while ending the quote just before I go on to define it, that **I’m** the one being bullied here.
C++ vs Java
> I fully agree. It reminds me of an interview I had in 2002. “What’s the difference between C++ and Java?” I was asked by the engineering manager.…
> “WRONG!” he roared. “There’s NO difference between the two languages, they’re identical!” Then he leaned back smugly and pretty much didn’t ask any more questions.…
> That’s the problem with “booby-trap” interview questions. If you have already decided that the candidate can’t answer the question to your satisfaction, then there’s no chance of gaining any information by asking it.
I have never asked this question so obviously this shouldn’t apply to me, but apparently according to some people, my interview style is the same in spirit.
I am loathe to address the accusation that I—like the news media on Sarah Palin—engage in “gotcha” journalism/interviewing. This label is a form of bullying also, because it is claimed that I roared: “WRONG! Your definition missed that a design pattern must be implementation independent!” (which isn’t a question at all.)
Even in my “red meat” example the exchange consistently goes like this:
> Me: Can you define what a “design pattern” is?
> Candidate: Umm… It’s like factory…singleton. Umm… I mean it’s this code thing that solves…a problem.
> Me: So an algorithm like quicksort satisfies your definition. Is an algorithm a design pattern?
> Candidate: No, they’re not.
> Me: So can you add to your definition so that an algorithm is not a design pattern?
Not **once** in all those times has it gone down like this:
> Me: Can you define what a “design pattern” is?
> Candidate: Well Christopher Alexander, in his seminal book The Timeless Way of Building defined a design pattern thusly: “[a description of] a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without doing it the same way twice.” And even though Alexander was talking about patterns in buildings and towns, what he says is true about object-oriented design patterns. There, we express solutions in terms of objects and interfaces instead of walls and doors, but the core of both kinds of patterns as a solution to a problem in context.
> Me: Wrong! (RAWR!) It’s pornography! Design patterns and pornography are one and the same!
And besides isn’t this socratic method of interviewing a far better way at seeing real understanding than a book definition of a pattern?
Let me be brutally frank. As I emphasized in my talk (but somehow this was omitted by my detractors), the people I ask this question to are those who claim to be design pattern experts on their resumé. If you claim that expertise and can’t define it, defend your definition in the face of innocuous questioning, and refuse to admit any flaws in your incomplete definition what sort of conclusion am I to draw?
And even then I account for different forms of expression. If you go back and read the original post, my questions are deliberately open-ended and open to interpretation so that something is clarified.
And I realize it is tough, I’m constantly telling the candidate who gets stuck “Don’t worry, it’s okay” and I’ve mentioned on this own blog that I would have trouble answering the questions I give my candidates. That’s sort of the point of my interview style. I’m not looking for perfection or answers, only honesty, perspective and flexibility in problem solving.
Might makes right
I find it pathetic that some have to put words in my mouth that I never said in order to prove me a bully. I’m among the most outspoken web developers on the internet. If I am a real intellectual bully there should be adequate evidence to indict me from my own words instead resorting to making things up. This is why I find it highly amusing that I’m told to have said: “The top 10 companies use (PHP), and therefore PHP is right.”
My actual words in the actual article that Joe is alluding to are:
> Alex Payne isn’t saying Rails is crap; I’m not saying Rails is crap. We’re not even saying Rails can’t scale or Ruby can’t do the web.
> I can’t speak for Alex, but what I’m saying is look at the top 100 websites on the internet: about 40% of them are written in PHP and 0% of them are written in Rails. (Yes, I can (and am) using this statistic to grind you Ruby fuckers into the dust.) But to me, there is an alternate conclusion, since 60% of sites out there don’t use PHP: The web problem ain’t that hard.
> PHP may be the best web language out there. But it certainly isn’t the only one. It’s one approach, one that stresses configuration over convention, stupidity over smarts, practicality over elegance: it’s one ugly mother f—er that gets shit done.
> Rails is like a rounded rectangle and PHP is like a ball of nails. All I’m asking is for a programmer begin with the end in mind and survey the entire terrain before making a choice
> …[Using PHP…]You can really create a slow flawed spaghetti architecture. You may make a site that is insecure and easy to hack. You really do have to work hard to winnow the wheat from the chaff when hiring developers. There are consequences to a choice. If PHP was so perfect, then it would have a supermajority of the top websites instead of just a plurality.
> I can’t emphasize this enough: *Writing software is about making choices.*
I guess that’s exactly equivalent to:
> [Terry Chay] was more concerned with “being right” as you put it, with fairly basic arguments actually “the top 10 companies use X, therefore X is right.”
Apparently I claim infallibility and use a made-up statistic to do so! 😀
I bet the next argument is going to be that I have the liberal agenda of the media elite because I choose to point out the reality of what I really said!
…as reality has a well-known liberal bias.