On Learning in Software Development

Written by KondovAlexander | Published 2018/06/02
Tech Story Tags: programming | learning | javascript | burnout | software-development

TLDRvia the TL;DR App

When I first started programming a few years ago, I was amazed by how passionate developers seemed about their work. There were long fiery discussions about the benefits of one technology over the other and the possible applications of a freshly announced tool.

Members of the community would help one another. People would openly share their knowledge so everyone could grow. I sincerely doubt that any other industry is that open to sharing experience even between companies.

Discussing this with my team leader back in the day, he told me something that would forever shape the way I look at the industry we work in.

Software development is more of a lifestyle than a regular job.

Software engineering is more than a job. It’s a never ending journey. A journey about solutions and improvement. But most of all it’s a journey of constant learning.

I guess most of us got into programming, because we wanted to build challenging products, play with the latest technologies and have fun doing it. In order to remain on the bleeding edge of the industry, however, we spend a lot of time learning and practicing new concepts.

Acquiring New Knowledge

The thing that fascinated me most in software development is the depth of its knowledge pool. As a person who enjoys learning, I fell in love with this craft because every day could bring something new to me.

There was always something to scratch the itch. I had the opportunity to tackle different problems and solve complex puzzles on a daily basis.

Anything else I’ve ever taken up has got me bored at one point or another, but programming never ceases to provide a more difficult challenge. Thus keeping your interest and forcing you to do your best.

Learning, however, is not just an opportunity but a need as well. The industry that we work in is incredibly dynamic and in order to stay relevant and competitive, acquiring new skills and improving our mindset should be one of our biggest professional priorities.

I work as a JavaScript developer and saying that the ecosystem has a high churn rate would be an understatement.

But nowadays there is so much to learn. So many new tools and technologies are being released that keeping up becomes a second full time job. We tend to flock to new and appealing ideas, quickly proclaiming older techniques as obsolete.

The Trap of Learning

Learning is addictive. It triggers your feelings of accomplishment and makes you feel smarter. The dopamine rush you get when you finally reach the Aha! moment in a complicated topic can’t be bested by many other feelings.

Knowing this, it’s easy to fall into the trap of constant learning. Not that it is bad, but it is counter productive when we are doing it just for the sake of it.

Following the Pareto principle, we realise that 80% of the time we only use 20% of our skillset. So I have the rather unconventional thinking that instead of learning a bunch of new things that we would never put in use, we should focus on improving ourselves in the 20% that we actually use on a daily basis.

Escaping the Trap

The most important thing to realise when it comes to learning is that we will never have the ability to learn everything nor do we need to.

If you are excited about something new and you have the desire to sink some time exploring it then perfect. But doing it for the sake of employability and keeping on the bleeding edge is not the best way to spend your time.

It’s important to understand that changing technologies is more of a business decision rather than a purely technical one. A company won’t switch it’s tech stack to the new hot thing unless there is a solid reason for that.

So don’t worry if you’re not on the bleeding edge of technology you will not fall behind that easily.

Try to avoid articles that go into the extremes and claim that a certain tool is dead a week after a possible competitor has been released. Your tech stack will not become obsolete overnight.

Practice and Repeat

The act of learning something new is great to make us feel that we’re making improvement. But you won’t necessarily need all the knowledge you can find.

Falling into the trap of learning usually leads to us acquiring a lot of theoretical knowledge out of our scope that we would never put in practical use.

The solution for me was to be very selective about what I study and not beat myself if I haven’t learned anything new during the day.

Learning alone would not give us the intuition of when to use particular tools or paradigms. The only way to gain real experience is through practice and repetition.

The Fundamentals

Practicing fundamental Computer Science concepts is a perfect way to keep your mind sharp. There are really challenging problems to ponder and no matter how much time you’ve spent on a topic there is always something to learn.

If you are into reading, there is an abundance of interesting papers. If you have the need to crunch some code, you can always find a challenging algorithm to write. Putting constraints like time and space complexity raises the bar even further.

My decision to go on a journey of learning more about functional programming was incredibly rewarding. Exploring currying, composition and functors expanded my mindset a lot more than learning new libraries.

Teaching

Passing your knowledge to someone else is a proven way to see how much we still have to learn on a particular topic.

In my opinion, teaching is an excellent way to think of problems in a different way. When you learn something you understand by putting it through your own prism. You create a subconscious explanation of it for yourself and build up the intuition for solving the problem at hand.

When we are learning we build analogies to make hard topics easier to understand. When we are teaching, however we need to put ourselves in the audience’s shoes and make good enough explanations and examples.

The goal is to have them understand the topic without relying on the fact that they have the same thought process as us.

You don’t have to teach a course in person to reap the benefits of this. Even writing a short blogpost will help you expand what you know about a particular problem.

TL;DR

  • Learning new things is one of the biggest motivators behind programmers.
  • Acquiring skills and knowledge is an essential part of our careers. In order to spend our time properly we need to be careful about what we invest time in.
  • You will never learn everything nor do you need to.
  • When in doubt focus on improving your fundamentals.
  • Passing knowledge through teaching is an excellent way to solidify what we already know.

Newsletter

I run a small newsletter in which I share thoughts, musings and wisdom about software development. No tutorials or ads. Just things that I’ve found worthy of pondering sent to you every few weeks. If this sounds appealing to you you can subscribe HERE.

Clap and Share

If you liked what you read hold the clap button for a bit so this article can reach more people. Share this with a friend or colleague who might find it helpful. Any feedback is welcome!


Published by HackerNoon on 2018/06/02