What and How to Learn?
In my last post, I encouraged folks to expand their knowledge base which gave me the idea to share how I navigate the world of learning: how I choose what to learn and, ultimately, how I go about learning it. So, let’s dive in.
Awareness and Research
The first step is to identify what to study. You likely have some technologies or skills in mind, or areas you know you’re lacking, maybe something necessary for your job.
My process for discovering new technologies is quite organic, thanks to some of my habits. I follow several experts in the web development world on YouTube, X (formerly Twitter), and various blogs. This exposure often leads me to hear about new developments. Additionally, I refer to popular surveys like StackOverflow, StateOfJs, and JavaScript Rising Stars, among others, to gauge the most popular technologies. Besides that, I stay attuned to market demands. Though open positions on LinkedIn and similar platforms might not always directly highlight these, you can often spot trends, such as the increasing demand for Go(lang).
I rarely engage in in-depth research unless it’s for a topic I’m striving to master or something crucial for my job. If I were to choose another language to fully commit to, I’d probably seek out comprehensive benchmark posts, explore use cases, and examine some robust source code.
If you’re anything like me, you probably have an overwhelming list of subjects to learn. However, it’s impossible to tackle everything at once. That’s where the next steps come into play.
Lacking Ideas?
If you’re unsure about what to study in the realm of software engineering, don’t worry. There are various areas from which you can choose. For brevity, since this isn’t the main focus of the post, I’ll quickly outline them:
- Essentials: These include Programming Languages, Frameworks, Libraries/Packages, and Version Control.
- Fundamentals: Key areas like Data Structures, Design Patterns, Algorithms, and Performance Optimization.
- Hard Skills: This includes Debugging, Software Testing, UI/UX Design, Security, Networking, System Design, Databases, Cloud Computing, and much more.
- Soft Skills: These are crucial and include Communication, Languages (such as English, Spanish, etc.), Industry-Specific Knowledge, Critical Thinking/Problem-Solving, Collaboration, and Emotional Intelligence.
- Emerging Technologies: Keep an eye on Artificial Intelligence, Machine Learning, Blockchain, Internet of Things, etc.
These categories should offer you some ideas. I’d strongly recommend any day of the week to start with mastering the “Fundamentals”. They provide a solid foundation for branching out into other areas.
Prioritization
The concept seems straightforward, right? We need to balance our personal interests, job requirements, and market demands. It’s about staying updated with popular tools and technologies to stay ahead of the curve.
Consider these factors when prioritizing:
- Current Market Demand: Keeping yourself sharp with in-demand technologies not only positions you favorably for job opportunities but also ensures you’re skilled in tools that are battle-tested in daily production environments.
- Future Trends: Keep an eye on the horizon. You don’t have to chase every new trend, but once a technology gains significant popularity, it’s worth exploring and forming your own opinion.
- Your Current Skill Level: Acknowledge areas needing improvement. If you’ve been lacking a skill for a while, it might be time to address it.
- Workplace Necessities: Ensure you’re proficient with the tools used in your job. It’s not just about the technology, but also about demonstrating excellence in your professional role.
- Industry or Domain-Specific Knowledge/Skill: Tailor your learning to your industry. For example, if you’re in finance, get into blockchain; in healthcare, HIPAA compliance tools might be relevant, etc.
- Community and Ecosystem: Evaluate the community and ecosystem surrounding the technology you wish to learn.
- Resources availability: Check if there are quality learning resources available. A lack of good resources might mean a greater investment of time in reading documentation, trial and error, or even studying source code.
- Great tools for specific problems: Sometimes, specific tools are vastly superior for certain problems or tasks you’re interested in solving. Investing time in these tools can be wise.
- Personal Interest: Your enthusiasm for a technology can greatly enhance your learning experience. A genuine interest can make the process more enjoyable and effective.
Ideally, a technology that overlaps with most of these areas is a prime candidate for learning. However, this doesn’t necessarily mean it’s more important than others. For instance, a technology that piques your personal interest, is a future trend, has a robust community, and plenty of resources might be less valuable than something essential for your current job but in which your skill level is low. Choose what’s right for you at this point in your career, and be mindful not to make inappropriate comparisons.
That being said, lets keep it real, what you probably want is to have a return in your investment, if you are putting time into learning things, you want to get something out of it. There is this quote that often grounds me down to earth and helps me decide what to learn, hope it helps you too:
“The magic you are looking for is in the work you are avoiding” - Alex Hormozi
Goals and Effort
Now comes the challenging part: coming up with a plan to make steady progress in our learning. It’s time to put pen to paper (or fingers to keyboard). Over the years, my tools of choice have evolved – from Trello to Apple Notes, and now to Notion, which is quite useful for this purpose.
To effectively set goals, I believe we need to ask ourselves three critical questions:
- What is the desired outcome of this study?
- What resources are available for this study?
- How much effort am I willing to invest?
Outcome & Output
Understanding the difference between output and outcome is quite handy to have in your learning journey. Output refers to what you produce or accomplish, whereas outcome pertains to the effect or impact of your efforts on your knowledge and skills.
Let’s illustrate this with an example. Suppose you’re learning Astro. You decide to watch a Frontend Masters course on Astro, read the documentation, and build a simple blog site. The output in this scenario is the code for the blog site. The outcome, however, is the knowledge gained about static site generation and Islands architecture, as well as a comprehensive understanding of Astro as a framework and its efficient problem-solving potential.
Some outcomes I sometimes expect to have from my studies are:
- Basic Understanding: Gaining enough knowledge to hold an informed conversation about the technology and seek further information.
- Awareness: Developing a good grasp of the technology and its capabilities, enough to consider its application.
- In-depth Knowledge: Achieving a thorough understanding of how the technology works, including its advantages and disadvantages compared to similar technologies.
- Mastery: Attaining a level of expertise that allows me to comprehend the technology in detail, possibly even engaging in discussions with renowned experts in the field.
These are just examples, not the exact things I would use, come up with whatever
As for outputs, my goals vary:
- Mental Assimilation: Sometimes, it’s just about absorbing knowledge without any tangible output.
- Draft Notes: Just write something, that alone will help you assimilate the topic.
- Structured Documentation: Create detailed study notes and make them have a structure, that’s what I’m trying to do with these blogs.
- Coding: This could include basic exercises like the ‘getting started’ tutorials of a framework, or exploring key features of a programming language.
- Pet Project: Developing a simple project to apply what I’ve learned.
- Advanced Problem-Solving: Undertaking a challenging project that requires deep diving into the technology, going beyond the basic examples out there.
Resources
Identifying the right resources is key once you have an aim. There’s a diverse range of materials available, each catering to different styles and preferences. It’s important to know your preferred learning methods, but also be open to exploring new approaches, especially if you’re not seeing the desired results with your usual methods.
Here’s a list of various resources you might consider:
- Podcasts: Great for auditory learners and perfect for gaining insights while on the move.
- Blog Posts: Ideal for quick, focused reads on specific topics.
- YouTube Videos/Tutorials: Visual and engaging, these can be helpful for grasping complex concepts.
- Online Courses: Offer structured learning paths, often with interactive elements and community support.
- Books: Provide in-depth coverage and are excellent for thorough, comprehensive understanding.
- Mentorship: Personalized guidance from someone experienced in the field can be invaluable.
- Academic Journals/Papers: For those seeking the most current research and developments.
- University Programs: Offer a formal education structure and accreditation.
- Workshops/Seminars: Interactive and often hands-on, these are great for practical learning.
- Libraries: A treasure trove of resources, from books to multimedia materials.
- And more: There are always emerging resources and platforms to discover.
Remember, the best resource is the one that aligns with your learning style and meets your specific needs. Experiment with different formats and see what works best for you.
Effort
With a clear idea of your goals and the resources at hand, it’s time to estimate the effort required. Let’s break it down into manageable chunks – I would recommend counting in tens of hours.
For instance, consider a 16-hour course on a specific framework. Add to this the time you’ll spend coding alongside it, debugging, and perhaps experimenting with different approaches. Altogether, you might be looking at around 40 hours of commitment.
Or, take a comprehensive book covering complex topics. Based on my experience, just reading it could take anywhere between 15 to 30 hours. Factor in the time for practice and exercises, and you could easily reach 50 to 80 hours.
Now, tally the hours for each of your goals. Suppose it adds up to 450 hours over a year or your chosen timeframe. That equates to roughly 1.5 hours per day. Consider your daily routine – will you study every day, including weekends? Are some days more suited for extended study sessions than others?
Doing this math isn’t overly complicated – you could even ask a 10-year-old to do it for you! However, the real challenge is making tough decisions: scaling back the hours on some goals, adjusting priorities, or leaving certain items on your “wish list” for extra time.
Once you’re comfortable with your calculated study time, I recommend scheduling it in a calendar. Use the recurring event feature for ease of management. If you need to shift a session, simply drag and drop it to a new slot.
Consistency
Great, now that you have your plan for however long you choose, just keep in mind that if you aren’t getting stronger, you are getting weaker. Try to be consistent. If you’re not using a part of your skillset, you’re losing it, and that might be just fine sometimes. Technology gets deprecated, you might not really like some tools, and you are moving on to better things. Just be aware of it, and every now and then, if you think something is important, open that book again, or the code, and crack at it.
Pet projects are a great way to stay sharp. New versions of the technologies you use are constantly being released, so upgrading your project is also a task that will help you grow. You will need to tackle this at your job sometime; it’s better to be prepared. Change logs are great for keeping you up to date.
Final words
Make sure that at the end of the day, your investments are overall aligned with your career path. Sometimes we derail here and there, and that’s fine. Whatever skills you pick up along the way will be useful and will help you better understand what you want. So, don’t worry too much about missing out sometimes and falling into analysis paralysis.
I used to struggle with procrastination, especially for tasks without a deadline. Work-related things are easier to be accountable for, but what about studying when nobody’s watching? Well, I’ll leave you with a couple of quotes from Alex Hormozi that help me move forward when I need to:
“Instead of spending time getting in the mood to work, just start working, confront the work, people think they need perfect conditions to start when in reality starting is the perfect condition.” - Alex Hormozi
“Stop complaining for the results you didn’t get for the work you didn’t put in” - Alex Hormozi