coen.bakker

coen.bakker

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?)

Most Liked

linusdm

linusdm

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
Post #3
D4no0

D4no0

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.

AstonJ

AstonJ

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.

Where Next?

Popular in Discussions Top

JakeBecker
TL;DR: I’ve just released an implementation of Microsoft’s IDE-independent Language Server Protocol for Elixir. It adds language support ...
1144 54921 245
New
AstonJ
I’ve just started the Phoenix part of the utterly brilliant online course by @pragdave. On generating the Phoenix app he uses the --no-ec...
New
chulkilee
Here are the list of HTTP client libraries/wrappers, and some thoughts on HTTP client in general. I’d like to hear from others how they w...
New
gausby
I asked this very same question on twitter and got some interesting feedback, but I thought it would be a good question to ask here as we...
1207 40042 209
New
eteeselink
Hi all, In the last days, two things happened: A blog post titled “They might never tell you it’s broken” made the rounds. It’s about ...
New
RudManusachi
What configs will make sense to put to runtime.exs? – A bit of how I configure apps: I have generic configs in config/config.exs, dev...
New
AstonJ
Can you believe the first professionally published Elixir book was published just 8 years ago? Since then I think we’ve seen more books f...
New

Other popular topics Top

rms.mrcs
Hi, I need to transform a list of numbers into a map where the keys are the indexes and the values are the original values of the list. ...
New
grych
Hi folks, Few months ago I have announced the proof-of-concept of the library to manipulate the browsers DOM objects directly from Elixi...
639 54006 488
New
vonH
When I run the Plug and I recompile I wind up having to use Ctrl C to quit iex and start again. Witht the help of rlwrap I can use the cu...
New
vonH
In asking this question I am more interested about the expressiveness of the language itself and less concerned about the availability of...
New
gshaw
What is the idiomatic way of matching for not nil in Elixir? E.g., First way: defp halt_if_not_signed_in(conn, signed_in_account) when...
New
sen
Hi All, I set a environment variables in dev.exs , like below code. when i start server, how can i set the ${enable} value? thanks. d...
New

We're in Beta

About us Mission Statement