Procrastination And Stress… And The Story Behind Our RxJS SwitchMap Talk
Not a lot of people know this about me, but I am an experienced and certified procrastinator. (With a diploma and all…)
For the past few years I’ve got the opportunity to come and speak at ng-conf, the world’s largest Angular conference.
And every time I managed to get my slides ready just at the last moment.
For example, at ng-conf 2015, for the “ng-wat” talk, my slides + script were (completely) ready only 90 minutes before the actual talk.
For ng-conf 2016, for the “ng-show” the script + static slides were finally done only 2 hours before (after rewriting them all night)
But last year, at ng-conf 2017, my slides for the “Angular Router Authorization & Authentication Real LIVE LIVE LIVE LIVE LIVE Demo”, were finally completed only 10 minutes before the talk.
Last year was a success in terms of the feedback, but a disaster in terms of personal health.
I had to create 2 very complicated shows for the same conference (ng-rap and the LIVE LIVE demo talk), but most of my focus was pointed towards the ng-rap.
These were my mistakes:
- I underestimated how much work it’ll take to create a real live rap song, with a video clip etc.
2. I asked for feedback only in a later point, just a week before the conference itself, not leaving too much room for adjustments (and those “adjustments” were basically writing a whole new different script, but more on that on a different post)
So I had such an exhausting experience last year, that made me go back to the drawing board and figure out how I’m gonna change, because something had to changed.
I wanted to make sure I’ll never experience that feeling again… the feeling of “I worked so hard, but because of all the stress and lack of sleep, I didn’t really enjoy the experience by the end of it.”
But this year….
This year our slides and script are ready for Wednesday, and it’s only Sunday!
Yep, you heard that right, we have days left before the talk! not hours or minutes… days! WHOO HOO!!!
So what was different this year?
This year at ng-conf we are doing a talk called “I switched a map, and you’ll never guess what happened next…”.
Yes, “we”, not “I”, but “we” (more on that later)
The idea behind the talk is to teach about the inner workings of one of RxJS’s most misunderstood operators: `switchMap`
But instead of doing a standard marble diagram lecture about it, or building (yet another) auto-complete component, we decided to go in a different route.
We are going to try and teach about it with a fully scripted, theater show.
Sounds weird? you betcha!
How the hell did you come up with that?
Great question!
It all started a year ago, when I kept struggling to remember what exactly different RxJS operators do.
So I kept coming up with stories, metaphors and sketches that would help me (and my students / clients) remember exactly how it works and what it does.
One of those stories, was about the `switchMap` operator.
It wasn’t too sophisticated (something about a burger king branch), but it helped me remember how do mergeMap and switchMap work.
Fast forward to Angular Connect 2017…
While I was chilling out with Pete Bacon Darwin at the speakers room (Pete is an Angular core team member and also organizes Angular Connect), I’ve shared the idea of having a talk with different sketches that explain different RxJS operators.
Then, I saw his eyes lit up as he started to come up with even more creative ideas on how to do that.
Fast forward to Angular Connect 2017 (but later that day…)
After bumping into Mike Brocchi, (I’ve said sorry) and shared my idea and Pete’s upgrades with him.
I then saw the same spark in Mike’s eyes while he started to talk about a possible name for this talk and suggested a few good upgrades.
So we decided that there’s something there we should explore, so we after that conf, we scheduled a video chat.
An early sign of a potential successful collaboration
After a month or so, just before the submissions for ng-conf have started, me, Pete and Mike got on a hangout call to figure out if we actually have a good idea for a talk, or just a pipe dream.
After 4 hours of brainstorming at its best — constantly upgrading each other’s ideas in a respectful and collaborative way, coming up with even better stories / metaphors to explain the theory behind switchMap, we all knew we had something good in our hands.
Something that could potentially be super valuable for lots of front end developers who like me, struggle to figure out how does switchMap work.
We realized that following the 80/20 rule, and focusing on only switchMap, coding it from scratch, could potentially help to explain other operators as well, at least the theory behind them.
So we submitted this talk.
Getting accepted to ng-conf 2018!
OK, I know the excitement should be familiar to me by now, but it still gets me every time.
But then comes the feeling of “oh… no... wait… we actually need to deliver this promise of a talk now…”
Shit just became real.
My natural instinct was to procrastinate… again!
Because why not? :)
I don’t have all the answers right now, so the “future me” will probably have them, so let’s delegate it to him and forget about it for now.
Plus, I have a history of pushing things to the last minute and somehow making it work…
But not this time!
This time, I wasn’t alone
I had two other committed partners for making this thing a successful talk.
What I loved about working with Pete and Mike, is that we all understood that we probably took upon ourselves a really tough problem to solve, because again, it’s not your ordinary talk, and it’s a really complicated topic to deconstruct in 20 minutes, in a way that people will remember.
Writing a Broadway like stage play, with a script to memorize, queues to remember, stage directions to follow, loads of rehearsals, plus other people to coordinate with, is not an easy task to prepare.
It took us about 2 months of meetings to write the script, plus tons of hours to create the videos.
Videos? what happened to slides?
Teaching RxJS with static slides makes it even harders.
So we decided to go for a really innovative concept with this talk, and coming up with a new way of showing what happens when you run a piece of reactive code.
I won’t get into it right now (you’ll see it on the talk), but it required a lot (a lot!) of video editing.
So together with my good friend and Chief crazy video editor at HiRez.io, David Shushan, we created like 70 tiny videos which will be our “Slides” for this presentation.
Again, this is where my past experience played its part.
In the past, I would have thought to myself: “Oh, it’s just a bunch of code screens and simple slides, that shouldn’t take long”.
But this time I knew better.
It paid off, because although it took us 2 weeks of hard work (just the editing part) to create these video slides, we started just enough time before the deadline.
So two tips for dealing with procrastination:
- Do stuff with other people, it’s easier to bounce your ideas and not get stuck in your head.
- Don’t be naive about how much time stuff take, always start the slides a month in advance.
Now, the jitters are starting
Apperantely, no matter how many talks I give, whenever I try a new concept, I always have a feeling of nervousness (fear, stress, etc).
How to deal with stress — Tip #1
One trick that helps me deal with it is to remember that fear has the same kind of feeling as excitement.
So if you’re saying to yourself: “Maybe I’m not scared, maybe I’m just excited”, that fear could be channeled into a more positive feeling.
Now this Adrenalin is working for me, feeling even better than that time I ate a “space muffin” in Amsterdam, right after my NG-NL talk :)
How to deal with stress — Tip #2
Another thing that helps me to calm myself down and stop focusing on the fear of failure, is to re-shift my focus from myself (i.e — what will happen if I’ll fail), to focus on the value this talk will give to others, without caring about my personal gains if it’ll be successful.
I tell myself that I came to give, not to get, and with this mindset, even if something will get messed up and the talk will go bad, I won’t lose anything, because my intention was to give, and not to get anything out of it.
So this year will be different
So this year I’m planning on having much more fun at the conference, talk to lots more people (last year I didn’t have almost any time to talk with attendees), and just chill and absorb the wonderful experience which is ng-conf.
If you’re at ng-conf, come and say hello!
Come and talk, yell “Cheers” holding a beer, ask questions and let’s make it a fun time for everyone!
Or you can watch it live
If you don’t want to miss our talk, and curious if it will be successful or we’ll crash and burn (which will be even funnier :) )..
It will be live streamed on the ng-conf website, 18th of April (Wednesday), at 2:10pm (Utah time).
Final thoughts
So we still have some preparation work left, mainly rehearsing, but I must say it was and still is a treat to work with Pete and Mike, they are both super creative and dedicated, and it really feels like we are speaking the same creative language.
That’s it, in 20 minutes I’m taking a taxi to the airport, to my flight(s) to Salt Lake City, and from then on it will be a constant stream of rehearsals, until we’ll go up on stage.
Wish us luck! :)
Yours truly,
Reactive Teacher Man
@shai_reznik | @hirez_io
UPDATE: Here is the final result from ng-conf 2018
UPDATE #2: Behind the scenes interviews
Adventures in Angular — my behind the scenes story
A day after the talk, I sat down with Charles Max Wood from Adventures in Angular to share is my personal story from the talk, check it out —
Angular Air: Talk Retrospect
A few weeks after the talk, the three of us had a LIVE retrospect meeting during an Angular Air episode, hosted by the lovely Justin Schwartzenberger and Bonnie Brennan.
We talk about the behind the scenes and fun stories that lead up to this talk, and the unexpected things that happened during the talk itself.