Having worked in the Web3 industry for several years now, I notice that there is a huge skill and knowledge among developers both inside and outside of the industry. One major reason for this is due to how nascent the space is - developers and users need time to become familiar with the novel technology, and to build layers of higher-level abstractions. Therefore, I have decided that familiarizing developers with the new programming paradigms through education and mentorships is one of the most effective methods to closing this gap. Teaching is also an excellent medium to gather feedback on how developers are perceiving various concepts, which helps reveal blindspots for what the industry needs and helps improve software design. For example, at Lit Protocol we are developing primitives for internet infrastructure and it is critical to ensure that our designs are secure, extensible, and usable for the public.
There are two main components to jump-start your career into software engineering: a desire to dive into the deep end, and an environment that encourages and fosters rapid learning. I vividly remember that time period when I was starting a technology company with a couple peers while only having written several lines of HTML code to build a webpage on Codecademy. Or another time period when I was granted permission by a senior engineer to transition from a Frontend Developer to a Backend Developer who had to learn multiple programming languages and new software engineering architectures on the job. Both scenarios were periods of high-growth that were only possible thanks to senior engineers who were highly accessible to ensure my feedback loop for learning was as tight as possible. I remember that, at one point, I was torn between going to a coding bootcamp or joining Axiom Zen - a startup foundry based in Vancouver - as a Frontend Intern, and in retrospect, the growth that I’ve gone through at Axiom Zen was simply insurmountable.
If there are two pieces of advice that I’ll have you remember, they are to take whatever comes your way and to adopt a mindset of lifelong learning. This is precisely how I took on the CryptoKitties project at Axiom Zen, which catapulted my career deep into understanding the immense potential that decentralized technologies can bring to the world.
My mentorship style has a very practical and agile focus. For advice around software architecture, I would discuss the classic topics of scalability, availability and security with the mentees, and then work backwards to develop intermediate evolution steps starting from the existing architecture. For specific bugs, pair-programming with the mentee has always been an effective approach. For learning a new programming language or paradigm, I design a highly-customized “learning path” for the mentee that involves reading material, videos, side projects and one-off Q&A style exercises to build their knowledge incrementally. For example, a recent student of mine was interested to learn more about smart contract development. Part of the learning path I had designed for them was:
1. Learn basic Solidity
3. Write a simple smart contract
4. Build a simple application that utilizes that smart contract.
Designing this customized learning plan also applies to those mentees who seek interview preparation and help for securing their next job, where I would focus their side projects and learning material towards the requirements listed on the various job descriptions.
My overarching structure adopts a more flexible version of OKRs (Objectives and Key Results) - that is, a plan that adheres to the changing schedules that my students need from time to time (due to personal or professional reasons) while maintaining focus on the ultimate Objective.
One of my favourite mentorship was with a junior software engineer - let’s call them Bob - two years ago at Amazon. Bob was fresh out of college and was highly inquisitive about programming. However, without much experience, he lacked confidence to design well architected systems, and produced code that did not leverage popular design patterns. As an educator, I naturally prefer students who demonstrate a high capacity for learning, and noticed Bob’s potential at an early stage. Since then, I set up recurring meetings, twice-per-week, with Bob to go through specific ways to improve their code at work, as well as learning software engineering in general. After a year of this mentorship, and having worked with Bob on a couple work-related projects too, Bob was promoted to an Intermediate position at Amazon.
Being a mentor has had a substantial impact on my life. Teaching is a great way to consolidate one’s knowledge, and through mentorships I have improved as a teacher in life beyond a professional capacity, too. And, after taking on students that are receptive to my coaching and produce results, I have now developed my desire to educate an even larger audience by deepening my participation at conferences and public speaking events. In terms of my day job, I often draw from experiences and learnings from it as a mentor, and it’s an excellent opportunity to bring greater exposure to Lit Protocol. Last but not least, mentorships have been a good source of side income and I can totally see it being a full-time endeavour as well.