Time management can be tough.
I found myself spending way too long on some subjects. Some take more time than others. Graphs, trees and sorting take more time to go over than studying priority queues, for example.
But I could just watch videos on dynamic programming for days. I just keep learning more, but at some point you have to move on to the next subject.
Time and money are similar. The more you have, the more you'll waste.
-- me
And there comes a point where I have to go from "learning new stuff" mode to "review and practice" mode.
What I Need to Do
Here's a breakdown of what I need to get to the end:
Learn new things (in the Coding Interview University study plan):
- reading (some new, some for review)
- videos
Python:
- learning
- coding
Review:
- reading interview prep books
- general flash cards
Practice:
- coding interview questions
- code flash cards
Time Management
So I figured I've gone far enough learning new stuff every day, and need to start interleaving review and practice every day.
So to the whiteboard I went to make a plan. I mapped out all the time I have available each day to devote to study. As you can see I'm pretty obsessed, and have a lot of time to devote to preparing.
Next, I needed to figure out, given the list above and my schedule, how many hours each day I need to commit to each segment.
This is what I came up with, given a 9.5 hour day:
Using the timer on my phone, I can track time in each. If I need to steal an hour from one to add to another that day, I can do that.
Tough Choices
I had to cut short reading "The Unix Programming Environment". It was a great book, but it was getting into writing C-based scripts, which was beyond the scope of my need to read it. I had been reading it for learning shell scripting and shell commands. Will return to it someday. For now, K&P Unix sits upon my bookshelf.
Introduction to Algorithms, AKA CLRS, will get a little spot reading, but I can't spend a month reading it. I just don't have the time. I really would love to, as I'm sure there's a wealth of new and review material in there.
One Addition
I added Elements of Programming Interviews to my reading list. I did this mainly because I heard good things, and mainly because it's C++ heavy. Well, even though I chose Python instead of C++ for the interview, I still want to read through this book for review and programming questions. I can translate the C++ to Python on my whiteboard.
Spreadsheet to the Rescue
Here is my layout of all the items remaining.
The green areas are where I can edit my progress. Once I've covered a subject, on the left, I can set the remaining hours to 0.
On the right you'll see the books I'm reading, and where I am in my progress there.
Below the books, I'm accounting for Python study and interview question time.
Then the final block shows how far along I am (in percent) and when I can expect to be done. So I still have almost 2 months to go.
Back to it!