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

推荐订阅源

N
News and Events Feed by Topic
GbyAI
GbyAI
博客园 - Franky
宝玉的分享
宝玉的分享
Blog — PlanetScale
Blog — PlanetScale
Google DeepMind News
Google DeepMind News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
人人都是产品经理
人人都是产品经理
Microsoft Azure Blog
Microsoft Azure Blog
The Register - Security
The Register - Security
腾讯CDC
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
I
InfoQ
The Cloudflare Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Engineering at Meta
Engineering at Meta
MongoDB | Blog
MongoDB | Blog
有赞技术团队
有赞技术团队
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
F
Full Disclosure
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Vercel News
Vercel News
博客园 - 【当耐特】
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
Schneier on Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Project Zero
Project Zero
量子位
M
MIT News - Artificial intelligence
Stack Overflow Blog
Stack Overflow Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
美团技术团队
Attack and Defense Labs
Attack and Defense Labs
C
Cybersecurity and Infrastructure Security Agency CISA
T
The Blog of Author Tim Ferriss
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Troy Hunt's Blog
Google Online Security Blog
Google Online Security Blog
罗磊的独立博客
P
Proofpoint News Feed
Schneier on Security
Schneier on Security
Spread Privacy
Spread Privacy
S
SegmentFault 最新的问题
L
LINUX DO - 最新话题
Simon Willison's Weblog
Simon Willison's Weblog
爱范儿
爱范儿
博客园 - 聂微东
A
About on SuperTechFans
PCI Perspectives
PCI Perspectives
D
Docker

Chip Cullen

The need for importance, and AI: Chip Cullen An updated Colorosetta: Chip Cullen The Return of the Font Combinator!: Chip Cullen Changing the number of an item in an ordered list: Chip Cullen My pizza dough recipe as of May 2025: Chip Cullen Gonna try to be a bit more personal: Chip Cullen How I built dynamic social media images in Eleventy using Cloudinary: Chip Cullen My current approach to AI : Chip Cullen Lessons Learned Surviving a Major Product Launch: Chip Cullen How to Build a Drop Down Menu with Modern CSS: Chip Cullen How to stop page scrolling when you have an open dialog element: Chip Cullen Distraction Driven Development: Chip Cullen How I learned to code: the art of letting go: Chip Cullen In praise of the switch statement: Chip Cullen Project stuck? Think about how you’re breaking it down & question everything: Chip Cullen So how did the onboarding experiment go?: Chip Cullen Ideas for an Onboarding Checklist: Chip Cullen I really like Post Mortems: Chip Cullen Raise Red Flags Early: Chip Cullen How to mock fetch requests in React Testing Librarty tests: Chip Cullen Adding the View Transitions API to my personal site: Chip Cullen A Lightweight Way to Read GraphQL Data: Chip Cullen How to make a color changing favicon: Chip Cullen Using a Pros/Cons list to help navigate technical discussions: Chip Cullen How to use variable fonts from Google Fonts: Chip Cullen A new website: now on Eleventy!: Chip Cullen How to Truncate Type at More Than One Line with Just CSS: Chip Cullen Colorosetta: the VS Code Extension!: Chip Cullen Using CSS Custom Properties and Logical Properties Together: Chip Cullen Browser Dev Tools: Element Inspector Popover: Chip Cullen The Link with rel=preload is a Seperate Thing: Chip Cullen How to have Dark & Light Mode Images that also works with User Choice: Chip Cullen Don’t use Viewport Units for Font Size on their own: Chip Cullen A little known Media Query: Aspect Ratio: Chip Cullen Meta thinking: Managing Decisions: Chip Cullen Give Your To-Do's Context: Chip Cullen Say What the Impact is when Reporting Issues: Chip Cullen Firefighting 101: How to Manage Breakages: Chip Cullen How to Deal With Large Pieces of Technical Debt: Chip Cullen Make Your Request Clear: Chip Cullen Analytics events, HTML classes, and protecting against refactoring: Chip Cullen How We Removed jQuery from a large app: Chip Cullen New tool: ColoRosetta: Chip Cullen What width and height attributes should you use with responsive images?: Chip Cullen Django 3.1 gotcha: Referrer Policy has a new default, and it might break iframes and links: Chip Cullen A Javascript Component Pattern: Chip Cullen CSS min(), max() and clamp() Functions: Chip Cullen Pointer Events and Inline Elements in Chrome: Chip Cullen Resolving a github repo and a new Create React App: Chip Cullen How to POST *Data* with the Fetch API: Chip Cullen The Contrast Triangle: Chip Cullen Advice on interviewing for Junior Developers: Chip Cullen Life Lessons Learned From Running a Marathon: How to do something really hard: Chip Cullen A (Brief) intro to Search Engine Structured Data: Chip Cullen Javascript Fallback Values on Variables and Booleans - a hard lesson: Chip Cullen Alfred Tip: Quickly Access Common URLs: Chip Cullen Responsive Images in Hugo - by Laura Kalbag: Chip Cullen Making a Gatsby Site with Multiple Content Types: Chip Cullen How to Create and Use Fixtures in Cypress Tests: Chip Cullen Fixing the 'Bad Interpreter' Error from AWS and Python 3.7: Chip Cullen Creating a Canonical Tag in a Django Template: Chip Cullen Responsive spacing with viewport and ch units: Chip Cullen Welcome to my New Design - 2019: Chip Cullen Django Templates: Block and If statements don’t work like you might expect: Chip Cullen Books I Read in 2018: Chip Cullen Lifehack: 4 ways to help tame common email noise: Chip Cullen How to make better Pull Requests: Adding Steps to Test: Chip Cullen The unsung develpment tool: Spreadsheets: Chip Cullen Troubleshooting Adding and Removing EventListeners: with Arguments, Debounced, and in a React Class: Chip Cullen How to Fake the Window Object in Jest and Enzyme: Chip Cullen Migrating From Wordpress to Hugo: Chip Cullen Background Repeat and its Possibilities: Chip Cullen Getting Started With Front End Tests: a Mindset: Chip Cullen Migrating a Blog - An Opportunity for a Content Inventory: Chip Cullen Moving to Hugo: Chip Cullen JavaScript events: .target vs .currentTarget: Chip Cullen Things I wish I knew when starting with Python: Chip Cullen Leading Ampersands for modifiers in Sass: An anti-pattern: Chip Cullen How to get rid of the "You have mail" message in your terminal: Chip Cullen Why three typefaces rule the web, and what you can do about it: Chip Cullen You shouldn't worry about Section 508 - it's Section 504: Chip Cullen Looping Video Backgrounds: pointers and pitfalls: Chip Cullen How to “preview” a click event tag in the Google Tag Manager console: Chip Cullen Moving on from a technology, or: life after Drupal: Chip Cullen Don’t be a dumb developer: Chip Cullen Two level breadcrumbs with CSS :only-child: Chip Cullen Simplicity comes with experience: Chip Cullen Do the least amount possible: Chip Cullen SVGs vs. Icon Fonts: Two points in favor of Icon Fonts: Chip Cullen Accessible links without underlines: Chip Cullen The Strategic Job Hunt: Chip Cullen Surviving Getting Laid Off: Chip Cullen How to structure your typography in Sass: Chip Cullen Layer Cake: A Responsive Design Layout Pattern: Chip Cullen Creativity is yet to come in Web Design: Chip Cullen Front End Testing with Wraith: A Step by Step Recipe: Chip Cullen Where to begin? How I start a visual design for the web: Chip Cullen If you could only have five Google Fonts: Chip Cullen Why SVG is so cool (or: what happens when you're late to the party on something): Chip Cullen How to apply classes to elements with CKEditor 4, in Drupal 7: Chip Cullen
Running a Structured Meeting: Chip Cullen
2023-09-16 · via Chip Cullen

Meetings are expensive.

If you consider people's time x their salary, meetings are incredibly expensive to hold. Especially if they involve a large number of attendees.

Just for round numbers, let's say you have a meeting that lasts two hours, with ten people who make $80,000 a year.

$80,000 year / 2000 working hours per year = $40 an hour, x 10 people x 2 hour block of time - that's an $800 meeting.

The three major ideas that I am writing up here will help you run a much more effective meeting, and the people you work with will thank you for it.

Background

I've led a lot of meetings over the years. To do this well is a practiced skill that you need to be intentional about. Good meetings don't just happen.

I was fortunate during an early phase of my career to work at a consulting firm that specialized in running large meetings. Their clients were high level government officials, so these large meetings had to make use of everyone's time effectively. The folks in those rooms were not the kind of people who tolerated wasting time.

What I'm sharing here are the barest essentials that I picked up from that experience. These are useful ideas that will improve any meeting that you need to organize that is more than an informal discussion.

Prepare to prepare

The fact of the matter is that getting ready to hold a truly effective meeting takes time. More time than you'd expect.

For major meetings, the rule of thumb I was taught was for every hour of meeting time, it's at least three hours of prep time.

Now, that was true for major, all-day affairs with dozens or hundreds of people. You may find yourself not needing to spend quite that much time getting a meeting ready, but know that there is a spectrum of preparedness that you're on.

While at first blush these might seem like a major time suck for you (and it is) - keep in mind that you will be making infinitely much better use of the time for everyone in that meeting. The more high up the attendees of your meeting, the more you should be sweating the prep.

Also, a truly well prepared and run meeting will get everyone to an objective faster. Organizationally it's a real speed boost. If you finally manage to get all of the right people in the room, it's amazing how quickly real decisions can be made.

Communicate Outcomes and an Agenda

When sending out the original meeting invitation, there are two key elements to communicate: the outcomes that are being sought, and the agenda for the time in the meeting.

What do you mean by outcomes?

A simple, clear, and brief statement on the goal of the meeting. What are you hoping to accomplish? If you can't articulate this, then you probably shouldn't be holding a meeting.

Bad example of an outcome statement:

Let's brainstorm on what's needed for our app

Good examples of an outcome statement:

Outcome: A shared understanding of the major pieces of work needed to build the new version of our user-facing application, and an initial idea of who will be responsible for which pieces of work.

While it's lengthier - it's much more clear and specific. This will set clear expectations of anyone involved as to what will happen during the meeting. Coincidentally it communicates the value of this meeting to the parties involved, and will adjust their enthusiasm accordingly.

It's okay to have an agenda. In fact, it's required.

For any meeting that is say, greater than 15 minutes, and is covering multiple topics, it's important to come up with an agenda. Think of the agenda as the outline of what you will cover in the meeting. This will force you to think through exactly what pieces you need to get to, and in what order.

Then you assign amounts of time to each item. Time is the commodity that you're spending in a meeting. An agenda is your plan on how to allocate your time so that you cover everything that you need to cover.

Let's say we're holding a two hour meeting, from 10:00 - 12:00, to cover the breakdown of an application from our example above.

Agenda:

  • 10:00 - 10:10 - Staff Intros, welcome new employees
  • 10:10 - 10:20 - High level overview of the application
  • 10:20 - 10:30 - What are others doing in this space? Competitive Analysis
  • 10:30 - 10:45 - Initial questions - what don't we know?
  • 10:45 - 11:05 - Whiteboarding - what are the major areas of our application?
  • 11:05 - 11:15 - Break
  • 11:15 - 11:35 - Responsibilities - which team will do what?
  • 11:35 - 11:45 - Interdependencies - which pieces will rely on other pieces, and in what ways?
  • 11:45 - 11:55 - Danger areas - what could make this project go south?
  • 11:55 - 12:00 - Wrap up / final thoughts

That might seem very granular. And, well, it is. There is a lot of ground to cover in this meeting, and the agenda helps us make sure we touch on everything.

If we know everything that needs to get decided, and we break down this chunks of time, we'll realize quickly if we don't have enough time to devote to a particular item. For example - is 20 minutes really enough time to whiteboard the major pieces of an application? Maybe it is, maybe it isn't.

Answering that question for all of your items will let you know if the overall block of time is realistic or not. The result of this may be that you realize that two hours isn't nearly enough, and that you'll need to schedule an all day workshop. Or you may realize that you don't need nearly as much time for your pieces, and you can actually hold a shorter meeting (yay!).

The other major thing an Agenda does - it keeps you on track. If you have the agenda visible publicly during a meeting, you can refer to it openly to point out that you need to move on so that you get to everything. Or if a discussion is running long on a particular point, you will know how behind you are, and how much you will need to cut other discussions. It also provides an easy way to nip ... unhelpful ... discussions in the bud and simply say "we need to move on" because, well, the agenda.

Pro tip: plan for breaks

Plan for a 10 minute break at least every 45 minutes to an hour. Expecting anyone to sit still and maintain focus for longer than that is just kidding yourself. A break lets people get coffee, check on other work matters, go to the bathroom, etc. If you have breaks in your agenda, people know that a reprieve is coming. Which means they are more like to stay focused on your discussion.

Putting it together

This is then what I would put in the body of the meeting invitation:

Application Breakdown Discussion Monday, September 1st, 10:00 am - 12:00 pm Outcome: A shared understanding of the major pieces of work needed to build the new version of our user-facing application, and an initial idea of who will be responsible for which pieces of work. Agenda:

  • 10:00 - 10:10 - Staff Intros, welcome new employees
  • 10:10 - 10:20 - High level overview of the application
  • 10:20 - 10:30 - What are others doing in this space? Competitive Analysis
  • 10:30 - 10:45 - Initial questions - what don't we know?
  • 10:45 - 11:05 - Whiteboarding - what are the major areas of our application?
  • 11:05 - 11:15 - Break
  • 11:15 - 11:35 - Responsibilities - which team will do what?
  • 11:35 - 11:45 - Interdependencies - which pieces will rely on other pieces, and in what ways?
  • 11:45 - 11:55 - Danger areas - what could make this project go south?
  • 11:55 - 12:00 - Wrap up / final thoughts

During the meeting: take notes visibly

During the meeting itself, I have found that it's incredibly helpful to have a notes document in front of everyone, and to update that document in real time. That means a screenshare, projector, whatever. I usually put the outcome and agenda at the top of the document, so they're easy to refer to. My preferred tool is a Google Doc, but you can use whatever makes sense for you. For really large meetings, you may want to enlist someone to be the person updating that document specifically, if you're the one facilitating the discussion.

The point of taking notes in front of everyone is that is crystallizes what has been said or decided. If someone has a different understanding of the discussion, it gives them a reason to bring up that difference and to make clarifications.

Conclusion

In order to run a really good meeting, you need to:

  • Think through the exact outcome that you want
  • Break down an agenda for the entire meeting so that you address everything
  • Take notes visibly during that meeting

If you do these things, you will find that real progress can be made during meetings, and the people in those meetings will be grateful for it.