PyDev of the Week: Nina Zakharenko

This week we welcome Nina Zakharenko (@nnja) as our PyDev of the Week! Nina has been active in the Python community for several years and has spoken or keynoted dozens of conferences. She has also contributed to the Python core language! If you’d like to see what she is up to, check out her blog. Let’s spend a few moments getting to know Nina!

Can you tell us a little about yourself (hobbies, education, etc):

I’m embarrassed to admit it, but the mid-90s cyberpunk movie Hackers – about a group of hackers framed for deploying a world-threatening computer virus – inspired me to become a programmer at a very young age. Even more embarrassing – I owned a pair of rollerblades growing up. When I was 12, I learned HTML to make websites by reading and deconstructing the source code of sites I visited, and I slowly became more engrossed in technology. As an adult, I studied Computer Science in college, and since then I’ve held a variety of exciting jobs at companies like HBO writing software for satellite control computers, to working for companies like Meetup and at Reddit. This spring, I joined the incredible Cloud Developer Advocacy team at Microsoft as the first Advocate entirely devoted to Python. I love teaching and public speaking. In my spare time I like to snowboard, hike, travel, and tinker with microcontrollers and wearable electronics, such as these Python powered earrings. I tweet at @nnja and occasionally blog and post my talks at nnja.io.

Why did you start using Python?

I started using Python in 2012 for small scripts and internal tools and eventually started using Python to work on the meetup.com API. In 2013 I went to my first PyCon in Santa Clara. Back then, I was writing Java full-time. I was afraid that I’d get made fun of at the conference for being new to Python, but the opposite was true. So many members of the community welcomed me with open arms. I was totally blown away. I also realized that Python was for so much more than scripting – that it was a powerful first-class language used by some of the top companies in the world. Eventually, I quit my job as a Java Developer and spent a summer at the Recurse Center (known then as Hacker School, a developer retreat in NYC). I focused on learning new tools and languages, dabbling with machine learning, and teaching myself Python. At the Recurse Center, I was able to fall in love with programming all over again. Presently I’ve been writing Python professionally for five years for a variety of companies. The work is much more interesting, and the brevity of whitespace, naming conventions, and simplicity was a breath of fresh air after the verbosity of Java.

What other programming languages do you know and which is your favorite?

Professionally I’ve been lucky enough to work in a wide variety of languages, frameworks, and technologies. At various points in my career, I’ve been paid to write C++, Javascript, Java, Python, and Clojure. I’ve briefly dabbled in Go, Lisp, Haskell, and Octave for fun. Despite all my experience, Python is still hands down my favorite. It’s just fun to write, fun to learn, and is an exceptionally powerful teaching tool. No matter how long I work in it, I feel like there’s always more to learn.

What projects are you working on now?

Since starting as a developer advocate, I’m no longer in a position where I work on several large codebases. Instead, I’m working on a ton of different projects. I got my first (tiny) patch accepted into CPython while sprinting with Łukasz Langa at PyCon, and plan on working with a mentor to continue contributing to CPython in the future. I’ve been expanding and contributing to a project called loco to help bring our mostly remote team together, by displaying where in the world someone on the team is at during any given time. I’ve also been working on software and tools that take advantage of Azure and its Python friendly offerings, like Python serverless functions, or deploying web apps on Linux to App Service, a highly scalable, self-patching web hosting service.

Which Python libraries are your favorite (core or 3rd party)?

In no particular order:

  • ipdb — all the usefulness of the pdb debugger, but bonus features like tab completion and syntax highlighting!
  • ipython — ipython is a powerful interactive shell, complete with nice-to-have features missing from the default Python interactive interpreter such as excellent tab completion, the ability to easily edit classes and functions when editing via the up arrow, and magic functions that allow you to do things like paste chunks of code, open a full-fledged editor, or export your history.
  • black – black is the uncompromising Python code formatter. It’s a tool with practically no configuration options, so it removed any room for ambiguity. I love using the black formatter alongside the Python extension for VS Code.
  • micropython – MicroPython is an efficient implementation of Python 3 that includes a small subset of the standard library. The codebase is small enough to run on microcontrollers and can be used for incredible and educational electronics projects.
  • azure cli – the azure cli is a suite of command line tools for Azure, written in Python. Learn more about it, or contribute back to the open source project.
  • agithub – makes it so easy to prototype when working with a RESTful API. The project is looking for help and contributions. If you’re interested in getting started with open source, it’s a great opportunity.

How did you get started as a conference speaker on Python / tech topics

There’s a funny story behind how I got started that involves some mischievous friends. My second Python conference was PyCon Canada in 2013. I was chatting with friends about how impressed I was with the speakers, and how I wished I would have the nerve to speak on stage one day. I had presented my projects at a handful of local meetups, but never to such a large audience. At the conference, my friends found out that someone had dropped out of a lightning talk that was happening within in the next hour. They wrote my name down in the empty slot, and told me I had an hour to put some slides together and get a 5-minute talk ready. I was so nervous! I shook with fear throughout the whole thing, and could barely breathe. When it was over, I realized that it wasn’t so bad. I got through it. The following year I spoke at DjangoCon 2014, followed by PyCon 2015 on technical debt. The talk went very well and was wildly popular. Since then, I’ve spoken at and keynoted dozens of conferences all over the world. That little voice in my head held me back and told me that I wasn’t a good public speaker, that I didn’t have anything to say, that everyone in the room knew more than me. It was a total fallacy, a myth I had perpetuated myself. Public speaking, like everything else in life, is something that you get better at with practice.

Do you have any advice for people who want to speak at conferences or user groups?

My advice is – Don’t be afraid to throw your hat into the ring. “I have nothing new to say, it’s all been covered” is a myth that I hear beginners perpetuate as a way to talk themselves out of speaking. That’s just not true. Just because a topic has been covered in a talk before doesn’t mean it’s off-limits. What an audience is genuinely interested in is your unique perspective, your story, and the way you tell it. Storytelling is as much a part of a great talk as technical knowledge. Brandon Rhodes is one of the best storytellers in our community, and his talks are a great resource for becoming familiar with the technique. Some of the most interesting talks center on how you came upon a problem, the steps (especially incorrect ones!) taken in an attempt to fix it, and how you finally came to the correct solution. Just like a regular story, it has a beginning, a middle, and an end. If you find large stages intimidating, start small at local meetups or events, or even in front of one or two friends. Lastly, don’t be afraid of rejection. Submit as many CFPs as you can. Always ask for feedback on rejected talks, and use those suggestions to improve your proposals and try again at other events. Rejection stings, but don’t take it personally. Dust yourself off and try again.

Second, many conferences offer scholarships to folks underrepresented in tech, both to attendees and to speakers. If you need financial assistance, don’t be afraid to ask and use that opportunity. If you’re on the opposite side of that coin and you or your company are in a position to, some conferences allow you to pay extra for a ticket to sponsor a diversity ticket, or to sponsor the conference itself. Accepting and welcoming diversity in age, gender, race, ability, experience, ethnicity, and many other factors is the future of our industry, and where fresh new ideas will come from. Our community grows stronger when we’re accepting and welcoming to other people.

Is there anything else you’d like to say?

I’ve been lucky enough to have the opportunity to be mentored throughout my career by an incredible group of caring people. I’m now in a position to do the same. If you’re an underrepresented person in tech and you need advice, help, or mentorship, my twitter DMs are open. I’m happy to talk about a wide variety of topics – imposter syndrome, career advice, tech help, help preparing a CFP or working on a talk, or walking through code. If I’m not able to help you, I’ll do my best to connect you with someone who can. If you’d like to hear more about my thoughts on mentorship, you can catch me as a guest on episode 44 of the Test and Code podcast.

Thanks for doing the interview, Nina!