DEV Community

How to pick up a new technology in minimal time?

Jan Mewes on May 19, 2018

Given the constant change in the software industry, learning new technologies is one of the most important skills for a developer. More often than ...
Collapse
 
ben profile image
Ben Halpern

Understand the tools philosophy
Who created it? Why did it get started? What problems does it solve?

Amazing advice all around. This part is super not obvious for newbies. πŸ‘πŸ‘πŸ‘

Collapse
 
tmcsquared profile image
TMcSquared

There's a similar process in chess. One must look at his opponent's move and figure out why he did it and what his plan is.

Collapse
 
thejoezack profile image
Joe Zack

Great write-up! A lot of devs tend to try and dive into the deep end too quickly imho! (myself included, of course)

Collapse
 
ben profile image
Ben Halpern

I feel like it's usually easy enough to dive deep when you are absolutely certain you need to use this right now. If there is any uncertainty about how and when to use it, I think that's where the fall off occurs in the deep dive.

I think we can forget how useful a shallow dive can be. I took a deliberate, but shallow, dive into Erlang and it was lovely. I may never write a line of Erlang, but I feel like I got a lot of quick gains on a lot of interesting concepts in software just by diving in a bit.

Collapse
 
thejoezack profile image
Joe Zack

Sounds like you got a lot of exposure to Erlang, and got a fresh perspective from diving in...which is fantastic! Reminds me of when I bought a book on Ruby on Rails at a time when all I had done professionally was ColdFusion. I didn't realized how limited I was until I saw such a different way of doing things.

However, I do think it's important to cover your bases if you are interested in deeply learning a subject. I spent years writing JavaScript before I really grokked closures. I'm not sorry about that path, but I could have spared myself some mysteries if I had followed a more "Progressive Advancement" type path.

Collapse
 
k4ml profile image
Kamal Mustafa

Shallow dive, this is the approach I took most of the time for new technology. Just spent 1 or 2 hours at most, try to get to a point where you can relate it to existing concept you already know. Then I considered it as done.

Thread Thread
 
ben profile image
Ben Halpern

Yes, perfect rhythm.

Collapse
 
luqman10 profile image
Abdul Qadir Luqman • Edited

One quick and sure way to be good with a technology is to use it a lot and not just reading or watching video tutorials about it. I wasted too much time before getting that.

Collapse
 
andrewlucker profile image
Andrew Lucker

1) Start reading about something [X] that you want to understand
2) When you encounter a term [Y] that you don't understand, go to step 1 for [Y]
3) Stop when you understand [X]

The best part of this method is that it still works for reaaally poorly documented topics.

Collapse
 
theodesp profile image
Theofanis Despoudis • Edited

You need all of that + 20000 hours ( 10 years ) of practice to make yourself worthy of your time.

Collapse
 
skittishsloth profile image
Matthew Cory

I'd actually even say the stuff under the "Advanced" heading would be applicable at all stages. Maybe not dead novice - you need to know something - but even in the learning process, trying to explain it to a willing audience helps you to understand it better. (Of course, they also have to be an understanding audience that knows you're learning it too.)

Collapse
 
janux_de profile image
Jan Mewes • Edited

Another interesting idea is that of "Just in Time" learning:

youtu.be/zKyv-IGvgGE?t=34m18s

However, this is not applicable in all situations. When a little change needs to be made in a complex application it might be necessary to understand a number of concepts first.

Maybe the "progressive advancement" concept can be dropped when all developers understand how to write clean code and thus the system becomes so easy to modify that everybody with a bit of aptitude can evolve it.

Collapse
 
janux_de profile image
Jan Mewes • Edited

But maybe it can never be dropped because it is just a new name for the fundamental learning concept. E.g. nobody would expect a high school student to complete assignments on the level of a M.Sc. student and "just pick it up on the fly". It takes time to develop a mental model of the thing we are trying to learn. There are interdependencies between certain knowledge areas and it takes time to fill those gaps.