My learning philosophy today on software development

When I started coding, my focus on learning was trying to master the specifics of a programming language.

Then a few years later, my focus moved into trying to master specific frameworks and libraries.

But then I heard Uncle Bob Martin saying that software development has not changed in the last 40 years. And I heard Mattias Petter Johansson’s advise for programmers:

“… learn the stuff that doesn’t change around a lot. Learn the fundamentals that we figured out in the 70s and that have been true since. Learn programming in general. Don’t be a better Angular programmer, or even a better JavaScript programmer — just be a better programmer, period.”

So today, my focus moved into learning the basic principles of software design and methodologies, because these are the things that do not change a lot, and these things will help me make software that is highly maintainable, which many master programmers say is the primary value of software for customers (and for the programmers also).

Today, my learning philosophy is like this:

Just-in-time learning about specific languages and frameworks and libraries

Ahead-of-time learning about basic principles and practices in software development, and about programming in general

For example, there was a time when I was trying to learn AngularJS (version 1) because it was the frontend technology that is being used in my new job (just-in-time learning of specific frameworks). Then on the side, I was consuming “Refactoring: Improving the Design of Existing Code” of Martin Fowler (ahead-of-time learning of general concepts.)

I hope that kind of learning philosophy is okay with you. :blush: