As software becomes indispensable for all economic activity, the demand for good software engineers only increases. But while the number of people engaged in learning software development seems to be growing, we know that not everybody has the same access to education or the means to successfully become professionals.
There are several reasons for this, including difficulties with access to computers or the Internet, and the more serious issues of gender and economic inequality.
Toptal has a mission to help underprivileged groups through software development education, via the Toptal Global Mentors program, in which enrolled developers become mentors for six months to one student. During this period, mentors and mentees are expected to meet for at least an hour every week and mentors are there to provide professional guidance.
This article intends to shed some light on the Toptal Global Mentors program, provide insights into how it works, and what mentors and mentees can expect from the program, and discuss some of the best approaches for this important opportunity.
The world continues to evolve at an accelerating rate, driven by technological advancements that build one atop another at an unprecedented pace. Almost every day, new reports prove that this or that once-venerated skill or craft is quickly becoming obsolete, replaced by computer algorithms and robots that can do it better and cheaper. Among the few skills that continue to promise a fruitful and secure career is that of software development.
But software development is not an easy skill to learn; it takes a great deal of time and focus to become a proficient coder, and to the unversed, the core concepts can be utterly indecipherable without guidance.
It’s no surprise that more people are choosing to forego the alternatives, and shift their focus towards a software development career. Many are doing so with great success. Yet despite the immense demand for skilled programmers, women, minorities, and low-income individuals face major hurdles to reaching the promised land. The first obstacle is access to education resources. The second is acceptance by an industry that suffers from an embarrassing lack of diversity.
In short, the playing field is not even. As a result, not only do those facing these disadvantages suffer, but so does the tech industry as a whole. The Toptal Global Mentors program is designed to address this issue.
Toptal Global Mentors Program
Toptal has partnered with General Assembly to help solve this problem. Through its Opportunity Fund, General Assembly has helped students from disadvantaged backgrounds start learning the skills of the programming trade.
The Toptal Global Mentors program is an extension of this service. Through the program, Toptal developers, like me, have a chance to provide ongoing remote mentorship to Opportunity Fund graduates. By signing up to be a part of the program, I have committed to connect with my student for at least one hour, every week for six months, to help answer his questions and teach him new software development skills.
The Mentor-Mentee Relationship
I’ve been mentoring for about twelve weeks so far, and have found it to be extremely enjoyable and rewarding. Teaching is, as the saying goes, one of the best ways to learn, and now I find myself going through several concepts again, and experiencing a whole new perspective. There’s also another, deeper level of gratification with mentoring: Feeling that you’re helping someone change their lives for better and watching them open new doors to their future.
I always have a good time when I am connected to my student. I like talking to him about his background, experiences, and plans for the future; I think we both benefit from helping each other understand things better, be it technical or cultural. Many days, I feel like I learn as much from him as he does from me.
As a mentor, it’s important to be patient and remember where your students are coming from. My student, for example, has had to struggle witht a great deal of economic and social disadvantages, and has never had access to the kinds of educational resources that I had. Sometimes I am caught off guard by the things I have to explain. But these differences are symptomatic of the larger problems we are trying to solve, so I am always mindful to be understanding.
When teaching any difficult subject, there is a lot of potential, for both the student and the teacher, to get frustrated. If the student isn’t grasping a concept, both sides can blame themselves, or worse, blame each other, for being a “bad teacher” or a “bad student.” But, this isn’t fair to either side; at some point, both participants have had to prove themselves in order to make it into the Global Mentors program. My role is to help my student with whatever he is struggling with, not to force him to learn what I think he should learn.
Having said that, I’ve found it can take time to feel out what I should be teaching. For the student, it can often be impossible to know what information he or she is lacking, so the mentor must take responsibility for finding where the missing pieces are. My student and I started out building an application. The idea was that I would teach him design and procedural techniques along the way, things like cohesion, reusability, testing, versioning, and so on. But from the get-go it didn’t feel right. He didn’t find it engaging, and seemed to be struggling to appreciate why these things were necessary. After the first few weeks, I decided to switch to more fundamentals, and discuss trees and sorting algorithms. The change in his response was immediate: This is what he was missing! Now that we know where to focus our energies, every session is engaging and exciting.
Rather than get frustrated or impatient, I always see mentoring as an opportunity to grow. Helping someone else learn this amazing skill is immensely satisfying, and in the process, I become better at it myself. Although the commitment is for one hour a week, I usually find our meetings last a good deal longer.
Useful Tools for Mentors and Students
For mentors and mentees who are getting started with the Toptal Global Mentors program, here are some free tools you will probably find useful for connecting and working on software together.
Chat and Screensharing
You can’t do anything if you can’t talk to each other! Since mentorship time can be fairly limited, it’s important to use voice or video chat tools so that you can talk to each other while working, instead of stopping to type messages. Skype and Google Hangouts are both great all-in-one chat applications. Both also have built-in screen sharing capability, which is critical for seeing what the student or mentor is doing (unless you are using one of the pair programming tools mentioned below).
Document and File Sharing
For sharing documents, images, and other files quickly and easily, nothing beats Google Drive or Dropbox. This comes in handy for sharing lesson materials, one-off source code files, drawings, and anything else that students may want to have access to in the time between meetups.
Most mentors will already be thoroughly familiar with GitHub or BitBucket, but students may not have worked with these tools before. The code repository services let you manage and maintain code that you are actively working on. They provide both student and mentor a centralized copy of the code so that you can make changes without stepping on each other’s toes, track all changes that have been made, and experiment with new ideas without losing anything if you mess something up.
Another benefit of these repositories, is that the student can understand the importance of code versioning and learn the mechanisms of a distributed version control system, such as tagging and branching.
A programming text editor is where you actually write the code. Good text editors are a dime a dozen these days, so I’ll only recommend a couple here. Atom and Sublime Text are popular, thanks to their beautiful user interfaces, great functionality, high customizability, and strong community support. They also have good pair programming plugins, which can be extremely useful for teaching; another reason I’m recommending them here.
Pair programming is when two people work on the same code at the same time. It’s a popular method both in teaching and in professional development, because it allows the two coders to help each other catch mistakes and figure out solutions within the actual code itself, instead of just in theoretical discussions.
As an Atom user, I’m partial to the motepair plugin. Another option that works for Atom, Sublime Text, and several other editors, is Floobits. Both options provide a powerful tool for teaching and learning programming together.
Programming is not easy work and even seasoned programmers find themselves struggling while learning new languages, tools, and algorithms. Imagine how the students must feel!
By participating in the Toptal Global Mentors program and having a dedicated mentor to help them along their journey, students have the opportunity to fast-track their learning, and find their way into an awesome new career.