{"id":668,"date":"2022-12-05T10:54:45","date_gmt":"2022-12-05T18:54:45","guid":{"rendered":"https:\/\/blog.mozilla.org\/careers\/?p=668"},"modified":"2022-12-05T12:54:19","modified_gmt":"2022-12-05T20:54:19","slug":"software-engineer-mike-conley-joy-of-coding","status":"publish","type":"post","link":"https:\/\/blog.mozilla.org\/careers\/software-engineer-mike-conley-joy-of-coding\/","title":{"rendered":"Software Engineer Mike Conley on sharing \u201cThe Joy of Coding\u201d"},"content":{"rendered":"<p><i>When Mike Conley joined the Mozilla team in 2011, he never imagined that he\u2019d someday be livestreaming his work every week. But a few years ago, a challenge from <\/i><a href=\"https:\/\/www.mozilla.org\/en-US\/about\/leadership\/#mitchell-baker\"><i>CEO Mitchell Baker<\/i><\/a><i> prompted him to do just that, and now \u201c<\/i><a href=\"https:\/\/mikeconley.github.io\/joy-of-coding-episode-guide\/\"><i>The Joy of Coding<\/i><\/a><i>\u201d is giving viewers around the world an inside look at what it\u2019s really like to build Mozilla products \u2014 as Mike says, \u201cwarts and all.\u201d Below, the principal software engineer explains his path to Mozilla and the reasons he stays, describes the stretch project that helped him build his career and shares the benefits of working in front of an audience.<\/i><\/p>\n<p><b><a href=\"http:\/\/blog.mozilla.org\/careers\/files\/2022\/12\/mike-conley-scaled.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"alignleft size-medium wp-image-669\" src=\"http:\/\/blog.mozilla.org\/careers\/files\/2022\/12\/mike-conley-300x400.jpg\" alt=\"\" width=\"300\" height=\"400\" srcset=\"https:\/\/blog.mozilla.org\/careers\/files\/2022\/12\/mike-conley-300x400.jpg 300w, https:\/\/blog.mozilla.org\/careers\/files\/2022\/12\/mike-conley-600x800.jpg 600w, https:\/\/blog.mozilla.org\/careers\/files\/2022\/12\/mike-conley-768x1024.jpg 768w, https:\/\/blog.mozilla.org\/careers\/files\/2022\/12\/mike-conley-1152x1536.jpg 1152w, https:\/\/blog.mozilla.org\/careers\/files\/2022\/12\/mike-conley-1536x2048.jpg 1536w, https:\/\/blog.mozilla.org\/careers\/files\/2022\/12\/mike-conley-1000x1333.jpg 1000w, https:\/\/blog.mozilla.org\/careers\/files\/2022\/12\/mike-conley-scaled.jpg 1920w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a>What\u2019s your background and what brought you to Mozilla?<\/b><\/p>\n<p>I was big into theater in high school, but because that can be a hard way to make a living and I had decent math scores, my guidance counselor suggested I look into electrical and computer engineering. I turned out to be terrible at the electrical part, but pretty good at the computer part, so I ended up double majoring in computer science and theater at the University of Toronto. Every day I\u2019d go from yoga to calculus or programming to voice class. It was actually really energizing.<\/p>\n<p>When I graduated in 2008, the job market was pretty bad, so I decided to go to grad school and do software engineering research. I had a graduate supervisor who knew a lot of people in the industry, including at Mozilla, and I started working as a contractor on <a href=\"https:\/\/www.thunderbird.net\/en-US\/\">Thunderbird<\/a> (Mozilla\u2019s email client) after I finished my degree. Then when that contract was about to expire, they invited me to join full time. That was about 11 years ago, and I\u2019ve been here ever since. I love the people, the work we do and the challenges. I get to solve puzzles for a living! And I get to wake up every morning and think about how to make the web a better place, rather than how to raise a stock price.<\/p>\n<p><b>Tell us about the work you\u2019ve done since joining the team.<\/b><\/p>\n<p>I started out doing little bits of UI work \u2014 first on Thunderbird, and then on the Firefox team. I was polishing up the user interface, moving buttons around, writing patches to fix bugs. Then I was fortunate enough to be invited to work on some larger architectural projects, including one we codenamed <a href=\"https:\/\/wiki.mozilla.org\/Electrolysis\">Electrolysis<\/a>. At first, I felt so outside of my comfort zone. I\u2019d done a little bit of C++ programming previously and was interested in doing more, but this was definitely a stretch project \u2014 I had impostor syndrome and thought, \u201cAm I the wrong person for this job? Maybe they made a mistake.\u201d But I ended up staying with that project for three years, and I think it allowed me to level up and led to a lot of the work I\u2019ve done since. It was a great team, and I got to learn from some really smart people I otherwise might not have met.<\/p>\n<p>I also came away with a much better understanding of the Firefox codebase. Browsers these days are analogous to operating systems \u2014 they\u2019re big and complicated. But it\u2019s like a city. It\u2019s not possible to know the whole thing, but you can get to know one block, or one neighborhood, or the transit system. And then over time, patterns emerge, and you start to see the bigger picture and understand how everything ties together.<\/p>\n<p><b>Can you share more about the work you did on Electrolysis?<\/b><\/p>\n<p>It was a big project \u2014 we had to essentially re-architect Firefox, and do it while people were using it without disrupting their experience. Our goal was to switch from a single-process browser, where all of your web content is running in the same program, to multiple processes. The simpler architecture had its advantages, but when everything runs inside the parent process, it\u2019s more susceptible to abuse, and to performance issues \u2014 if a web page is running slow or crashes, for example, it will slow down or crash the whole browser rather than just one tab.<\/p>\n<p>We had some of the infrastructure we needed already in place for plugins like Flash and Java, but we wanted all web content running separately from the browser UI. So it was like taking a Gordian knot and finding a way to slice it in half, which meant making some hard choices. XUL (user interface language) add-ons were one of those; we initially tried to make them work with the process separation model, but it was clumsy and glitchy. We had to make the call to deprecate them and create the web extension APIs, so we could ultimately ship a more secure, performant, stable browser.<\/p>\n<p>We pulled it off, which was a big moment for us, and I personally learned so much from getting that broad view of the browser \u2014 when you cut a knot in half, you touch a lot of different pieces. Working on Electrolysis is what gave me the confidence to dive into an unfamiliar piece of code and say, \u201cWell, I don\u2019t know what this is, but I\u2019ve figured things out before. I\u2019ll talk to the right people and figure this out, too.\u201d<\/p>\n<p><b>You do a weekly livestream called \u201cThe Joy of Coding,\u201d where viewers watch you work. How did that come about, and what kind of impact has it had?<\/b><\/p>\n<p>The initial catalyst was a talk our CEO, <a href=\"https:\/\/www.mozilla.org\/en-US\/about\/leadership\/#mitchell-baker\">Mitchell<\/a>, gave at an All Hands meeting, where she challenged us to find ways to be radically open. Not long after that I was at home, watching TV, and the old Bob Ross show \u201cThe Joy of Painting\u201d came on, which I\u2019ve loved since I was a kid. Normally when you see a painting, you\u2019re only seeing the end result. But on that show, you get to see the process. If he makes a mistake, he turns it into a tree. I wanted to do the same thing with software \u2014 share my screen and narrate as I worked. I wasn\u2019t sure whether anyone would actually watch, but if nothing else I was curious about what it would be like to work that way \u2014 including not checking email or Twitter for an hour and a half!<\/p>\n<p>I also wanted people to see what goes into something like Firefox, warts and all. I don\u2019t go into a stream with a plan \u2014 there\u2019s no code prewritten, and I might not even have a solution in mind. I just poke at something and see where I get. No, that didn\u2019t work. Neither did that. But oh, this did.\u201d Just like painting, that process is usually hidden, sometimes even from the other people working on a project. But if someone sees your struggle, not only can they learn from it, it also helps fight impostor syndrome. That\u2019s actually turned out to be one of the main benefits of streaming, I think. It\u2019s a way for me to show people that if I can figure things out, so can they. I\u2019ve been doing this for more than a decade, and I still make mistakes every day. I\u2019m not doing anything special. I\u2019m just being persistent.<\/p>\n<p>There are lots of other benefits, too. I have a Google form viewers can fill out to communicate with me, and I\u2019ve learned a lot from them. They are also great at spotting typos in my code. And more than one of them has gotten involved with Mozilla. I just met someone at All Hands in Hawaii who stumbled on my streams when YouTube recommended it and started to contribute, and now she\u2019s a contractor helping us migrate from Amazon Web Services to Google Cloud Platform.<\/p>\n<p><a href=\"https:\/\/www.youtube.com\/playlist?list=PLmaFLMwlbk8wKMvfEEzp9Hfdlid8VYpL5\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter wp-image-671 size-full\" src=\"http:\/\/blog.mozilla.org\/careers\/files\/2022\/12\/joy-of-coding.png\" alt=\"\" width=\"1110\" height=\"624\" srcset=\"https:\/\/blog.mozilla.org\/careers\/files\/2022\/12\/joy-of-coding.png 1110w, https:\/\/blog.mozilla.org\/careers\/files\/2022\/12\/joy-of-coding-300x169.png 300w, https:\/\/blog.mozilla.org\/careers\/files\/2022\/12\/joy-of-coding-600x337.png 600w, https:\/\/blog.mozilla.org\/careers\/files\/2022\/12\/joy-of-coding-768x432.png 768w, https:\/\/blog.mozilla.org\/careers\/files\/2022\/12\/joy-of-coding-1000x562.png 1000w\" sizes=\"(max-width: 1110px) 100vw, 1110px\" \/><\/a><\/p>\n<p><b>What\u2019s next \u2014 for you and your work and streaming, and for Mozilla?<\/b><\/p>\n<p>I want to keep doing The Joy of Coding\u201d; thinking out loud is such a useful tool for problem-solving. It forces you to confront your assumptions and helps you see the gaps and new ideas to try. And I think it\u2019s always good to get comfortable with the vulnerability of making mistakes in front of people.<\/p>\n<p>As far as work itself, I\u2019m contributing to changes in the UI to support the upcoming Manifest v3 changes to WebExtensions in Firefox. We\u2019re adding some new controls to our navigation bar to make it easier to control your WebExtensions and what web content they can access. There\u2019ll be broader communication about this change as it becomes more ready, but in the meantime you can read <a href=\"https:\/\/groups.google.com\/a\/mozilla.org\/g\/firefox-dev\/c\/Nw-P1KJlf6U\">this mailing list post<\/a> about it by my colleague Will Durand. After that, I\u2019m going to be looking at ways we can make it easier to migrate from other browsers to Firefox.<\/p>\n<p>It\u2019s worth noting that at Mozilla we punch above our weight \u2014 we\u2019re up against giant companies like Microsoft, Google and Apple. That requires ways to compete asymmetrically. We figure out what our superpowers are and make them our advantage. We try to find the places where our competitors won\u2019t go.<\/p>\n<p>As far as what\u2019s next for Mozilla, I\u2019m not good at predicting the future. But the world does seem to be much more aware of privacy on the web than even just a few years ago. It\u2019s not the Wild West anymore; it\u2019s a big business, and every browser is trying to brand themself around the things we\u2019ve been doing since the beginning. So I think we\u2019ll see more investment in innovations to protect data and privacy, and more value placed on Mozilla\u2019s areas of expertise. Making the web better is never easy, but if you read the <a href=\"https:\/\/www.mozilla.org\/en-US\/about\/manifesto\/\">Manifesto<\/a>, that\u2019s the job \u2014 it\u2019s why we exist. We aren\u2019t going to move the mountain overnight, but it can be done.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>When Mike Conley joined the Mozilla team in 2011, he never imagined that he\u2019d someday be livestreaming his work every week. But a few years ago, a challenge from CEO &hellip; <a class=\"go\" href=\"https:\/\/blog.mozilla.org\/careers\/software-engineer-mike-conley-joy-of-coding\/\">Read more<\/a><\/p>\n","protected":false},"author":144,"featured_media":673,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[453],"tags":[],"coauthors":[306191],"_links":{"self":[{"href":"https:\/\/blog.mozilla.org\/careers\/wp-json\/wp\/v2\/posts\/668"}],"collection":[{"href":"https:\/\/blog.mozilla.org\/careers\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mozilla.org\/careers\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/careers\/wp-json\/wp\/v2\/users\/144"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/careers\/wp-json\/wp\/v2\/comments?post=668"}],"version-history":[{"count":0,"href":"https:\/\/blog.mozilla.org\/careers\/wp-json\/wp\/v2\/posts\/668\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/careers\/wp-json\/wp\/v2\/media\/673"}],"wp:attachment":[{"href":"https:\/\/blog.mozilla.org\/careers\/wp-json\/wp\/v2\/media?parent=668"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mozilla.org\/careers\/wp-json\/wp\/v2\/categories?post=668"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mozilla.org\/careers\/wp-json\/wp\/v2\/tags?post=668"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blog.mozilla.org\/careers\/wp-json\/wp\/v2\/coauthors?post=668"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}