Rails Excellence mailing list
December 5th, 2009
A while back I asked if we need a maturity model or excellence in Rails. There is a lot to be done in this area I’m sure but the first step for me is opening up a basic discussion forum. All I want is for the conference hallway chats to continue throughout the year and be open to more people. With that I’ve set up a rails.excellence mailing list on Librelist. All you need to do to sign up is send an email to rails.excellence@librelist.com and you’re on. I hate google & yahoo groups and I’m thankful that Zed has put so much work into Lamson & Librelist and made it available. There are archives but it’s still kind of rough. Signing up early is the best way to ensure that you don’t miss out on the good stuff :)
Signing Up
The way Librelist works is you just send an email to the list and you’re on, there’s no explicit subscription process. This means that if you want to join up you’re going to need to send an email! It can be whatever you want of course, but I’d be interested in seeing an intro email that includes how you’re using Rails and what challenges you face.
For reference, here’s the first email I sent to the list. It contains my general idea about the list and a few guidelines:
Hey everyone,
I’ve spent a lot of time recently thinking about how to achieve excellence in my work as a Rails developer. There’s a lot to keep track of. You need to have a thorough understanding of Ruby and Rails to be sure, but excellence goes way beyond that, especially working in a team environment. You need to stay on top of the latest libraries that are constantly being created and updated. You need to follow current trends for practices such as testing and version control. You need to be aware of new technologies that originate outside of the Rails world. Most importantly, you need to figure out how to incorporate all of this into your daily work.
One of my favorite things about being a Rails developer is what a cool, talented community we have. I go to a few conferences each year and always come away incredibly energized and with a million new ideas bouncing around my head. I owe it all to the fact that in a couple days, I’m able to directly interact with hundreds of people and learn what’s working for them, what’s not, and what cool new stuff they see on the horizon. And you’d be amazed at the dysfunction people will admit to once you feed them half a dozen beers :)
I moved away from San Francisco about a year ago. While I’m happy with the move, I sorely miss the ability to bounce questions off of ridiculously smart people who are constantly pushing the boundaries of how they use Rails. The motivation for this list is selfishly simple – I want to re-create that discussion forum online so I can continue to have those interactions and still live near the beach. Of course a mailing list won’t be the same as a bunch of hackers talking shop over beers, but the upside is that those conversations will be opened up to a broader audience. And of course there’s no rule that says you can’t pound a couple beers while talking on the list anyway!
With that, let me talk about some general guidelines I’d like the list to follow. I’m hosting the list on librelist which means you can talk about finger-painting ponies if you really want to. These are just some of my thoughts on how to build and maintain a strong signal-to-noise ratio. I encourage you to respond with your thoughts.
Beginning questions are okay, advancing questions are better
Notice I said “beginning/advancing” rather than “beginner/advanced.” There are plenty of resources to help get you started with a new tool / process / whatever. If you want to know how or why to use MongoDB, the rails.excellence list probably isn’t the place for your question. If you want to know how to migrate your Rails app over to MongoDB, or want to know what parts of your app might be good candidates for moving, then this *is* the right place.
Holistic approaches and multi-disciplinary concerns go here
Related to the above, this isn’t the right place for discussing the subtleties of using a certain tool or technique. Technical details of using Cucumber should go on the Cukes list. This is a bit fuzzy though, because I think that rails.excellence would be a good place to talk about how to incorporate a Customer into the story-writing process, for example. Basically if your question is focused on a single topic, it’s better to take it to a list dedicated to that topic. I want a higher level of discussion here, one where we figure out how to combine the available tools and techniques to use them effectively. http://www.railsmaturitymodels.com/practices has a good list of topics that I think are relevant to this list (and of course it’s not limited to only those).
Rails should be a core technology
This probably goes without saying but I’ll say it anyway. If you’re not using Rails at all, feel free to read but please keep your contributions to a minimum. The whole point of this list is to advance the state of the art with respect to Rails development. Doesn’t matter to me whether you’re a boutique shop, Twitter, or a corporate dude glueing together enterprise apps with Rails. As long as you’re using Rails as a core technology at your work and want to share your ideas and practices and get feedback from others, you’re welcome here. Just make sure the topics tie heavily into Rails.
You should be an influencer
My ultimate goal with this list is one of positive transformation at the personal, organization, and community levels. If you’re a team lead, great! You’re in a position to distill the knowledge gained here, apply it, tweak it and deliver feedback. If not though, don’t fret. Anyone can initiate transformations within a team or organization. I recommend picking up the book “Fearless Change” whether you are in a position of power or not. Subversive influence is more fun anyway. The point is that none of the info here will do you much good if you keep it trapped in your head. Share it with your team. Adapt it to your situation. Share your insights with the community. Be a part of the leading edge of Rails Excellence.
Conduct
I have a hard time believing that a list with “excellence” in the title, and is seeded with some of my best friends in the Ruby/Rails world (spam invites coming shortly :), could devolve into flame wars and mud-slinging. At any rate, this guideline is perhaps more for your benefit than the list’s. If you come into a forum of smart, creative, giving people and act like a dick, you’re going to alienate yourself from an awesome community and queue yourself a bunch of bad karma.
That’s it for now. Thanks for checking it out. I hope that this list will become a good resource for budding & experienced Software Craftsmen. In the words of Bill & Ted…
“Be excellent to each other, and party on dudes!”
Pat
What’s needed in Rails – maturity, or excellence?
October 24th, 2009
About 6 months ago, Obie Fernandez proposed a “Rails Maturity Model.” Reactions mostly ranged from lukewarm to downright hostile. I didn’t give it much thought at the time it was introduced, but the discussion panel on RMM at Aloha on Rails piqued my interest. I kept wondering to myself, “What problem are we trying to solve?” I want to briefly talk about some potential answers to that question.
Certification
It seems to me like when people first heard about RMM, the first thing that jumped into their mind was certification. That’s too bad, because that’s not what Obie intended at all. The first beef many people have with certification is that it can be gamed. Having a specific certification doesn’t necessarily mean you’re a good software developer, and naturally there are many talented developers that don’t have the right certifications for whatever niche they’re in. It’s completely true, but I don’t see the relevance in the context of RMM. Chosing to hire someone or not based on a certification is pretty stupid no matter how you slice it.
Another argument that I’ve heard against certification is that it could make life harder for a bunch of programmers who have been using Ruby/Rails effectively long before certifications came on to the scene. Now what if they’re unable to find work because potential employers won’t even look at applications that lack the hot Ruby certs? Ignoring for a moment the fact that you don’t want to work at a place like that to begin with, I think the Ruby community is immune to that scenario. Openness pervades our culture and you can’t put that genie back in the bottle.
Educating Potential Clients
According to people more in the know than me, there’s a lot of software written that is so crappy that the development firms should be considered criminal. I can understand that elite firms might consider it a moral obligation to reach out to customers, if only to save the hapless clients from a tragic and expensive project that’s doomed from day 1. Does this moral obligation extend to the community as a whole? I don’t think so. Teams and individual developers might feel the same obligation, but that’s a deliberate choice. Hashrocket is special because they’ve adopted a certain set of values. The Hashrocket Way doesn’t scale to the whole community though, because not everyone shares those exact values.
As noble as it is to direct customers to the firms that can do the job at least adequately, I think this is a business responsibility rather than a community one. It’s a responsibility shared between client and provider — caveat emptor; and software shops need to market themselves in a way that distinguishes them from the unwashed masses. While the responsibility for this falls squarely on the business side, the community can help the state of affairs by serving as a trust network. If someone falls in love with Hashrocket but has a heart attack at the price tag, HR can refer them to someone who may be more suitable. Customers shopping around can also research the top firms and see what they have in common with each other. They can then use the information learned to analyze alternate firms that might perform better on other criteria: cost, location, familiarity with other technologies.
Interestingly, this line of thinking can lead to the idea of certification boards a la the medical and legal professions. I’ve considered this possibility as a way to achieve accountability in the industry, but I think it would do way more harm than good. In sectors where personal safety is an absolute necessity, there are already regulations in place, with audits ensuring that standards are met. Is our situation so dire that we’re willing to create a legal burden on small-time developers who write blog systems and bulletin boards for mom and pop shops? The competent shops, who supposedly benefit from being part of a high-quality industry, will also face the threat of malpractice suits. That alone is enough to make legal certification a terrible idea. It’s not that we want to skirt responsibility. It’s just that we get more value from asking the question, “Is there some other way to improve the software industry than a policy of ‘take this test, and get sued if you fuck up’?” Finally, throw in the fact that in recent months we’ve learned of corruption in financial and voting systems, and I think it becomes increasingly important that we as technologists pay close examination to what the government does, not the other way around.
Excellence
There are two facets to excellence, achieving it and redefining it. Newcomers to Rails face a daunting task. They typically have to deal with a funky new language, different environment, and all those friggin Mac people. Not only that but there seems to be a whole different culture going on. People debate testing frameworks, version control systems, and what the hell is this NoSQL thing?! The initial step for RMM should be to codify the important choices developers can make — the decision to use automated testing, to use version control, or stick to widespread infrastructure options. This communicates the principles and practices that we feel are supportive of effective software development, and provides a starting point for people who want to become effective.
A separate but related issue is advancing the state of the art. We can focus our efforts on improving in areas that give us a lot of bang for our buck. The question is not whether RSpec is better than Test::Unit, but rather if Test::Unit is better off for RSpec existing. Since Shoulda came on the scene, the answer is obvious. RSpec is better off for Shoulda existing as well, and vice versa. The developers who use these tools, by extension, are better off due to the vibrant ecosystem.
How do we achieve excellence?
While watching the panel, I put my hand up several times to ask a question, but took it down each time because I couldn’t figure out just how to formulate it. If RMM isn’t about screening out bad developers or educating customers, but rather about defining excellence in the Rails world, then why do we need it? Sitting there surrounded by talented, creative software minds, the path to excellence seemed obvious to me — go to a conference and spend a lot of time talking to a bunch of wicked smart people. It doesn’t matter if you’re just getting started and don’t know where to go, or if you’re a seasoned pro looking to push the boundaries of your practices. What’s needed is not some formal codification of popular practices, but simply a way to keep the high-level conversations going all the time, not just in between sessions at conferences.
I’m not sure how to do this. Personally I would love to have a small mailing list made up of the 10 to 20 people I cling to at conferences who really know what’s going on. I learn so much and come away with so many ideas after a conference, I want to have that feeling all the time. Sites like stackoverflow let you ask questions and get feedback from the community. Maybe an RMM-style site could be effective. I think the important thing is to gather the top thinkers in our community and create an extended dialogue, and make it open to the community as a whole so we can continue to get fresh ideas and cultivate up-and-coming thinkers. What’s the best way to do that?