Bio Gregory Brown (@seacreature) is the founder of the Ruby Mendicant University, author of the book Ruby Best Practices and original author of the popular PDF generation library Prawn.
RailsConf, co-produced by Ruby Central, Inc. and O'Reilly Media, Inc., is the largest official conference dedicated to everything Ruby on Rails. Ruby on Rails is an open-source web framework that's optimized for programmer happiness and sustainable productivity. It lets you write beautiful code by favoring convention over configuration. Learn more about Rails on rubyonrails.org
It’s a free online school for software developers that combines training and mentoring. The people that we work with already know how to program, but they want to do something really interesting, to get a better job, do open-source stuff, something like that and we want to help them do that.
The school is completely free and we don’t have any sort of corporate sponsorship or anything like that and we’re trying to fund it through the Grassroots model. A mendicant is basically a beggar, it’s actually inspired by the Buddhist ideas, Buddhist monks who exist on the generosity of the community. They do their thing, and if they do it well, the community supports them; otherwise they starve. Obviously that’s not what I’m going to do, but we’re inspired by the idea.
I was actually working in Perl throughout middle school and high school doing what any kid that learns how to program does, which is playing around trying to build games, so building text-based adventure games which were horrible. I just got a cold email because my stuff was up on SourceForge from James Gray, who is now a Ruby core contributor. He said "Your code looks very interesting, but not for the reasons that you might like. I would like to help you, you have to turn on 'use strict' etc."So I worked with James for years, he spent hours and hours each day with me teaching me how to program while he was still doing Perl. He got into Ruby and I just followed him in 2004, so that’s how I got into it.
We work together with a Peer-to-Peer University which teaches introductory Ruby programming. We’ve worked with about 100 students so far, but we’re also working on building stuff that is publicly available. We’re trying to build a mentoring program so that anyone could come and get help from us and that sort of stuff. I got into it because I’ve done a lot of writing. I wrote "Ruby Best Practices", people really liked that, people liked my writing. I just felt like I wanted to do something a little more direct, just working directly with people and I was interested in that.
I used to do mentoring at first for free then I didn’t have enough time for it and I was charging people to do Skype sessions and I was thinking "This is fun, but it’s not really scalable at all."It’s something that could be done as a side-project, but not as much as I wanted so I just jumped headfirst into this and experimented with it and it came out to be something really fun.
There are a lot of different programs, some of them are purely training-focused, so it’s basically classroom sort of stuff, others are community stuff. I think that user groups and stuff like that do a really great job helping people get involved. But what we do, which I think is different is that we do a strong personalization. I was inspired by James’ mentoring and I think that even though I might not be able to give every one of our students a lifetime of deep personalized experience, in a three-week session with 10-15 students I could really get to know each one of them and make huge progress by getting them to work on stuff and talking to them about their real problems in the context of what they’re interested in and what they want to accomplish. You need a balance all those things but that’s about something that’s hard to fill. It’s hard to find a mentor and our program is a way to at least expose people to that experience.
Yes, absolutely. Our core course is mainly meant for both sides: for students to see if they would like to work in our sort of environment and for us to see if the students would be a good factor for our environment, as well. But the alumni network is amazing; our students, we’ve got over 40 alumni at this point, a 100% of them that have given back to the university in some way, either through sending me some donations or through writing some code or helping mentor and all that stuff. They also work together on things and it’s really great because you got a bunch of people together who are motivated with a common interest and the pooling of resources is great, it’s really awesome.
7. One of the focuses of your program is for your students to create open-source contributions. How are you identifying opportunities and what kind of projects have they actually contributed back to the community?
We make the students pitch their own idea and that’s part of our filtering process, which is that we want to find people who have lots of ideas and just really want to work on them. If they can’t figure something out, we’ll talk to them and help them along. We really make them come up with their own idea and then we get them the experience of building that sort of thing out, just because we would like to see people contribute to existing projects but we also want to see a lot of things started. As long as they come up with an idea, they can contribute to existing projects.
One of the students did this amazing manual generation for Prawn, the PDF generation library that I built and he built the system that basically takes the code for every feature that the library supports and turns it into a manual but you can run each individual example on its own. It’s really cool. Some of our students have done all sorts of stuff. People have done things like build things for the Money Gem, so doing currency stuff. We’ve got 40 projects in 40 different areas.
One of the main long-term goals is to make this a more generalized thing. Right now we’re working with Ruby developers and that’s where my core competency is, so we’ll be there for quite some time, but we actually want to expand this out to any sort of craft work that can be done, anything that with the help of mentorship you can really learn on your own and then do something independently. We want to get into design, creative writing. The craziest thing that someone mentioned is music; that would be hard to do online, but we just want to get into anything pairing up people who are really good at stuff that are actually in the field doing that sort of work with people who are really eager to learn. We want to build a framework for being able to do that.
The mentoring idea is the key part of it because I think that at least in formal education you got career teachers who maybe at one point in time were really good at something in an industry but a lot of them have been doing just teaching for 10-20 years with no exposure to the broader environment and we want to narrow that gap. So we are working with people who either are actively working in the stuff or that they switch on and off - they spend a few months teaching and then go back into the industry, so they do stuff that’s fresh and interesting and new.
9. There seems to be a real talent crunch in Ruby and probably throughout the programming community at large. Does your model scale in a bigger sense? Could other motivated individuals start similar programs and would that make any impact on the availability of talent flowing in?
We’ve had 100 students start the courses and we’ve had 40 or so make it through, so it’s pretty demanding, but if in the next year or so we only deal with 100 people but we produce 100 really amazing people I think that will help with the scaling factor because our students are going out and doing things that reach other people, like one of our students who actually didn’t finish the course but still was inspired by our ideas started a Rails hotline which is like this phone number that you can call and get help for Rails stuff for free, which is really cool. We think that if we make a bunch of people inspired by these ideas, not that that’s a requirement, but if we can have that happen, then we can start pushing people out into the world and that would help solve that problem.
10. You’ve been in the Ruby community now for over 5 years. What keeps you going with the focus on Ruby versus other kinds of technologies? Is it just a inertia or is there something that you can really point to?
To some extent there certainly is inertia because I learnt Ruby, I got really good at it, I dabbled in other languages but any programmer who’s decent at that stuff can learn the basics of a language pretty quickly if they just pick up another language. But to get really good at something you need to work on it. I’m really good at Ruby, I suck at Erlang, even though I like it and I suck at Clojure even though I like it. The main thing is that I came into this, I started doing Ruby when I was just graduating high school and I made a lot of friends in the community at that time who are now amazingly well-known and at that time were just people who were hacking on stuff. Like I said, James and I came in at the exact same time. He had no Ruby experience at all at that time.
I made a lot of great friends who introduced me to other friends and what keeps me around is that if my friends are still doing this stuff, then I can work with them and meet new people and do all that stuff. Even though I don’t believe there is a single Ruby community anymore, there are still some really strong communities within the Ruby ecosystem and that’s what keeps me around.