I want to — I need to — talk about how I attacked three of my friends in front of a large crowd of our peers. As highs and lows go in one’s speaking career, it certainly made the list of “lows” and checked most of the boxes in the list things-not-to-do-in-your-talk. In my attempt to knock down walls that needed to be knocked down, I instead broke bridges that took many years to build. To be more frank: I hurt people.
So what happened?
#ngconf2019 was the 6th ng-conf. Over the three days of the event, many beautiful talks were shared with thousands of people around the world and 1500+ people live at the event. During the next year, the videos on YouTube will get over a million views.
Due to an unforeseen scheduling problem, my talk was moved to be the final talk. Be moved into the wrap-up talk position was done in order to allow another speaker to catch an earlier flight. I (along with my co-presenter christoffer noring) was scheduled to go on stage as the last talk of the three-day event. After us, the Angular team would take the stage for a Q&A session (which was pretty awesome). This meant that Chris and I would be the last actual talk of the conference. This is generally the worst spot in the line up for a speaker. That, combined with the fact that the entire Angular team would be standing by to take the stage afterwards made me nervous.
While Chris and I had solidified our ideas during the weeks before the conference, when we sat down to do a final run through at the conference, we realized that we were giving two different talks, and it was disconnected. While we were both explaining our frustrations with Redux, we were talking in two very different directions. So we added a few slides at the end to try and bring the two talks together. These two slides had a very certain meaning to Chris and me. They contained advice for the larger Redux community (the first slide), and for the leaders of the various Redux communities (the second slide, where the biggest problem occurred). We didn’t want to say any names and target anyone with the advice, so we omitted using any names. Naming names and finger-wagging seemed like a bad idea. So we decided to direct the advice towards “the leaders in the community”. It was vague enough to afford us the chance to give advice without targeting anyone specifically.
We thought that the vagueness was a good thing.
It turns out, however, that most people who are involved in the Angular community all heard the same thing from our talk. Those who know the creators of Angular’s most popular Redux implementation listened to our talk and our “advice” and heard direct criticisms on the creators of Angular’s Redux, NgRx. Chris and I made this interpretation of our talk easier to believe by closing out the talk with a final slide that contained a screenshot of a tweet by one of our friends, and one of the creators of NgRx. The vagueness of the “advice”, combined with poorly-timed usage of a past tweet, was a clear indicator to most people involved that Chris and I, while not naming names, were definitely attacking the creators and maintainers of NgRx.
Who was attacked?
For those who don’t know, the three people who have spent hundreds of hours of their life helping create NgRx are Rob Wormald, Brandon Roberts, and Mike Ryan. If you don’t know those names, then it’s likely that you’re also unaware that these three gentlemen are three of the nicest, most hardworking, and helpful people that you could hope to work with.
Just as we all have a favorite flavored Skittle or a favorite Avenger, Rob is my favorite member of the Angular team. Since his arrival on the team, so many things have improved. I’ve seen his influence come to fruition more than once, and I am a huge believer in Rob.
Brandon is consistently the nicest person in any crowd that he may find himself. I’ve loved talking to him and listening to stories about his family and his children. On top of being impossibly nice, he’s brilliant and is currently the lead on the NgRx team.
After a series of mixed messaging and poor decisions from Chris and me, these three stewards ended up taking the blunt force of the attack we launched at the year’s largest Angular conference.
When people think you publicly attacked some of their favorite people, they don’t wait around for the grass to grow before they tell you about it. Shortly after finishing this talk it became apparent that we’d lost gravity. I could almost immediately see hurt in my friends’ eyes, though at the moment I didn’t understand why.
A few friends were on-the-spot and involved enough to let me know that I had made a major mistake and needed to reconsider my attacks. When they used the word “attack” to describe what I had said/done, I knew that this would be a moment I wouldn’t soon forget.
Shortly afterwards, we received several more very passionate complaints about this same attack. One of the complaints came in through the Code of Conduct email account, and rightfully so. The Code of Conduct at ng-conf certainly exists to prevent, among many other things, anyone from being attacked by another participant. This meant that the Code of Conduct committee was gathered to discuss the conferences reaction to this report of a CoC violation. As one of the conference organizers, I was initially included on the emails regarding what was happening. When asked my thoughts on the report, I asked to be excused from the conversation as it would be a conflict of interest to have me be involved in this process this time. I didn’t want to adulterate the process by being involved.
With help from several partners in the community, Joe Eames and Sara Dansie Jones have been heading up this issue for ng-conf. At this point, the talk has been removed from the conference’s Youtube channel, with a few more movements happening still as I write this post (meaning a modified version of the talk may return to Youtube).
Whether it was intentional or not, I attacked my friends. And it’s quite possible that this was the worst possible place to make this exact mistake. As I write this, I am struggling to think of worse timing for this to happen. At the tail end of the largest Angular gathering ever.
It took a few days to fully grasp how badly I had offended everyone. Not only had I attacked these three legends, I had offended many of the listeners who were involved enough to see the rocks that were being thrown as the talk unfolded. And what’s worse, it wasn’t any speaker that had done this. It was one of the conference organizers. And not just one of the conference organizers, but also one of the Angular GDEs (Google Developer Experts). So not only had I picked the perfectly wrong place/time to do this, I was also one of the worst possible people to make this mistake. Chris is also a decorated GDE, having written several books, including one on the topic of NgRx. The two of us combining forces on this was, in a word, horrible.
This is certainly a very good example of a perfect storm.
Apologies are delicate. And I don’t want to mess this one up. Having talked with Chris first, I got a chance to speak with Rob, Brandon and Mike. I wanted to — needed to — reach out to them and ask for forgiveness. I have rarely in my life been able to hold a conversation like this without losing my composure. These conversations have been no exception. When you look at your friend in the eyes and see the hurt that you caused: that’s a hard moment. The fact that I didn’t mean to do this was ancillary to the fact that I did it. It’s a side note. Were this a book, it is one of the parts that doesn’t make it into the movie. What matters is that I did it. I sat down with my friends and told them that I was excruciatingly sorry for attacking them and being the source and cause of hurt for them. They took time to explain what aspects hurt the most, which was important for me to know. They also gave me advice on what I should try to do and say next time to avoid this.
I think that the path back from where I went will take some time. This isn’t one of those mistakes that you pour some i’m sorry dust on and move on. This apology is a process that is going to require that some time pass and that some effort be made. I value Rob, Brandon, Mike and the entire community. I will take the steps to fix the pieces of this that can be fixed.
Did you see it?
If you made it this far, you’re likely one of the onlookers who witnessed Chris and I drive off the cliff, either in person or after the fact on the YouTube video. If that describes you, then I owe you an apology as well. I am sorry that I used my position as a speaker to send such a negative message. I directly contributed to the lessening of a community that I love very much. A community that has very much changed my life for the better.
Among the many large regrets that I feel is that someone may have watched what happened and felt discouraged from future participation in the community so that they may save themselves from being attacked similarly. Please don’t let this prevent you from sharing your gifts with the entire community. I am sorry.
Next time I get on a stage to speak, I promise to be much more conscious of the words I use and how they may affect others. I am sorry that I allowed this to happen.
This experience has caused hurt, frustration, and dissonance for all involved. Most of my spare clock cycles have been spent on reflection of what happened and what I can do so that this never happens with me again.
Making places for people to feel safe is extremely important to me. And I know that I am asking for a pass by asking you to trust me that I didn’t mean to do this. I am committed to re-addressing the points of my talk so that they can be shared in a way that will make the community better, without any miscommunication, mixed-messaging, or personal attacking involved.
Sometimes people say things that they think will be funny only to find out that it’s not funny. And even more, it’s offensive. That happened here as well. I promise to look more closely at things that I think are “funny” and to question them more.
ng-conf and Angular both mean a lot of things to a lot of different people. As my friend Bill Odom says:
The second best part of Angular is Angular. The first best part is the community.
ng-conf is meant to be a place where people get a chance to teach others, to learn from others, to network and create meaningful partnerships. This experience will be used to sharpen the saw and improve the conference’s efforts to maximize the experience for as many people as possible.