I spent the last three weeks studying at Mendicant University, formerly known as Ruby Mendicant University. I did not physically attend any campus, because no such facility exists. Instead, I communicated through a private IRC channel, a mailing list, an internal school management system, and Github. University staff are a welcoming group of passionate and charitable programmers who have made it their mission to help others improve at programming - specifically in Ruby. I took the "Core Skills" course, an entry point into the community that requires a demonstration of intermediate proficiency with Ruby in order to be accepted.
Mendicant University does not limit itself as a school that teaches the trade of programming, some of its broader goals are: to build a community of like-minded good citizens (who happen to love programming) dedicated to self improvement, to advocate contributions to open source, and to encourage programmers to apply their skills to solve real problems, such as those of charitable organizations that can benefit from technology. The founders have ingrained their strong opinions about software development into the course, in particular the relentless focus on delivering functional, high quality software.
The three weeks challenged me to step up my time management skills in order to deliver four functional assignments. In addition to being functional, three of these assignments must meet strict high-quality requirements, as established by Gregory Brown. One of the quality-satisfying assignments must be a non-trivial patch that is accepted to an open source project. The largest of the assignments is a completely open-ended personal project. The remaining two assignments are chosen from a pool of three topic areas, each of which addresses a core software development skill. For example, one of the assignments was to build a multi-user application that would do something interesting by reading and responding to e-mails; the solutions varied greatly, from an expense tracker to a wiki.
What really differentiates this course from many of the courses I have taken at Simon Fraser University is the degree of intrinsic motivation of each student and staff member. Although I felt extrinsically motivated by the desire to pass the course and have my name added to the list of alumni, that feeling was subordinate to the desire to learn as much as I could. I saw the same motivation in other students, most of us shared at least one detailed code review to a fellow student, giving up free time that we could have been using to complete our own assignments. Staff members volunteer a huge amount of their free time after their regular jobs and on weekends to provide code reviews, help students through thorny issues, or just chat and provide moral support. This experience contrasts sharply with the relentless focus on grade points that I have observed in all of my traditional educational experiences.
The course is also free, another strong contrast to the exaggeratedly overpriced, debt-inducing tuition of most universities.
Check out mendicantuniversity.org to learn more about the school, and join us in the public channel #mendicant on irc.freenode.net. If you are a practicing rubyist, I urge you check out Greg's Practicing Ruby newsletter. How to attack sticky problems is one of my favorite articles. The school survives based on the income brought in through Practicing Ruby subscriptions and personal donations.
So am I an expert programmer now? Resoundingly no. Did I learn a lot? Sure did.