Knowledge versus skills
Developers around the world ask us a quite common question: How can we keep up with current, ever-changing technology? Developers spend many hours every week trying to do exactly that: learn about technologies, frameworks, APIs, languages, and tools that pop up all the time, hoping that this will amount to keeping up to date with technology.
The problems with this approach are multiple:
- There are too many things happening at the same time, and it is impossible to know which ones are the most important
- Trying to learn many things at once is confusing and you end up feeling tired and overwhelmed by the number of things that need to be done
- Forcing yourself to spend many hours a day doing something that seems never-ending is a recipe for frustration
But there is one thing that gets the crown for being the most frustrating:
- Learning many things that you will not apply right now is not only superficial but the knowledge will neither last nor will it be useful for long
When you learn a new skill, think about how you will apply that skill. Actively search for a way to incorporate your new skill into your day-to-day coding projects. Using the skills you gain right away will help you to build the muscle memory for the new skill and assimilate it into your library of knowledge.
Have you ever spent hours learning something that you are not using in a project right now, and a few months later, when you need it, you remember next to nothing, and have to refresh it? And does that refreshing feel like almost having to relearn everything? There is a reason for that feeling and it is the difference between knowledge and skills.
An effective way to think about knowledge is that it is a collection of memories that are disconnected from each other. Because they are disconnected, it takes some time for you to remember those things when you need them. And once you recover one memory, it does not help you recover other memories. This is like learning about the history of bicycles and how they were invented. Although you may love bikes, it is hard to remember the names and dates and who did what. There is a better way.
Have you ever heard the popular saying that goes like this: once you learn how to ride a bicycle, you never forget? This is because riding a bicycle is not knowledge; it’s a skill. An effective way to think about skills is that they are collections of memories that are connected to each other. Once you recover one of those memories, they all come together and are accessed in a much faster way by your brain.
That is why, once you acquire the skill, you just sit on the bicycle and go. You do not need to remember each fact about riding a bike. It just comes to you, without effort. The most important thing about skills for you to keep in mind is that although you can acquire knowledge by reading or listening, you can only develop skills by doing. There is no amount of reading, listening, watching videos, or following amazing tutorials that will ever get you to ride a bicycle. The only way is to go down to the park and try, fall, try again, and eventually, do it.
This is the same for every developer skill that you want to master. To really learn something, you must do things, instead of simply studying to acquire the knowledge.
When you write your CV or resume or prepare your LinkedIn profile, do you list in it all the books you read and YouTube videos you watched? Do you list all the knowledge you have? Or do you put more focus on the projects you worked on and the experiences you acquired?
Even when just starting, you will clearly be better off including everything you did, even if they were just personal and volunteer projects, because, at the end of the day, it is your experience and skills that really matter.
We started this chapter by talking about how developers spend a lot of time trying to keep up to date, so does the discussion around skills just make it worse? We must spend time keeping up to date, but the outcome we desire is to gain more skills. As we gain skills, we must still do our day-to-day things, so it will take more time, not less!
Sometimes, in order to do things, you need to develop a strategy for doing so. This reminds us of a developer we know named Maryna Savchenko. She is a software engineer, based in Germany, and a true believer in software craftsmanship, clean code, and TDD. She finds intellectual fulfillment in accomplishing hard tasks and is passionate about acquiring and improving skills. When we asked her to share a story with us about learning continuously and shaping her career, she shared that what really helped her in her learning journey is a book entitled A Mind for Numbers, by Barbara Oakley. By reading this book, she figured out her own “learning framework.” Understanding how she learns best helped her to avoid frustration and keep being motivated during learning complex topics. Understanding the best way to learn new skills and gain experience by doing is a crucial step as you continue your path for learning. Let’s hear some more from Mayrna.
After leaving Kharkiv National University of Radio Electronics with a bachelor’s degree in computer engineering, I did not work as a software engineer. I was told that “I do not have it.” And I strongly believed that for some time. When I was offered a job in application support at a software development company, I was glad. I worked hard. I learned accounting by myself (to understand enterprise resource planning systems better) and passed four certifications, only to realize that I was learning the wrong thing. I learned the hard way how focusing on the right thing matters! Why was it wrong? Well, that technology (1C Enterprise) was limited to a number of countries (Ukraine, Russia, Belarus, and Kazakhstan). I could not reuse my knowledge, and working for a company with headquarters in Russia was not right after Russian-Ukrainian War started in 2014. In addition to that, I was making less and less money every day because of inflation. I was paying full price for my wrong decision and for listening too much to other people. At this point in time, I did the first analysis of the Java ecosystem and thought that it may be a good way forward. In the meantime, my husband and I decided to move to Poland from Ukraine. I realized at this time that I needed to think hard about what to do and what to learn next. After one more analysis of the market and technologies, I was sure that Java was a good choice and decided to become a Java programmer. Finding a job abroad without relevant experience is not an easy task. You need to be better than local candidates and prove it. In my case, I needed to prove it to myself also. So, I needed to learn a lot of things, such as the language itself, frameworks, build tools, testing frameworks, databases, design patterns, and so on. In the beginning, I was very slow, ineffective, and overwhelmed. So, I googled how other people learn. Many said they “just learn” and that is it. After some searching, I found Barbara Oakley’s book and it was full of the advice I needed. I also discovered a rich and diverse software engineering community (including Java champions, Microsoft MVP people, experienced software engineers, techno bloggers, and tech educators). It gave me an understanding of what I was doing wrong, and I started to believe in my plan. But looking for a software developer job in Poland was not successful for me. I had only one technical interview. When I tried to send my CV to Germany, I realized how geography matters! From sending 13 CVs, I got 6 responses, 2 onsite interviews, and 1 job offer. And we were on our way to a new country. In Germany, I still needed to learn a lot to level up, as well as the German language. Having a learning framework gave me the right tools and confidence to proceed. Last year, I got promoted to mid-level and started blogging (https://savchenko.tech/). Now, I am living in Munich and on my way to improving my career.
As Mayrna’s story illustrates, sometimes you have to find your inspiration and curiosity to continuously learn. Next, we will discuss how to find focus and priorities to help us identify the skills we need to keep up to date.