Don't get lost in never ending learning curve
Yesterday I spent a few hours learning basics of Kubernetes and then another couple of hours upgrading this blog from GatsbyJS v1 to v2. The fact of mentioning these two technologies in one sentence illustrates the state of web in 2019. The dream of Lego for web, where everyone can grab a container with any feature from authentication to ecommerce and easily connect to their projects, comes true with its own side effects: additional layers of complexity and dependency on many third party providers.
As a result, we can see more and more specializing in the industry. There is a MySQL expert and there is a Webpack expert, and they barely have anything in common. In my opinion, specialization is the best strategy for junior and mid-level developers.
If you are Senior Developer or Tech Lead, or Software Architect, then you probably recall that your career path had multiple rounds of specializing on different technologies and tools within one domain. My own path started from
basic HTML & CSS back in 2004. Then I installed LAMP and learned a couple of foreach
tricks in PHP to avoid copy-pasting. 15 years later I find myself digging into Kubernetes stuff and it’s not the final destination for sure.
The truth is that it is very easy to get stuck in another loop of never ending learning curve. Even worse, it’s easy to become demotivated and depressed when after so many years spent in the industry you feel that you left behind.
I want to share a couple of things that help me to stay inspired and motivated to keep climbing the curve:
1. Focus on General knowledge
Instead of installing every hot new library and diving into implementation details I try to spend more time learning generic things such as Maths, Computer Science, fiction, etc. They help to focus on understanding concepts over gathering facts. It’s fine to learn more narrow topics such as frameworks or libraries if you can abstract from immediate implementation and let your mind think why things built the way they built and which concepts underlie them.
2. Automated Testing
Often I feel uncomfortable working with new technologies and stacks because I don’t trust them yet. They are strangers in the room and I don’t even recall their names, so how can I begin to trust them? The answer is damn simple: start writing tests from day 1!
After working for a while on a large project where I couldn’t keep in mind all implementation details and review all committed code, I realized how calm and relaxed I am when new code is being merged. Thanks to the great team, and, first of all, to good tests coverage, you don’t need to worry that all the fancy dependencies will go crazy and shoot you in the foot.
Unfortunately, there are not that many good learning resources about automated testing so I decided to write my own blog post series about it. You are very welcome to follow me on Medium to check them out.
P.S.
Obviously, it’s essential to maintain a healthy work/life balance and have coding-free retreats on a regular basis. When I’m stuck with something at work, in many cases I’m just tired. The silliest thing to do in such situation is to continue working or, even worse, to attempt to learn something new.
Not so long ago, I started experimenting with my work day to reduce amount of time spent in front of computer. This is probably a topic for another post, hopefully before GatsbyJS v3 release 😊
Thank you for reading and have an awesome ride in never ending learning curve!