Pushing to Production on Friday: Quality Code and Mental Health
I’ll start what will be a relatively serious and relatively non-technical blog post on a light note: thank God/Cthulu/The Blood God/Whatever Your Deity of Choice is that the Earth has finished the hellish route around the sun that we shall forever curse as the year 2020.
It was horrific, the deadliest year in my lifetime and one that, frankly, beat the hell out of my mental health. Between the pandemic taking so many lives, the abject spiral into autocratic and technocratic fascism that we took over such a short period of time, the “normal” stressors of work, parenthood, home ownership and pseudo-entrepreneurialism, economic rubber banding that left my finances in shock and all of the other things combined… It was an insane year.
One of the big goals I set for myself in January of last year, when COVID-19 was merely some crappy bat jokes by edgy comedians on Twitter, was to launch my SaaS app SketchyReq. I also said I would compete in a powerlifting competition and deadlift a personal record of 500 pounds. I said I’d do a lot of other things too, but I ended up doing very few of them. I could blame it on the year in general, COVID specifically, and a myriad of other things and I honestly wouldn’t be far off. I didn’t compete because I didn’t think competitions would be safe, I didn’t train because my gym shut down several times and I dropped my membership several times as well.
SketchyReq, however, bothered me.
I was at home for an entire year. No traveling or socializing to speak of aside from a couple day trips to see quarantined family and a couple of socially distanced outdoor barbecue when the weather permitted. This could have been the perfect year to make the best of it, to really focus in and launch my big project. So, in the beginning, I really hammered into it. I read The Lean Startup, a great book that I’ll talk about a fair bit in this post, and found the general approach of “launch early, fail fast, fix quickly, iterate constantly” very appealing. It was a great approach for someone with a hesitancy to launch or push things due to perfectionism or imposter syndrome. I sought third-party funding, something that landed me some very motivating responses as a background wallpaper on my desktop, and that failed pretty majorly.
I kept at it, though, with a goal of launching in September… then pushed to October, as some things just weren’t ironing out… then November, as the aesthetics just… weren’t quite right. Then, in December, with my own self-imposed deadlines on top of all of the things going on in the world and my world specifically weighing me down and the words of The Lean Startup echoing in my mind, I said I would have it out by the new year.
That, obviously, didn’t happen.
There’s an old adage that’s a bit of a meme at this point: don’t push to production on Fridays. The meaning of this is pretty simple: if you’ve been working on something all week, don’t make those changes to the product that customers and users see on a Friday. The reasoning is that if you push your changes to production and something breaks over the weekend, your whole weekend is gone or your Monday is going to be an absolute trash fire, or you’ll waste your whole Friday night trying to smash bugs. Whenever something breaks on a Friday, a lot of the IT crowd immediately jump on this adage as a way of explaining the downtime, but it’s also something we all do and have done in the past.
Pushing to prod on a Friday means rushing out something that probably hasn’t been given its due attention. It means pushing based on an imposed deadline instead of a logical schedule. It means risking setting fires purely for the purpose of “getting it out” so you can iterate later.
This whole year, I’ve been pushing to prod on Friday. I let my mental health degrade pretty significantly (notably, not to a dangerous level, just to a level of exhaustion and anxiety that frankly isn’t very healthy) in order to chase self-imposed deadlines that really didn’t have much logic to them. My internal thought process over time is “if I don’t get it out soon, it’ll just end up on my desk or on the shelf as a discarded project” and there’s honestly some truth to that. I didn’t give the project its due attention, trying to rush education through hundreds of dollars of (really good) Udemy courses to teach me full stack development instead of cooling down the development cycles and taking the time to learn things. This risked setting some pretty significant fires, and that is what finally woke me up to my issue.
During development, I arrived at user authentication and all of the wonderful quirks that come with it. I landed on a secure encryption schema based on my reading, tested it out and found it all worked… Then I started trying to move on to email authentication, 2FA, all of that and found myself rushing. I pumped the brakes very quickly then.
How many development teams at massive companies have reached a point of potential (massive) security failure and have rushed through it due to deadlines imposed from above? How many security incidents, both known and unknown, have resulted from that? Do I want to put user data at risk, regardless of how sensitive it is, just because I set an arbitrary deadline to get my app out ASAP because a book said to and I wanted to start making money?
I actually took a week or two off development, both due to this internal crisis of conscience and because of the holidays. I spent some time looking back over my code and didn’t find any glaring issues, but found several pretty severe inadequacies, areas to improve on and areas that failed in less than graceful ways. I thought to myself, “I’m new at this. If I’m sitting here finding moderate issues that could affect performance, security or operability, what could I be missing?” It was sobering, and I realized I needed to change my thinking.
Around this same time, my mental health was at a low. It was the holidays, and I was blessed to be able to see my family but the seasonal depression was unreal last year. Tack on watching people die as numbers on a computer screen at a rate that made the Iraq and Afghanistan war look tame, I was pretty depressed. I had some political crises internally that only worsened that depression and anxiety, and I (finally) realized that I was pushing on Friday pretty much everywhere in my life. I wasn’t giving the people and things around me the attention they deserved, and that the same inadequacies that I found in my code were all around me in my interactions with others and myself. I was letting my physical health decay, letting the excuse of not being able to go to the gym get to me, despite having a home gym that worked moderately well. My social life was non-existent as I let COVID stand in as an excuse for not spending (safe) time with friends and family. I was drinking too much, jokingly laughing about that being a natural by-product of stress instead of an unhealthy coping habit. I was constantly pushing on Friday.
So, late last month I decided to stop pushing on Friday. I bought a bike and have taken that up as a healthy hobby and I’ve started weightlifting again. I’ve started taking up more healthy coping methods like exercise, reading, meditation, gaming and music. I’ve re-prioritized social interaction and I’ve completely changed my approach to coding my projects. I’ve broken them into sprints and have rolling, long-term deadlines with structured sprint schedules and tasks and a release schedule that’s actually attainable instead of set arbitrarily. I’ve changed my mentality, seeing this as a cool side project I want to get out as soon as I can, but not that big of a priority. My mental and physical health, my interactions with friends and family, and my own personal development are far more important than arbitrary deadlines on a project.
If you’re struggling right now, I get it. If you feel like you need to, reach out to someone. The National Suicide Hotline is 800-273-8255. If you just need someone to vent to, I have open DMs. If you’re struggling with anxiety and depression similar to mine, take a step back. Stop pushing on Fridays. Focus on sustainability and realize that prioritizing yourself isn’t selfish. As the cliche saying goes, you have to put the oxygen mask on yourself before you help others.
—
This is a relatively out-of-character post for my blog. I typically write about technology and my research into Right Wing Extremism. Thank you for reading, and please do take care of yourself.
‘May we live in interesting times.’