Skip to content

Commit 14292b1

Browse files
Add script for calculating available development weeks (#3383)
* Add script for calculating available development weeks * Assume part time for whole year Co-authored-by: sarayourfriend <24264157+sarayourfriend@users.noreply.github.com> --------- Co-authored-by: sarayourfriend <24264157+sarayourfriend@users.noreply.github.com>
1 parent 7321fff commit 14292b1

File tree

1 file changed

+67
-0
lines changed

1 file changed

+67
-0
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
"""
2+
Calculate max weeks of programmer availability for yearly planning.
3+
4+
Assumes the following:
5+
6+
1. The number of maintainers stays the same
7+
2. We cannot anticipate availability changes like parental leave, part-time moves, etc.
8+
3. 5 weeks of holiday + sick leave with stipulation that this is just an estimate!!!!!
9+
4. Not all conferences are accounted for
10+
"""
11+
12+
programmers_with_reduced_availability = {
13+
# _ is part-time (safer to assume that isn't going to change)
14+
"_": 52 * 0.6,
15+
# __ is on parental leave for the first quarter of the year
16+
"__": 52 - (52 / 4),
17+
# assume whoever is lead at any point probably has 1/3rd availability for dev work
18+
"lead": 52 / 3,
19+
}
20+
21+
total_openverse_maintainers = 8
22+
23+
programmers_with_regular_availability = {
24+
"-" * (i + 1): 52
25+
for i in range(
26+
total_openverse_maintainers - len(programmers_with_reduced_availability)
27+
)
28+
}
29+
30+
programmer_availability_ignoring_regular_leave = (
31+
programmers_with_reduced_availability | programmers_with_regular_availability
32+
)
33+
34+
# These are just vague estimates, obviously some folks take more or less, etc.
35+
holiday_weeks = 4
36+
sick_weeks = 1
37+
38+
total_leave_weeks = holiday_weeks + sick_weeks
39+
40+
# Conferences with attendance estimate in reduced availability by weeks
41+
conference_weeks = {
42+
"wceu": 3,
43+
"wcus": 2,
44+
"wccs": 2,
45+
"wcasia": 2,
46+
"ccglobalsummit": 1,
47+
"data": 1,
48+
"pydata": 0.5,
49+
"pycascades": 1,
50+
"widsps": 0.25,
51+
"other": 2,
52+
"teammeetup1": total_openverse_maintainers,
53+
"teammeetup2": total_openverse_maintainers,
54+
# Not all team members attend division meetups
55+
"divisonmeetup": total_openverse_maintainers / 2,
56+
}
57+
58+
total_programmer_availability = sum(
59+
[
60+
weeks - total_leave_weeks
61+
for weeks in programmer_availability_ignoring_regular_leave.values()
62+
]
63+
+ [weeks * -1 for weeks in conference_weeks.values()]
64+
)
65+
66+
print("Total weeks of programmer availability:", total_programmer_availability)
67+
# => (e.g.) 221.6

0 commit comments

Comments
 (0)