Becoming a better software developer isn’t easy. While there are plenty of resources to help beginners understand some fundamental skills, this only establishes a basic level of proficiency. Expert developers are orders of magnitude more productive than even somewhat advanced beginners, but rarely produce resources that help folks climb out of the vast chasm that represents the population of intermediate developers.
Passive learning materials are of marginal assistance to intermediate developers. While reading a new book or blog might help familiarize someone with a new tool or technique, the gains from this are superficial and do not lead to the sort of plateau-busting realizations that are necessary in order to break through the many walls that stand between proficiency and mastery.What intermediate developers really need is a bit of guidance to discover the right kinds of problems to be working on, the sorts of things that will cause them to ask the right questions, even if the answers to those questions lie somewhere off in the distance. They also need support from other developers who have traveled a bit farther down the path, so that they can learn about common pitfalls or get warned about dead ends before barreling down them at breakneck speeds.
Software development is hard, and that’s not likely to change any time soon. The necessary complexity of most computing problems is significant enough that there will still be more than enough challenges for a lifetime even if we never repeat the same mistakes others have made. A single experienced developer can make a massive impact simply by listening to what problems others are experiencing and giving helpful feedback based on what he or she has learned the hard way. A community of folks dedicated to providing the same sort of support is even better.
However, it isn’t sufficient just to have a group of people studying the craft of software development: those have existed as long as software has existed and if they were capable of closing this gap, they would have done so by now. A lack of sufficient context is what most frequently leads to tribalism in software communities, and the end result is a polarizing effect that causes direct harm to real progress by generating far more heat than light whenever a certain tool or technique is discussed. It is necessary to seek deeper, more personalized connections so that both student and mentor have a stronger shared understanding of the surrounding context of any given problem.
RbMU exists because we understand just how much of an impact that software developers have on our world. While technology itself is neutral, we feel like given the skills and resources, those who write code can make a massive positive impact on the way that we live our lives. By empowering those who may not have otherwise reached their full potential, we can touch the world in a much more significant way as a community than any of us could on our own.
To sum it all up, we believe that teaching changes lives, and software changes lives. So teaching software developers changes lives that change lives so that we can change lives while we change lives. Of course, we also do this because it’s fun. :)
Perhaps predictably, I've become too busy with the actual running of Mendicant University to spend a significant amount of time each day talking about what we're doing and how we got where we are. I did spend a whole day wandering around in the Montreal underground city trying to figure out why focusing on real projects is so important to me, and the differences between amateurs, experts, and professionals. I struggled with thinking about how those three titles can apply to one person, and the tensions that exist between the three roles. The best I could come up with was a slightly modified form of a quote I found in a Go book: "Amateurs play the game, experts study it, professionals labor at it" (the expert bit was my addition).
I think that these stories are important for establishing a background story for what is still mostly an underground program. Perhaps it would be better if folks who are blogging elsewhere would contact me and we could do some interviews by email or Skype voice to answer the questions people might be interested in? Whether that happens or not, I'll revisit this project of telling our story some time in the future, but for now, I need to put this series on hold.