Last couple of months have been interesting on a multitude of levels. Global pandemic and economic doom notwithstanding, the pandemic has been a net positive for me on a professional and financial level.
Working from home for the past 5 months has given me a lot of time to reflect and do some planning around the things I want to learn and, by extension achieve in the near future.
Earlier during lockdown I arrived at the conclusion that I have more or less plateaued in the past year as far as my engineering skills are concerned. It's not something I like to admit, but after asking myself questions around what I've actually learned I wasn't satisfied with the answers. The first step to improve is to realize there's a problem.
I've gained knowledge in new areas I had to do for work in the past year, but those were few and far between. I haven't made any serious strides in improving my understanding on the engineering topics that really interest me. My pursuit is toward more deeper knowledge and eventual mastery of a subject, not just trivia or surface level understanding that can pose as serious comprehension.
I even left my stable job recently (in the middle of a pandemic and looming recession) for a new and interesting company which was definitely one of the better decisions I've made this year. Introducing a bit of risk and uncertainty was exactly what I needed to push myself into action.
To that end I've devised a routine on how I'd like to proceed so I can improve in the areas that I'm interested in.
My current routine (most days) is as follows:
- I wake up at 5:30 every day (Mon-Fri)
- Exercise between 45-60 mins (Martial Arts, HIIT, Calisthenics)
- Quick cold shower
- Morning Deep Work Slot for 2-2.5 hours
- Morning core working hours for my job between 9:00-12:00
- Bursts of focused work when working on a task/researching something
- Stand-up and walk/stretch/punch/kick around the living room often when not doing focused work
- Usually I skip lunch or make myself something super quick
- Noon Deep Work Slot for 45-60 mins
- Afternoon core working hours for my job between 13:00-17:30
- Same thing as the morning: bursts of focused work
- Same thing as the morning: standing-up, stretching etc.
- 30-45 minute break after work
- Evening Deep Work Slot for 1.5-2 hours
- Free time
- Play games
- Watch movies/TV shows
- Going to bed at around 21:45
- Try to not use phone, PC or iPad at least 30 minutes before going to bed.
- Reading from my Kindle is allowed
This is not a 100% rigid routine, but I try to follow it as much as I can every work day. The Deep Work slots are the bits where I do most of my learning/practice now. I've used that same approach initially when I did my Chinese character learning experiment. Most days I hit all 3 slots, but some days it's 2 or even only 1 when unforeseen things get thrown my way.
The important thing is to be aware that life happens and you're not a robot. The point is to come back, come back and strive to achieve the routine. If you fail some days don't beat yourself up too much and try to do better tomorrow.
Weekends are freeroll. I do whatever I want. Last two Saturdays I did 8 hour gaming sessions in Red Dead Redemption 2 and Ōkami respectively. Had a great time! I still do some work, but I try to relax and recharge.
What am I doing in my Deep Work time is another interesting matter. I focus on only one field/area in each slot which means that each of them is specific to what I want to improve. Trying to focus on multiple things in one sitting like solving math problems and studying Chinese obviously defeats the purpose of calling it Deep Work. Some days I chain all times to a single knowledge area and others I do 3 separate things throughout the day. It depends entirely on what you want to learn and achieve.
Some of the topics I'm going through right now are:
- Mathematics - I've been going through the full suite of Khan Academy Math lessons (yes, from the 1st grade). I have gaps in my Math knowledge which were bestowed upon me by a series of horrible Math teachers. Twelve years at school and not one good Math teacher. I really drew the short straw on that one and now I'm paying the price. My desire to improve my engineering knowledge and understanding is directly tied to improving my math. I'm watching every lesson, solving equations and doing the tests. I'm trying to be as practical as I can.
- C#/CLR - Trying to gain deeper understanding on what makes C# and the CLR tick. As of right now just going through Microsoft's documentation making notes and looking at code.
- Low-level programming concepts/hardware - This is a bit generic I know, but I want to gain deeper understanding on how computers work. Some of the books I'm going through right now are:
- Computer Organization and Design: The Hardware/Software Interface by David A. Patterson and John L. Hennessy
- Programming from the Ground Up: An Introduction to Programming using Linux Assembly Language by Jonathan Bartlett
- Code: The Hidden Language of Computer Hardware and Software by Charles Petzold (read it many times, but it's so good so I'm going through it again)
- C++ - I haven't worked professionally with C++ for almost 5 years and want to go back into it. Main resources I'm using are:
- Studying Chinese - The only non-technical skill that has a Deep Work slot now. After I finished my experiment I started listening/reading study. The Heisig method did wonders for my character knowledge so now I'm trying to learn vocabulary with the characters I learned and try to speak and form sentences. For listening/speaking practice I'm using Pimsleur. I'm planning on starting the second volume of Heisig in the upcoming months.
- Vim - I'm trying to learn and use Vim.
- I've been using
vimtutordaily. Serves quite nicely for muscle memory training which I can appreciate with my MA background.
- Vim and Vi Tips: Essential Vim and Vi Editor Skills - Got this book for free years ago on my Kindle (don't remeber how or where), but so far it's good enough for me as a beginner
- I've been using
I haven't set a timeframe on finishing any of those topics anytime soon. Each of them is a lifetime pursuit for a lot of people.
My overreaching goal for now is to gain enough understanding in all of them so I can continue gaining knowledge in the more science based fields like physics and graphics programming both of which are of great interest to me. Unfortunately, despite my game dev efforts in the past I haven't had huge interaction with them deeply enough. I'm also interested in game engines, so maybe I'll just start on making one and work both on physics and graphics. Who knows where my journey will take me?
I hope to attain mastery but until then I have to take it one day at a time, one deep work slot at a time. As Maglob has said:
“If you want to learn something, read about it; if you want to understand something, write about it; if you want to master something, program it.”
For years I compared myself with other people and famous engineers. I put myself down without really thinking about their circumstances and environment. I'm most definitely done with that now. I'm me and I'm going to do things my way without any comparison. I still admire people and engineers like John Carmack, Jonathan Blow, Tim Sweeney etc., but I'm not them and this is not a competition.
Knowledge is it's own reward!