6 minute read

On a path towards mastery

Have you been here before? Are you here now?

Since I changed jobs, I have decided to really dedicate my time to learning the craft of software engineering. There’s a lot that I don’t know, and even more that I don’t know that I don’t know, but I’m excited to begin.

If you, dear reader, are of a similar and ambitious mindset, I hope you are able to glean a few ideas from this read.

Have you ever decided that you were going to conquer some difficult and perplexing challenge only to find yourself a couple hours poorer and a whole lot more demotivated? I certainly have.

Without structure, rigidity, and an overall game plan in place, it is extremely easy to waste your time. You could argue and say that you’re trying your hardest and that you’ve put in way more hours than anyone else has. You might even be right. However, if that approach hasn’t been working for you as of late, you might want to take a step back and re-evaluate your approach. I’ve been through similar experiences trying to learn languages, master challenging technical concepts, and overall trying to be better and I’ve failed. A lot. A lot.

These failures have led me to form a particular method for tackling large and complex problems. For the small and simple ones, we always learn to divide and conquer. But sometimes, your task is just too large and too unknown to grasp well. The last thing we’d want is for someone to spin their wheels getting nowhere. That’s why we have…

The method

I am trying to take a more pre-meditated approach towards learning and these are the steps that I have come up with as of this point.

  1. Define your goals
  2. Do a timeboxed investigation into the realm of knowledge you’d like to master
  3. Seek mentorship and good people to learn from
  4. ??? (Work hard)
  5. Iterate
  6. Make sure not to burn out

I would like to go through each one in detail so you can apply the same sort of method to your learning.

1. Define your goals

Long after the excitement of quick progression and inspiration has faded, people often forgo their plans to reach their goal. Why, one might ask? Well, we have all been there before. It is no mistake that the whole notion of spikes in gym memberships during the month of January is a thing. People are easily motivated and are also easily equally demotivated.

Similar to the idea of SMART goals, in order to actually achieve anything, you need to know what that thing is.

What is your goal? How will you achieve it? When will you achieve it by? WHY do you want to achieve it? What changes to your quality of life will be as a result of your achievement?

These are the sorts of questions that will motivate you and drive you to get through the hardships and periods of plateaus when you just aren’t progressing as quickly and as easily as you once thought before.

Keep your eyes on the prize!

But make sure that you have a good reason that will hold up to scrutiny especially when it’s early in the morning or really late at night and you are still trudging through whatever arduous task is required to meet your goals.

For example, let us say that I would like to attain fluency in a new language, Cantonese, by the end of 2019.

2. Do a timeboxed investigation

Alright. If you are following so far, do a little exploratory research to see if the idea is plausible and a good investment of your time. Usually a quick 30-60 minutes of searching can do wonders. We all start in a state of not knowing what you don’t know. The only way to peel away the layers of ignorance is to explore the realms of learning that you should tackle when trying to achieve your goal.

Measure twice, cut once

In that same thread, do a cursory search of the topics that you will likely need to learn about and how much time and materials are required.

Continuing with our example, in order to learn Cantonese by the end of 2019, there are various materials out there for use and certain areas that I will have to learn.

  • I found the Pleco app for a Chinese dictionary / flashcard system, free with a potential add-on of $38.99 for more enhanced functionality
  • Cantolounge, a website that covers grammar and systematically tackling the internals of Cantonese
  • Mangolanguages section on Chinese that is free of charge with the local library system
  • achieving fluency is possible by learning approximately 10000 characters and communicating day-to-day
  • online dramas
  • online Cantonese music

3. Seek mentorship and peers to learn from

It is hard to achieve goals on your own and it always helps to have someone to look up to and to mentor you to make sure that you are progressing as planned and making the right decisions. You could go ahead and fabricate the most elaborate and detailed plan you can think of but it may not be fit for you or realistic. I often seek out mentors to help me validate or be a second pair of eyes.

A little friendly competition even helps the motivation. There’s not a whole lot to be said for this point because it is fairly self-explanatory.

For learning Cantonese, finding native Cantonese speakers to chat with and to bounce ideas off of and practice with is good. Unfortunately, I haven’t been able to find a specific mentor for this goal.

4. ???

Here is where the work happens. Keep your head down and practice practice practice.

Not everyone can be Iverson.

On learning Cantonese, I have been using flashcards every day for about 15 minutes and I have been learning from Mangolanguages and Cantolounge on the weekends.

5. Iterate and re-evaluate

Associated with the Agile mindset that is all the rage in software engineering, we need to iterate and have retrospectives. What works? What doesn’t work? What could we be doing better? Especially with learning, we have to be brutally honest with ourselves if we really want to grow. I usually reflect on how I could otherwise be learning better to make sure that I stay true to my goals and remain on pace with my deadlines.

6. Make sure not to burn out

Learning and reaching your goals is all good and all, but you have to make it to that point. Being burned out and exhausted is not a solution and it is not maintainable. We want to achieve our goals with excellence and continue to set and make them in the future.

Some days, it is okay to sleep in and rest if needed. You can push your goals too, but try to stick to them as best you can. Others can be motivated by tight deadlines so account for that by giving yourself time between when you have met your goals and starting new ones.


Get learning, friends! There’s a lot out there to explore and know that you cannot learn everything. Anything worth doing takes time and I hope I have been able to give you a glimpse into how I approach my goals. Let me know if you have any comments or suggestions!