惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
DataBreaches.Net
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
Webroot Blog
Webroot Blog
AI
AI
P
Palo Alto Networks Blog
Attack and Defense Labs
Attack and Defense Labs
WordPress大学
WordPress大学
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
Spread Privacy
Spread Privacy
T
Tor Project blog
罗磊的独立博客
小众软件
小众软件
S
Security Affairs
酷 壳 – CoolShell
酷 壳 – CoolShell
量子位
Apple Machine Learning Research
Apple Machine Learning Research
T
Threatpost
NISL@THU
NISL@THU
博客园_首页
PCI Perspectives
PCI Perspectives
大猫的无限游戏
大猫的无限游戏
IT之家
IT之家
N
News and Events Feed by Topic
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Forbes - Security
Forbes - Security
博客园 - 叶小钗
D
Darknet – Hacking Tools, Hacker News & Cyber Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Last Week in AI
Last Week in AI
L
LINUX DO - 热门话题
T
Threat Research - Cisco Blogs
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
腾讯CDC
Security Latest
Security Latest
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
The Cloudflare Blog
A
About on SuperTechFans
爱范儿
爱范儿
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
TaoSecurity Blog
TaoSecurity Blog
宝玉的分享
宝玉的分享
G
GRAHAM CLULEY
雷峰网
雷峰网
F
Full Disclosure
I
Intezer
Cloudbric
Cloudbric
博客园 - 三生石上(FineUI控件)
U
Unit 42

overreacted — A blog by Dan Abramov

There Are No Instances in atproto — overreacted Algebraic Effects for the Rest of Us — overreacted A Social Filesystem Introducing RSC Explorer — overreacted Hire Me in Japan — overreacted How to Fix Any Bug — overreacted Where It's at:// — overreacted Open Social A Lean Syntax Primer — overreacted Beyond Booleans — overreacted The Math Is Haunted — overreacted Suppressions of Suppressions — overreacted I'm Doing a Little Consulting — overreacted How Imports Work in RSC — overreacted RSC for LISP Developers — overreacted Progressive JSON — overreacted Why Does RSC Integrate with a Bundler? — overreacted One Roundtrip Per Navigation — overreacted Static as a Server — overreacted RSC for Astro Developers — overreacted Functional HTML — overreacted What Does "use client" Do? — overreacted Impossible Components JSX Over The Wire React for Two Computers The Two Reacts — overreacted A Chain Reaction — overreacted npm audit: Broken by Design — overreacted Before You memo() — overreacted The WET Codebase — overreacted Goodbye, Clean Code — overreacted My Decade in Review — overreacted What Are the React Team Principles? — overreacted On let vs const — overreacted What Is JavaScript Made Of? — overreacted How Does the Development Mode Work? — overreacted Name It, and They Will Come — overreacted Writing Resilient Components — overreacted A Complete Guide to useEffect How Are Function Components Different from Classes? — overreacted Coping with Feedback — overreacted Fix Like No One’s Watching — overreacted Making setInterval Declarative with React Hooks — overreacted React as a UI Runtime Why Isn’t X a Hook? — overreacted The “Bug-O” Notation — overreacted Preparing for a Tech Talk, Part 2: What, Why, and How — overreacted The Elements of UI Engineering — overreacted Things I Don’t Know as of 2018 — overreacted Preparing for a Tech Talk, Part 1: Motivation — overreacted Why Do React Hooks Rely on Call Order? — overreacted Optimized for Change — overreacted How Does setState Know What to Do? — overreacted My Wishlist for Hot Reloading — overreacted Why Do React Elements Have a $$typeof Property? — overreacted How Does React Tell a Class from a Function? — overreacted Why Do We Write super(props)? — overreacted
Preparing for a Tech Talk, Part 3: Content — overreacted
2019-07-10 · via overreacted — A blog by Dan Abramov

I’ve done a few tech talks that I think went well.

Sometimes people ask me how I prepare for a talk. For every speaker, the answer is very personal. I’m just sharing what works for me.

This is the third post in a series where I explain my process preparing for a tech talk — from conceiving the idea to the actual day of the presentation:


In this post, I will focus on my process of creating the slides and the actual content of my presentation.


There are two ways to build something.

You can build top-down, where you start with a crude overall outline and then gradually refine each individual part. Or you can build bottom-up, starting with a small but polished fragment, and then growing everything else around it. This might remind you of how some image formats always load from top to bottom, while others start blurry at first but then get sharper as more data is loaded.

I usually combine these approaches when preparing talks.


Top-Down Pass: The Outline

After I know what the talk is about, I write a rough outline. It is a bullet point list of every thought I want to include. It doesn’t need to be polished or clear to anyone other than me. I’m just throwing things at the wall to see what sticks.

An outline usually starts with a lot of gaps and unknowns:

- intro
  - hi, I'm Dan
  - I work on React
- problems
  - wrapper hell
  - ???
- demo
  - ??? how to avoid people getting stressed thinking it's a breaking change
  - state
  - effects
    - ??? which example to pick
    - maybe explain dependencies
  - custom Hooks <----- "aha" moment
- links
  - stress there's no breaking changes
- ???
  - something philosophical and reassuring

Many initial thoughts in the outline might not make the final cut. In fact, writing an outline is a great way to separate the ideas that contribute to the “what” and “why” of the talk from the “filler” that should be removed.

The outline is a living draft. It can be vague at first. I continously tweak the outline as I work on the talk. Eventually, it might end up looking more like this:

- intro
  - hi, I'm Dan
  - I work on React
- problems
  - wrapper hell
  - long components
  - fixing one makes the other worse
  - should we give up
    - lol mixins?
- crossroads
  - maybe we can't fix this
  - but what if we can?
  - we have a proposal
    - no breaking changes
- demo
  - state Hook
  - more than one state Hook
    - mention rules
  - effect Hook
  - effect cleanup
  - custom Hooks <----- "aha" moment
- recap
  - no breaking changes
  - you can try now
  - link to the rfc
- outro
  - make it personal
  - hook : component :: electron : atom
  - logo + "hooks have been here all along"

But sometimes pieces don’t fall into place until after all the slides are done.

The outline helps me keep the structure digestible. For my talk structure, I often follow the “Hero’s Journey” pattern that you’ll find in popular culture everywhere, e.g. in Harry Potter books. You start with some conflict (“Sirius is going after you”, “Death Eaters are crashing the Quidditch Cup”, “Snape takes a shady oath”, etc). Then there’s some setup (buy some books, learn some spells). Eventually there’s an energy peak where we beat the villain. Then Dumbledore says something meta and paradoxical, and we all go back home.

My mental template for talks looks something like:

  1. Establish some conflict or a problem to get the viewer interested.
  2. Walk them through the main “aha” moment. (The “what” of my talk.)
  3. Recap how what we did solves the posed problem.
  4. Finish it off with something that appeals to emotions (The “why” of my talk).
    • This part lands especially well if there’s some unexpected layer or symmetry that only becomes clear at the end. If I get goosebumps, it’s good.

Of course, a structure like this is just a form — and an overused one. So it’s really up to you to fill it up with engaging material and add your own twist. If the talk content itself isn’t engaging, wrapping it up in a cliche won’t help it.

The outline also helps me find inconsistencies. For example, maybe an idea in the middle needs some other concept that I only introduce later. Then I need to reorder them. The outline provides a bird’s eye view of all the thoughts I wanted to mention, and helps ensure the flow between them is tight and makes sense.

Bottom-Up Pass: The High-Energy Section

Writing the outline is a top-down process. But I also start working bottom-up on something concrete like the slides or a demo in parallel.

In particular, I try to build up a proof of concept of the “high energy” part of my talk as soon as possible. For example, it could be a moment when a crucial idea is explained or demoed. How do I go about explaining it? What exactly am I going to say or do, and is it going to be sufficient? Do I need slides? Demos? Both? Do I need to use pictures? Animations? What is the exact sequence of my words and actions? Would I want to watch this talk for this explanation alone?

This part is the hardest for me because I usually end up making many versions that I throw away. It requires a special frame of mind when I can deeply focus, allow myself to try silly things, and then feel free to destroy it all.

I spend a lot of time picking headers, figuring out the sequencing of a live demo, tweaking the animations, and searching for memes. Most of this work is throwaway (e.g. I usually end up deleting all the memes), but this stage really defines the talk for me. My goal is to find the closest route from not knowing to knowing an idea — so I can share that journey later with the audience.

After I feel good about the high-energy part of my talk, I check if the outline I wrote before still makes sense. At this point, I often realize that I should throw away 60% of my previous outline, and rewrite it to focus on a smaller idea.

Do Many Dry Runs

I continue both top-down work (outline) and bottom-up work (building out concrete sections) until there are no more blank spaces. When I have the first draft version of the whole talk, I lock myself in a room and pretend to actually give the talk for the first time. It’s messy, I stumble a lot, stop sentences midway and try different ones, and so on — but I get through the whole thing.

That helps me measure how much I’ll need to cut. The first attempt often ends up much larger than the time slot, but I also often notice that some sections were distracting. So I cut them out, tweak the slides to better match what I want to say, and try to give the whole talk again.

I repeat this process for several days as I keep polishing the slides and the flow. This is a good time to start practicing with other people. I usually start with a single friend, and later do a few dry runs with a small audience (at most 15 people). This is a good way to get some early feedback, but most importantly it’s how I get used to this talk and learn to feel comfortable giving it.

I prefer not to write down complete sentences or real speaker notes. That stresses me out because I feel the pressure to actually follow them and freak out if I miss something. Instead, I prefer to rehearse the talk enough times (from 3 to 20) that the sentences I want to say for any given slide “come to me” without thinking too much. It’s easier to tell a story you’ve told many times before.


In this post, I described how I prepare the content for my talks. In the next post, I will share some tips about what I do on the day of the talk itself.

Previous in this series: Preparing for a Tech Talk, Part 2: What, Why, and How.