Coraline Ada Ehmke

Pride and Prejudice and Programming

Coraline Ada Ehmke

Writing software is, in a way, like writing a novel. Every class is a character with strengths and flaws and motivations. We tell a story with data, within a world that we architect from the ground up. This talk explores how great writers create great stories, and will teach you how five fundamental aspects of fiction apply to software development. Mastering these techniques will help you level up from fan fiction to creating your own masterpiece.

There are five primary elements of fiction: characterization, plot, setting, theme, and style. Authors make decisions throughout the writing process related to these elements, and the combination of their choices with their talent as a writer are what make a novel enjoyable or tiresome. This talk explores each of these elements and their relationship to the process that we as developers follow to write code that tells a story.

What kind of code author do you want to be? At the beginning of my career, I was definitely writing fan fiction: imitating the tone and style of programmers that I admired, and depending on the characters and worlds and plots that better developers than me had created. As I progressed through my career, I gained mastery and began telling my own stories. I learned from more experienced developers by imitating not their style or characterization, but their discipline.

Today, I like to think of myself as a decent writer of code. I still aspire to greatness, but I recognize that like a great work of fiction, a great application requires deliberate effort and devotion to my craft over a period of many years. And I hold out the hope that one day I will write a classic that will be admired by fellow developers and users alike. I aspire to become the Jane Austen of programming. I want to weave the Pride and Prejudice of applications, creating a compelling story that propels its characters forward, triumphing over adversity, and enabling its users to become their best selves. I want my user model to be the Elizabeth Bennett of all user models, a killer combination of wit and resolve and compassion. I want her to navigate the story of my application with grace and dignity and inner strength, and ultimately to fulfill her destiny.