Learning Through Pain

Posted on March 31, 2018
Tags: code, life

Just roughly three months between the posts, it’s close to getting nearly daily now.

During last year a bunch of thoughts about learning and more importantly, learning efficiently and with purpose kept reappearing in my head and now I am ready to turn them into a set of principles that, in my opinion, let one quickly choose the direction and progress in it. I call this set of ideas Learning Through Pain (LTP).

From the start, I would like to say that LTP is not:

Overall, I view LTP as a set of guiding principles, following which leads to quicker and more productive learning process. Anyway, let’s get to the nitty-gritty.

Embrace challenges

Let me entertain you with a little bit of backstory. I am not very good at frontend stuff (javascript, CSS, javascript frameworks). I wouldn’t say that I am terrible at doing frontend work, but faced with a difficult problem in this area I would need to spend considerable time solving it. Guess what my first major contribution to Cube (the main product that we develop at Duco) was? I rewrote the whole frontend code for filtering items. Why did I choose this ticket over the other ones which would be easier to finish and closer to backend? Because no one took it and it was hard. Sometimes a hard task is just what you need to get better.

Going back to every challenge I overcame in my life, I find that my skills grew greatly in the process, some of the challenges (writing a whole backend API from scratch, working at a startup after a big company) even changed my whole approach to problem-solving. The takeaway for me was that in order to maximize learning one needs to not shy away from challenges and instead actively confront them.

Choose the right level of challenge for you

Judging by the previous paragraph, one might think that the key to successful learning is just banging your head on hard problems. While this idea has a grain of truth, it is an oversimplification. As I mentioned in my lengthy introduction, my frontend skills weren’t hopeless and the problem I faced wasn’t overwhelmingly hard, it was just the kind of a problem that pushes one to make the extra step outside of their comfort zone and that’s why I decided to work on that feature.

One could spend years working on some insanely challenging problems (NP=P comes to mind) to no avail, but that wouldn’t be productive for anyone except a handful of complexity theory scientists. The rule of thumb for me is that the challenge should be doable by a person with a little bit more experience than I have. For example, if one needs a PhD and a couple years of research experience to tackle a problem, I wouldn’t try to solve it. On the other hand, if developer one level above me solves such problems daily then I should try too.

Choose the right kind of challenge

OK, you found a problem that is hard but not too hard, you’re all set, right? Here comes the hardest part: there is a nearly infinite number of suitable problems to solve. This is when prioritisation comes into the picture. I think it’s impossible to overstate how important it is to choose the right kind of challenges for continued progress. Moreover, choices made early on influence your subsequent opportunities and the choice of challenge bears even more weight.

Personally, I try to picture my next steps, be it my next project in the company, next job, even my dream project/company and choose to work on whatever problem contributes to my success in the future the most. In the example above, I chose a frontend ticket because I worked as a Full Stack Engineer and wanted to improve in the area needed for my work in which I wasn’t at my strongest.

Finally, I would like to stress that LTP is just guidance that I try to follow to maximize learning and improvement in my life but no doubt there are moments when LTP falls short and produces bad results. For example, if your life outside work is not all rainbows and unicorns at the moment, additional challenge may not be something you want to pursue. As LTP is not a strict system of rules, I think it may be adapted to one’s preferences, ambitions and environment.

Hopefully, this post was useful, I’m going back to the void of real life. See ya.