Software developers' learning dilemma
The world of tech is moving fast, maybe too fast! Trying to keep up with everything is stressful, to say the least, might even call it impossible to be realistic. There are a countless number of frameworks and libraries being update each day and new ones being released as well. Yes, maybe is more of a JavaScript problem, but the same problem more or less applied to other programming languages as well. So how can we find time to enhance our existing skills to be a better developer, while the backlog of learning constantly growing? We are being bombarded with information each day, sooner or later we'd miss demotivated and lose the urge to learn. I've gone through all those stages and feel I have a pretty good balance on how to learn daily but not risk burn out.
I feel that I go through these phases at least every few months. It is probably quite obvious now I blog, from Sep to Nov 2019 has been a tough time for me. This is accurately reflected by the number of blog posts released in this period. At the end of Nov I finally managed to pull myself back out of this slump state, unfortunately, I know it is just a matter of time before it happens again. I'm sure this is not just a problem for me, so I want to talk about it in this blog post.
The dilemma
When I was still at University I didn't do much learning through blogs, etc. I found that lecture notes, recommended reading and course works were enough to keep me busy. There was one lecturer who recommended 10 books and what seemed like an infinite list of papers to read for her module. I am going to be honest and say that I read none of it. If you are wondering how I did in the exam, let's just say I deserved the exam marks 😂. Now looking back I think it was the amount of reading that scared me away, I kept pushing it back and then before I knew it exam day came.
Now I am no longer told I have to do this kind of reading, but I feel like the same problem persists in a developer's everyday work life. Let's face it, there is a lot to do and think about. The more curious and responsible you are as a developer, the more the mountain of things to do and learn grows. I am interested in many roles in a product team, I love to learn about UX (including UI), I want to know the business requirements from a product point of view and not just something to code against, I also want to make sure I'm playing a useful role in my team (help to add tickets to backlogs, etc). That is a lot of stuff to do if you break it down and slot it into everyday work time. Then there are meetings and doing the work I'm paid to do (duh!). So when is the time to learn about sveltejs
or other frameworks and libraries? I'm ashamed to say that I even write down learning other languages as part of my learning goals.
Assume you somehow find the time to learn things at work, or you find the motivation to sit down and do self-study after work. The next question that comes to mind is "what should I learn"? Only to find all sorts of negative emotions flooding my brain. How can you identify if something is useful or a waste of time, when there are tens of thousands of pieces of information are thrown your way? "Deep dive in computer algorithms", "Machine Learning: an introduction", "AI: from zero to hero"... There is no way for you to consume faster than content being produced. There are YouTube videos, blog posts, podcasts, books, new libraries, new frameworks, new languages, tweets, Linkedin posts and what feels like a million other things to digest each day. They all have click-baity title, they all seem relevant and important to know. Just saving it to read later isn't helpful either, it just kicks starts a vicious cycle. The more we bookmark and save, the more negative we feel. The thought of "oh my god when will I ever find enough time to consume all these" becomes an anchor weighing us down more and more.
Just explaining this stuff makes me want to smash my computer, quit my job and go live in the woods somewhere. This information overload is not healthy. It brings anxiety and stress with it, which is why every-so-often I enter the slump. I should think of a cool phrase for this feeling and call it something like "Drowning in information, gasping for air".
The balance
It doesn't take a genius to see that we need a balance, better way of consuming knowledge coming our way. At least this is what we need to do before a magical AI comes along and feed us the right information to learn at a steady rate. My most recent slump just shows that I haven't figured everything out yet, but here are some of my thoughts: On one hand we have super chilled people, they never seem stressed about anything. They would deliver work at a slow pace, causing inconveniences for both their team and maybe other teams. They regularly take days off to recharge, and probably will never burn-out. I like their attitude to life, no doubt they will be very happy. But different people look for different things in life, I want to be reliable and bring value. On the other hand, some people spend at least one day of their weekend maybe longer coding and learning. People build cool libraries, maintain multiple open source projects, and then have side hustles that bring in some extra cash. I would look at them and think to myself "I could I could be this motivated", but I know realistically I won't be able to do what they do. So how should I find my balance? I started listening to podcasts and read self-help books. It is ironic, to answer the question "how should I learn things" I must first learn about it. Here are some useful materials: Getting Things Done by David Allen - Taught me to organise my life using todo lists. One of the key messages is that by writing things down and keeping it somewhere we know we will review regularly, it will reduce anxiety. Essentialism by Greg Mckeown - It talks about concentrating on things that are most essential in your life, only this way will there be peace and balance in your life (pretty deep stuff). Pareto principle (the 80:20 rule) - The Pareto principle states that roughly 80% of the effects come from 20% of the causes. These means don't be a perfectionist, one way consuming more stuff is to spend 20% of the time skim through an article getting 80% understanding of the content than to read it word for word.
Final words
These three points are by far some of my most important learnings in the past few years. I hope people find them useful. As mentioned already, even after adopting the above advice I'm still struggling to find the right balance. Maybe that is okay, life is short we should enjoy things other than improving our coding skills. Even for those wanting to speed up their career, sometimes losing yourself for a while helps to find the "real" direction.