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

AstonJ
Please see the new poll here: Which code editor or IDE do you use? (Poll) (2022 Edition) It’s been a while since we first asked this, I...
208 31695 143
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
PragTob
Hey everyone, this has been brewing in my head some time and it came up again while reading Adopting Elixir. GenServers, supervisors et...
New
lorenzo
Hey everone! I created a prototype for my app using Nodejs for the api. But the framework I chose wasnt great (in general theresnt any g...
New
nburkley
AWS re:Invent is on at the moment with some interesting announcements. One new feature in particular is the Lambda Runtime API for AWS La...
New
tomekowal
Hey guys! I want to create a toy project that shows a chart of temperature over time and updates every 5 seconds. I feel LiveView is per...
New
marciol
Please, let me know if this kind of discussion already took place in another topic . Hi all, how do you consider if is better to build ...
New

Other popular topics Top

electic
Hi, I am new to Elixir. I am trying to use the DateTime component to insert a date into MySQL however the there seems to be no way to fo...
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
New
jononomo
For some reason my phoenix channels are working for me in my local dev environment, but as soon as I deploy via Docker, I get a 403 error...
New
openscript
Hello! Sorry for this astonishing simple question, but I’m really stuck. I try to set up the intellij-elixir plugin, but I don’t know ho...
New
ashish173
I am using Ecto timestamps with postgres, I can see the timestamps() use the :naive_dateime but for my use case I wanted to store the ti...
New

We're in Beta

About us Mission Statement