book link: https://www.oreilly.com/library/view/apprenticeship-patterns/9780596806842/
New concepts
- Contribute to online communities.
- I mostly learn new things on my own. And I use all the online communities as a form to look up questions, but never really have the patience to answer other ppl’s questions. Time to change that.
- Share what you have learned via blogs and connecting to the author.
- I finished reading this book half a year ago without writing a blog. tbh I remember nothing about this book now. By writing a blog, I’m hoping to convert what I read into what I gain.
- Be picky about things I practice.
- Since there are numerous online tutorials and ofc leetcode, I found it’s easier for me to make progress in job search compared to actually working. When job searching, I just repeat those defined practices and progress daily. But now at work, I suddenly lost track of what to practice. I read articles, try new tools, yes. But I’m not deliberately practicing anything. Time to change that by:
- Reading technical books and taking courses.
- Writing out what I have learned or making anki cards about new concepts.
- Since there are numerous online tutorials and ofc leetcode, I found it’s easier for me to make progress in job search compared to actually working. When job searching, I just repeat those defined practices and progress daily. But now at work, I suddenly lost track of what to practice. I read articles, try new tools, yes. But I’m not deliberately practicing anything. Time to change that by:
Action Items
Think/Reflect
To look into the future
- Collect resumes of people who I respect. Identify the skills that I want to gain and plan a toy project to demonstrate that skill.
- Plan my career with this question: Imagine 40 years later, when I am writing a summary of my professional life, what would I want to write?
To look back to the past
- Define the metrics to measure the complexity of my project by reflecting on these questions:
- What is the biggest project I have ever worked on in terms of lines of code and number of developers?
- What is the biggest codebase I have ever built on my own?
- Draw a personal practice map. Consciously write things I do and think about connections between them. Identify the efforts and the payoff for the things I do.
Connect with people
- Start a blog and write/read blogs that interest you.
- [Will be hard for me] Start a study group using the knowledge hydrant pattern language from Joshua Kerievsky’s paper “A Pattern Language for Study Group”
- Find another software engineer and sit next to them to solve a problem together.
- Start reading technical books. Contact the author with some questions & appreciation after you’re finished the book.
- Subscribe to a moderately high-traffic online mailing list and try to answer people’s questions by reproducing their issues.
Go dig deeper on your own
- Consistently assign time to learn new things.
- Avoid practicing the wrong things. Use classic and well-sorted material as the practice source, such as courses, textbooks and the classics.
- Pick a sophisticated open source project (I would be interested in spark, beam). Browse the project’s source, noting the ideas that are new to you and write a blog post describing the architecture of the system and emphasize the new ideas you learned.