Balance

My Lack of Balance

I approached this program full-time and more or less came in with the mentality that “this needs to work, I need this” in order to do well. While this was motivating and I am proud of some of the results I have achieved thus far, this mentality also came at the expense of a balanced daily life and ironically ended up placing an upper bound on my experience in this program. I spent almost every moment of free time I could making sure that I succeed and get the best out while being a CS student. This was due to me wanting to make up for underwhelming prior performance in my college/post-college life and wanting to enter this new career on a high-as-possible note. Nothing wrong with these goals, but it’s the manner and mentality by which I went about approaching this that prompted this post.

I believed that in order to prove to companies that I am a worthy software engineer, I needed to be perfect. That coupled with the desire to perform better than I had done in a previous degree, created a mental space in which I concluded that I had to get the best grades I could possible. Resultingly, I spent as much time as possible trying to make sure I nailed every bit of minutiae that a course presented. I felt that in order to be an “exceptional” Software Engineer, I have to already know everything beforehand. For example, I spent an inordinate amount of time trying to memorize the implementation for each individual algorithm in CS 325 and was frequently frustrated with myself as to why it didn’t come naturally to me. It was a slog of a course. I felt that I needed to not only get the requirements met for an assignment, but also make sure it was perfect in all possible aspects otherwise I would not get an internship – “there are so many talented students out there for so few internship spots!”, I rationalized.

For an embarrassingly significant portion of the program, it was a time of tunnel vision. I had created too high standards to reach and placed too much pressure on myself to perform. In my mind, the stakes were high. As a result, any struggles that I would navigate in learning I would take as personal failures to myself, which in turn would make it harder to simply appreciate the material I was learning (don’t get me wrong, there were a lot of exciting learning moments or topics in this course, there just could have been more). There would be moments where I was unable to hone in on main requirements/lessons to take away from or achieve on assignments and readings because I had to learn it all.

What I was Doing Wrong

We like to think of perfectionism as the desirable quality of “oh, woe is me I am simply doing too much and am too productive” and something that we can humble-brag about in interviews when asked “What is your biggest weakness?”, but I can assure you as someone that has a Type A streak, it’s actually very counterproductive. Spending valuable time trying to nail the nuances of a reading or agonizing over all the little details of a coding assignment without taking a step back to remind oneself of the overarching goals is not productive. I would find myself getting lost in obscure rabbit holes understanding topics or technologies that were tangential to the assignment. Other times, I would attempt to be doing too much for an assignment, when a simpler approach would have been more ideal. This would result in slow progress on an assignment initially, procrastination to avoid an assignment’s upcoming challenges, and then a 2-3 day stress-fest when rapidly trying to finish an assignment after realizing I bit off too much with approach #1 and went back to the drawing board. I forgot the power of simplicity and just doing what was expected. Sometimes just having something that works is better than having something that is technically perfect but late, or even worse, having nothing to show for it at all because of analysis paralysis.

Someone who is perfectionistic likely uses this approach on more macro-level things too. Spending too much time making sure that the resume is perfect, that the understanding of all Data Structures and Algorithms is perfect, the grades are perfect, and trying to focus solely on learning rather than applying these newfound skills to real-world challenges/projects can place an invisible ceiling on the actual learning of CS fundamentals because the goal of getting coding experience under the fingertips can get lost. This happened to me, and as a result, there were some missed opportunities to contribute to an open-source project, to learn enough LeetCode experience to pass Technical Assessments, and more. Even more macro, a singular focus on just work at the expense of time spent with close ones, regular exercising, sleep, preparing/getting a relatively nutritious meal, and relaxation is to get rid of the systems that make us productive, motivated, and in a clear mind space – which in turn allows us to succeed. Arguably, my biggest mistake was thinking that in order to be successful, great, or competitive enough to earn an SWE Internship or job, I have to work more than others.

What Can I (and We) Do About This

When working, try to keep the higher-level goals of whatever you are working on within reach. This means that ideally it is written down. Keep a tab open that contains the assignment spec. In either a separate document or on paper, try to chunk objectives down into their smallest steps and cross out the ones you have already done. Keep a journal near that lists your higher-level goals so you can recognize when you are heading off-course, or when you have moments of frustration, remind yourself why you’re doing this and how what you are currently focused on is moving you towards a goal. This applies to both assignments and larger goals as well.

Solutions are not easy to immediately do. While it can be reductive to tell someone to just start working out and eating “healthy” and spending time to relax and also get those 8 hours of sleep all at once (ahem that is perfectionism again), start to make small decisions that get you moving in a more balanced direction. Only recently have I been reminded that changes are not a one-time occurrence and everything is fixed, it’s in the little repetitive things over time in which change occurs. Take 10-15 minutes to walk around the block by yourself or with a pet or while calling someone (you get to nurture a relationship while also getting some sun/exercise for yourself). Instead of trying to eat healthily, try eating less bad stuff. Instead of working all the time to the point of burnout, end studying with enough time at the end of the night to watch an episode of TV or another passive activity.

These relatively mundane decisions can have drastic effects – see Pareto Principle (80/20 rule). In the past, I have taken the approach of more time spent stuck on the computer is linearly correlated to output, but that is simply not true. The brain can only do cognitively heavy work for a portion of a day. We all have 24 hours a day, which is an upper limit to what we can do in a day, and 24 hours of straight work is untenable, to say the least. Another approach is to work more in a more directed manner that is more about achieving core predefined goals while ignoring nuance and perfection.

What ends up happening is that time is more effectively spent when there is a contained list of things to complete. Completing and crossing them off feels good! And since you have taken away from an assignment to do other nourishing activities, there are more moments of peace, normalcy, and groundedness in a single day. Only recently, towards the end of this program am I starting to realize this, but this is not negative! I appreciate that I am learning this now because now I can apply this to my upcoming job. Last week, I grabbed a beer with friends. While I started the day late today, I did not let perfectionism win – I wrote this blog post, did a standup discussion, went for a run, and did some grocery shopping today. I watched an episode of Seinfeld. I will journal later tonight to help clarify new goals. There was joy in my day, and it turned out that because I took breaks, the time spent on the computer working was much more effective. As it turns out, finding a balance is important. Who would’ve thought!

Leave a comment

Your email address will not be published. Required fields are marked *