I debated a bit about writing a blog post about Obie?s idea for a Rails Maturity Model (RMM) but in the end decided to post my opinions and general thoughts. I didn?t want to come across as just a gripe about it but a little bit more level-headed.
Those readers not on the Rails Business list may not have seen the post can do so in the Rails Business Google Group. I was going to repost parts of the original post here but didn?t want to have something interpreted out of context. I interpreted the post as talking about certifications for Rails developers, which apparently is not how Obie meant to present the idea.
I was not the only one which took the original idea as a bit put off, Obie responded with Apology for a Rails Maturity Model and after some additional thought posted a video from the Hashrocket world headquarters – RMM Behind the Scenes.
Fabio Akita posted Rails (Im)maturity Model? as synonymous to CMMi. I have been involved with CMMi and it is a pile of corporate red tape which is exactly what we should be trying to avoid here with Rails.
Many Questions
So, who is RMM intended to help? This is the question that baffles me for the most part. See, the Rails community is a community of good developers who follow best-practice, test-driven development (TDD) methodologies and we have a reputation for delivering good, maintainable and scalable software. In my mind, I can only imagine that RMM will be a benefit to organizations like Obie?s company, Hashrocket. If they set the standard for which others strive to, who benefits? Hashrocket does and they will be the gold standard which everyone else will be compared to when a company is shopping for a Rails solution.
How does this benefit small shops like myself and they boatload of others out there? I don?t think it does. I may be wrong here but I can only see HashRocket putting itself up on a pedestal that looks down on everyone else. I have gotten to know Obie a bit and I don?t get this from his personality at all, so what am I missing?
What part of the way Rails shops do business is currently broken? I think the old adage ?If it isn’t broke, don?t fix it? applies here. Robert Dempsey posted some opinions and thoughts about having some standards. I agree 100% here, just like running any business where we take strides to be the best we can be by doing the right things for clients. In the end the client is the one who tells us we are doing right by them.
Not About Certification
All of the recent controversy about RMM in the past week has brought one idea that RMM is not, it?s not about certifications. Obie states this very clearly. So it is not about certification, per se, but if RMM is similar to CMMI then it is about certification or proving you are following standards.
I can only think about the days of striving to be a Microsoft Partner and having to run my business the way Microsoft said I should if I wanted their support and having to have a certain number of certified people on staff. After abiding by these ridiculous rules for so many years I finally got tired of the BS and handed in my MS badge. I can never once attribute having this certification/badge/label to getting a project, not even once. I can?t recall MS ever sending work my way because of it, not even once. So what was the point then? It was so MS could say I was doing what they thought was right in running my business. I dropped all things MS because I was tired of their attempts at telling me how to do things, charging for information that should be free ($2000 a year for Microsoft Developer Network access).
It is clear the word certification should not be used here but regardless of the word used I will be expected to live up to standards to be at the top of the Rails food chain. The original post says it is so:
?set guidelines for what the characteristics and measurements that set apart a successful and disciplined Rails shop apart from the unwashed masses. Rather than trying to certify individuals (too easy to game!) I think it would be useful to have a certification process for organizations that involved an actual extensive interview process and audit of code and practices, with associated scorecards and registration in some sort of official directory. Yes, you would have to pay handsomely to get this certification, and the result would not necessarily be what you
expect.
I obviously have more questions than I do answers here but I wanted to get others thinking about this and come to their own conclusions and hopefully educate me at the same time.
Obie promises to post a more detailed follow-up about his ideas. It will be a hard sell for me how ever it is presented but I will keep an open mind.
How many developers agree on an appropriate level of test coverage? How many developers agree on what should be tested, and why?
A very well written post. I too took Obie’s post as you did, essentially being very anti-competitive, and trying to set the standard. Hashrocket does appear to have great practices. If they are producing quality products for their clients who are happy with the results, then that’s great. However, I would not set them, or anyone for that matter, as the gold standard of how software development, Rails or otherwise, should be done. Who am I to tell all the Rails developers around the world that the way we develop is the best way to develop, and that the combination of tools we use is the best combination of tools?
Like software, methodology is an evolving thing, one that should improve over time to increase the effectiveness of product delivery of the organization. Happy clients are our true measure of success, not how we got there. That does not mean we ignore the journey. We pay great attention to that, and have gotten better over time. The need for standards is great, however there is on best one way to deliver software.
How many developers agree on an appropriate level of test coverage? How many developers agree on what should be tested, and why?
A very well written post. I too took Obie’s post as you did, essentially being very anti-competitive, and trying to set the standard. Hashrocket does appear to have great practices. If they are producing quality products for their clients who are happy with the results, then that’s great. However, I would not set them, or anyone for that matter, as the gold standard of how software development, Rails or otherwise, should be done. Who am I to tell all the Rails developers around the world that the way we develop is the best way to develop, and that the combination of tools we use is the best combination of tools?
Like software, methodology is an evolving thing, one that should improve over time to increase the effectiveness of product delivery of the organization. Happy clients are our true measure of success, not how we got there. That does not mean we ignore the journey. We pay great attention to that, and have gotten better over time. The need for standards is great, however there is on best one way to deliver software.
@Robert, I agree with you 100%. Who is to say what level of test coverage I should use, we all probably have different ideas the right amount but all probably in the same ballpark. I do what I think is right and if my customers are happy and I produce software I can maintain then we both win and my coverage is fine. I am really the only one who can answer the question because I know what is right for me and the tolerances I can take.
As we know TATFT does not literally mean we are testing 100% of the time, it’s silly.
Methodology is iterative as the software we write. Keeping an eye on what we have done to improve what we do in the future should always be a goal.
Thanks for taking the time to comment.
@Robert, I agree with you 100%. Who is to say what level of test coverage I should use, we all probably have different ideas the right amount but all probably in the same ballpark. I do what I think is right and if my customers are happy and I produce software I can maintain then we both win and my coverage is fine. I am really the only one who can answer the question because I know what is right for me and the tolerances I can take.
As we know TATFT does not literally mean we are testing 100% of the time, it’s silly.
Methodology is iterative as the software we write. Keeping an eye on what we have done to improve what we do in the future should always be a goal.
Thanks for taking the time to comment.
See the thing is, I know that there are a lot of developers out there that aren’t sure how to test. There are a lot of developers that can’t find a good beginner’s tutorial that covers unit testing or integration testing in sufficient detail to implement it for their business requirements. There are developers that don’t know what the arguments are for git over svn. Developers all struggle with best practices and they evolve quickly in our community. The information is out there and it covers even the trickiest of things, but it is spread out and not always easy to find.
While I don’t think one person or company should set the standard, I do think that the Rails community as a whole would benefit from this sort of information if there was a way to decentralize it completely, make it so there was no gatekeeper, which I think is Obie’s intent. Its very hard to create a new central hub for anything on the web without making a big splash to get the word out there. I think Obie is feeling frustrated by this lack of a single point for this sort of information and looking for a solution. I think there may not be a solution for this, there definitely isn’t an easy one.
See the thing is, I know that there are a lot of developers out there that aren’t sure how to test. There are a lot of developers that can’t find a good beginner’s tutorial that covers unit testing or integration testing in sufficient detail to implement it for their business requirements. There are developers that don’t know what the arguments are for git over svn. Developers all struggle with best practices and they evolve quickly in our community. The information is out there and it covers even the trickiest of things, but it is spread out and not always easy to find.
While I don’t think one person or company should set the standard, I do think that the Rails community as a whole would benefit from this sort of information if there was a way to decentralize it completely, make it so there was no gatekeeper, which I think is Obie’s intent. Its very hard to create a new central hub for anything on the web without making a big splash to get the word out there. I think Obie is feeling frustrated by this lack of a single point for this sort of information and looking for a solution. I think there may not be a solution for this, there definitely isn’t an easy one.
"So, who is RMM intended to help? This is the question that baffles me for the most part. See, the Rails community is a community of good developers who follow best-practice, test-driven development (TDD) methodologies and we have a reputation for delivering good, maintainable and scalable software."
Rob: I love your optimism, but I think this claim is a bit too general. If the entire Rails community is following best practices, then it’s true, we don’t need any centralized information repo on this topic. But if we make this claim, where is the room for the beginners? Where do we put the people who have heard about the awesomeness, but are newcomers to the party? If we as a community have a central place for discussion on these topics. Even if we don’t agree on the particulars, there’s definitely enough common agreement on the essentials. We may not agree on a percentage of code coverage, but we do agree that a project with no test coverage is going to make the developers’ lives miserable, right?
If we could focus on these central theorems of Rails development, and have a single place for up-and-comers to find them, it will help improve us all, and ensure that as our community grows, the average level of competency does not slip.
I’m not going to say Obie should or should not be the gatekeeper, but if the question is "do we need a solid list of best practices and examples?", the answer is "absolutely".
"So, who is RMM intended to help? This is the question that baffles me for the most part. See, the Rails community is a community of good developers who follow best-practice, test-driven development (TDD) methodologies and we have a reputation for delivering good, maintainable and scalable software."
Rob: I love your optimism, but I think this claim is a bit too general. If the entire Rails community is following best practices, then it’s true, we don’t need any centralized information repo on this topic. But if we make this claim, where is the room for the beginners? Where do we put the people who have heard about the awesomeness, but are newcomers to the party? If we as a community have a central place for discussion on these topics. Even if we don’t agree on the particulars, there’s definitely enough common agreement on the essentials. We may not agree on a percentage of code coverage, but we do agree that a project with no test coverage is going to make the developers’ lives miserable, right?
If we could focus on these central theorems of Rails development, and have a single place for up-and-comers to find them, it will help improve us all, and ensure that as our community grows, the average level of competency does not slip.
I’m not going to say Obie should or should not be the gatekeeper, but if the question is "do we need a solid list of best practices and examples?", the answer is "absolutely".
@Tim – I am glad you like my optimism. 🙂
@Michael and @Tim – You are both correct, there should be a central repository of "best practices" for the beginner or anyone who may need a reminder here and there as to what the "proper" way Rails developers should practice their craft. My concern is who is going to run the show? If it is community driven then it can be a great resource for developers new and old. What I don’t want to see is a company like Hashrocket (just using them as the example, not because I have anything against them) to tell me how I should run my Rails project and make me adhere to a list of rules or I cannot come to play.
If we allow a standards body to dictate our way of doing business then I am 100% against the idea. If we want to create a community site for the folks who have done it and done it well then I am 100% for it.
So what I am saying is I agree with you both but am concerned how it gets done, that’s all.
@Tim – I am glad you like my optimism. 🙂
@Michael and @Tim – You are both correct, there should be a central repository of "best practices" for the beginner or anyone who may need a reminder here and there as to what the "proper" way Rails developers should practice their craft. My concern is who is going to run the show? If it is community driven then it can be a great resource for developers new and old. What I don’t want to see is a company like Hashrocket (just using them as the example, not because I have anything against them) to tell me how I should run my Rails project and make me adhere to a list of rules or I cannot come to play.
If we allow a standards body to dictate our way of doing business then I am 100% against the idea. If we want to create a community site for the folks who have done it and done it well then I am 100% for it.
So what I am saying is I agree with you both but am concerned how it gets done, that’s all.
>> In the end the client is the one who tells us we are doing right by them.
I don’t claim to know the Rails Community; I do know that the Programming Consultant business, and there, more often than not, the goal is to find sufficiently ignorant clients who can be flummoxed into believing that whatever the PC has done is not differentiable from walking on water.
The unalloyed embrace of MySql, and the development approach which follows, is a particular example. In the published world, see Dan Chak’s "Enterprise Rails". He goes easy on the Rails Community.
>> In the end the client is the one who tells us we are doing right by them.
I don’t claim to know the Rails Community; I do know that the Programming Consultant business, and there, more often than not, the goal is to find sufficiently ignorant clients who can be flummoxed into believing that whatever the PC has done is not differentiable from walking on water.
The unalloyed embrace of MySql, and the development approach which follows, is a particular example. In the published world, see Dan Chak’s "Enterprise Rails". He goes easy on the Rails Community.
RE: The Rails Maturity Model (RMM) – Who will be the Gatekeeper?
Pingback from Early feedback from users: an example at Websites You Can Edit
RE: The Rails Maturity Model (RMM) – Who will be the Gatekeeper?
Pingback from Early feedback from users: an example at Websites You Can Edit
RE: The Rails Maturity Model (RMM) – Who will be the Gatekeeper?
Pingback from Early feedback from users: an example | Bakedweb
RE: The Rails Maturity Model (RMM) – Who will be the Gatekeeper?
Pingback from Early feedback from users: an example | Bakedweb
Your clients know best. Just give them what is worthy and continue what you think is best for the group. Everyone should be keen on what they do so as to keep the prestige of being on the top of your field. Designing is a gem gift of talent so keep up what’s best.
Your clients know best. Just give them what is worthy and continue what you think is best for the group. Everyone should be keen on what they do so as to keep the prestige of being on the top of your field. Designing is a gem gift of talent so keep up what’s best.