Dodge Disasters and March to Triumph as a Mentor*
Good engineers write good code, but the best engineers raise the skills of their junior colleagues, too. If you're a senior engineer, you must learn to mentor new hires. Besides, great mentors are critical to the careers of women and minorities in tech. I have failed at mentoring, then succeeded. Learn from me and march to mentorship triumph.
Who cares about being a good mentor? Your career depends on your success at mentoring. The higher levels of a technical career cannot be reached unless you demonstrate effective mentorship. As Etsy’s John Allspaw writes, senior engineers “lift the skills and expertise of those around them.” You must demonstrate that you have this quality.
Besides, junior engineers depend on your generous mentorship for their advancement. Your organization’s future depends on you, too: you need more senior engineers and there aren’t enough to go around. Bringing up young coders is a huge, risky investment, but it’s the only way we have to make senior engineers. And finally, at many companies, including mine, members of underrepresented groups are particularly underrepresented among senior programmers. Your best weapon to fight for a fairer future is to mentor junior programmers.
I’ll present three case studies, from my experience mentoring interns and new hires at MongoDB, Inc. over the last two years. My first mentorship failed, the second went well, the third was an epic success. Why?
First, we recap a disastrous mentorship and the warning signs I should have heeded: an absent visionary, unclear goals, an inexpert mentor (me), and the bad feelings that I ignored. We’ll see the costly consequences of neglecting these bad omens.
Second, we examine a mentorship that went rather well and led to a turnaround in my career as a mentor. I learned to recognize positive signs that augured a successful mentorship, and I developed character traits that are useful for a mentor: I trained myself to be eager to help, to understand what my apprentice didn’t know, and to admit when I didn’t know something. I also learned how crucial the personal relationship is, as an aspect of the professional one.
Third, we celebrate a great internship. I designed it for success, based on the lessons I’d learned. I ensured there was a guiding visionary, expert mentors, and clear goals, and I cultivated a comfortable personal relationship with my interns. The interns made exceptional progress, culminating in their first speaking experience at a Python conference.
Finally, I prove that your excuses for not being a good mentor are without merit. You can and should learn to train junior engineers well. Craftspeople have always trained the next generation by close relationships between masters and apprentices. If you are willing to develop your ability as a mentor, you can advance your own career, help your young colleagues and your company succeed, and lay the foundation for a fairer future. For people who love only code, it can be a sacrifice to spend time guiding junior engineers, but the payoff is among the best in the world.
I have given this talk at a handful of other conferences, and internally at my company to train the next generation of mentors. It's based on an article I wrote:
Here are some videos of past talks:
* MongoDB World 2015: https://www.mongodb.com/presentations/mongodb-drivers-and-high-availability-deep-dive
* Open Source Bridge 2015: https://www.youtube.com/watch?v=GSk0tIjDT10
* PyCon 2015: http://emptysqua.re/blog/pycon-video-eventually-correct-async-testing/
* MongoDB World 2014: http://www.mongodb.com/presentations/weather-century-part-3-visualization
* PyCon Montreal 2014: http://emptysqua.re/blog/pycon-2014-video-what-is-async/
* PyCon APAC 2014: https://www.youtube.com/watch?v=BOKcZjI5zME
Staff Engineer at MongoDB in New York City specializing in C, Python, and async. Lead developer of the MongoDB C Driver libraries libbson and libmongoc. Author of Motor, an async MongoDB driver for Tornado and asyncio. Contributor to Python, PyMongo, MongoDB, Tornado, and asyncio. Co-author with Guido van Rossum of “A Web Crawler With asyncio Coroutines”, a chapter in the Architecture of Open Source Applications series.
- Title: Black Pipe Testing, or "@#$! Up Your App by Impersonating a Database"
- Track: Practice
- Room: B302/303
- Time: 4:45 – 5:30pm
A “black box” test sends input to your program and tests the output. But a networked application has I/O at two ends: the API and the network. A black box test can’t validate it, especially its error-handling. But a “black pipe” test can! Such a test talks to your code over the network at the same time as it tests the API. I’ll present a handy library for Black Pipe tests of MongoDB apps and advise you when to use it. I want you to write a library like it for your favorite DB, so we can all test our programs better!
- Speakers: A. Jesse Jiryu Davis
- Title: Dodge Disasters and March to Triumph as a Mentor
- Track: Culture
- Room: B202/203
- Time: 3:45 – 4:30pm
Good engineers write good code, but the best engineers raise the skills of their junior colleagues, too. If you’re a senior engineer, you must learn to mentor new hires. Besides, great mentors are critical to the careers of women and minorities in tech. I have failed at mentoring, then succeeded. Learn from me and march to mentorship triumph.
- Speakers: A. Jesse Jiryu Davis