Skip to content
markdown guide

I always try to learn new tools in a self-directed way. Learning something while in a on-the-job project can be exhausting, frustrating, despairing, rushing.

Learning new tools in time that is not for our main job releases the burden of a deadline and is more enjoyable as I can try and break as much as I can with no consequences.

I do this for programming languages, frameworks, libraries, even SaaS tools


I think I can learn in both ways, but with job-related tasks, I can add to myself a deadline and I'm more productive when I'm under pressure. I'm lucky to have worked in environments where people encourage you to try new things. I have been working with technologies I didn't know before, it's quite challenging but at the end it's satisfactory.


I feel pretty similar. The pressure of the job situation definitely helps hasten/ensure my learning.

Learning off the job and going deep on something out of interest can have a different type of satisfaction though.


I'd say I follow the 80/20 rule - 80% on-the-job or immediate needs guide what I learn, and 20% is self-guided. Even when I have free time, I try to fill out the gaps of my knowledge of the skills/tools that I need for work/immediate needs. With my interest-based hobbies, I kind of just go with the flow and let myself learn by making mistakes and being casual about. (I was not always this way, its definitely become the norm as I passed into my late 30s-40s, my 20-something y.o. self was the opposite.)

To some degree I think I have taught (or brainwashed) myself to see the things I am learning for on-the-job tasks as also my interests/hobby.

My learning path looks sort of like this->

credit: Samuel Liles


It depends... as always when I'm in a job I enjoy I tend to learn a lot about the current tech stack I'm using but if the job is not that great or very frustrating I tend to look for other tools, stacks, languages what I think it could give me my next "big thing"


I believe the job dictates a lot of what you learn from time to time and also can give you a direction, especially at early stages of your career. That's why I believe mentorship from senior members is essential.

Most of my career I had seniors that gave me directions (in different ways and manners), but most of my learning was made in spare time with community members and tech study groups.


Just self-direction, trying to be better one line of code at a time. Spare time now more than ever because of the covid19, on the job is difficult because they see learning as a waste of time, because we never have time even for planning.


For me it has always been in my spare time. In 3 companies, I had no choice for the web app we produce.

In my current company, I only had the choice for some satellites web apps, that are by definition not needed to run the company, but great to have to improve the productivity. Not to mention this is where I had the most fun and learned the most as I could apply what I learned in my spare time!


What my company wants:

The Microsoft band wagon is a long one. The whole company uses C# with .Net for the backend and Angular for the front end. Databases uses SQL with SQL Server management studio(microsoft), Visual Studio Enterprise(Microsoft, but it is actually really good), Azure DevOps(Microsoft), the list goes on...

What I want:
I ❤️ Javascript and believe that if your front end code base is primarily Javascript and you are trying to avoid a gigantic code base, then it only makes sense to write your backend in JS (Nodes JS and Express JS). However, most of the applications I deal with at work are enterprise applications(not to say that Node and Express can't handle this workload, I know there are plenty of successful companies who use variations of the MERN stack) and are heavily coupled with existing systems that are written in C# and .NET

However, it pisses me off when I have to prototype a new product or app quickly, I have to use their stack (C#, Angular, .Net, SQL). Do you know how long it takes? ....A day up to a week depending on the complexity.

I understand where they are coming from, most of their developers are fluent with .NET and Angular, and they want to eliminate any barrier that might interfere with productivity, such as a new framework or language. But do you know how much time we could save if you let me write it with a simple express backend and React for the front end? (managers: ...ignore...)

Over the past couple years, I have taken my frustration out my learning as many JS libraries and tools as possible and building as many apps as possible. When I am done with them, I list them in my resume.

During an interview:
interviewer: What did you use?
interviewer: How about this one?


When I first started working, it’s mostly on-the-job. But later on, through curiosity, I tend to read articles or go through courses in my free time.

I’d say it’s a mixture of both nowadays, mostly through curiosity.


I am in the fortunate position to only work 3 days a week (freelancing). The other 2 days I dedicate to learning new tools/technologies and skills. I only have done this for two months, but I feel the best I have in a while.
I was always discouraged by seeing other people spending so much time on learning new things or on their side projects. But now I know that it was just not possible for me with a full time job.


Usually I try to predict and setup my side projects tech stacks a little ahead. In that way I can start study new tech, can play with them a little before start using it at work. Then the experience at work will boost my side projects, so it can move little faster again.

That feedback loop does a good job for me so far.


Definitely self directed. But to be clear if I needed to learn something on the job I'd definitely consider spending some amount of time outside of work on it. You have enough to learn about the specific task, implementation etc.., that you don't really want to have the overhead of understanding the basic mechanisms of the technology as you are doing it. You aren't going to master anything without spending significant time, and if it doesn't interest you, you aren't going to do that in your own time. But at least you want to understand the basics so that you can communicate effectively.


At this point in time, it's both! A few years ago, I was learning very little on the job (if anything) so I decided to take classes outside of work and eventually went back to get my Master's while working full time.

As a result of getting my Master's, I'm now in a role that is very different from anything I've done up to this point so I've done a mix of on-the-job learning (which I do both on and off of job time) and learning on my spare time about things that I'm really interested in. It's refreshing (and humbling) to be in a role where I'm starting from scratch and learning as I go, though it can be tiring at times. 😅


When I was starting as a dev, at work I learned super fast and at home I consolidated the lack of knowledge (patterns, language, tools, best practices, etc.).

Now I try to expand the scope of the task to introduce or apply new cool stuff I'm interested into (but it can be frustrating if we cross it with deadlines...). Side projects or Open Source at home is what makes me happy now.


Self-directed all the way. Here's what companies do often, the folks in the trenches carry on the legacy things. They are experts many times over. When new stuff is needed companies reach for outsider consultants. Many of which don't have the depth they are looking for in that new thing! I've witnessed multi-million dollar consultant deals whereby the consultants themselves weren't on to the latest greatest, they were just legacy people in their own/other area.

The truly new stuff takes a lot of time to really get it, without self direction nobody is going to lead our careers. The only issue here is that you need to find a job in that new area (as a greenhorn) to get the proper pressure needed to become a SME.


I find myself to be relatively self-motivated for things that I am interested in.

However, I'm also unaware of a lot of cool technologies out there that I would want to learn if I only knew about them. The industry moves rapidly and there's only so much that I can detect on my radar. Because of this, I noticed myself getting motivated a lot by talking to my coworkers and just seeing what they're up to. I'm blessed to be working with a group of engineers that have a wide range of skills and knowledge that I don't have.


It's really a combination of the two. As I'm the lead developer, I dictate what we'll use to solve a problem. So this could be a new technique or even a new language. It really all depends on what the problem is and what the best way to solve that issue is. I can push my own agenda a little though. With a recent issue, we needed to speed up a script by a lot and there are several ways to do this. I chose to use Golang. Because it solves the problem and because I wanted to learn it.

In my own projects I usually go with something I already know, because I want there to be as little friction as possible. I do my best not to give myself the opportunity to say: "This is too difficult, I quit". That's much easier to do for your own projects. I do however use all of my skills and build it "properly" from the start.


Both to be honest.
For us we use yii2 php framework for with over the years we have created a boilerplate and widgets and packages for most common features clients ask. So if their project does not need a specific real-time data viewing or specific technology we recommend to use that.

However for some projects where we dont have that for instance mobile app, real time data viewing etc we get to research and use what we want and then use the project as a help to learn that technology. For instance new mobile app for a client then if it's a small one lets use flutter.

For personal it depends really I have a few personal projects which I know I want to do with x or y technology / framework as the idea is planned. But other less mature ideas I usually do a small poc in various technology to see the differenc. (2-3h max)


I always try to learn in my spare time but it doesn't work as fast as learning on the job.

At the beginning of this year, I was put on a rails project, It was my first time touching rails code + postgres, I had only played a bit with ruby.
But because of the pressure and having no other options I learned quicker and I was able to complete my tasks.
I am still learning alot about ruby and I always get amazed by how it does things.
Learning on the job allows you to learn way faster than on your own.


I use spare time to learn whatever I’m interested in and to document it on my YouTube channel. My day job I work on infrastructure and I’m currently using my spare time to learn about serverless.


I use whatever tools I can that feel helpful to me. Last year I took up IntelliJ over Eclipse and then VSCode over Notepad++ both changes are a big win. I wrote more in depth notes previously.

These wound up coming along with Markdown adoption discussed here:

With the work from home stuff currently, I've been bound to a remote/virtual dev environment without install privledges. This has led me to use Eclipse (which I've come to loathe) while VSCode is available.

I try to do learning as I'm doing work tasks. If I have down time, then I'll work on learning something unrelated. When I learned Markdown it was so that I could consolidate my work notes with multiple languages inline. I've picked up Groovy to work on Jenkins pipelines at work. I actually track my things to learn in my bullet journal so that I might weigh the different things as I go. I wrote about that as well.


For us, it is all about the project. If we are editing an existing system, obviously the choice is already made for us. We LOVE the projects we start from scratch and have full decision making around technologies.


Being a primarily react shop, we are pretty tied to that framework and don't really deviate much. I usually take new tools or frameworks as an excuse to build something out and learn new things but in most cases this happens outside of work hours.


I've worked in mostly agencies the last 4 years so a lot less red tape, but also a lot less process overall. So you can pick whatever you want, but the responsibility/risk is all on you if it doesnt work, works less efficient...etc. So it teaches you the value of sustainability vs shiny object syndrome at times, and others its cool, I was using React Hooks in code soon as I got the hang of it. Just started writing them anywhere I could in new code especially. But had something went wrong with that? It would've been all on me.


I hear about the new technologies and its uses / benefits on my own.
But I usually find myself not wanting to dive in deep with the new things after working all day.

Over time though, Ive been able to slowly suggest the new tools on-the-job as possible solutions. I find that many people see these different solutions intriguing and they often are just as excited to try out new things.


Personally, it's largely self-direction. I feel like always learning what I need to do for my job burns me out. I'm at a level where I'm quite comfortable with what my job is asking me for, but I don't have very large breadth of knowledge outside of 1. webdev or 2. infra engineering.


I am working as one-man-team, so I am free to choose what technologies to use. No one cares what I have to do and what way I choose to get things done. :)


I pretty followed this path until I stared to team up with collegues as projects in company got bigger. I feel more productive as different point of views help me open my eyes on facets of problems I would not think of, or ways to solve something in a way I did not know it was possible. It is a great experiences, since then I am convinced the more brains, the better quality the product will be.


Mostly from Job/Freelancing Projects. I feel it bit hard to motivate and go deep into something by my own. But when a project needs, I need to cross my limit and then when I can learn a lot.


I consider myself lucky to have a near-perfect split down the middle: 50% job-dictated, 50% interest-driven.

Classic DEV Post from Nov 13 '17

The 5 Problem-Solving Skills of Great Software Developers

To be effective, software engineers must hone their problem-solving skills and master a complex craft that requires years of study and practice.

Ben Halpern profile image
A Canadian software developer who thinks he’s funny. He/Him.