Despite how it may look to an observer the day-to-day life of a developer is hectic. It's a juggling act between deadlines, rapid industry evolution, endless zoom calls, networking, and, after all that, carving out time for personal growth and continued learning. Add to that the sharp increase in remote employment through 2020 and the ever-diminishing line between work and home - and you'll find that many developers struggle to manage an "always-on" mindset.
As a new developer, I especially struggled to avoid falling into those traps and endured frustrating bouts of burnout along the way as a consequence. So I took a "millennial" approach to the problem - reading books, listening to podcasts, following blogs and social media accounts all focused on the subjects of productivity, time management, and sustainable workflow.
I've learned that managing time and preventing burnout is a habit - it takes work to develop and refine, and it's constantly changing as our days, responsibilities, and we ourselves change. Finding out what works for you can help transform small, consistent efforts into incremental growth every single day.
Productivity and time management are often said in the same breath - like salt-and-pepper, PB-&-J, Han-and-Chewie - they just go together. The virtue of practicing time management contributes to the forward momentum of huge companies, and millions of highly efficient people the world over.
My approach to time management is three-pronged: time tracking, task tracking, and break tracking.
There are 168 hours each week. Subtract 56 of those for 8 hours of sleep a night, and that leaves 112 hours to manage a home, a job, binge a new series, read a book, care for children and pets, and generally live life. It wasn't until I started time tracking that I realized just how many of those hours I was mismanaging, or flat-out wasting.
The first method of time tracking I tried comes from Before Breakfast podcast host Laura Vanderkam. You can listen to the short, daily podcast, which covers all things that fall under the large umbrella of productivity and find a time-tracking spreadsheet on the site. The spreadsheet breaks the day into 15-minute increments, which are filled in with a few words, at most, about how the time was spent.
I used this approach as a way to perform a control test of sorts, on myself. Rather than planning the day ambitiously the night before, I only scheduled hard deadlines and appointments, leaving the majority of the day clear to find my workflow and get a feel for how I was really spending my time.
Every hour or so I recorded what I'd been doing, the records weren't detailed but they were honest. The point wasn't tallying all the checked or unchecked boxes of my day - but to record patterns in my behavior, the decisions I made with my time, and the outcome, both good and bad, of those decisions.
After two weeks of religious daily recording, I was starting to see my good and bad habits, reduced to a few words in a cell on a spreadsheet. Now that I could isolate them, I could ask questions of them and reasonably find answers. What were the common denominators between effective, or productive, periods and ineffective periods? What could I do to focus my efforts, so that at the end of the day I could work more deeply, for less time, and have more time for my loved ones and hobbies? There were a few patterns that stood out:
- Every morning, between 10 and 11 am, at least 30 minutes were wasted scrolling mindlessly through Twitter, Instagram, and so on - usually after replying to one real-life text.
- Debugging was significantly more effective in the hour after lunch than in the one before.
- At 2 pm, without fail, 30 minutes disappeared into a sort of blackhole - unable to focus on anything, I just sort of moved aimlessly from picking a new Spotify playlist to loading the dishwasher.
- I completed tasks related to React and CSS, two subjects I love, quickly. But those related to Python or backend code, for example, tended to run a little over-schedule.
- I returned to things like Udemy courses and books far more consistently when I recorded the effort. Seeing the entries from the days prior was just the reminder I needed to make self-learning more successful and accountable.
- When faced with a problem I couldn't solve, or a bug I couldn't squash, I had a habit of going long stretches of time without taking a break. This could sometimes consume a considerable chunk of the day before I even realized it.
Using the things I learned, I developed a new game plan. I start the day by making dedicated time to check emails, scroll through a bit of social media and do some networking - before putting that aside (i.e. not opening them) for the rest of the morning. Along with making sure I take regular breaks throughout the workday, at 2 pm an alarm goes off to tell me to take my dog for a walk and let my mind wander, because I know it's going to anyway!
Instead of using an excel spreadsheet, and breaking every hour into 4 units of 'time currency' (something that was starting to make me a bit hyper-aware, and anxious) I began planning daily and weekly tasks using Trello while tracking time with Clockify.
From the Clockify Chrome extension or a Trello card (if the accounts are linked), a timer can be started. The timer can be labeled by project, billable status, and user-created tags in one place, saving all the information automatically. If you forget to start or stop a timer, need to edit timer meta-data, or need to add work time after the fact, all of that can be done from the mobile app or website. Clockify will save and compile the entries, and over time automagically display a visual breakdown of exactly where the time is going, through a traditional calendar or planner view, and useful graphs.
Time can get away from us, and we're often quite good at convincing ourselves that we worked longer or harder on a task than we really did. This is why tracking time without bias can be such a powerful tool. Removing the unreliability of human memory allows us to see the day through the lens of a data scientist - less concerned with "good" or "bad", and more concerned with "true" or "untrue." In this way, finding out you have a bad habit is a good thing - because now you know what to work on, and any work done on ourselves is forward momentum.
Like fried chicken, Korean street-food dish tteok-bokki, and good art - there is no one recipe, no one definitive way to make yourself a good developer. Some grow up with tech-literate parents or develop their own curiosity early, others follow a traditional college path, and countless more find themselves learning their first scripting language after years in blue-collar positions. But one trait you're likely to find in every group, with almost every developer that's found success and contentment in the industry, is consistency.
When we consistently come back to the tough problems, learn new skills, master old ones and return to the projects that have long since lost their "new idea" stink, we learn. Not just about the subject at hand, but about ourselves. What languages and patterns do we prefer? What things in our style or approach could use some work? What are we doing right, and what would we like to be doing better?
To improve my own follow-through and consistency I started using Trello. The Trello app keeps everything together, allowing you to focus on small, actionable tasks and complete big projects using boards and lists. Cards added to lists can be set up with due dates, checklists, shared with teams, updated, archived, duplicated, and more.
For my personal Weekly Planner board, I like to keep things simple. There are 5 lists - "Utility", "Week", "Todo", "Doing", and "Done".
Utility - A "catch-all" list. Reminders, quick notes, etc.
- To Read: This card contains a checklist with saved tech articles. Instead of burying them in the bookmarks folder where links go to never be clicked again, the goal is to never let this checklist get longer than 10 items. Got 8 articles saved? Better make some time for reading soon!
- Reminders: A general reminders card. Things that pop up, notes-to-self, the nebulous stuff.
- Wishlist: This card has 2 checklists - stuff I want, from tech to Udemy courses, books, etc, and another checklist that I keep as a sort of running gift list. If I see something a friend or loved one might like, I drop it here with their name and birthday.
Week - This list tracks recurring tasks done every week - maintaining the home, grocery shopping, etc.
- Chores: Pretty self-explanatory. I like to make a checklist on this card and keep it to 4 tasks or less.
- Grocery: The Trello checklist feature really comes in handy on this card. Using multiple checklists, break the entire grocery list into several sub-categories - "fruit", "veg", "snacks", etc. Share the card with your partner and never have your memory tested by the "I'm at the store, do we need anything?" text again.
- "Wins"/"Work": I use these cards to track the little wins and opportunities for growth each week/month. Hearing external encouragement and praise is nice - but when it comes from within, you just might find a new appreciation for your own opinion. Alternatively, hearing external criticism can be especially hard - but if we see it in ourselves first, then no one will ever tell us something we don't know and aren't already working on. Jot down notes to reflect on later here.
Todo, Doing & Done - If all the lists on the board are siblings, these ones are triplets. Cards bounce around between the three as needed, but they're pretty self-explanatory.
Todo: Every Sunday I sit down and archive all the cards in the Done list, and make 5 new cards for Monday-Friday in the Todo list. I avoid over-planning the week, keeping the cards mostly blank at this stage, only adding in appointments, upcoming bills, etc.
- Project Card: At any one time I have 1 to 4 project cards that float between Todo and Doing. Usually, these projects have their own Trello boards - but what makes it to my personal board is straightforward - what specific tasks for that project need to be done this week?
- Hobby Card: Making time for our hobbies is important, and it's often where we learn the most about ourselves. Keeping running hobby cards, that bounce between Doing and Todo, ensures a consistent reminder to invest in our own desires and wellbeing.
Doing: In the morning, or the evening before, I drag the appropriate weekday card and the project and hobby cards I intend to work on that day and stick to it.
- Growth Card: Because we're always growing, this card never leaves the Doing list. I set small goals for the week here - like cooking a certain number of healthy meals, making more time for reading, or tracking the progress of a passion project.
- Done: For the most part this list is a repository for the weekday cards, completed or not, as the week passes. Later I can review what I set out to do each day, what actually got done, and what didn't.
- Todo: Every Sunday I sit down and archive all the cards in the Done list, and make 5 new cards for Monday-Friday in the Todo list. I avoid over-planning the week, keeping the cards mostly blank at this stage, only adding in appointments, upcoming bills, etc.
Viewing the days, and our time at large, from this high level allows us to be more productive and creative, and less self-critical. Taking the task of remembering all the things we have to do, want to do, or already did clears space to live in the moment and work more freely.
Part of the problem with the always-on mindset is that overworking, over-studying, and just plain overdoing it are often celebrated and seen as only attainable by the 'elite.' Luckily for the rest of us, science says that couldn't be further from the truth. Not only is taking breaks an important tool to improve productivity, but it gives us a boost in creativity, mood stability, and staves off burnout.
In 2011, psychology professor Alejandro Lleras conducted a study to determine the effectiveness of prolonged periods of work. A control group worked for 50 minutes uninterrupted, another switch group worked for the same amount of time, with 2 brief periods of rest. At the conclusion of the study, Professor Lleras found that the performance of the control group steadily declined over the 50 minutes, while the switch group stayed on task and motivated the entire duration. Lleras' study wasn't the first or the last of its kind to prove the worth of taking breaks, and countless other similar studies have shown that over-learning and under-utilizing vacation time impacts the happiness and productivity of millions and the bottom-line of thousands of companies the world over.
If you're unsure of how to start including meaningful breaks into the day, the Pomodoro Method is a popular place to start. At its base, the method is simple: Work for 25 minutes, take a 5-minute break. After 4 work sessions take a longer break, around 25 or 30 minutes.
Instead of using another third-party app, I time work sessions with the clock app on my computer. When I start working I select a pre-set timer and forget about it. When the timer goes off, it's time to stand up, pet my dog and generally give my brain a rest.
Billions of dollars are lost, and countless pieces of potential art, writing, code, and more never get created each year because of the pervasive belief that living an always-on, always working lifestyle will yield better results faster. Rest easy knowing that just isn't true, taking breaks is good for your brain and is a preventative salve for the dreaded burnout.
My approach to time tracking evolves a little more every day, with each book and article I read, and tip or trick that I find works for me. Finding what works best for you can be like finding a needle in a haystack, but you're guaranteed to learn about yourself along the way. At the end of the day, there's always going to be another language or library to learn, another article to read, another task to complete, and another bug to solve - but that's probably part of the reason you became a dev in the first place - it's never boring.