How to optimize your learning curve and productivity? Whether a beginner, medior, senior or the spaghetti monster itself

What are lessons you’ve learnt along the way about how to best continue to grow your competence as a software developer and be as productive as you can be?

This questions has been asked in the context of starting to learn Elixir, but I can’t recall discussions about when you aren’t a beginner anymore.

(And let me take the liberty to ask a subquestion: What are recent lessons you have learnt as an advanced developer that has been completely comfortable with the tech side for years already?)

1 Like

Not sure if one of my old blog posts might be of interest to you: Best way to learn/read/study – (via @AstonJ) though it could definitely do with being updated - people have more issues to deal with nowadays, particularly social media and the purposely addictive algorithms tech companies employ - which have literally changed our brains (and so the way we learn).

Wherever possible, let others make decisions for you - which is why I love frameworks (and langugages like Elixir and Erlang, which show you a ‘better way’) - they stop you agonising over every little detail.

4 Likes

I don’t optimize for optimum productivity :slight_smile: I optimize self-care. For example: I am very protective to get good sleep every day. If I don’t, I feel miserable and I don’t have energy left at the “sides” of my workday to do anything for my own joy. My preferences are probably not applicable universally (depends on your chronotype for example). I get most learning done in the morning. Lately I got into the habit of waking up early (which comes naturally, if you take care of a your evening routine), reading a challenging book for 45 minutes, and then head out for a 5 km run. Self-care, for me, also means learning something new, preferably every day.

Why am I telling this, and how is it connected to your question about growing as a developer? I didn’t use to have this focus on my physical and mental wellbeing. I went straight for the goal of being a “rockstar developer”, someday. My focus (and ambition) has shifted as I got older. I started to realize (and hoped) that my ability to learn and grow as a developer was really limited by this mental en physical basis.

I like to learn from the bottom up. For example: I started to get fomo after everyone started talking about AI, so I followed one of those beginner AI courses. At least now I have a basis.
A while back I bumped onto the book Designing Data-Intensive Applications which kept me going for a few weeks, to learn about databases, in a way I never knew before (I think I got the suggestion on this forum).
Right now I’m going through this fantastic book Crafting Interpreters, that teaches to build a programming language, from the bottom up. I got the urge to get into this rabbithole, after being frustrated not being able to follow all the fuss and discussions around the exciting development in the gleam language (which I got introduced to at FOSDEM last year).
I have other “big” challenges queued up (e.g. going through the classic SICP, solving the Mazes for programmers book with LiveVIew, like @angelikatyborska did here, and reading the long list of good books I have accumulated over the years).
Keep in mind that I don’t have a formal education in CS, so building a compiler is not something that was in my curriculum :slight_smile:

I go where my interests lead me. That suits me best. I only have the energy to learn when I’m well rested, and I have mental energy to spare. That takes some good habits (sleep, physical activity, decent food, maybe some meditation, etc.), and a bit of discipline. But also a lot of experimentation about what works best in your situation.

It’s not all as idyllic as I write here. Not all days are like I described above. And there are many days I feel overwhelmed, without having done anything substantial to forward my learning. But this slow but steady style of improving suits me best. I’ll never be as productive as José and Chris. But I enjoy the path forward very much.

PS: I seem to have pasted a lot of references in my reply, which might be overwhelming. That was not my intend. On the contrary. About three years ago I didn’t know anything about most of those things. The references are just meant to be an eclectic collection of things I find interesting myself. YMMV.

12 Likes

Ty @AstonJ and @linusdm for your perspectives.

I won’t comment on everything mentioned, but I’ll say a few words that build on top of the enjoyment/self-care.

First of all, I agree with the notion that enjoyment and self-care are important. Not only are they good for productivity and learning, but also for longevity and life satisfaction.

Interestingly enough my original question is in a sense an example of the XY problem. Or at least, there is a bigger context that puts productivity and learning in perspective.

Learning is about becoming good at something. Productivity about being able to deliver results. But what does that mean for different people? What are someone’s goals and how do they provide meaning to that person?

Is it to get a certain job to attain a certain life style? Or is it for the love of learning and building itself? Or is it to solve a problem in a community you care about? And so on.

And if what they say about consistency being the most important thing for growth is true, then the motivation that comes from goals/purpose/… is key.

Creating some time for yourself to reflect and (re)discover your values, ambitions and goals can be very beneficial, I think. Some distance from the keyboard.

3 Likes

These days, I found these 2 things working best for me: cut out all distractions when doing actual work and optimize to work as little as possible while achieving close to the same results.

Distractions, screen time, dependencies on social media are the biggest things that destroy individuals by making them into junkies that depend on screens for their next dose of dopamine. If you can’t control yourself, then talking about improvement in any areas is impossible, you need a clear mind and body to be able to focus and actually learn new things. While a lot of people will disagree with me, following latest tech news and technologies too close, falls into that category too.

After you managed to get your mind in order, the best skill you can learn is to achieve 80% of results by investing 20% of time. There are multiple ways to view this idea, however the specific idea I want to point is the following: If it takes me 2 hours to achieve 80% of results and quality of what takes you 6 hours, I am objectively more productive. This skill is a mix of a big assortment of other skills and discipline and the best way to train it is to set a goal and a hard time limit to implement it. This ideology follows closely the idea: “Any idiot can build a bridge that stands, but it takes an engineer to build a bridge that barely stands.”

Same here, I managed to reach that point of “one man army” from a very early point of my career, at the cost of my mental/physical health and all of my social life. Happily enough I destroyed my life so hard, so fast, that I had no choice but to rethink priorities and leave that kind of lifestyle behind, hopefully forever.

As for always learning new things I think this is the biggest BS that came from tech corporations. The most important skill for a software developer is to understand how to solve problems and how to be easy to work with, keeping in loop with latest technologies by investing hours per day is the fastest path to destroy your mental health and if your interest is not genuine that information will be mostly useless for you, there is so much your brain can handle.

6 Likes