Personal blog written from scratch using Node.js, Bootstrap, and MySQL. https://jrtechs.net
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

310 lines
13 KiB

  1. "Your absolutely crazy," my boyfriend exclaimed as he gazed at my schedule. Eighteen credit hours, two part-time jobs, and three clubs-- my spring semester was shaping up to be one hell of a ride. That semester I flew too high, burned my wings, and was then was saved by Covid-19.
  2. Indulge me as I recount what happened during this crazy semester and
  3. reconcile what I've learned while pushing my limits at RIT.
  4. Going into this semester, I knew that I was signing up for more than
  5. usual. I was trying to pack my schedule with six classes so that I can
  6. stay on track to graduate a semester early. Usually, students hover
  7. around 12 to 15 credit hours.
  8. ![calendar](media/burnout/schedule.png)
  9. Despite having little free time, I prioritized a healthy diet, sleep,
  10. and exercise. Those things stretched the limits of what I could do
  11. before getting burned-out. Like all plans, I deviated from my plan a
  12. bit. Although it was naive to plan on going to the gym early in the
  13. morning and eating overnight oats every day for breakfast, I ended up
  14. maintaining my schedule for most of the semester. Putting everything
  15. on the calendar was quintessential for me that semester-- my tether to
  16. reality. If I could manage to schedule a time for it, it was
  17. manageable.
  18. # The Fallout
  19. The folly of my plan was to block everything in one big chunk. My day
  20. started at 5:45 AM when I woke up and went to the gym, and it ended
  21. around 7 PM when I got back to my apartment. Laying out this
  22. continuous segment of time to work on homework, jobs, and classes made
  23. my day efficient, but it was exhausting. After an 11 hour day, I got
  24. back to my apartment and wanted to collapse. Nevertheless, structuring
  25. my time like this ended up giving me free time later at night and on
  26. the weekends-- which is usually when people typically hung out.
  27. I recognized that I was getting burned after three consecutive weeks
  28. of working 70 hours. I was becoming less productive, caffeine had less
  29. impact, and it was hard to focus. When I went to Brickhack as a club
  30. representative, everything felt like a haze; I tried to think and get
  31. work done, but all my thoughts slipped me. That day I had four energy
  32. drinks(a personal record), but they didn't even phase me: my mind was
  33. still cloudy. Nothing is worse than trying to work for 6 hours, but
  34. only getting 20 minutes of work done.
  35. ![brick hack picture](media/burnout/brickHack.jpg)
  36. # Saved by COVID
  37. By the time spring break rolled around, I was exhausted: all energy
  38. and motivation were depleted from my system. Recognizing that I was
  39. burned out, I took time to rest and re-cooperate by spending time with
  40. my boyfriend. Spring break was magical, all the stresses of school
  41. melted off my shoulders. The little work that I did do was focused and
  42. efficient.
  43. Then RIT decided to extend spring break a week and transition classes
  44. online due to COVID-19. This event got coined by my friends as "spring
  45. break v.2 electric boogaloo." This transition introduced a new element
  46. of anxiety because I had to find an apartment and move ASAP; however,
  47. at the same time, it gave me an additional week to re-cooperate. In
  48. just a few days, I signed an apartment lease and moved across the
  49. state.
  50. After transitioning to online courses, I felt like I had more energy.
  51. Before COVID, I was spending 18 hours a week sitting in a classroom,
  52. but after the change, I was only spending 5 hours a week in structured
  53. "class," while the amount of time spent on homework remained
  54. equivalent. This change was huge.
  55. # Tracking my work
  56. Being the geek that I am, I tracked every single hour that I worked
  57. this semester. In addition to hours, I also kept track of some basic
  58. metrics like perceived productivity, fatigue, diet, and stress levels.
  59. Tracking my work helped me stay focused during the allotted times that
  60. I record for a specific task, and it let me know empirically when I've
  61. worked too much and need a break. Using a quick and dirty solution, I
  62. kept track of all my hours in a spreadsheet with aggregating functions
  63. to calculate weekly totals for each column.
  64. ![excel sheet](media/burnout/sheet.png)
  65. At the end of the semester, I exported all my data as a single CSV
  66. file and imported it into R for examination.
  67. ```R
  68. library(tidyverse)
  69. library(plyr)
  70. library(lubridate)
  71. data <- read_csv("data.csv", col_names=TRUE)
  72. ```
  73. In my spreadsheet, empty cells were exported to CSV as NA, and useful
  74. numbers only appear on every other line. The task of data preparation
  75. is straightforward to do in R.
  76. ```R
  77. # Remove rows that are empty
  78. data <- data %>% drop_na(date)
  79. # Convert class col to be numeric-- auto import miss impoted this
  80. data$class <- as.numeric(data$class)
  81. # replace any NA values with zero
  82. data[is.na(data)] = 0
  83. # parse date from string
  84. data$date <- parse_date(data$date, "%m/%d/%y")
  85. # calculates week of year and creates its own col
  86. data$ymd = lubridate::isoweek(ymd(data$date))
  87. # creates a new col with the week of day numerically
  88. data$wday = wday(data$date)
  89. ```
  90. Transforming the data makes it easier to graph. When visualizing time
  91. series data, you typically add new columns to make grouping by that
  92. type intuitive; this is based on what you wish to display.
  93. The most exciting graph to see would be a heatmap showing my daily
  94. hours worked.
  95. ```R
  96. ggplot(data, aes(ymd, wday))+
  97. geom_tile(aes(fill= total_hours), color="purple") +
  98. ggtitle("Daily Hours") +
  99. labs(x="School Week", y="Day of Week") +
  100. scale_y_continuous(name="Day of week",trans = "reverse",
  101. breaks=c(1,2,3,4,5,6,7),
  102. labels=c("Sun", "Mon", "Tue", "Wed","Thr","Fri","Sat")) +
  103. theme_bw()
  104. ```
  105. ![Weekly heat map](media/burnout/weekly.png)
  106. This heatmap is interesting because it shows that I typically worked
  107. longer hours on weekdays and that the intensities change after spring
  108. break.
  109. If you are not satisfied with a ggplot graph, you can use other
  110. scripts on the internet to plot calendar data as a heatmap. However, I
  111. like to solely use ggplot because it gives you very robust controls
  112. over how the data is displayed.
  113. ```R
  114. library(tidyquant)
  115. source("https://raw.githubusercontent.com/iascchen/VisHealth/master/R/calendarHeat.R")
  116. r2g <- c("#D61818", "#FFAE63", "#FFFFBD", "#B5E384")
  117. calendarHeat(data$date, data$total_hours, ncolors = 99, color = "g2r", varname="Daily Hours")
  118. ```
  119. ![Other Person's heatmap](media/burnout/heatmap.png)
  120. I wasn't a fan of this library because you couldn't scale the graph.
  121. The next thing that I wanted to plot was a line graph showing my
  122. weekly totals over the semester. Note: when I exported the excel file
  123. as a CSV, it did not contain the cells that I added to compute the
  124. weekly totals, so we have to calculate the sums ourselves. A naive
  125. approach would loop over the data and create a new table using for or
  126. while loops. I am a massive shill for R and Tidyverse because the
  127. Tibble data structure is insanely powerful. Using Dplyr on tibbles we
  128. can create groupings on columns and then compute metrics on those
  129. groupings all while utilizing a pipeline data flow. I would highly
  130. recommend R and Tidyverse for anyone considering data science and
  131. visualizations.
  132. ```R
  133. data %>% group_by(ymd) %>%
  134. dplyr::summarise(total = sum(total_hours),
  135. work_t = sum(work_total),
  136. class_t = sum(class),
  137. hw_t = sum(hw)) %>%
  138. gather(key,value, total, work_t, class_t, hw_t) %>%
  139. ggplot(mapping=aes(x = ymd)) +
  140. ggtitle("Weekly Hours") +
  141. geom_line(mapping=aes(y = value, colour = key)) +
  142. labs(x="School Week", y="Hours") +
  143. scale_colour_discrete(name="Categories",
  144. breaks=c("total", "work_t", "class_t", "hw_t"),
  145. labels=c("Total Hours", "Work", "In Class", "HW")) +
  146. theme_bw()
  147. ```
  148. ![Line graph of weekly hours](media/burnout/weeklyLineGraph.png)
  149. This is my favorite graph because it shows me the shift that my
  150. schedule took after classes went online. After the break, time in
  151. class dropped off, but the other metrics like time on homework
  152. remained about the same.
  153. Using the same grouping method as we did for weekly hours, we can
  154. graph all the self-reported metrics.
  155. ```R
  156. data %>% group_by(ymd) %>%
  157. dplyr::summarise(stress_a = mean(stress),
  158. fatigue_a = mean(fatigue),
  159. productivity_a = mean(productivity)) %>%
  160. gather(key,value, stress_a, fatigue_a, productivity_a) %>%
  161. ggplot(mapping=aes(x = ymd)) +
  162. ggtitle("Metrics Average") +
  163. geom_line(mapping=aes(y = value, colour = key)) +
  164. labs(x="School Week", y="Average (1-10)") +
  165. scale_colour_discrete(name="Metrics",
  166. breaks=c("stress_a", "fatigue_a", "productivity_a"),
  167. labels=c("Stress", "Fatigue", "Productivity")) +
  168. theme_bw()
  169. ```
  170. ![Line graph metrics](media/burnout/weeklyLineGraphMetrics.png)
  171. The metrics' actual values are not that important since they are
  172. relative to personal experience and are very inaccurate. How
  173. self-reported metrics change over time is more insightful than the
  174. actual values. We can observe that spring break and the switch to
  175. online classes had a positive benefit on all my self reported metrics.
  176. The next graph we can generate is the daily distribution of hours
  177. spent on separate activities. If we wanted to get really crazy, we
  178. could also group by day of the week; however, we already see some of
  179. that information in the calendar heatmap.
  180. ```R
  181. data %>%
  182. group_by(date) %>%
  183. gather(key,value, class, club, hw, work_total, total_hours) %>%
  184. ggplot(mapping=aes(x = date)) +
  185. ggtitle("Hourly Breakdowns") +
  186. geom_boxplot(mapping=aes(y = value, colour = key)) +
  187. labs(y="Hours") +
  188. scale_colour_discrete(name="Categories",
  189. breaks=c("total_hours", "hw", "work_total", "class", "club"),
  190. labels=c("Total Hours", "HW", "Work", "Class", "Club")) +
  191. theme_bw() +
  192. theme(axis.title.x=element_blank(),
  193. axis.text.x=element_blank(),
  194. axis.ticks.x=element_blank())
  195. ```
  196. ![Box plot of hours](media/burnout/hourlyBoxPlots.png)
  197. Unsurprisingly, we see that work and homework consumed the majority of
  198. my time.
  199. I created the same boxplot view for the metrics.
  200. ```R
  201. data %>%
  202. group_by(date) %>%
  203. gather(key,value, stress, fatigue, productivity) %>%
  204. ggplot(mapping=aes(x = date)) +
  205. ggtitle("Metrics Breakdowns") +
  206. geom_boxplot(mapping=aes(y = value, colour = key)) +
  207. labs(y="Metric") +
  208. scale_colour_discrete(name="Metrics",
  209. breaks=c("stress", "fatigue", "productivity"),
  210. labels=c("Stress", "Fatigue", "Productivity")) +
  211. theme_bw() +
  212. theme(axis.title.x=element_blank(),
  213. axis.text.x=element_blank(),
  214. axis.ticks.x=element_blank())
  215. ```
  216. ![Metrics Box Plot](media/burnout/metricsBoxPlots.png)
  217. What surprised me was that each of these three metrics had a
  218. relatively similar distribution. As mentioned before, self-recorded
  219. metrics are not accurate, but they provide insight when observing how
  220. they change over time.
  221. # Remarks
  222. This was a laborious post to compose; I don't want to sound bashful or
  223. boastful or anything along those lines-- this is a sensitive subject.
  224. Sharing my experience and reflecting on this semester is my way of
  225. reconciling what I've learned, and hopefully, it teaches someone else
  226. about the nuances of burnout.
  227. Although this definitely has had an impact on my mental health, I
  228. pulled through the semester and got a 4.0 GPA. I don't think I could
  229. have faced burnout so defiantly without my amazing friends and loving
  230. boyfriend. If COVID didn't force classes online, I don't know how this
  231. semester would have ended for me. I feel confident in my ability to
  232. achieve academically, but it is hard to do so while burned out. This
  233. experience has taught me that I can work 50-60 hours a week without
  234. getting burned out, but 70 is the number that **will** break the
  235. camels back.
  236. Since the very start of the semester, I knew that I would end up
  237. writing this post since I was collecting the data for it; however, I
  238. didn't know to what extent I would actually get affected by burnout. I
  239. still don't have a great way of describing what this experience was
  240. like. In extreme cases of burnout, people have passed out and gone to
  241. the hospital. In this country, we have a romanticized view of working
  242. long hours and pulling all-nighters. I've learned first hand that it
  243. is best to prioritize your mental health above all else.
  244. College doesn't have to be this hard. RIT is known for having a
  245. rigorous course load, and lots of students here get burned out.
  246. Keeping to a regular course load and not maxing out on jobs and clubs
  247. should be enough to prevent most people from getting burned out.
  248. Looking back at my first three semesters of college, I had soo much
  249. free time. A large part of avoiding burnout is about knowing your
  250. limits and planning your calendar to accommodate that. In the future,
  251. I won't flirt with a schedule that will inevitably cause me to get
  252. burnout.