Time Management for Self-Taught Coders
Tags: productivity, webdev, learning
Published: 2019-10-24 23:14:19

*In this post, I’ll share a few effective time management strategies I’ve used through my self-taught coding journey. I’d like to hear your thoughts about time management in the comments!*

A big part of being a developer is juggling priorities. This is true whether you’re working professionally or are looking for your first job.

**If you’re self-taught, like me, you’ve been doing this since day one, managing your own schedule and your own curriculum.** 

As a self-taught (or is it **self-teaching**?) coder, you have to balance your time along with the new skills you need to learn and the current skills you need to solidify. And it’s really hard to get the balance right.

It’s even harder if you work a full-time job (like I do), or if you have kids, or if you have any other commitment that requires you to devote chunks of your day to non-coding priorities.

When I started coding, I tried a few different time management strategies, with varying degrees of success. I believe that each of these methods can be very helpful for up-and-coming coders, especially if you tailor and combine them to fit your personal learning style, daily routine, and skill level.

*Feel free to share your own time management strategies in the comments! While this post is geared toward self-taught coders (primarily because of my own self-taught background), any thoughts on time management are welcome!*

##Strategy 1: Journaling
Very early into my coding journey, I started journaling my progress. After learning about the [100 Days of Code](https://www.100daysofcode.com/) Challenge, I created a private GitHub repo and started recording my daily progress. I would write about what I learned that day, my thoughts about my progress, and anything else related to what I’d done that day.

As a beginner, I found it extremely helpful. It was really encouraging to look back a week or two and see how far I’d come since then. I’ve been coding for almost a year, and I still do my best to keep a daily journal, although it’s not my primary focus.

##Strategy 2: Timekeeping
Once I had a decent grasp of the basics of HTML and CSS, I started balancing my time between coding static HTML/CSS layouts and learning the basic syntax of JavaScript. I used an app called [Toggl](https://toggl.com/) to log my time for each activity. Toggl would tell me how long I had coded that day, and it would also tell me how much time I'd spent on each activity.

**However**, it wasn’t long before I had too many tasks to balance. I was building apps in React, learning Node.js and Ruby, and brushing up on my existing front-end skills. I needed a new system.

##Strategy 3: Scheduling

Scheduling is by far the most effective strategy for me. I started self-scheduling a year or so ago, when I was studying for the FSOT (the Foreign Service Officer Test for entering the US State Department). I ended up passing the FSOT (although I decided against moving further ahead for a whole slew of personal and political reasons that I’ll omit here), so it certainly worked for me.

Every day, I wake up to a pre-written schedule of what I have to do that day. I don’t have to worry about timing myself. I just have to sit down in a chair and code for each block of time. It takes a lot of the worrying and guesswork out of my earlier strategies and adds a comforting framework to my studies.

Recently, I’ve split my mornings and evenings into chunks of 35 minutes. In my own variant of the Pomodoro method, I’ll work for 30 minutes and break for 5. Then I’ll switch on to the next task.

For instance, my schedule after dinner might look like this:
<ul>
<li><b>5:30-6:00</b> - Redux practice</li>
<li><b>6:05-6:35</b> - Dev.to blogging *(hey!)*</li>
<li><b>6:40-7:10</b> - Leetcode grind</li>
<li><b>7:15-7:45</b> - Node.js course</li>
<li><b>8:00-9:00</b> - Exercise <em>(Alotting time to stretch, shower, etc.)</em></li>
</ul>

And so on. *Yes, I eat dinner way too early.*

As someone who’s actively looking for a development job, this strategy helps me make sure I’m balancing my time among all the different skills I’m working on. And as it so happens, I have a lot of skills to work on. 

Your goals are probably different, so you can tweak this last strategy in a few different ways. For instance, you could increase the amount of time for each interval. You could merge time blocks if you’re working on a more intensive project, or if you’re making insane progress on one task. For instance, I had a major burst of inspiration for this post, and instead of devoting a single 30-minute block to writing, I rewrote and finished the whole thing in an hour!


##Closing Thoughts
These are three time management strategies that have worked for me. Right now, I’m obsessed with scheduling, and I expect to continue refining this particular strategy with practice. I'd also love to hear about the time management strategies that have worked for you on your coding journey.

In my experience, success as a developer comes down to three main factors:
<ul>
<li><b>Identifying your goals</b></li>
<li><b>Putting in the effort</b></li>
<li><b>Managing your available time</b></li>
</ul>

These factors are symbiotic. Once you’re aware of your goals, you can decide how you want to split your time. If you’re working hard toward your goals, your objectives will adjust, and your personal schedule will also adjust. But in many ways, efficient time management is the hardest to implement properly, and it’s also the most important.