Here’s a translation of the post, which has nearly 500 likes on Hacker News.

Every few years there are articles like this, but programmers are still struggling to learn new frameworks, so I hope this gives you some inspiration.

Update:

  1. This article has translated “the pros and cons of the views”, I do not know what to refute oh.
  2. Some people say that they do not believe that there is a “framework very familiar foundation but not”, in fact, this kind of person is very much, refer to this
    • Should someone interview a 5 year old front-end who can’t understand the prototype chain and is full of Vue, React, etc implementations?

Start the translation

We are programmers, learning the latest technology every day, learning programming languages, frameworks and libraries every day. Because the more modern programming tools we know about, the better, right?

It’s fun to keep following in the footsteps of Angular, React, Vue, Riot, Ember, Knockout. (Irony)

But it’s a waste of time!

Time is man’s most precious resource. Time is finite and non-renewable. You can buy anything with money but not time.

Technology, like fashion, changes at the speed of light. To catch up with it, we need to run very fast. But there is no finish line on this track, so there is no winner.

Wolf of Wall Street

My mentor used to teach me this:

Tutor: Ed, what are you doing? Me (proudly) : I’m reading a book on how to build modern Java applications using GWT.

Tutor: Why do you read it? Me: As a Java developer, I need to keep up. GWT is all the rage right now.

Tutor: What other books did you read before you read this one? Me: I read a book about Apache Tapestry, which is 500 pages long. Apache Tapestry was the previous trend.

Tutor: Is Apache Tapestry still in fashion? Me: No, GWT is.

Tutor: Are the skills you learned from Tapestry still in use? Me: can’t use ah.

Tutor: Can Tapestry help you understand GWT better? Me: No. But both use some design patterns.

Tutor: That’s design patterns. Can design patterns help you solve your problems? Me: Yes, and it helps a lot.

Tutor: New things come and go, but they have a lot in common. You should learn what you should learn. You should spend 80% of your learning time on learning basics and 20% on learning frameworks, libraries, and tools. Me: oh… Only spend 20% of your time learning frameworks, libraries, and tools?

Tutor: Yes. Frameworks, libraries, and tools come naturally to you as you solve problems on the job. Me: Thanks for the guidance.

Tutor: You’ll thank me later.

My mentor’s advice changed my life. I threw away all the books about frames on the shelf, fifty books left, I was very happy to throw.

I bought books that were timeless and spent 80% of my study time reading them:

  • The Pragmatic Programmer
  • Clean Code
  • The Clean Code
  • Domain-driven Design and practice domain-driven Design
  • Developing Object-oriented Software, Guided by Tests
  • Continuous Delivery

I only bought a book on the latest technology, and it was about Spring. Because learning Spring is a good investment according to the Lindy effect.

The Lindy effect holds that the life expectancy of something that will not die naturally, such as a technology or an idea, is proportional to its current life; That is, every extra day that something lives means it has a longer life expectancy.

The longer a technology survives in the market, the more it is worth investing in (and learning from).

Don’t rush to learn new skills, because they are likely to die.

Time will tell. You have to wait.

I’ve worked on 50 different software projects over the past 10 years. Thanks to my mentor’s advice, everything I learned was applicable to different companies, teams, and fields. My knowledge is still useful today. I didn’t waste my time.

If you look a little deeper, you’ll see that all software projects are similar:

  • The programming language is different, but the design approach is similar.
  • The framework is different, but the design pattern is similar.
  • The developers involved are different, but how you deal with them is the same.

Remember, frameworks, libraries, and tools come and go. Time is precious.

© In Time (2011) by Andrew Niccol

Spend your prime time learning generic skills, skills that don’t go out of style.

  • Don’t study microservice frameworks, study Evolutionary Architecture.
  • Instead of learning a new programming language, learn code neatness, design patterns, and domain-driven design (DDD).
  • Instead of learning LeSS and the Scale Agile Framework (SAFe), learn Lean Manufacturing Principles.
  • Don’t study Hystrix, study Fault Tolerance Patterns.
  • Don’t learn Docker, learn to deliver continuously.
  • Don’t learn Angular, React, and Vue. Learn Web, HTTP, and REST.

Top comments:

I agree with most of what you say, but I don’t think you need to be so determined not to learn something. Learning tools and learning design patterns are not mutually exclusive.

Back in 2007, I was trying to figure out what a “data layer” was and how to use it, a popular ORM concept at the time. I asked people a bunch of questions about NHibernate. NET framework object relational mapping solution. It is used to map objects represented by the object model to SQL-based relational model data structures. But I thought, shit, no way, because I need a lot of practice to understand these principles. This is an important way for me to learn.

So I think it’s really useful to learn these tools that have a lot of principles. The same goes for many tools. React, for example, who can understand the virtual DOM without React? I basically agree with your argument, but the overemphasis on not learning tools is a bit of a meat loaf.

In addition, Docker is not just about continuous delivery, “Learning a new programming language” and “Learning Design patterns and DDD” are not mutually exclusive, and the hardest part of Angular is not the Web and HTTP. The hardest part is learning the silly tools and workflows that Angular provides (which I don’t really like).

The author’s Reply:

It seems we’re all on the same page — learning the basics often means digging deep into a framework, library, or tool. Both frameworks and foundations need to be studied, but the foundation must take precedence over the framework.

My opinion:

Suppose you have two candidates in front of you. One of them is very familiar with the framework, but knows nothing about the basics. The other was not at all familiar with the framework, but knew the basics. Who would you hire?

Small companies hire the former, if they can use it. Big companies hire the latter and they can do the job.