When I was first learning to code in Ruby on Rails, I spent many nights befuddled, trying to figure out how to construct proper many-to-many associations between objects, build to RESTful interfaces, and harness test-driven development.
I can still remember how it ate at me: I could theoretically easily assemble an application in a fraction of the time it would take to code it from scratch by harnessing powerful gems, but I was coming from a Java background and had grown accustomed to Java’s approach to development. The opacity of Rails’ “convention over configuration” methodology was inscrutable to me. I spent countless hours searching the web and StackOverflow for answers, and could have easily turned away from the language then and there, discouraged into defensive resentment.
Fortunately I had a great mentor, Tristan Kromer, who was able to walk me through it. Tristan is not only a skilled Rails programmer, he’s also a lean startup expert. He thinks in sharp angles, and on this particular week, he was the answer to my prayers. We sat in his office and “pair programmed” together. Within a few hours, things were making a lot more sense to me. If not for Tristan, I probably would have wasted days scrolling impatiently and swearing softly, and I never would have learned some of the best-practices he taught me.
These days, more and more companies are enforcing this kind of pair programming among their entire workforce of developers. Some of the biggest fish in our pond — such as Pivotal Labs, Thoughtworks, and Square — are assigning two developers to one keyboard at a time, and often this workforce-reduction is drastically increasing productivity.
For a field with such a reputation for solitary, antisocial tendencies, we sure are starting to rely on one another. Mentorship is important in every field, of course, but it holds particular significance in programming. After all, in what other field can a misplaced semicolon lead to hours of frustration? In what other field can hundreds of lines be condensed into a single line with proper design patterns? Copy editors might pare down a paragraph or two, but an experienced developer with proper coding principles can slash weeks or months of work — and can teach a willing apprentice to do the same.
The problem, of course, is that not everyone has access to a top-of-the-line experienced developer to help them master their craft.
At Cornell I had professors, teaching assistants, lab partners, and a small army of patient souls willing to help me through my moments of confusion. But not everyone has the privilege of a college education, and those who don’t may never get access to the kind of one-on-one tutoring that academically trained coders take for granted. For a mastery discipline like programming, that divide digs a deep learning curve between the trained and untrained, and contributes to the lack of inclusivity and diversity in our space. Without the confidence, encouragement, and knowledge that comes from tutelage from others, newcomers feel too bashful to take the plunge into our community, or are discouraged into disinterest by the ceaseless struggle to find answers on the web.
There are a number of nonprofits that are making incredible strides to address this issue, such as Code.org (helping the world learn to code), Codestarter (providing laptops to children), and CoderDojo (free programming clubs for young people). But we need more.
I believe what’s needed is a grassroots mentorship movement: for programmers worldwide to assemble and mentor one another, so that we can collectively work towards becoming master craftsmen in software development.
Right now, there is an order of magnitude between the efficiency of an average programmer and a good one. But if every developer were to take a just small amount of their time to offer their expertise to another, the quality of code would skyrocket across the field, and that field would be a far more level one. Bridging the gap can be as simple as learning from others, another pair of eyes, and the willingness to lend them to a peer in need.
Who was your biggest mentor in your field? Where do you think you would be without them? Have you ever felt inspired to pay their wisdom forward?
Ed Roman is a programmer, serial entrepreneur, and advisor. He created the world’s largest Java developer community, a game-of-the-year for iOS, a best-selling book on Java, and runs an AngelList investor syndicate. He is currently CEO of hack.hands(), an online platform for instantaneous mentoring, and organizied hack.summit(), a charity coding summit that ran December 1-4 and united some of the biggest names in coding to raise money for nonprofits and encourage mentorship in the space. His newest project, the hack.pledge(), asks programmers to pledge one hour of their time in 2015 toward mentoring or being mentored.