Run a business? Check out LessAccounting, our bookkeeping system that'll save you hours per week.

Announcing:

We built the entrepreneur's bookkeeping system, it's called LessAccounting. You'll probably love it.

An Alternative Rails Maturity Model

written by Steven on February 24, 2009

Recently a stir has been made in our lovely little community about the Rails Maturity Model. The crux seems to be that one or two excellent Rails shops have found a process that really works well for them and there is a belief that this process or "best practices" will ensure a successful outcome.

I am thrilled that companies in our community have found processes that work really well for their people, and I laud the good will to try to lift the community by creating more successful outcomes. But I shudder at the thought of trying to force their process on the rest of the community by creating some de facto standard for anything.

The RMM idea started with the concept of creating a certification for Rails shops. The purpose of a certification is to give a person who does not have the time or ability to evaluate someone an easy to evaluate them. Most of us have enough experience with certifications to know that they are rarely a true evaluation of anything. They turn into a checkbox that everyone must have so that whatever middle level manager that probably has trouble cleaning himself properly in the toilet can say that this person/shop is clearly superior that person/shop. This is true even if the word "certification" is not used and is instead a list of "Best Practices." This travesty is a result of a badly implemented reaction to the scaling of a technical community. Certifications or Best Practices are a very poor way of trying to say this person or shop will deliver the goods.

The "Best Practice Checklist" idea is particularly bad because on the surface it seems so reasonable. We could probably make a list of best practices that the vast majority of us can agree on. Something like automated testing, iterative development, and short methods sound like great practices to follow, but following them has zero correlation to project outcome. A failed project might have followed all of these practices and a successful project might have followed none. The sole reliable predictor of project outcome is the people that are doing the project; the process used is irrelevant. And it's even harder than that to predict, because you can have a great developer and a bad client and the project still fails. Or a great client that fails with one great developer but succeeds with another. This chemistry is real and is completely unquantifiable.

What any checklist really says is that process is more important than people. Which is wrong. People are the only thing that matter, process is irrelevant. I can take a great engineer and force the worst process on them and they will succeed, and I can take the worst engineer and force the best process on them and they will fail. That's one of the reasons pair programming works so well, take any two people and there is a greater chance that one of them can succeed.

As an example, Linus Torvalds recently said that he chose to use tar-balls and patch files rather than use SVN. That sounds like a horrible process to me, but I would not want to say that because he doesn't follow the RMM that he is not qualified.

So here's my idea:

Rather than encourage any system that promotes process over people, one that tries to quantify a person based on the process they follow, I would like to propose a Maturity Model that is decentralized, people centric and community oriented: The Ruby Artisans Guild. Like traditional guilds members will be one of the following: apprentice, journeyman, or master. Instead of saying that a person is a master because they do things a certain way, we should honor the individuality of everyone and let them find their own strengths and weaknesses. This is one of the tenets of open source, that people are judged by their contributions, not by how closely they follow a process.

People can evaluate themselves and determine if they are an apprentice, journeyman, or master. They can put a badge on their website and maybe even add something to their Working With Rails profile. I would expect a journeyman to charge less than a master and put out lower quality of work. This is fine, many people will gladly make this trade off when hiring. I always ask potential clients who else they are talking to and give honest feedback (usually positive) of others in the community. We should encourage this type of open dialogue. For the most part, developers know their own skill level and are honest about it. The problem occurs when people aren't asked what their level is. We should exploit this and assign our own rankings. I hope that any system where people are encouraged to self.eval would be welcome to our community. Here's a hint: If you're not sure if you are a journeyman or a master, then you're a journeyman.

This system also promotes the idea of mentorship. An apprentice may become a journeyman by reading and practice, but more likely will grow by the mentor ship of a journeyman or a master. This is how it works in academia: A doctoral candidate is an apprentice, a post-doc is a journeyman, and a professor is a master. And it can work for us too.

Business Owners: save hours per week with LessAccounting. It's like Quickbooks, just not total shit.

10 Comments

Eric Davis
Eric Davis said on February 24, 2009

The guild idea is good and from what I’ve heard, a lot of other people are thinking along the same lines. Even a self evaluation process would help people know where they can improve. As long as the evaluation keeps up with the changes in the community, it should be useful for anyone who wants to use it; existing developers, new developers, and clients.

What might also give the evaluation more bite would be to have (optional) proof that you do what you say. For example, if using version control was a item I could link to a few of my pubic git repositories or maybe to an article I wrote about using Subversion.

Eric

Dr Nic
Dr Nic said on February 24, 2009

I’d be hesitant for any Person class to override/define an #eval method.

Evan Light
Evan Light said on February 24, 2009

Better but still not quite right. The trouble with such broad labels is a “Master” is defined by what?

Mastery by individual skill I can believe although tenuously. However, even then, master is at best temporary and at worst a fallacy as techniques in this community continuously evolve.

Mastery of Rails? Whoa! Sign me up!

Oh wait….

I may be fantastic at designing and writing model classes but master over everything in the stack? The front end as well to include JavaScript, CSS, design, et al? I doubt that there are more than perhaps two dozen people who can claim that level of expertise and have the chops to back it up.

Do you remember Hampton Caitlin’s Ruby survey perchance? See http://hamptoncatlin.com/2008/hampton-s-ruby-survey-2008-results
The outcome was laughable! Some ridiculous number, on the order of 20% IIRC, consider themselves Ruby Masters.

I sincerely doubt that 1-in-5 Rails developers are masters.

Color me skeptical.

Sarah Mei
Sarah Mei said on February 24, 2009

I like the guild idea, but it doesn’t solve the problem either.

RMM was a response to the market being flooded by really bad Rails programmers. Or more specifically, really bad Rails consulting companies. It was an effort to grade quality, to help nontechnical customers choose a shop to work with.

It won’t really help, of course. But self-evaluations won’t help either. For one thing, it’s notoriously difficult to evaluate yourself accurately – check the psychological research on that one. It’s extensive. :)

And second, you’re saying that there will be no standards for the different levels. So one man’s journeyman is another man’s master. And, let’s be frank, the folks at those awful Rails shops are all going to rank themselves master.

IMO there is only one way to pick developers – meet them, get recommendations, call references, and then choose the one you think you work best with.

Derek Neighbors
Derek Neighbors said on February 24, 2009

The Free Software community has already built this tool. Advogato (http://advogato.org/person/) It doesn’t fix or solve anything. Creating a caste system is not an answer.

That said RMM is the wrong answer as well. I think your original idea of decentralized, people centric and community oriented is the best approach. However, I dont think that is any different than what we have today.

If you think your process is the best. Talk about it. If your customers love you and people adore you, let them speak publicly about you. If you care about the community contribute in meaningful ways.

Let this be your “certification”. Let it be what makes you stand out. It exists today. It’s called youtube, vimeo, wordpress, twitter, etc…

Steven Bristol
Steven Bristol said on February 25, 2009

Yes, the guild system does not solve the problem either. That’s because the only way to solve “the problem” creates more problems than it solves. The truth is it doesn’t matter if a lot of people are doing shitty work, it only matters what you do. I don’t really care about having a guild. I would rather have no RMM than a guild or anything else.

Mike Woodhouse
Mike Woodhouse said on February 25, 2009

“developers know their own skill level and are honest about it”

Yes they do and they are. They’re probably wrong though, and there are studies that bear this out. There’s a poor correlation between individuals’ estimations of their own skills and the perception of the same individuals held by others. Worse, the correlation is worst among those considered weakest.

It’s not the paper I’m looking for, but there’s a little illustration of what I’m talking about on page 4 of http://eprints.utm.my/2268/1/dR_aZLINA.pdf

I understand Obie’s frustration at the thought that there are customers who are getting less value than they might, and that the experience may turn them off, but I did also wonder if I was hearing an elevation of process discussed in an agile context. I’m glad I wasn’t the only one.

Sarah Mei
Sarah Mei said on February 25, 2009

Mike, I mentioned that as well in my comment. I happened to come across this article today which I think is quite illustrative.

http://www.nytimes.com/library/national/science/health/011800hth-behavior-incompetents.html

Gareth
Gareth said on February 27, 2009

You know who else provides a certification for a business based on strict adherence to best practices for internal processes? McDonalds, or any other similar franchise.

Law, accounting, medicine and other established professions merely provide advice to their people on best practices. Their regulation is based on ensuring that you are capable of effectively and ethically producing the end product (correct legal advice, balanced books, healed patients).

Ours is a young profession – software engineering as a whole is barely half a century old, web maybe 15 years, if Rails was a child it would barely be in Kindergarten.

Both our product and our tools have changed so fast that to impose restrictions on internal processes can only be a dead end.

We should look to the older professions (excepting the oldest…) to build our own.

Grant
Grant said on March 01, 2009

Ok, I’m a few days late to commenting on this… I originally read the post the day it came out and I’ve been mulling over it. Something was bugging me. Not just about the idea of a Rails Maturity Model certification, but even the idea of a guild of some kind.

Here’s the thing (and I think this is provable time and time again in much more mature industries): trade guilds, trade associations and standards bodies maintain the status quo. They do everything they can to do so, even when it’s not to the benefit of the industry or the clients/customers of that industry.

It’s only natural, but guilds become the spokesmen of the top, of the status quo, of the entrenched who may have had the best practices years ago, but now, do not, and they may not even realize it.

Look how long it has taken the AIGA to come around and recognize web/interactive design within the realm of graphic arts. They missed out on a huge group of people trying to maintain their status quo. I know several great web designers who don’t even know who AIGA is.

That’s just a small example, and I’m not trying to pick only on AIGA. History will show the RIAA did more harm than good to the record labels that support it. Why has the Author’s Guild spoken out against the Kindle? It’s easy to take pot-shots at the w3c because they move so damn slowly.

Don’t get me wrong – I LOVE best practices. Figuring out better ways to do my work (and learning what others do) is awesome. But maybe we should leave it at that. Maybe it should almost be wiki-like. Let’s establish some best practices for rails, but let it be a living ecosystem. Let’s not slow down this fledging industry’s progress by worrying about how to certify good work(ers). Good work stands on it’s own. I don’t think we need to worry about hacks who give us a bad name. Hacks are always exposed in the end. Hacks give me an opportunity to get some ridiculously-awesome shit done for a new client that was disappointed in the past.

Our tendency as humans is to want to control things, rate things, measure them, and defend the way we do things. But these things sort themselves out in the end. Ultimately, I think certifications, guilds, and even standards bodies (to some extent) end up slowing everything else down and taking away our focus from the things that matter.

Leave a Comment

About Steven
Steven Bristol has written code for the past 20 years. He like green vegetables and kittens, oh and butterflies too. He loves to throw ninja stars at his enemies.

You Should...

Follow Steven on Twitter
Friend Steven on Facebook
Subscribe
LessEverything Copyright 2011 LessEverything.com
We don't like footers, they're kinda boring