Humans of Computer Systems: A. Jesse Jiryu Davis

Programming

How did you learn to program?

First learned with LOGO on an Apple II in an elementary school summer program. Taught myself C++ from a textbook in high school, and majored in Computer Science in college.


Tell us about the most interesting/significant piece of code you wrote.

I wanted to ensure all MongoDB drivers, in a dozen programming languages, implement the MongoDB wire protocol the same. I encoded sample network protocol conversations in YAML, and wrote a multi-language test framework to check that each driver creates the exact messages in the same sequence as in the YAML samples.


Who is the greatest programmer you met, and what is impressive about them?

Ben Darnell, whose async Python framework, Tornado, inspired Python's standard asyncio module.


What do you believe are the most important skills to be successful in your field?

First, to recognize the engineering challenges worth doing, and do them instead of those that are the most fun or aesthetically satisfying. Second, to follow cutting-edge research and apply the research community's knowledge.


What quality or ability do you value most in a computer systems person?

The ability to debate ideas constructively and pleasantly, for exactly as long as they are worth debating.


Personal

Which of your work/code/accomplishments are you most proud of?

"A Web Crawler With asyncio Coroutines", a chapter explaining async I/O, which I co-authored with Guido van Rossum for the "500 Lines or Less" book in the "The Architecture of Open Source Applications" series.


What comes to you easy that others find hard? What are your superpowers?

I can drive an engineering design process to consensus; not always quickly, but reliably. My superpowers are flexibility about the design details, and stubbornness about my commitment to reaching consensus.


What was a blessing in disguise for you? What seemed like a failure at the time but led to something better later for you?

In my first job after college, I did 3D graphics in C++, which was my goal in life since high school. I was terrible at that job due to my immaturity and mental health problems, and when I asked for a leave of absence my boss told me not to return. As a result, I moved to New York City and started learning distributed systems programming, and I have been here doing this ever since.


What do you feel most grateful for?

My patient mentors in my second job who taught me to focus and prioritize.


What does your perfect day look like?

Half coding, half designing, no Zooms.


What made you most happy in the last year?

Rock climbing outdoors.


Work

What was your biggest mess up? What was the aftermath?

A few years into my career, I wanted to analyze some data in prod, but it was slow so I added an index. Adding the index made Oracle's optimizer choose a new, worse plan for an existing performance-sensitive application query. That query started timing out, and prod went down.


What was your most interesting/surprising or disappointing interaction at work?

The surprising was when my boss told me to make a cross-language test framework to enforce all MongoDB drivers' conformance to a spec. I thought it was a foolish overengineered idea, but it turned out to be one of the best software-quality enhancements I've ever seen.


What do you like most about your job/profession?

Thinking hard and flexible hours.


What do you dislike most about your job/profession?

Recurring Zooms.


What would be the single change that would improve your work environment most?

Fewer meetings.


Technical

What do you think are the hardest questions in your field?

How to balance safety with everything else users want from software.


What are you most disappointed about the state-of-the-art in your field?

Formal methods like TLA+ are little known, hard to learn, and very arduous to use.


What are the topics that you wish received more attention? What do you think is a promising future direction in your field?

Bringing formal specification and implementation closer together.


What is your favorite computer systems paper? Why?

I love the Raft paper, for its commitment to explaining simple things simply for the sake of ordinary coders.


What are the most interesting blogs/twitter accounts you follow?

Heather Cox Richardson


Story

Tell us your story.

Once upon a time I worked for a company with a monolithic Oracle database. We wanted to partition it into two servers, and the Oracle partitioning solution cost six figures. So we split it manually, keeping 2/3 of our customers on the big old server and moving 1/3 of them to a smaller new server. I was tasked with choosing which customers to move. I wrote a simulation of the load on each server given some partitioning scheme, then used a genetic algorithm to choose the optimal partition. Management said, "That's nice but we can't explain it to others," and they just moved all the customers from small US states to the new server instead.


Rant your heart out.

Everyone admires Amazon's style of meetings, where the organizer must write a document and everyone reads it silently at the start of the meeting. Even though everyone admires it, I have never worked for a company that adopted it.



If you enjoy reading this seriesconsider taking 10 minutes and submitting a response. All questions are optional. You can skip most, and tell a lot more on other questions you choose.

Comments

Popular posts from this blog

Learning about distributed systems: where to start?

Hints for Distributed Systems Design

Foundational distributed systems papers

Metastable failures in the wild

The demise of coding is greatly exaggerated

The end of a myth: Distributed transactions can scale

Scalable OLTP in the Cloud: What’s the BIG DEAL?

SIGMOD panel: Future of Database System Architectures

Why I blog

There is plenty of room at the bottom