makers schedule
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
This model demonstrates Paul Graham’s concept of “Maker’s Schedule vs. Manager’s Schedule”: - Makers (e.g., developers) need long, uninterrupted time blocks (deep work). - Managers work in smaller, more fragmented time slices (frequent meetings are less of a disruption to them).
The model shows how regular meetings affect productivity, especially for Makers who lose an entire focus block if interrupted. Key features:
- An optional “Meeting-Free Wednesday” (toggle switch).
- A “Meeting Zone” (visual area) where participants teleport during a meeting.
- Daily output (for both Makers and Managers) plus average daily output over all days so far.
HOW IT WORKS
Time Structure
- Each tick represents 1 hour of work.
- One day has 8 ticks (2 blocks of 4 hours each: a morning block and an afternoon block).
- Makers earn productivity block by block:
- If they are not interrupted by a meeting during a 4-hour block, they receive
maker-block-value
points at the end of that block. - One single meeting is enough to “ruin” that entire block for them (they gain 0 points for that block).
- If they are not interrupted by a meeting during a 4-hour block, they receive
- Managers earn productivity every hour (e.g.,
manager-tick-value
points per tick). If they attend a meeting in that tick, they losemanager-meeting-cost
points in that hour.
- Each tick represents 1 hour of work.
Meetings
- Each tick, there is a
meeting-frequency
chance a meeting will be triggered. - All Managers attend, while a random subset of Makers (controlled by
maker-meeting-prob
) join. - Participants are teleported to the Meeting Zone (the right half of the world) so that you can visually see who is in a meeting.
- Each tick, there is a
Meeting-Free Wednesday (Switch)
- When the switch
meeting-free-wednesday?
is ON, no meetings will occur on days where(day mod 7) = 2
(i.e., every Wednesday). Makers then benefit from two uninterrupted 4-hour blocks on that day.
- When the switch
End of Day
- After 8 ticks, the day ends:
- We calculate the daily outputs for Makers (
daily-maker-output
) and Managers (daily-manager-output
), plustotal-productivity
. - These daily totals go into cumulative variables to compute an average daily output (
average-maker-output
,average-manager-output
).
- We calculate the daily outputs for Makers (
- A new day begins (day + 1), and the cycle repeats.
- After 8 ticks, the day ends:
HOW TO USE IT
Sliders (Example Values)
number-of-makers
: e.g. 10number-of-managers
: e.g. 2meeting-frequency
: probability of a meeting each hour, e.g. 0.2 (20%)maker-meeting-prob
: fraction of Makers who join a triggered meeting, e.g. 0.5 (50%)maker-block-value
: points awarded to a Maker if a 4-hour block is uninterrupted, e.g. 5manager-tick-value
: productivity gained by a Manager each hour, e.g. 1manager-meeting-cost
: how many points a Manager loses in a meeting hour, e.g. 1
Switch
meeting-free-wednesday?
: if ON, no meetings on any day that(day mod 7) = 2
(every Wednesday).
Buttons
setup
: Initializes the world, places Makers and Managers in the “work” area, and sets all counters to 0.go
: Runs the simulation (each tick is 1 hour).
Monitors (Recommended)
day
: current day indexdaily-maker-output
,daily-manager-output
: daily production of Makers/Managers so faraverage-maker-output
,average-manager-output
: average daily outputs across all days completedmeeting-count
: how many meetings have occurred
Plots
- A “Maker vs. Manager Daily Output” plot (x-axis:
day
, y-axis: productivity), with two pens.
- A “Maker vs. Manager Daily Output” plot (x-axis:
THINGS TO NOTICE
- Maker Blocks: A single meeting in a block ruins it for Makers, who then earn 0 points for that 4-hour period. Notice how quickly their productivity can drop if meetings are frequent.
- Manager Work Style: Managers accumulate productivity each hour and only lose points in the meeting hour. Overall, they’re less disrupted by meetings.
- Meeting-Free Wednesday: Compare runs with the switch ON vs. OFF. Notice if Makers gain a productivity boost from their unbroken Wednesday blocks.
THINGS TO TRY
- Increase Meeting Frequency: Set
meeting-frequency
to 0.5 (50%). Do Makers’ daily outputs plummet? - Change Team Ratio: E.g., 10 Managers and 5 Makers vs. 5 Managers and 10 Makers.
- Alter Maker Block Value: If
maker-block-value
is significantly higher (e.g., 10), each uninterrupted block is more rewarding, but any interruption is more painful. - Activate/Deactivate Meeting-Free Wednesday:
- OFF: Meetings happen every day.
- ON: See if Makers’ average output improves significantly after many days.
- OFF: Meetings happen every day.
EXTENDING THE MODEL
- Fixed Meeting Times: Instead of random triggers, schedule daily stand-ups (e.g. 9:00) or retros (Friday).
- Follow-Up Meetings: Let each meeting trigger additional follow-up sessions.
- Multiple Maker Roles: Some might need even longer blocks (6 hours), etc.
- Meeting Overlaps: Possibly create multiple overlapping meetings and see if that overloads Managers or further harms Makers.
NETLOGO FEATURES
- Patch Zones: We use
patches-own [ zone ]
to distinguish the “work” area vs. the “meeting” area. - Teleportation:
move-to
teleports participants instantly to the meeting zone, providing a quick visual of who is meeting. - Conditional Code: We skip meeting triggers on days
(day mod 7) = 2
if themeeting-free-wednesday?
switch is enabled. - Block-Based Productivity: Makers only finalize points at the end of each 4-hour block (
tick-in-block = 4
), whereas Managers earn points hour by hour.
RELATED MODELS
- Time Framework Models (in NetLogo community) – illustrate time-based processes (hours, days).
- N-Person Meeting simulations – show how multiple participants’ availability or scheduling can affect overall efficiency.
CREDITS AND REFERENCES
- Paul Graham – “Maker’s Schedule, Manager’s Schedule”.
- NetLogo: https://ccl.northwestern.edu/netlogo/
- “No Meeting Days” – real-life organizational approaches (e.g., “Meeting-Free Wednesday”).
(Adapted by mabasoft with ChatGPT assistance. Feel free to modify as needed.)
Comments and Questions
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; NetLogo Model: Maker’s vs. Manager’s Schedule (Block Logic) ; Features: ; 1) "Meeting-free Wednesday" -> optional skip meetings on day mod 7 = 2 ; 2) Teleport to MeetingZone for participants ; 3) Daily and average daily outputs for Maker & Manager ; ; Author: mabasoft, Martin Bartsch with support from ChatGPT ; date 2025_01_22 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; globals [ tick-in-block ; hour within the 4-hour block (0..3) block-index ; which block of the day (0=morning,1=afternoon) day ; day counter (increments after every 8 ticks) total-productivity ; daily total (Maker+Manager) daily-maker-output ; daily sum of all makers daily-manager-output ; daily sum of all managers cumulative-maker-output ; sum of all maker outputs over entire sim cumulative-manager-output ; sum of all manager outputs over entire sim average-maker-output ; cumulative-maker-output / number-of-days average-manager-output ; cumulative-manager-output / number-of-days meeting-count ; total meetings so far ] patches-own [ zone ; "work" or "meeting" ] turtles-own [ is-manager? has-lost-block? ; true if the maker was interrupted in current block my-daily-output ] ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; INTERFACE SWITCH/SLIDERS (example) ; ; Sliders: ; - number-of-makers ; - number-of-managers ; - meeting-frequency ; - maker-meeting-prob ; - maker-block-value ; - manager-tick-value ; - manager-meeting-cost ; Switch: ; - meeting-free-wednesday? ; ; Additional monitors/plots for daily/average outputs ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to setup clear-all set day 0 set tick-in-block 0 set block-index 0 set meeting-count 0 set daily-maker-output 0 set daily-manager-output 0 set total-productivity 0 set cumulative-maker-output 0 set cumulative-manager-output 0 set average-maker-output 0 set average-manager-output 0 ; Setup patch zones: left half = "work", right half = "meeting" ask patches [ ifelse pxcor < (max-pxcor / 2) [ set zone "work" set pcolor green ;; z.B. grün für Arbeitsbereich ] [ set zone "meeting" set pcolor gray ;; z.B. grau für Meetingzone ] ] ; Create Maker Turtles create-turtles number-of-makers [ set is-manager? false set shape "person" set color blue set has-lost-block? false set my-daily-output 0 ; Place them randomly in work zone let work-p one-of patches with [ zone = "work" ] move-to work-p ] ; Create Manager Turtles create-turtles number-of-managers [ set is-manager? true set shape "person" set color red set has-lost-block? false ; not used for managers, but keep consistent set my-daily-output 0 ; place them randomly in work zone let work-p one-of patches with [ zone = "work" ] move-to work-p ] reset-ticks end to go ; Each tick = 1 hour ; We have 8 ticks per day (2 blocks of 4 hours) if (ticks mod 8 = 0) and (ticks > 0) [ finalize-day ] ; 1) Possibly start a meeting (unless it's "meeting-free Wednesday") if (random-float 1.0 < meeting-frequency) [ ; Check if day mod 7 = 2 => Wednesday if not (meeting-free-wednesday? and ((day mod 7) = 2)) [ start-meeting ] ] ; 2) Manager productivity if no meeting cost is subtracted ; We only do it once per tick. The meeting cost was handled inside start-meeting. ask turtles with [ is-manager? ] [ ; + manager-tick-value each hour set my-daily-output my-daily-output + manager-tick-value ] ; 3) Handle Block progression set tick-in-block tick-in-block + 1 if tick-in-block = 4 [ finalize-block set tick-in-block 0 set block-index block-index + 1 if block-index = 2 [ set block-index 0 ] ] tick end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; MEETING LOGIC ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to start-meeting ; managers always attend let mgr-participants turtles with [ is-manager? ] ; random subset of makers let mk-participants turtles with [ (not is-manager?) and (random-float 1.0 < maker-meeting-prob) ] let all-participants (turtle-set mgr-participants mk-participants) if any? all-participants [ set meeting-count meeting-count + 1 ; Move participants to meeting zone for visual effect ask all-participants [ let meet-p one-of patches with [ zone = "meeting" ] if meet-p != nobody [ move-to meet-p ] ] ; Managers lose manager-meeting-cost ask all-participants with [ is-manager? ] [ set my-daily-output my-daily-output - manager-meeting-cost if my-daily-output < 0 [ set my-daily-output 0 ] ] ; Makers lose entire block ask all-participants with [ not is-manager? ] [ set has-lost-block? true ] ] end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; BLOCK COMPLETION ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to finalize-block ; award block-value to any maker who wasn't interrupted ask turtles with [ not is-manager? ] [ if not has-lost-block? [ set my-daily-output my-daily-output + maker-block-value ] set has-lost-block? false ; Teleport back to "work" zone at block end let work-p one-of patches with [ zone = "work" ] if work-p != nobody [ move-to work-p ] ] end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; DAY COMPLETION ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to finalize-day set daily-maker-output sum [ my-daily-output ] of turtles with [ not is-manager? ] set daily-manager-output sum [ my-daily-output ] of turtles with [ is-manager? ] set total-productivity (daily-maker-output + daily-manager-output) ; Update cumulative outputs set cumulative-maker-output (cumulative-maker-output + daily-maker-output) set cumulative-manager-output (cumulative-manager-output + daily-manager-output) ; Increase day count set day (day + 1) ; Recompute average daily outputs ; day is now the count of days that have fully finished ; so we can do (cumulative / day) if day > 0 [ set average-maker-output (cumulative-maker-output / day) set average-manager-output (cumulative-manager-output / day) ] ; optional: reset everyone's my-daily-output for the new day ask turtles [ set my-daily-output 0 ] end
There is only one version of this model, created 8 months ago by Martin Bartsch.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
makers schedule.png | preview | Preview for 'makers schedule' | 8 months ago, by Martin Bartsch | Download |
This model does not have any ancestors.
This model does not have any descendants.