Weekly Review #23 - How to Learn a New Technology (A Liberal Arts Major's Perspective on Coding)

Author: pseudoyu | 4368 words, 9 minutes | comments | 2022-12-19 | Category: Ideas

cat, computer science, front-end, knowledge, learning, life, review, study, work

Translations: ZH, DE

'Brand New Day - Theme song from Flying Colors'

Preface

This is a record and reflection of my life from December 14 to December 19, 2022.

This week I continued working from home due to the pandemic (I feel like I can remove this opening line soon, as it has become the norm). I’m still “slacking off” by learning front-end development, while occasionally writing some back-end code for work. On some days, I didn’t even realize dawn had broken. It feels like I’ve regained the state I was in last year when I was rushing to meet deadlines and preparing for final exams in Hong Kong. But this time, there’s much less external pressure and anxiety. I’m enjoying it more.

After experiencing late-night overtime work every day for a while, I’ve come to realize how precious it is to have some free time to learn what I want to learn, or simply spend time with my cat. However, I feel like it’s been a long time since I’ve written about anything substantial or shared my experiences. I’ve spent a lot of time adjusting my state of mind and sharing my daily life. So today, I’d like to share some of my learning experiences, methods, and thoughts. It might be more conceptual, but I’ll (probably?) share more specific details in the future.

I decided to add the following two paragraphs after some thought.

Actually, I initially thought about writing my annual review. So I looked back at my articles from this year (or more accurately, the half year since I resumed updating in May). Apart from some articles about tools and productivity I posted in May, most of them were weekly reviews - thoughts, ideas, emotions, and ramblings. Although it’s mainly a channel for self-expression, I occasionally feel guilty for talking too much about emotions, as if I’m using my blog as an outlet. So I thought I should provide some substantial content, which led to this experience sharing. Unexpectedly, it turned out to be nearly 7,000 words.

I will write an annual review, which will cover various events from this year - things lost, things gained, things to be grateful for, and inevitable regrets. Although I hesitated about whether to mention some things again, I decided to face them honestly. After all, everything expires, even canned pineapples. This year too. It’s these joys, angers, sorrows, and happiness that have shaped my 2022, and shaped a more complete me.

Then, I’ll post it on December 31st, a date that’s quite special to me.

Starting from a certain point this year, I began adding a theme song to each article - “Us After That” by Mayday, a song I really like. Today, I’ve changed it to “Brand New Day,” the theme song from the movie “Flying Colors.” I’ve always thought it sounds great and fits this article well.

How to Learn a New Technology

My Journey of Exploring Learning Methods

First Explorations

I wasn’t someone who particularly advocated for various learning methodologies in the past. I was quite indifferent to these “how-to” guides. I couldn’t even finish reading “How to Read a Book” in high school (?) I always felt that this was a very individual matter. Many posts I read seemed less effective than what I call the somewhat mystical “enlightenment” that happens at certain stages. Of course, this enlightenment mostly has nothing to do with talent, it’s just finding some of your own ways through exploration.

The change occurred during a high school visit to a bookstore, where I encountered some Zhejiang University students selling their self-compiled and printed college entrance exam preparation materials and experiences. Out of curiosity, I bought a history subject guide. When I had some free time, I flipped through it. It contained some timeline arrangements and memory tricks. Later, when I actually learned this knowledge, I often found it easier to apply. Eventually, history became a subject where I could often rank among the top in my grade, and I gradually developed an interest in studying history (I even considered applying for a history major at one point).

Looking back now, the content of that book itself might not have had any unique parts. The knowledge was just that knowledge. But from the perspective of a college student who had gone through the college entrance exam and achieved good results, the methods were summarized in a way that had a kind of “dimensional reduction strike” effect. This inspired me to gradually explore my own methods in learning other subjects as well.

Learning Mindset

This article doesn’t intend to (mainly because I can’t explain it clearly) introduce various learning methods with theoretical foundations. There are many videos and articles about “XX Learning Method”, which might not be as effective as reading the original text after some summary and internalization. Here, I’d like to recommend this article “How do I learn a new technology or knowledge? WW Learning Method? Taking blockchain as an example.” by senior “It’s Luotuo”. I benefited a lot from it when I first started learning blockchain and many other subjects.

This time, I want to talk more about my thoughts and experiences on a point that I think is very important but often overlooked - learning mindset.

I was assigned to the English major in university. After only about half a semester, I realized very clearly that this was not a major that I would continue to be passionate about or could rely on for a living. But at that time, I didn’t have a very clear goal, so I started learning various skills non-stop to alleviate my confusion and anxiety.

Because I was mainly responsible for some “technical” related work tasks in the student association, of course, the technology here mainly refers to skills such as graphic design, photography, and video editing. I still remember that my first major project responsibility was a rushed promotional video/MV task for an evening party. As I recall, it wasn’t complicated and didn’t have any special effects, just some basic processing, splicing, and exporting of video materials, at most adapting to different screen sizes to achieve a good display effect.

So on a weekend, I downloaded Adobe Premiere Pro (commonly known as PR, a software that has tortured me for five or six years, and I didn’t expect that many of my future endeavors would be related to video editing, which is also an interesting coincidence), watched some tutorials, and finished it in two days. When I went to submit the task, the club members including the department head were quite surprised and asked if I had learned it before, and how I did it so quickly.

In fact, my understanding of video shooting and editing was limited to making a birthday greeting video in my senior year of high school, and even that was done with the help of a friend (I think we used Huisheng Huiying or Aicijie, which are now distant terms. Interestingly, that friend is now working as a director and editor, another interesting coincidence * 2). When using PR, I subconsciously didn’t feel that it was a very difficult software or that editing was a very difficult thing. Learning came naturally, and I could look up any problems I encountered on the spot. There wasn’t much technical content, I just went and learned it, that’s all.

Many friends might have an instinctive sense of fear when they first start learning something they don’t understand, thinking it’s very complex. They set up psychological barriers for themselves, and end up never having the determination to learn. Later, when I was teaching in departments and student associations, I often used a basic practical project to help everyone understand that this is not such an “unattainable” thing. After breaking through this psychological factor and adjusting the learning mindset, learning the operation itself became very easy, and the effect was very good.

Of course, these are just some general skills. The actual programming-related technologies are very different, but the changes in mindset in this aspect might be a long story. Since I’m often asked about it, I might as well briefly mention my journey from liberal arts to coding.

My Journey from Liberal Arts to Coding

VB Introduction

As a liberal arts college in a science and engineering university, we had a very characteristic requirement to study computer science, but it was just the basic VB (Visual Basic) language. Thanks to the academic proficiency test in Zhejiang, which required VB practical exams for the information technology subject, I already had some basic understanding in high school. So learning it again was relatively easy. Although I needed to relearn the syntax, I still felt that it wasn’t such a difficult thing in terms of mindset.

At that time, many of my friends were encountering programming languages for the first time and had a very strong fear of syntax and various symbols. So when I was learning, I organized a set of notes of several dozen pages based on my own thoughts and explanations, turning a book into a thin stack of several dozen pages of paper. My friends experienced a big change in their learning mindset, and it was very effective (later it was “inherited” by the next grade, and the experience of becoming a legendary senior’s treasure trove was also a very happy thing).

Changing Direction

After revisiting VB, I suddenly felt that I really liked the feeling of being able to create and implement some ideas through code, and I felt that I was somewhat “good at it” to some extent. Thus, I had an idea that seemed a bit bold at the time - “Maybe I can make computer science my future direction.”

Of course, due to the school’s inexplicable rule that “liberal arts students recruited through the college entrance exam cannot transfer to science and engineering majors”, the path of changing majors was already blocked. The application for a computer science minor at Wuhan University also fell through because my GPA was a bit short.

Well then, I’ll just learn it by myself.

So I asked a friend who was minoring in computer science at HUST for their course schedule and textbooks. My mindset at the time was simple: I might not have enough time and energy to catch up with many courses in the major through self-study, but the workload of minor courses was acceptable. So, while supplementing basic courses like operating systems and computer networks, I started learning Python (yes, I also started with Mr. Liao Xuefeng’s Python course), and began my journey of “not minding my own business”.

Difficult Progress

There were countless nights of struggle and feeling like I was useless and wanted to give up, and during the struggle period, I did various internships/part-time jobs such as running WeChat public accounts, product manager, blockchain game planner, graphic designer, etc., and later registered a company and opened a studio to do video editing, etc. This is mentioned in another article “Weekly Review #19 - Remembering an Entrepreneurial Experience”.

I really walked this path with many ups and downs for those few years. There were times when I blindly learned various languages (because I thought it sounded cool to say I knew some niche languages), times when I gave up learning boring basic knowledge to write Web and mini programs (because I could earn extra money), times when I had the misconception that I could write good code without needing to understand various underlying principles and data structures, times when I studied for a long time but seemed to make little progress during bottleneck periods. Of course, there were also many happy gains, but these are already daily occurrences, so I won’t list them in detail.

Later, out of career planning considerations (honestly speaking, it’s indeed a reality that most English major undergraduates can’t even submit their resumes for a technical job in the current environment, an unfortunate but unavoidable situation) and the desire to have some achievements in a specific field, I took a gap year after graduation to apply for a computer science master’s degree in Hong Kong. This part is mentioned in “A 23-year-old’s Confession: Pursuing Meaning”. It was also a way to fulfill one of my dreams (you don’t want me, I deserve better than you) after the big disappointment of receiving an invitation from a blockchain professor’s lab at National Taiwan University but then being ghosted.

Adjusting Mindset

In fact, what benefited me most in my subsequent learning was that I never used “I am an English major student” as an excuse for not learning well. After all, there are no longer high barriers to knowledge acquisition now. I can learn the same knowledge that others can learn from many open courses and tutorials. I even have some freedom to choose, allowing me to find the best and most suitable courses to study. As a result, I’ve taken many open courses from MIT and Coursera.

Even when I actually attended the interview for the Computer Science Department at the University of Hong Kong, I didn’t avoid talking about my original major as a weakness. Instead, I mentioned the efforts I had made and the results I had achieved as a student from an unrelated major for a major I loved, including some explorations and ideas about the major and the industry. I believe this also helped with the final offer.

The Shelved Liberal Arts to Coding Guide

As an aside, I’ve always wanted to write a guide about transitioning from liberal arts to coding, probably called something like “Programming Introduction/Coding Guide for Liberal Arts Students” (although it sounds like a marketing Python ad). But I always felt that it would just be some tutorial recommendations and application experiences, and the final result had a large element of luck. Sharing it might not provide much substantial content, and might even seem like a kind of “boasting” due to survivorship bias, so I never started writing.

But now, after more than a year of work and exploratory learning, I’ve managed to somewhat establish myself in the programmer profession or the blockchain industry. I also feel that I have some small experiences in learning new technologies/knowledge, so I plan to restart this idea. I’m digging a small pit here, to be filled gradually.

But actually, the intention of doing this is not to tout how good it is to switch to coding or how easy this thing is. The industry does have some advantages, but the hardships and bitterness of switching to coding and learning technology are not few. There are many sleepless nights and many moments of self-doubt, just not worth mentioning. And ultimately, it still relies on bit by bit accumulation, just like that simple yet very real truth - “Nothing else, just practice makes perfect.”

I’ve also seen many admired tech experts on Podcasts and Twitter, including those who switched to coding. In comparison, my abilities are not yet sufficient to teach others anything, but I want to write these things down just to convey my thoughts and journey, and maybe to some extent, prevent those who are curious about this field from being deterred by mindset issues.

Those with relevant experiences and insights are welcome to contribute together.

How I Learn

Back to the main topic, let me briefly talk about my basic mode of learning a new technology or approaching a new field. This is purely personal experience sharing.

Information Source Collection

Perhaps due to some influence from my previous learning mode and personal information control characteristics, I am very inclined to collect many information sources when learning a new technology/knowledge. Compared to some search engine and algorithm-recommended results, I’m more accustomed to searching through the historical videos/articles of some favorite YouTubers or personal bloggers. There are often unexpected pleasant surprises (mainly because those experts are too strong and have too wide a range of knowledge, many bloggers I used to watch for Python and Go have updated with very high-quality blockchain content). From their videos/articles, I can see the pitfalls in learning, as well as the practical applications behind this technology.

For example, in the blog of Twitter friend “STRRL” “strrl.dev”, I can see many small toys he’s tinkered with, some of which are things I have the same need for but didn’t think of (or couldn’t) implementing in this way, which can be very inspiring. And when watching the blog of another Twitter friend “Nova Kwok” “Nova Kwok’s Awesome Blog”, I often find myself thinking, “How does this person know everything?”

In addition to specific knowledge and tutorials, I can also see from them the kind of person I aspire to become, having more curiosity and desire to explore, and having more expectations for the future.

Initial Understanding

In terms of choosing tutorials, I’ve mentioned before that I like to start with a Crash Course approach. Directly translated as “Learn XXX in XX Hours” might sound a bit like clickbait, but there are really many such series on YouTube. Just search for something like “Next.js Crash Course 2022” and you’ll get many interesting results.

nextjs_crash_course

When I was making a ÐApp Demo a while ago, I used Next.js for basic front-end display, so I watched this Next.js Crash Course by Traversy Media from the search results. I really like his way of explaining, in just one hour it gave me a basic understanding of this framework including the entire front-end development language. Although I couldn’t start a project on my own without systematic learning, when I later saw some syntax appearing in the front-end code of the project, I could understand what it was doing. It was also easier to make some of my own customized modifications based on someone else’s framework.

For example, this is my personal homepage “Yu - Homepage” that I modified based on a project “GitHub - craftzdog/craftzdog-homepage” open-sourced by another YouTuber I really like, devaslife, after watching the Next.js Crash Course. It’s possible to create a beautiful small project in a very short time, which is also a great motivation when starting to learn a new technology.

yu_homepage_profile

In-depth Learning

But to write some enterprise-level projects or to make a complex project from scratch on your own, relying solely on Crash Courses is far from enough. More systematic learning and practice with many projects will be needed. At this point, some more practical courses are needed, which depends on personal preference. Many Crash Course authors actually have their own boot camps or paid tutorials. If you find a blogger whose style and format you like, you can continue learning with them.

I personally prefer the Udemy platform, which is a relatively established online course website. Although the prices look ridiculous, they’re basically always on sale, always sending out discount coupons for various reasons, making me always worry that it might go bankrupt one day. On average, a course costs about $9.99-$12.99, which is less than 100 RMB, which is still very worthwhile.

For example, Brad Traversy I mentioned above has opened courses on React, Next.js, Tailwind CSS, etc. on Udemy. Because I really like his project-oriented approach and his teaching style, even though there are courses on Udemy with much higher purchases/ratings than his, I still chose his. These are some of the Web-related courses I purchased (many were purchased at promotional prices in the past two days, haven’t started watching yet).

udemy_web_course

Output Results/Project Practice

I’ve talked with my leader before about learning methods. When he learns a new language/framework, he first explores on his own to get the project running, tries to change some things himself, and then might directly use it in the project, solving problems one by one as they arise. This is a very efficient way to master something, and it might be more universally applicable in project engineering applications. But I might still be a bit more academic-oriented. I would choose to watch courses/tutorials, which might be relatively less efficient at first, but can master some best practices from the beginning, and be more stable mentally when encountering problems later.

Inner monologue: If I had my leader’s terrifying engineering ability to discover a framework the night before and restructure the project framework the next day, why would I watch any courses?

Watching courses also gives a sense of achievement in completing assignments, practicing projects, and finally completing the course, which can give oneself some motivation at various stages of learning. For example, I completed a React course in a little over a week, got the certificate, and successfully used it in an actual Side Project. It’s quite encouraging to continue.

udemy_react_cert

Of course, this method still has a threshold, which is that many of these high-quality courses are still on YouTube or some foreign platforms, basically only in English. So there’s still some need to overcome this, although they usually provide Chinese subtitles. But I personally still prefer to watch in English, after all, it also involves a lot of terminology, and machine translation is generally not very good.

In addition, because courses usually have a relatively long cycle, it’s easy to give up halfway or procrastinate until you forget the previous content. Without practice or recording, it’s easy to forget. To overcome this, I adopted two simple yet effective methods - output-oriented and result-oriented learning.

Output orientation is easy to understand. I update my personal blog, which used to have a lot of technical content, now swinging back and forth between daily blogger and tool efficiency blogger. When I’m learning a technology/knowledge, I split the screen and record key notes in Logseq. Note that this must not be directly pasting course materials, but more of typing it out in the editor and adding annotations diligently. Meanwhile, I directly screenshot and save key things like commands or code snippets. After completion, I digest the notes for a period of time.

After 1-2 weeks, I look at the notes again and organize them into an article. There are two very important points here. One is the 1-2 week period. When we just finish learning, we have a relatively deep impression, and often have an illusion of “I already know it”, but in fact, we may not have mastered it very solidly. It might just be some immediate memory. 1-2 weeks is just a good digestion period. Organizing into an article is another crucial point. We often write some scattered notes or mind maps, but actually being able to organize a knowledge point into an article, expressing it in natural language, making it flow smoothly for readers, is quite challenging.

At this point, those annotations and screenshots from earlier come in handy. When I’m writing articles, I have a habit of dialoguing with myself and repeatedly reviewing. That is, after writing a module, I often ask myself, if I were the reader, what questions would I ask here, how should I answer them. In fact, I often find some points that are not explained clearly enough. With the supplementary explanations added after repeated review, by the time of writing, it’s generally a technical blog post that is complete in writing and conforms to my own thinking logic. It’s much more effective as a reference for future review or as a reference document than looking at someone else’s materials.

Actually, a better way is to record a video explanation. Being able to explain something clearly in a video is even more challenging than writing it clearly, but I’m still overcoming some psychological barriers to recording video lectures.

One of my small goals for next year is to become a tech YouTuber/up主, maybe I’ll end up becoming a pet blogger, after all, who would watch me? Those who open the weekly review are all here to see Nini, right? I won’t post today, I’ll save it for the year-end summary to get a wave of views.

In addition to output, I have another extreme operation that I don’t recommend everyone to try lightly - result-oriented learning. It’s actually about taking on tasks that are beyond your current ability (but not too much), using results and deadlines to force yourself to quickly master, and to try harder to solve problems when encountered.

This might be related to personal mentality, confidence, and multitasking ability. I’m a person who can handle things calmly when encountered, often with several tasks in parallel but not to the point of being overwhelmed. And years of experience in stumbling have taught me a simple truth - even the most complex tasks miraculously get done in the few minutes before the deadline approaches. Maybe this is the real primary productivity.

But now as the projects get more and more complex, I should do this less. What if it fails?

Conclusion

There’s not much more to say about methods. The above is just some experience sharing about learning a new technology or knowledge. After learning, you might only be able to say you’ve just started. There’s no shortcut to cultivating engineering ability, it can only be accumulated through continuous practice.

Technology is a very interesting thing, and learning about it at different stages gives completely different feelings. Just like my leader, who is a strong player with more than 20 years of work experience, still often sends me a message in the middle of the night saying, “XXX framework/tool is quite interesting, you can play with it”.

I really like his way of saying it, “play” with it. We don’t need to struggle or argue about what it’s like to turn a hobby into a career, because we already enjoy it. Work is just a by-product that happens to be able to make a living. I hope everyone can find their heart’s desire.

I’m not any big shot, and at my current stage, it’s difficult to write very in-depth articles on specific technologies and fields (but I’m trying hard). So I wanted to share some of my various experiences. Later, I also want to output some video tutorials and text tutorials for some more detailed technologies.

Let me count how many pits I’ve dug today that need to be filled.

Related Posts

2024-08-19
Weekly Review #69 - AI Coding Experience and the Source of Learning Motivation
2024-08-18
Weekly Review #68 - On Blogging and the Colors of My Life
2024-08-05
Weekly Review #67 - Reshaping My Information Input System with Follow
2024-07-30
Weekly Review #66 - 10x Engineers, Technical Passion and Personal Toolkit
2024-07-21
Weekly Review #65 - Adventure X Experience, Apple Notes Practice, and EpubKit
pseudoyu

Author

pseudoyu

Backend & Smart Contract Developer, MSc Graduate in ECIC(Electronic Commerce and Internet Computing) @ The University of Hong Kong (HKU). Love to learn and build things. Follow me on GitHub


Comments