Tuesday, April 28, 2009

Community and Responsibility

Rails is a great technology, but great technologies don’t succeed on their own. The recent dustup in the Rails/Ruby Community unsettles me greatly. Beyond the misogynistic undertones, which are terrible, I fear a pattern is starting to emerge.

Over the last few years, there has been:
The DHH Fuck You presentation

The Security through obscurity incident
 
Obie Fernandez Java Sucks Ass

Now the response (1,2) to Matt Aimonetti debacle

Though not Rails specific, the Vlad the Deployer people attacked Capistrano when they came out. Capistrano? Jamis Buck? I don’t know the guy, but from the hard work, excellent projects, and good advice he offers, why attack him or his work.

When seeing DHH’s response to the flap, my though wasn’t "Oh no." It was "Oh No, not again."  This is all off the top of my head.  

The Rails Community is not just DHH and the Core, or the Illuminati, there are lots of in the trenches coders and this crap cuts us off at the knees. I work in a heterogeneous technology environment (a university to be specific) and how can I justify using Rails for a project if a manager gets whiff of Mr. Aimonettis presentation or any of these other incidents. Unlike pure IT environments, there are women here who have earned power and will out of hand dismiss Rails. So this response by DHH is a double Fuck You. First to people who disagree with the misoginistic undertones in Mr. Aimonetti presentation and second to people who still struggle to justify a technology choice that makes them happy.

To sell a Rails project I now have to hope the managment doesn’t read Reddit or Digg. Because this isn’t occurring in someone’s table at the bar, it’s out there for everyone to see.  God forbid I have to compete with someone using a stack where there isn't this churlishness, and they're willing to bring it up.  To lay people, they have two technology experts adovating competing technology which do almost the same thing.  But associated with 1 technology  are profanity and misogony.  I wonder which will get the nod?

Django is pretty powerful technology as well. It started around the same time, perhaps someone more conversant in both can point me to the corresponding social gaffes in that community. A quick Google search couldn’t reveal anything, but that may be my limitation.

Rails is no longer that far ahead that you can make an argument that it’s the only well constructed MVC web application stack in town. Merb was hot on its heels in Ruby and there are lots of other languages. There will be other Merbs, and not just in Ruby people. Why push people away? Why piss them off when you don’t have too. Rails, as a tool, is no longer dealing from a weak hand. Stop acting like petulant teenagers.  

The Rails community is built primarily around code, do we want to build it around social exclusions as well?  What does that net except that people who are only interested in good code go else where.  It's an opportunity cost with little gain.  You want to be edgy, be edgy in your code. That is the real reason Rails stood out in the first place.  

Friday, September 21, 2007

Rails is Not Opinionated, it is Principled

I'm tired of Rails being called opinionated software. It's not. While it might be a catchy phrase, it is inaccurate and does a disservice to the framework and the community. Rails is not opinionated, it is principled and as far up as the Rails Core, people need to stop using that misnomer.

Looking at the dictionary definitions of opinionated (Meriam Webster | OED ) and principled (Meriam Webster | OED ) you can see the important difference between the two words. In English an opinion need not, and often does not, rest in the bedrock of a reasoned choice, whereas a principle should.

That the Yankees are a better team to like than the Red Sox is an opinion (though a reasonable one). That one should, all things equal, prefer a sports team rooted in one's community is a principle (though admittedly not a deep one). There's nothing wrong with having opinions, even strong ones, but to elevate them to the level of principle and arguing about them is a fools errand (e.g. Hannity and Combes, Crossfire, etc.). Principles, however, can be the subject of reasoned debate.

My pointing out the difference between the words is not for the sake of an exercise in pedantry. People often confuse the notions of being principled and being opinionated, especially as the behaviors associated with someone being one or the other are often identical. Indeed someone can be both principled on some important subjects and opinionated on other related subjects blurring the distinction. But the distinction is important and should be significant to the Rails community.

It seems, to me, that some people hear that Rails is opinionated and is a good web application and they use it and so jump to the conclusion that being opinionated is good thing and they should be opinionated.

A recent case in point is Mr. Fernandez's post on the merits of Java. While he labeled this piece a humor piece, it's only funny in the way you make fun of someone who isn't like you: the kid who has the wrong lunchbox, or wears the wrong shirt. I'm not trying to pick on Mr. Fernandez (and if I were he seems more than up to handling a critic), I usually enjoy his blog and look forward to checking out his book, but the larger point is that this sort of post is either encouraged or tolerated within the Rails community. I think in large part because of the conflation of the notions of opinionated and principled.

Being opinionated is not something to aspire to, being principled is. It's like the difference between Fox News and CNN reporting on Anna Nicole and OJ and the Daily Show reporting on the war in Iraq and the Economy.

I don't think, especially at this stage, Rails needs or should look to promote itself by belittling other technologies. Rails is an attractive choice for web application development on its own merits. As a community, vitriol makes us look defensive and closed minded. This has not been my experience with most folks in the community and I would not like to see others turn away because of this misperception. Over the course of the last few years, I've heard people say of those who disagree with rails orthodoxy, that we don't want those people, or they don't get it.

I disagree, we do want a larger community, because talent and utility aren't fixed quota character attributes and someone who may not be prolific today, might be a core contributor to the community down the road. And as for not getting it, maybe they do and don't enjoy acerbic dialogue and so go to help the Django community become stronger. I don't think I need to tell a technical audience that the best technology doesn't always prevail (I am not putting down Django, it's pretty cool, I am merely of the opinion that Ruby is a more enjoyable language with which to program). There is real opportunity cost of driving people away.

Mr. Heinemeier Hansson's decision to build a framework around principles was and is an inspired one. Lets strive to build a community as principled as the framework we support.

Thursday, September 20, 2007

Rails, the Enterprise, and Scaling: A Fable

As a respectable restaurant architect for a large restaurant architectural firm, a great local Chef tried to hire me a while back to build a restaurant with a dream kitchen. She told me she wants a 10 burner stove and a 4 bin oven plus a large prep area that the customer can see, like a live Iron Chef (Japan).

She was so into this that she had worked out plans and looked up stoves and prep furniture. I could see this was going to be a doozy of a client. She had lots of 'ideas'.

I pointed out that a stove/oven/prep area like that will never scale to 5,000 meals a day. To my utter surprise, this did not matter to her. She was more interested in having a kitchen that aided the rapid and elegant preparation of 300-500 meals a day, that was it.

She was not hearing reason about that and I'm conflict averse so in order to placate her, I conceded the point because she hadn't thought this through and there were lots of other reasons I could use to dissuade her from her “new fangled” kitchen.

I went on to point out that SHI Thursdays, Pearwasps, and the Olive Patch do not use that type of kitchen setup, and they are quite successful, and lets not forget the granddaddy of them all, the MacDonatello's set up. Their kitchen setups provide tasty meals at a much higher rate than her setup would. Sure, they may take a bit longer to build, and may cost more, but they provide the same quality meal with the bonus of being able to cook a lot more than 500/day if her restaurant catches on really, really big.

It turns out logic was not one of her strong suits. She had a notion that her kitchen environment would make her chef's happier and they would work better. Additionally it would cost her less to build the restaurant and she could use the savings to hire better chefs. (If she really wanted to save money, she could just buy normal straws instead of the more expensive bendy kind that people prefer.) She really didn't expect to make more than 500/meals a day, and she believed she would make a nice living doing that. She said if business was that good, she could open a second one and scale that way.

The obvious inefficiencies of building a whole new restaurant, rather than cook more meals in the existing one seemed lost on her. They clearly did not have too many business classes at her cooking school.

I pointed out to her that OK, sure, her new kitchen layout was 'innovative', and sure the chefs may like it better in the long run, but most chefs are used to cooking in a more standard layout. How are they going to adapt to this new layout in time for you to make a successful restaurant? The odds seemed low. Not surprisingly, she disagreed here. A client who is contrary for their own sake is the worst type of client. She believed that if they were good chefs, they'd figure it out pretty quick. The real talent is in knowing how to cook, not in how to use a specific kitchen.

I guessed the turnip truck she fell off of just pulled away. But I'm a professional and she was the potential client, but I hate to waste people's time and money. Since her idea was essentially experimental, I suggested we build a smaller prototype kitchen and see how it worked. She'd never heard of this but was intrigued. How much would it cost? I told her it wouldn't cost her anything if she didn't like it, and it would only take a month or two, if she liked it of course, the total price of the kitchen would include the effort put into the protoype (which would be thrown out of course). To this day I can still remember her frown. She'd worked in lots of kitchens and was confident in her idea. Also, she was somewhat cash constrained and adding the cost of building the prototype and the opportunity cost of delaying opening by upto 3 months was high for her. Too high.

She thanked me for my time and a week later, informed me she was going to use a smaller firm that fit her needs. I told her I appreciated the opportunity but thank god I didn't have to deal with this high maintenance, low margin client. Especially since we won the bid to redo Infront Chikenhouse's kitchens. Ahh chicken, the original whitemeat. Now that'll scale.