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 Python engineer, you must learn to mentor new hires. Especially if you’re committed to diversity: mentorship is 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, there are very few female programmers, and men hold most of the senior engineering roles. Your best weapon to fight for a fairer future is mentoring female coders.
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 feeling 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 gave this talk once before, at PyTennessee in February 2015.
* “What Is Async, How Does It Work, and When Should I Use It?” at Open Source Bridge in 2013 and PyCon Montreal, PyCon APAC, and OSCON in 2014.
* "The Weather of the Century" at MongoDB World in 2014.
* “Writing an Excellent Programming Blog” at Open Source Bridge in 2014.
* Coming up: “Python Profiling: The Guts And The Glory” and “Eventually Correct: Testing Async Apps” at PyCon Montreal in 2015.
Videos of me speaking:
* 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. Author of Motor, an async MongoDB driver for Tornado, and of Toro, a library of locks and queues for Tornado coroutines. Contributor to Python, PyMongo, MongoDB, Tornado, and asyncio.
- Title: Cat-herd's Crook: Enforcing Standards in 10 Programming Languages
- Track: Cooking
- Room: B201
- Time: 2:30 – 3:15pm
At MongoDB we write open source database drivers in ten programming languages. Ideally, all behave the same. We also help developers in the MongoDB community replicate our libraries’ behavior in even more (and more exotic) languages. How can we herd these cats along the same track? For years we failed, but we’ve recently gained momentum on standardizing our libraries. Testable, machine-readable specs prove which code conforms and which does not.
- Speakers: Samantha Ritter, A. Jesse Jiryu Davis
- Title: How Do Python Coroutines Work?
- Track: Chemistry
- Room: B201
- Time: 1:30 – 2:15pm
Asynchronous I/O frameworks like Node, Twisted, Tornado, and Python 3.4’s new “asyncio” can efficiently scale past tens of thousands of concurrent connections. But async coding with callbacks is painful and error-prone. Programmers increasingly use coroutines in place of callbacks to get the best of both worlds: efficiency plus a natural and robust coding style. I’ll explain how asyncio’s coroutines work. They are built using Python generators, the “yield from” statement, and the Future and Task classes. You will gain a deep understanding of this miraculous new programming idiom in the Python standard library.
- Speakers: A. Jesse Jiryu Davis