15 Feb 2009

Open Maturity Model – Let’s share Best Practices without auditors or certifications

rails, rmm posted by kapil

Nothing to do with OSMM (open source maturity model). There is some discussion  going in  rails community for  Obie Fernandez post on idea of Rails Maturity Model.

I like the basic idea behind defining some sort of maturity model for rails but I don’t think RMM or anything like that should be modeled on CMM.

After spending  hours looking at views of many people regarding RMM in blogosphere, twitter and rails business google group , I concluded  that we might need some open system instead of something like RMM.

Following is an aggregation of views by various people who feel the need of a some model but dont like the idea of auditors, closed systems or certifications :

For time being , I am calling it Open Maturity Model and trying to draft some  basic principles and guidelines.

So, What is Open Maturity Model ?

For Developers

1. Roadmap for Rails developers to adopt best practices defined by the community.

2. Community giving newcomers a more-or-less official set of guidelines for how to produce quality work. Having some sort of guideline from a trustworthy source is becoming more difficult.

3. It will not take fun out of rails or kills innovation. It will just make the rails community stronger and will attract more people who are not yet sure about rails.

4. Judge yourself , instead of an expensive auditor judging you – if you are serious about doing quality work, open maturity model will give you a good point to start with.

5.  Let experienced developers share their experience on a common wiki in addition to blog posts about their experiences all on their own.

For Clients

1. A no nonsense, no lingo system to help a prospective client to choose a ROR shop. Give them more than just testimonials , a blog post, or a portfolio. The intent is to establish a minimum standard of operational efficiency so that clients who hire based on it can be sure they aren’t dealing with complete idiots.

2. Let’s share Business Knowledge – most development shops are busy coding and spend little to no effort on marketing or business development. Groups like rails business is a good start in this direction.

For Process

1. XP , SCRUM or whatever. One size doesnt fit all. At Vinsol, we follow a process which has evolved after lot of not-so-successful iterations. It works for us and we want to improve and share it with community. But we don’t want to call our process or anybody else’s practice “The Rails Way”. Again , a community website  where companies can register and document the level of process they implement allowing for clients and other companies to provide feedback so they could get ranked.

2. Instead of wasting resources proving that we are level 4 or level 5 by an external auditor, lets just focus on why we are in the business – writing good quality code, having fun doing it and building awesome applications.

3. Continous improvement is very important for growth and survival of many rails companies with thousands of rails shops opening around the world.

Certifications

1. Replace open source projects with certification – open source can play the role of  certification.  Have you ever contributed or tried to contribute  to rails core ? or, show us an interesting/useful open source project you started, or point to bugs that you submitted.

Looking for ideas and suggestions.

Update :  Matthew Ford has started a rails manifesto document in github. Please add your best practices here – http://gist.github.com/65183

Related posts:

  1. 10 little known ways to find a ruby on rails team for your next project Everytime we talk to our clients, we find that they...

Related posts brought to you by Yet Another Related Posts Plugin.

  • @kapil: You are right. I think a wiki would definitely be the place to do it, and skipping the linkedin copy-cat ideas, heh, as long as we had a real place for solid discussions. Because it will become heated, and there will be massive debate, heh.

    One of the things I'd love to see is a way to really backup what you're talking about (and this mainly deals with server architecture, plugins, libraries, etc), that being performance tests. I've seen far too often that someone gives seemingly great advice, or talks down others' advice, with absolutely zero stats. If it is an idea/practice/solution with testable, verifiable or falsifiable information, then it absolutely should be tested. Another requirement for performance related tests is that it would be great if it were able to be or forced to be verified by another person.

    As I said in my comments on Obie's blog, we *could* be standing on the shoulders of giants, just like the scientific community as a whole does. When someone proposes a new idea or theory, it is tested to hell and back, by numerous people. Only then is it accepted.

    This wouldn't work for say, fuzzy "this is how I manage my team", but it would work for quite a bit of the ideas of how to structure your application, how to think about scaling, etc.
  • kapil
    Thanks

    @biglove : Are you talking about simpler implementation of "Linkedin for rails developers" ? That should be cool but we would be repeating ourselves.

    As for sharing best practices, lets begin with a wiki or some other collaborative platform with some passionate developers and see what happens.

    @will : Absolutely. Best practices for scaling applications built in rails should be at the core of this model.
  • I like it. There is one caveat though; the "official set of rules" should have some provision for detailing how best to grow and define the application as it increases in complexity.

    When you get to large applications, putting all the controllers and all the models into one directory just leads to confusion. Likewise, ActiveRecord is great at handling updates and modifications to single objects, but doesn't say anything about how to manage operations that modify several objects at once. If you write your own custom file attachment library, do you put it in app, in lib, or in vendor/plugins? Where do you put administration facilities? How and where do you manage transaction logic: as a filter in the controller, as a block around the controller, or in a service layer?

    Will.
  • You very succinctly summed up my own ideas in Obie's comments. Looking back, you're right. RMM was more about some certification than a more general launching off point for developers and clients.

    Interestingly, I think the most valuable feedback a client can get is from other fellow developers. I have about 3-4 developers I'd recommend right now for projects because I've personally worked with them and I know for a fact they're talented developers.

    It would be interesting to implement something like what you're talking about as well as have vetted developers in a guild of others, a pool that could critique and also condone one another, so clients will have an easier time not getting screwed and feel comfortable to ask for services (this is essentially what Carmelyne was suggesting).

    So? Where should we start with this? How do you even begin something like this? Throw up a wiki and hope people don't produce crap? haha
blog comments powered by Disqus