When we last left our heroine, she was just stating that although she'd be accompanying Ben to Seattle for his talk at CPPCon 2017, she wouldn't be attending the actual conference...
There were a few reasons I didn't intend to go. For one thing, I'm very much a C++ novice, just wading my way through the beginning of my education. I assumed that there would be nothing there for me, and although the conference is quite reasonably priced -- less than $1k for a whole week of content! -- I was unsure as to whether it would be a waste of money for my skill level. Plus, there's that pesky impostor syndrome that sneaks up on me with a less-than-friendly reminder that I'm highly unintelligent and that should I dare darken their doorstep I would be swiftly exposed as the fraud I really am.
Indeed, I had planned a whole week of excursions and exploration in Washington State when Ben invited me to dinner with him and a few colleagues from the conference.
My experience as a female programmer has made me incredibly wary when it comes to meeting my male counterparts. I've implemented entire automation frameworks and spearheaded learn-to-code initiatives only to have the credit ripped away from me and given to a random guy on my team. Once in a while I've even run into the dreaded brogrammer, the type who reads manifestos detailing why women are supposedly unsuitable for engineering jobs and agrees with every word. If I had a nickel for every time I've been talked down to or talked over, or a sentence to me started with "I don't know how much you know about code, but..." I'd have fled the country and bought myself a lovely estate somewhere in Devon by now.
Thankfully, not a single person I met during the past week fell into that category.
Instead, I was surrounded by programmers of all education and skill levels, genders, races, and areas of expertise. It was an environment that inspired collaboration and the exchange of knowledge, encouraged friendly debate and intellectual discussion, and made me feel truly welcome and safe. CPPCon has and enforces a zero-tolerance policy of harassment or other bad behaviors, which is more than some other conventions and conferences out there can say for themselves.
I expected to put in an appearance as The Significant Other of Benjamin Deane and quickly find myself left out of the conversation or otherwise cued to leave. Quite the opposite happened -- I was treated as an equal, offered multitudes of invaluable advice on my own programming efforts and fighting back against impostor syndrome, and reinvigorated with regards to my personal projects. For a long time I was so demoralized that I stepped away from code. Suddenly I felt like the world was shiny and new again, and that I could do this, I wanted to do this.
At the encouragement of my new friends, I ended up attending the evening lightning talk sessions, which were open to the public, and I was hooked. With just five minutes to present various food-for-thought topics related to C++ and general programming, it was a smorgasbord of brilliant engineers from a wide variety of industries. Although some of the concepts were definitely above my current expertise, it was still easy to recognize the value of those I didn't yet have context for.
As it turns out, Friday, the final day of the conference, was open to the public. Ben kindly lent me one of his dev shirts -- I was entirely unprepared in this regard, since I never dreamed I'd be brave enough to attend a programming conference, after all -- and off I went, a small Bunny in a world of very smart giants.
Choosing which talks to attend was harder than I imagined it would be. My sole complaint about the conference is that there were several equally fascinating talks by major players in the C++ world in conflicting time slots, and the only two talks given by female engineers were also slotted against each other. The good news is that videos of all the talks from the current year and previous years are made available on the official CPPCon YouTube channel shortly after the conference ends, but it's not quite the same as being in the audience for the live presentation. Unfortunately, it may be somewhat unavoidable with a limited number of days for the event and so many quality presentations to offer.
Undefined Behavior is Awesome! by Piotr Padlewski: I'm a huge fan of edge cases and learning how to avoid common coding pitfalls, so attending Piotr's talk was a no-brainer for me. Not only were some of the most pervasive undefined behavior sins outlined here, but tips and solutions for their mitigation followed each case. This invaluable information was presented with exactly the right amount of humor -- enough to keep it interesting, but not so much that it cheapened or drowned out the point. My main takeaway is that compiler optimizations are an awesome way to save us from ourselves (and the neverending hunger of Clang), and I'll definitely be toggling a few of them on before I start any projects!
Traveling the Solar System with C++: Programming Rocket Science by Juan Arrieta: Rocket science. ROCKET. SCIENCE. How could I pass this one up? Juan is an engaging speaker who worked on our dearly departed Cassini at JPL and used that experience to bring us a fascinating overview of what it takes to power a spacecraft with code. If I had to choose a single favorite talk, it was this one. As soon as the presentation videos are uploaded to YouTube, I plan to watch it a few more times. Juan starts with a brief history of what we know about the universe and then gives some easy-to-grasp examples of not just the code itself, but some very unique considerations that must be made when programming for space exploration. I'm sad to say that the slides for this talk haven't been uploaded yet, but if you ever wanted to be an astronaut as a kid -- heck, or especially as an adult -- do not miss this talk once it's made available! Also, Juan, please write a book, because I would love to read it, and I'm sure I'm not the only one.
Curiously Recurring Bug Patterns in C++ at Facebook by Louis Brandy: Another chance to learn about all of the interesting ways that code can go wrong! Louis was quick to point out at the beginning of the talk that he wouldn't be covering some of the more arcane bugs in his talk, and while I'd love to see a second presentation to go over those, it was a choice that added much more value to this one -- after all, it's much more useful to be made aware of mistakes you might actually make than the one-in-a-million errors unlikely to ever happen. Like Piotr's talk about undefined behavior, solutions were offered alongside of each case study. ASAN is our friend and we should not fear it. The bugs selected for discussion are also not exclusive to Facebook's architecture; these are the types of simple errors that any C++ engineer at any company in any industry could make. All in all it was an entertaining and extremely well-curated presentation.
Unbolting the Compiler's Lid: What Has My Compiler Done for Me Lately? by Matt Godbolt: Yes, THAT Matt Godbolt, the angel who brought us the Compiler Explorer tool. Ever wanted to see under the hood of your compiler for various architectures? Compiler Explorer lets you do that. I'm not ashamed to admit that a good chunk of this talk felt a bit over my head, as I'm not yet developing anything in C++ to the point that I need to worry about compatibility testing my code against multiple chipsets, but there is something oddly enticing about assembly language and being able to access it so readily. If you're feeling generous, please support Matt and his Compiler Explorer project on Patreon, because in addition to creating a really useful tool that's being used heavily in the programming community, he's just a really nice guy.
Building for the Best of Us: Design and Development with Kids in Mind by Sara Chipps: Teaching the next generation to code from an early age is so important, especially when you focus on girls. Our society doesn't encourage girls nearly enough when it comes to STEM, and Sara is working to change that with Jewelbots, friendship bracelets that can be programmed simply in C++ using the Arduino IDE. Not only did we hear from Sara herself on the challenges surrounding designing a programming project that's easy enough for kids without dumbing it down to the point of losing educational value, but we were honored to hear from two brilliant young ladies, Sumeya and Eleanor, who have jumped right into their own Jewelbots projects. I teared up a little hearing them talk with such passion and professionalism about code -- I wish I had grown up during a time where something like this would have been available to me. I truly hope that the day comes soon where we'll be seeing their talks at CPPCon! I'd also like to admit that as a fully-grown woman, I want a Jewelbot for myself, although based on whispers I heard in the audience, I'm not the only one. Jewelbots is an open-source project, so if you have experience with Arduino and/or C++ and want to contribute to encouraging girls to code, wander on over to their GitHub and commit a few things!
So was it worth it for me, as a beginner, to attend this conference?
I can't stress enough how grateful I am to the C++ community members I met during the dinners and lightning talks and event for restoring my faith in the programming community and inspiring me to get back into my IDE. I don't feel like an impostor or like I'm not good enough or that I'll never be able to achieve anything after talking to these folks; instead, I feel like the world is my oyster, and my goal is to submit a presentation to CPPCon 2019. In the meantime, I'm already planning how I might make it to the full week of 2018's conference, and look forward to seeing everyone there!