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. :)