finding my speaking voice

13 min read

Cody Bromley speaking at Thunderplains 2024
Me speaking at Thunderplains 2024 - Photo by Natasha Martin

This week, for the very first time ever, I spoke at a conference. And not just any conference, Oklahoma's largest developer conference: ThunderPlains.

the invitation

A few months ago, I took a leap and applied to speak. I went back and forth in my head for a while, but I felt confident in my ability to do it, so eventually I replied to the call for proposals. A couple weeks later I got a reply letting me know I wasn't selected, which was a bit of a bummer but I understood that as a first time speaker an organization is taking a risk. But three weeks before the conference, my fortune changed. An unexpected email from the organizers let me know they'd lost a speaker and wanted to know if I was still interested. It felt like the universe was calling my bluff. Here was my chance. Was I ready to take it? I very enthusiastically said yes.

Speaking was equal parts terrifying and fun, and it required a lot more prep than I expected. I'm eternally grateful to my wife for tolerating the many nights and weekends I spent in my home office, to my friends and colleagues who sat through some incredibly rough alpha and beta versions of my talk, and to my brother who met me for coffee at 6 a.m. the day of the conference to reassure me I had this. Now that it's done, I simply can't imagine not having done any of it without all of you. Thank you.

And even now, days after, the whole experience feels surreal when I think about my journey here. While I've worked in tech for almost three years now, the first decade of my career was in marketing. At the end of that chapter, I was one of those techier digital marketing people, but I didn't start out that way. But even as I left, I only considered myself a scrappy scripter, nowhere near a real developer.

So even three years ago, much less ten, the idea that I'd be on stage speaking to a room full of developers would have seemed impossible. Not just because I didn't think I could do it, but because I struggled to feel like I even belonged in the audience.

flashback to fluent 2015

Me in SF, in my Vibram FiveFingers

I felt this impostor syndrome most acutely at my very first tech conference: O'Reilly Fluent 2015 in San Francisco. It was the furthest west I'd ever been, the most complex traveling I'd done solo, and the most independent yet alone I'd ever felt. That mix of exhilarating and terrifying feelings was perfectly embodied by schlubby 26-year-old me, standing there in my Vibram FiveFingers and my heart on my sleeve.

The panic really set in when I started meeting people at the conference. These folks worked at real companies - tech giants like PayPal, IBM, and Microsoft, alongside brands like Arc'teryx who needed developers to manage their in-house eCommerce platforms. These were all real live developers who handed me their very real and very cool business cards.

The main hall for Fluent 2015 in San Francisco

Meanwhile, I was just a journalism grad, two-and-a-half years into what felt like a dead-end career as a Drupal webmaster for a medium-sized industrial manufacturing company. I wasn't even that good at managing that Drupal site, and I didn't know PHP. My most significant webdev achievement at the time was adding CSS animations to custom Bootstrap landing pages with form actions routing data to a Wufoo account. I know. Thrilling stuff.

Still, Fluent 2015 opened my eyes to new possibilities. It was the first time I heard about things like the W3C gamepad standard, NeoCities, IPFS, how to make HTML emails that don't suck, Twilio, webhooks and lots of cool things being done with video in the browser. I picked up some actually practical skills too, like SASS, but most of the other sessions I went to might as well have been in a foreign language.

One session in particular really drove home how out of my depth I was: Building Native-Like Hybrid Apps with AngularJS and Ionic. I'd chosen to attend because I had once followed a tutorial to make an incredibly simple iOS app for a trade show kiosk1 using Adobe PhoneGap. But while Ionic and PhoneGap both used Apache Cordova, the similarities end pretty quickly after that.

The idea that I could use web tools to build real apps was fascinating, I always wanted to make an app, and my little kiosk demo was barely a single webview in a browser container. I may have technically made an app, but it was only for one device and it definitely didnt scratch that itch. So I gave this talk a shot. But halfway through, though, I realized I was completely lost. I'd probably heard of Angular before, but that didn't mean I had any idea what it did or how to use it2.

In fact, most of this conference was people talking about JavaScript, and of the classic HTML/CSS/JavaScript stack, JavaScript was my weakest link by far. If any of my webpages ever used JavaScript, it was always 100% copy-pasted from somewhere else because I barely knew how it worked, much less why one approach might be better than another.

After I bailed on the session I wandered the vendor hall, choosing to talk to people from the different companies whose job it was to be interested in me and what I did in order to sell me stuff. But honestly, even in a sympathetic crowd, I still couldn't hold my own and felt actively embarrassed about my limited skills. I'm pretty sure I lied, either actively or at least allowed them to think I was a more serious dev by omission. While I was genuinely interested in what each company had to say or offer, I was just so clearly out of my league. Still, I was at least glad to get my badge scanned in exchange for swag, great stickers, and most significantly, a free book signed by its author. It was part of a series called "You Don't Know JS... Yet" and the volume I picked up was "Up and Going". It was explicitly aimed at someone like me who understood some concepts but wasn't sure how to apply them.

I should have left San Francisco excited. I mean, it was a lot of interesting stuff, and who doesn't love a free book? But the trip revealed I didn't know who I was. That book could have even been the singular artifact to help me overcome my impostor syndrome, but impostor syndrome isn't rational, and what should have been an inspiring trip mostly left me feeling like I should stick to what I already knew. That proudly acquired book would only get loosly thumbed through a few times before ending up shelved for most of the last decade, never to be fully read.

small victories

Back at my day job, I returned to building spaghetti-code Bootstrap landing pages, but yet something had shifted. In small ways, I felt more comfortable trying new things. I started using SASS to make my CSS easier to write, and since those tweaks made my sites easier to templatize, I had more time to experiment. When I discovered Twilio, I learned to do simple things using their TWIML markup language, and later, how to dynamically generate TWIML using PHP. Then I learned what a webhook was. Suddenly, I was doing things I'd never thought possible. When it worked, it was unfreaking believable, but often it didn't, and I really couldn't explain why.

My first piece de resistance came in 2017: an SMS-based multi-team scavenger hunt for a tradeshow event. Each team had their own special codes they'd text to a phone number, and my PHP script would navigate several dozen if statements (I didn't know better) to send them back directions to their next stop. It was incredible, and my co-workers were amazed. We kept using this at events, and I kept making it better. I once added a very hacky way of doing state management using text files on my FTP server. Eventually, I learned how to work with SQLite instead, and my life got a lot easier. The best version ended up being part of a special puzzle box I made as a gift for my brother.

By 2019, I was onto more complex things. I built a site using JQuery + Datatables on the front-end to display SMS and MMS messages sent to a Twilio number (with webhooks handled via PHP). Combined, it was effectively an in-person Zoom chat projected onto a screen at a 50+ person company strategy retreat. It worked amazingly and became legendary inside the company. We used it several more times, and later our parent company had me deploy it for a big meeting. It seriously changed people's perceptions of what I seemed capable of, but not my own. I still felt like some kind of forgery presenting a frankenstein of other people's work. I thought of myself as a DJ making mashups with code instead of music, not an artist.

momentum to mvp

Not long after that success, the company's head of software engineering invited me to work on an MVP front-end for a new IoT product we were prototyping for one of our biggest customers. I was incredibly nervous about failing on a real product. The way I'd been doing development so far was on my own terms. Up until that point if I failed, it was no big deal. It was because I couldn't do it, and I only had myself to disappoint. But here, people were counting on me. In my anxiety, I tried to get out of it by telling the head of software engineering, "I'm not a real developer. I just Google stuff." His response stunned me: "Yes, but you know what to Google. That's what real developers do." I left that meeting feeling like I couldn't back out. So I stayed on.

That project pushed me quite a bit, but thankfully I wasn't starting completely from scratch. The first task was figuring out our platform, and I helped choose one that had low-code/no-code IoT capabilities. We eventually picked Losant, and their theming system intrigued me because it allowed the use of Handlebars inside template HTML. While I was familiar with variables in PHP, the Handlebars system felt incredibly different and, at the same time, easier because of their web IDE. It was my first time experiencing IntelliSense3, and it was eye-opening.

Around the same time, I was pushing for my marketing team to abandon our ugly and expensive vendor-managed promotional item eCommerce site in favor of building our own Shopify site that we'd fulfill in-house. Building that site was a ton of fun and introduced me to the Liquid templating language.

When the pandemic hit, I started learning Salesforce administration, partly because my company was considering adopting it and their certs were free in 2020. Something about all these opportunities (Handlebars, Liquid, and Salesforce) finally made object-oriented programming and relational databases click for me. When I think about what had made me feel like I couldn't be a real developer, it was that I didn't understand, or at least couldn't explain, why anything was happening. Now things were starting to make sense.

ai bridges the gap

These past three years have been a whirlwind of growth and discovery in my journey from hesitant hacker to confident developer, and generative AI played a pivotal role.

When GPT-4 was released, like many others, I was shocked it worked so well. A ton of people praised its coding abilities, so I decided to revisit my old SMS scavenger hunt project. I hadn't kept the source code from my previous job, but I thought it might be fun to rebuild it for an internal initiative to create more joy in the office.

With just a few prompts, AI didn't just help me rebuild it, it radically improved it. Goodbye 75 nested if statements, hello switch statement. I had no idea how to do that before, but there it was, fresh and clean. I polished it further and published my first public GitHub repo and GitHub pages.

Encouraged by this quick success, I had a wilder idea: what if I rebuilt the project in NextJS? Mind you, I didn't actually know NextJS, but I knew PHP had fallen somewhat out of favor as a web framework, and NextJS was gaining popularity with the team at my work and I was curious about a modern approach.

Ten seconds later, looking at a working AI-generated NextJS version, I had an epiphany: I understood more JavaScript than I'd realized. The syntax was different, but my concepts were there, just translated. It was like having a personal Rosetta Stone for code and it instantly made JavaScript a lot less intimidating.

The momentum from that revelation was transformative. It turned out I already had a strong grasp of the important concepts for data movement but just needed help with JS syntax. Adding Tailwind to the mix accelerated my front-end work, with many CSS utility concepts from my Bootstrap days clicking back into place and GPT-4 helped me piece it all together, creating my first React components, API routes, and useEffect functions.

Within a month, I'd launched a small NextJS project at work using NFC tags, and another month later my first real hobby project went live on the web.

Most times I've told this story, I've given AI significant credit for my progress. While it certainly helped, I now recognize it wasn't the whole picture. As I started launching projects, I'd tell friends and co-workers how easy it was to build with GPT-4, thinking it was doing the hardest work. But I often got puzzled looks in response.

It turned out that most people I talked to were much less impressed with AI's output, and told me they were more often getting unusable code and unhelpful explanations. It made me realized my experience wasn't universal. For me, AI was a bridge between what I already knew and what I wanted to learn, but not everyone had those same prerequisites. Those fundamentals had been clicking into place for years before GPT-4 came along, and AI closed the last mile of that gap, helping me see it wasn't nearly as wide as I'd imagined.

One of my coworkers put it best: "Cody, it works for you because you know what to ask the AI."

It was as true as when my old head of software engineering said it. Asking the right question is what being a developer (as well as life, the universe and everything) is all about.

full circle

What made this week truly special was a full-circle moment: one of the other speakers at ThunderPlains was Kyle Simpson – the author whose book I'd gotten at Fluent back in 2015. The day before the event, he posted on LinkedIn about how excited he was to be speaking again. He mentioned that he used to do 20-30 conference talks a year worldwide, but that's slowed significantly. And it's true. Conferences are smaller and less frequent now. O'Reilly Media, who put on Fluent, halted all their conferences in 2020 because of COVID and never brought them back.

Between sessions I also chatted with Vance Lucas, one of the co-founders of Techlahoma and ThunderPlains thanking him for starting this group and conference. Techlahoma is 10 years old this year and Vance told me that in that time a lot of things have changed. The biggest shift, however, might be how much things have changed since 2020. Prior to 2020, Vance said ThunderPlains often maxed out earlybird and available spots with folks from all over, but now there's still a good number of available seats.

ThunderPlains (and Red Dirt JS before it) has always been hosted in conjunction with InnoTech Oklahoma, sharing conference resources with like-minded events like Oklahoma Women in Tech Summit, Oklahoma IT Executive Summit, and We Dreamin' OK (a gathering of Oklahoma's Salesforce community). Just a decade ago, InnoTech proudly stated on their website that they hosted over 1,000 of the region's top business & technology professionals, but this year's keynote, which was the largest gathering of the entire day drawing in attendees from all events, barely filled the third-largest space in Oklahoma City's brand new convention center.

But the pandemic isn't solely to blame. In my former life as a marketer and board member of IABC Tulsa, I witnessed firsthand the challenges professional organizations faced pre-2020. Rising event costs and declining memberships were already straining resources. What compounded these issues for our chapter was a near-complete leadership transition. Almost overnight, we went from the "international chapter of the year" led by industry veterans to a board of mostly early-career professionals. While well-intentioned, our new team found itself without the institutional knowledge or industry connections to really maintain the legacy, but even bigger challenges were outside the organization.

What we didn't know at the time, but were starting to feel, was that a digital revolution was already underway and it was drastically transforming how professionals networked and learned, with online platforms and social media competing for attention. Simultaneously, economic pressures were forcing companies to cut back on professional development budgets and non-essential travel. So, as a result, many professional spheres, including conferences, were having to compete harder for attention and it there were just fewer and fewer of them. The pandemic really only sped up the process.

I'm still sad how little we now prioritize community gatherings, because being at ThunderPlains reminded me that conferences have always been about more than just the presentations. It was incredible to not just attend, but to be in true community. The conversations that flowed between sessions, the shared excitement, the spontaneous discussions about new technologies and what's happening in tech was fun, but the energy is what sticks with you, if even just a small spark. But that spark is what made me become the developer I wanted to be even though I didn't see how to do that. That energy wanted me to make my way back.

And while speaking is an achievement I'm proud of, finding the belonging I'd searched for and spending time with like-minded people without feeling like a fraud is what makes me proudest.