Here are a few communication tips that have benefited me:
- Ask 1. Who is my audience/listener? 2. What do I want him/her to think and/or feel? Based on these answers tailor my message/website/software etc.
- Be very meticulous about the requirements and goals of the software of system. This means asking many questions about the use cases or work flow.
- Use pen and paper to think, plan, brainstorm. Think on paper. Using just a pen and paper and jotting down 2-5 ideas can help me organize and plan better. The extreme version is something like the 20 Idea Method
Here are a few tips that have helped me on my journey
- Remember my purpose and long-term goal(s).
- Forget about my long-term purpose and goal(s). Instead focus on the next step, or even just doing a few seconds of the next step.
- Write, read, and paraphrase my to dos and goals regularly. I currently email myself my goals and to dos every day.
- When I feel overwhelmed thinking that there is too much to learn, that technology moves fast, I remind myself that is a great thing. The opposite is an industry or a job that never changes, which is mind-numbing and boring. Also new technology is constantly being created to solve problems better, faster, more easily (in theory 🙂
- When I watch an educational video and think to myself, “How can she/he possibly know all of this?” I remind myself, “It is great that she/he knows this and is teaching me. I can cut down on the learning curve by learning from this teacher.”
Here are some great resources for learning System Design:
To learn these I recommend: Learning by repetition and paraphrasing
I have been learning material by using a combination of repetition and my variation of The Feynman Technique.
My strategy is to repeat the material in chunks, i.e. section 1, then section 1 and 2, then sections 1 through 3, sections 1 through 4, etc.
I try to paraphrase every sentence. Sometimes it’s I just reverse the sentences, sometimes I change them into a question and answer, and sometimes I just use synonyms for a word or for multiple words in the sentence.
I think this has been working for me because of the sheer number of repetitions, but also because I am actively engaging with the material, and I am jamming the information into my working memory. Furthermore, I am exposing myself to the material in many different ways because I probably paraphrase things slight differently each time.
I think if I get comfortable with the earlier sections, I might start reviewing from the later sections. For instance, if there are 10 sections, I might review section 10, then section 9 through 10, then 8 through 10, etc.
I think I can certain material into long term memory by using flash card software. Also for things that just have to be memorized, I can create pictures, patterns, stories, rhymes, or use memory techniques such as The Link Method.
Here’s a great article on how setting goals can actually be counterproductive and demotivating: Forget About Setting Goals. Focus on This Instead.
My personal philosophy is to focus on the process by setting up a system and simply following it. I try to make my system consist of fun and right actions, so that way I can happily achieve towards my goals instead of achieving to be happy. I try to trust the process and see what happens, which lines up nicely with James Clear’s article 🙂
I came across these great articles on learning coding by using flashcard software:
I also found pre-made flashcards here:
I found this great motivational quote from former NBA Superstar Kobe Bryant:
“That’s what Mamba Mentality is,” Bryant said. “It’s understanding that every day you can work on something, every day you get better, and then you can fast-forward years later and it seems like it was a ‘Voila!’ moment, but you know that patience and perseverance every single day is what got you there.”
I recently read this article: The Interleaving Effect: Mixing It Up Boosts Learning.
A few interesting points were made:
Blocking involves practicing one skill at a time before the next (for example, “skill A” before “skill B” and so on, forming the pattern “AAABBBCCC”), in interleaving one mixes, or interleaves, practice on several related skills together (forming for example the pattern “ABCABCABC”).
Overall, the interleaving effect can be strong, stable, and long-lasting.
I am currently learning from Pluralsight courses. I think interleaving works nicely with Pluralsight because the modules are around 30-60 minutes, which can fit into a Pomodoro because I play the videos at 2x speed.
I also feel like I have more fun because I can take several courses at once and finish a module from each course every day. Plus I get the variety of many different subjects, and the repetition when the courses overlap.
I read this interview with competitive programmer Ahmed Aly: Why Renowned Googler Ahmed Aly Chose HackerRank and what really stood out to me was his advice:
Ahmed, what advice do you have for people who want to become great programmers like you?
Don’t try to solve harder problems unless you are really good at solving the easier ones. That means solve a lot of really easy problems (that could be hundreds), that will improve your coding skills, which should be the easiest skill to gain. Then go to little bit harder problems, and so on.
In December I wrote about growing my coding abilities by reading.
Well I have found something even better and more enjoyable for me: learning from Pluralsight.
I am especially inspired by the growth shown by Kevin O’Shaughnessy who completed over 400 Pluralsight courses!
I feel like solving code challenges plus learning and building with Pluralsight will really accelerate my growth as a software engineer.
You can get 3 free months of Pluralsight by signing up for the free Visual Studio Dev Essentials.