makers schedule

makers schedule preview image

1 collaborator

Default-person Martin Bartsch (Author)

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by everyone
Model was written in NetLogo 6.1.1 • Viewed 194 times • Downloaded 21 times • Run 0 times
Download the 'makers schedule' modelDownload this modelEmbed this model

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:

  1. An optional “Meeting-Free Wednesday” (toggle switch).
  2. A “Meeting Zone” (visual area) where participants teleport during a meeting.
  3. Daily output (for both Makers and Managers) plus average daily output over all days so far.

HOW IT WORKS

  1. 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).
    • Managers earn productivity every hour (e.g., manager-tick-value points per tick). If they attend a meeting in that tick, they lose manager-meeting-cost points in that hour.
  2. 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.
  3. 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.
  4. End of Day

    • After 8 ticks, the day ends:
      • We calculate the daily outputs for Makers (daily-maker-output) and Managers (daily-manager-output), plus total-productivity.
      • These daily totals go into cumulative variables to compute an average daily output (average-maker-output, average-manager-output).
    • A new day begins (day + 1), and the cycle repeats.

HOW TO USE IT

  1. Sliders (Example Values)

    • number-of-makers: e.g. 10
    • number-of-managers: e.g. 2
    • meeting-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. 5
    • manager-tick-value: productivity gained by a Manager each hour, e.g. 1
    • manager-meeting-cost: how many points a Manager loses in a meeting hour, e.g. 1
  2. Switch

    • meeting-free-wednesday?: if ON, no meetings on any day that (day mod 7) = 2 (every Wednesday).
  3. 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).
  4. Monitors (Recommended)

    • day: current day index
    • daily-maker-output, daily-manager-output: daily production of Makers/Managers so far
    • average-maker-output, average-manager-output: average daily outputs across all days completed
    • meeting-count: how many meetings have occurred
  5. Plots

    • A “Maker vs. Manager Daily Output” plot (x-axis: day, y-axis: productivity), with two pens.

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

  1. Increase Meeting Frequency: Set meeting-frequency to 0.5 (50%). Do Makers’ daily outputs plummet?
  2. Change Team Ratio: E.g., 10 Managers and 5 Makers vs. 5 Managers and 10 Makers.
  3. 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.
  4. Activate/Deactivate Meeting-Free Wednesday:
    • OFF: Meetings happen every day.
    • ON: See if Makers’ average output improves significantly after many days.

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 the meeting-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

(Adapted by mabasoft with ChatGPT assistance. Feel free to modify as needed.)

Comments and Questions

Please start the discussion about this model! (You'll first need to log in.)

Click to Run Model

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 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.