Blogger.create { :name =>'Matt Aimonetti',
:location => 'San Diego, Ca',
:email => mattaimonetti AT gmail.com,
:linkedin => Matt's Linkedin page,
:recommend_me => HERE,
:contractor => true}

Ruby on Rails: the Duplo generation

Written by matt on March 16th, 2008

duplo I'm sure, at least once in your life you played with Duplos.

Duplo bricks are eight times the size in volume, twice the length, height and width of traditional Lego bricks, and are easier to handle for younger children. Despite their size, they are still compatible with traditional Lego brick.

Duplos are great to introduce kids to the concept of Lego bricks and to get them to think about building their own creations. However you would freak out if your kid would grow up and not want to start playing with Legos and building more advanced/custom stuff.

Unfortunately, that's exactly what's going on in the Rails community right now. We created a generation of Duplo developers.

Rick Olson, AKA Technoweenie fathered a great majority of this Duplo generation. Rick is a Rails core member and a prolific Rails plugin developer. He has written very popular plugins and Rails apps such as:

If Rick is the father, the mother of this generation would obviously be David Heinemeier Hansson, creator of the Ruby on Rails framework. David has always wanted to make our lives easier, providing us with tools to avoid repeating ourselves and a mass-load of tools to create web apps in no time.

Rick, David and others worked hard to provide the community with tools that cut our development times by 20% to 30% and that's just awesome. They basically took their meccano applications and extracted Duplo blocks you can play with.

from meccano to Duplo

The problem is that a generation of Rubyists has grown up being used to getting everything pre written for them. They haven't yet passed the "Duplo stage" and basically write applications putting a few blocks together, only writing 10 to 20% and barely understand 5%.

On top of that, what really annoys me is that, these very same developers complain about the existing plugins, always ask for more and don't give anything back to the community.

The problem is that it's always the same people giving and helping. Relatively quickly, the community grows and people supporting it get tired. I won't go as far as Zed and his funny rant but we need to wake up. We need to evolve, learn how Rails magic works, give up the cargo culting and start giving back.

The first thing would be to stop complaining about plugins you use on a daily basis and write your own or fork existing ones. GitHub is a good place to start forking existing projects, if you are a Rails/Ruby beginner, you can help with documentation or submit small patches. Josh Susser wrote a nice tutorial on how to commit changes (patches/documentation).

Why not blog about issues you have just faced and how you resolved them. Start writing small plugins/gems. Try helping people on the various mailing lists.

And finally, drop the Duplos and start playing with Legos - don't use plugins just because they are available to you, make sure you fully understand what the plugins you use do! Learn more about Rails guts and start using it in a way that makes sense to you.

Why not even switch to meccano and take a look at Merb



Comments

  • Giles Bowkett on 17 Mar 00:35

    Blaming the Rails guys isn't fair. Blaming the complainers isn't fair either. Just avoid them. Or blame yourself for listening to them.

  • Zach on 17 Mar 00:57

    I couldn't agree more. In fact I was a Duplo generation Rails developer myself not too long ago. Then one day I just started picking apart my plugins, starting with file_column, and I got hooked. I'm by no means a stellar developer now, and I still have a lot to learn. But I'm creating a website with a friend for the guys that are like this. Tearing apart plugins, tutorials on simple stuff. I really want a place that developers can go to and find any answer they're looking for. I can't tell you how many times, I'd go through pages and pages of Google results trying different solutions. So it won't be any complex code, but hopefully it'll help guys avoid what I went through and help me gain an even deeper understanding of the language.

  • Bob Hoskins on 17 Mar 03:37

    Sell Duplo, get Duplo users.

    Rails is attractive as Duplo. Less so if you take the Duplo out.

    Why is this suprising?

  • Michael Schuerig on 17 Mar 03:51

    Don't drop the Duplos. They boost productivity, they provide a common language that makes understanding other people's projects much easier. Understand the large building blocks: Rails plugins are not atomic, so look inside, see how they work, learn from them and improve them.

  • Clinton on 17 Mar 05:15

    Abstractions are Duplo blocks? Just because you use a plug-in to save time doesn't mean that you couldn't build the same feature if necessary. There are a few hard-core assembly programmers who probably think C programmers are 'pussies' for letting a compiler help them get their job done.

    The whole software world is built upon reusable libraries, Duplo blocks if you prefer, both open-source and closed-source. Ruby/Rails libraries/plug-ins are no different in concept to what has been happening for the past 50 years.

    In short, your post is B.S.

  • Michael Bleigh on 17 Mar 05:59

    I think you have a point: there are plenty of Rails developers who are writing bad Rails apps because they are just snapping together plugins they don't understand rather than learning real best practices and doing things for themselves. But I would argue that these "Duplo" developers exist on all platforms to some extent and ultimately aren't necessarily harmful to the larger platform ecosystem.

    Duplo developers usually fall into the categories of a) people new to programming or at least programming in Ruby and Rails or b) people who aren't really concerned about ever becoming developers and simply want to snap together an app with no real programming knowledge. The second group of people will never make up a substantial portion of the community, and though they may be "leeching" (to appropriate a file-sharing term), they aren't really causing any harm, and will probably eventually migrate to something even less "developery" like a Drupal or KickApps or similar platform. And to the first group of developers, they will eventually kick the Duplo habit as they become more fluent in the language and patterns and feel more confident.

    The real "action" that needs to be taken by the community is to make sure to be open and welcoming to those who are just getting started and want to move on past the Duplo stage. For those who are happy to create without any knowledge of the internal workings...well, I'm not losing any sleep worrying about their competition.

  • CRACKHEAD on 17 Mar 06:20

    Are you guys kidding? Do you know how many people blog about mundane rails topics every single day? I had to stop reading planetrubyonrails cause 60% of the posts were garbage. And you want these people to also release plugins? The secret to a successful platform is not more, but less. You know, signal vs noise. Looking through some of the RoR projects released on google code should make it clear that you do not want these people contributing. The best thing to do is just learn to ignore them.

  • Danno on 17 Mar 06:47

    I dunno, I like the duplos, particularly for some of the trickier things like authentication, precisely because I know I'm not smart enough to design it better. Oh, I'm sure I could program any given plugin if someone handed me the design, but that's not why I want these plugins. They abstract away the really hard part: the code pattern. That they include the a code implementation is a nice time saving benefit (mainly in that I don't have to figure out what they're trying to say, I can either use it or see how it actually works).

    If you're arguing that everyone should have the design chops to build an authentication system, or attachment capacity, or a forum, I don't necessarily agree. These are things that are nice/necessary to have in an application, but are easily outside of a given developer's concern for an application. If you're saying they should be able to go under the covers and tweak it and add features without getting hamstrung, then I concur.

  • Reg Braithwaite on 17 Mar 06:50

    Love the metaphor, agree that many elements of Rails caters to this type of developer (MSFT calls them "Morts"), but disagree that Rails is creating them. Am I suppose to believe that there is this smart person who is ready to roll their own, but after building a Rails app or two they lose the initiative?

    I'm sure there are a few people like that, but my guess is that most of the Duplo developers out there would be using Duplo somewhere, Rails just offers them the opportunity to use Ruby Duplo instead of PHP Duplo or VB.NET Duplo.

    The real "action" that needs to be taken by the community is to make sure to be open and welcoming to those who are just getting started and want to move on past the Duplo stage

    This is where the action is, bravo.

  • Fred on 17 Mar 07:43

    Part of the problem is that Rails was "marketed" as a Duplo type solution. We all saw the DHH create-a-blog-engine-in-15-minutes demo. We all thought it was awesome. We all jumped. Then, we all very quickly realized the awesomeness of Ruby (not Rails although Rails is awesome too). Then, we all became Ruby developers, not Rails developers. So, until we get over that hump, I am afraid that scaffolding, plugins, and Duplo will be part of the Rails community. We should NOT discourage this. We should continue to welcome more people into the community. As Rails matures, and Ruby becomes more accepted, the Duplo generation will also mature.

  • James on 17 Mar 08:58

    "The problem is that a generation of Rubyists has grown up being used to getting everything pre written for them. "

    A generation?

    That's hilarious.

    Thanks for great parody.

  • Matt Aimonetti on 17 Mar 09:05

    I'd like to clarify few things. First off, I don't blame the Rails core team or contributors. I think they do a great job and I hope they will keep on working on Rails and its plugins.

    Secondly, I'm not saying that Duplo solutions are bad. I, myself use some of them on a regular basis. They certainly make the framework more attractive and help newcomers.

    Finally, what I'm trying to say is that we need to find a balance between Duplo developers and Duplo providers and we need to keep the community active. And, yes I know other frameworks have the same issues, there is nothing news there, it's just that until now we had a good balance and I feel that we are loosing this equilibrium.

    I fully agree with the person who said:

    The real "action" that needs to be taken by the community is to make sure to be open and welcoming to those who are just getting started and want to move on past the Duplo stage

  • Gregg Pollack on 17 Mar 09:47

    I understand your sentiment, but I somewhat disagree.

    What's brilliant about Rails is that it gives you the tools to create complex web applications. It doesn't write them for you, it just makes your life easier. This to me is the evolution of development. You'll find the thing in any programming language, i.e. frameworks that make your life easier.

    The idea that the aforementioned are too much of a crutch, I disagree with. They provide great jumping boards, starting points, and code examples from which developers can evolve from.

    If Rails was a CMS like system where you could piece 4-5 components together and call it a web application without getting in under the hood, this would be bad. But you have to do a good amount of your own programming to get anywhere, which is why Rails is such a good tool for Web Development.

    That being said, I'd love to get more people contributing to the Rails community, creating plugins/gems, and blogging about their solutions, I'm just not sure complaining is the way to do it. =/

  • Mark Wilden on 17 Mar 11:02

    A post that makes statements about a community as a whole is flawed, IMO. If you want to talk about yourself, or your coworkers, or particular Rails developers that you know, that's one thing. But I don't think too many people are truly qualified to talk about "we."

    ///ark

  • Justin D-Z on 17 Mar 13:39

    Agree with Mark that the article is too generalized. However, I happen to love Rails and plugins for two reasons cited by many of the comments:

    1) I'm in Marketing and have a wife and two kids. I therefore have about 15 min. per day on average to code. So, using plugins lets me accomplish things in that time span and lets me focus on what makes *my* code worth writing. Are you going to use my app because the login process is beautiful? Not really.

    2) The plugin authors are at least as good as I would be, if not better, generally in the given problem domain. However, to your point about contributions (and I've authored some very minor gems, GreaseMonkey scripts, etc.), if they start not providing what I need then I'm cool with changing them. One big point for me is optimization. Although I could probably write the same plugin, functionally, I'm leaning on the time others have spent optimizing them.

    Also, I seem to recall the whole point of OO (well, one of the big points at least) being the promise of re-use and the reduction in wheel re-invention. To call achieving that lofty goal, at least to some degree, kid's toys and to treat it as junior programming seems odd. I think what you did is just go a bit too far in getting legitimately and understandably upset about someone complaining non-constructively about a plugin issue they found. If you kept the article to that, I would cheer you on. Instead, it sounds like you mixed in an argument that Rails is somehow bad for the pursuit of Computer Science.

  • Matt Aimonetti on 17 Mar 14:17

    @Justin D-Z. I don't think that Rails is bad for the pursuit of CS. I actually do believe that Rails changed CS and hopefully keep on changing CS in the next few years.

    I also totally value the importance of Duplo plugins and agree with @gregg when he says that they are great jumping boards.

    I might have exaggerated a bit but we need to think about the future of the community. No, "we" are not all slackers and yes "we" doesn't mean much, but as the Rails community grows fast, we need to think about what we want it to become.

    My personal choice is that we need more people involved, we can't simply rely on a handful of guys providing the rest with great tools.

  • meekish on 17 Mar 14:37

    I totally agree. I hope that Github will be the catalyst to change a lot of this.

    It's funny though; I'm currently considering getting involved in Waves because I like Dan's emphasis on code reuse and multi-app architecture. This could be a powerful tool for integrating an existing forum or CMS into a Waves app, but could certainly breed a whole new generation of cargo culters. We'll see...

  • Justin D-Z on 17 Mar 17:41

    Thanks for the follow-up. I agree with your premise. I think the fact that Rails is so accessible and takes so much of the tedium out of programming (on top of Ruby being inherently compatible with certain brain types) will introduce new people who will add to CS who would have otherwise avoided the purist fanaticism of a LISP or THERE IS NOTHING BUT ASSEMBLER mindset. I was concerned that part of your message, but not the other part, would be a turn off to those types.

    If someone could lower the learning curve or the effort barrier on plugin-izing any original, re-usable code, it might help the spread. I have a slick any-version-visual-diff AJAX component which I had to roll myself using some code from Instiki, and I'd like to make it re-usable since it has wider application outside of poetry. One of the things that turns me off is that the Rails wiki is a colossal mess, but I would intuitively look there for authoritative guidance on Rails plugins.

  • ryansv on 17 Mar 21:57

    Thanks for the article. I agree with your point, since as an undergraduate in CS, I have taken classes about web programming where Ruby on Rails was taught . The class and the instructor began and came out of the class with little understanding of how anything actually worked in the language. The class ended with students failing miserably at how to get anything more complicated then the Depot program from the beginning of the book "Agile Web Development with Rails: A Pragmatic Guide":http://www.amazon.com/Agile-Web-Development-Rails-Programmers/dp/097669400X

    Ruby on Rails may be neat for people who understand little about computer science to be able to quickly patch something together to make a quick website. But to a student trying to learn the basics of web programming, showing them how to mock up a website using generated models/scaffolds/controllers not only teaches the student anything useful, but hides how the language and rails actually function in front of easy and quick ways to do things.

  • JasonOng on 18 Mar 06:25

    Well, like what Matt said right at the beginning of this post

    "Duplos are great to introduce kids to the concept of Lego bricks and to get them to think about building their own creations."

    I must say for every Lego resistant Duplo builders, there exist a "diving into Lego basics" counterpart. There's not much point in hightlighting one without doing likewise for the other.

  • Russ on 18 Mar 06:57

    I strongly agree with you on the problems of having an ecosystem of developers that only understand 5% of their platform and regard the rest of it as black magic. I wrote quite a long post on this subject "a couple of months ago":http://basildoncoder.com/blog/2007/12/09/coding-by-convention/

  • Nathan on 18 Mar 09:52

    If you could build the same site with duplos and the same site with legos, and the end result is the same, who cares? How is this any different than .NET developers having no ideas how the internals of CLR work or Java developers not reading every line of code in spring/hibernate or even people deploying code to linux without knowing how to compile a kernel?

  • Logan on 18 Mar 10:25

    Giving back to the Rails community is great. Writing your own plugins is great. Understanding how shit works is also great, which is why I love ruby - its easy to take someone's plugin and modify it or fix it.

    But frankly I like Duplos. I'm an application developer. My goal is to quickly deploy as much functionality as I can. I want to innovate in providing better services to users. Given that many of the plugins provided to the community work pretty well, I avoid reinventing the wheel if I don't have to, leaving more time for real innovation. I've been on two many projects where engineering loved their Legos too much to just use perfectly good code that was already out there. The result - another wheel, just like all the other wheels, but a little shinier if looked at in the right light.

  • Robert on 19 Mar 17:48

    I suspect the intention of this article was to flame-bait and generate more comments and people coming to this blog. It seems to have worked well.

    This analogy fails in many areas and is directed in such a general way, that's more of a hit and (rails on the) run style post. People like and use things different and to cast some sort of judgement around as if people must attain your status quo or otherwise be, let's say, duplos - I'd say that is more like a rock star wanna be attitude.

    I see this attitude growing in the san diego area with rubyists who think they are all that and proclaim themselves as the ruby language experts, as in one sd meeting I attended. I've had to fix more sd-rubyists code than I'd like to recollect, although it has made me good money. Zed was dead on about "his funny little rant" - irony, heh.

  • Matt Aimonetti on 21 Mar 00:03

    @robert wow, you seem really bitter. I'm sorry if I offended you by this post. I'm not really sure why you are judging the entire SD Ruby Community because of my attitude. Anyway, we hope to see you to our next meeting.

    BTW I tried to clarify what I meant to say, you can read my explanation there

    -Matt

  • Robert on 24 Mar 23:39

    As I said to you previously, don't mistake irritation for bitterness. You have also misunderstood when I said, "I see this attitude growing in the sd area with rubyists" thinking I said the entire SD ruby community.

    Let me reclarify: I see this attitude growing the SD Ruby Community, but I don't see the entire SD Ruby Community like this. I tried using the word growing as something I don't see everywhere, but something I see starting to develop within - but I failed to get that across.

    There are some really cool rubyist in sd, but I do see a trend of rubyists who think they are better than everyone else because they can develop a blog or cms in rails. (that's an example, please don't take literally)

    Again, it's the attitude that I tire of in the Rails community. There are a lot of great people that I enjoy talking with, but there are a lot of people who have that rock star attitude that is laughable.

    Anyways, calling a bunch of people a duplo generation, a basic insult on their intelligence, and then saying it's ok because it's funny, isn't really funny.

  • Fred on 25 Mar 08:29

    Some people are up their butts in alligators doing things with their businesses or for their customers. Sometimes a web app is just a part of a solution. Just like many truck drivers don't have the time to stop and learn truck repair while on route. That's the advantage of any prebuilt technology.

    It's always been this way. Lots of coders doing Java and COBOL, sometimes implementing solutions that are revolutionary inside their own businesses (real estate listings, hedge funds, just-in-time inventory) but not revolutionizing computer science. They aren't blubs and they aren't parasites. They're focused elsewhere.

Comments are closed