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:
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 because it was the frontend framework 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.)
Currently, I am learning .NET Core because I am working as a .NET programmer for Arcanys (just-in-time learning of specific frameworks). At the same time I am reading “Object-Oriented Reengineering Patterns” because I think most code bases I will be working on in my entire career will legacy ones, and this book gives knowledge on how to work with them effectively (ahead-of-time learning of general concepts).
I hope that kind of learning philosophy is okay with you.