It takes about 4 minutes to read this article.


Translated by Fang Yinghang

Source: https://zhuanlan.zhihu.com/p/52814937

A similar article was posted earlier and this one is more comprehensive.

We’re all programmers, and we need to keep up with technology. Every day we learn about programming languages, frameworks, and libraries.

The more we learn about modern development tools, such as Angular, React, Riot, Vue, Ember, Knockout, the better. It’s fun to keep up with these new technologies.

But… We’re wasting time!

Time is the most precious resource we have. Time is finite, it is not renewable, neither you nor I can buy more time.

Why is that? Technology, like fashion, changes at the speed of light. To catch up, we need to learn fast. There are no winners in this game because it never ends.

Martin Scorsese’s 2013 film the Wolf of Wall Street

My tutor once taught me the following lesson:

Instructor: “Ed, what are you doing?”

Me (proudly) : “I’m reading a book about building modern Java applications using GWT.”


Tutor: “Why are you reading this book?”

Me: “As a Java developer, I need to keep up with trends, and GWT is hot right now.”


Tutor: “What technical books were you reading before GWT? “

Me: “It was a 500-plus page book on Apache Tapestry, which was very popular at the time.”


Tutor: “Is this Tapersty always popular? “

Me: “Not long. GWT is hot right now. “


Instructor: “Can you re-use Tapersty’s powers to solve this problem?” “

Me: “No. It’s useless now. “


Tutor: “Does Taperstry help you understand GWT better? “

Me: “No, not much use. But I see some design patterns that are similar.”


Tutor: “Design patterns. Does that help you with your current problem? “

Me: “Yes, too much help. “


Tutor: “Technology is advancing all the time. But there are some things that are common. Get focused, spend 80% of your time on improving the basics, and the remaining 20% on learning frameworks, libraries, and tools.”

I: “Hmmm… Only spend 20% of your time learning frameworks, libraries, and tools? “


Tutor: “Yes. You learn frameworks, libraries and tools as you solve problems.”

Me: “Thanks for pointing.”


Tutor: Don’t thank me now. you will understand in time.

This conversation literally changed my life! I put all the frame, library books from the shelf all removed, a did not stay, that call a relaxed ah!

I’ve replaced my shelves with long-term, basic technical books that don’t go out of style. Books like this account for 80 percent of my reading time:

  • 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 future life expectancy of a technology is proportional to its current “age,” and for each additional period of time the technology lives, so does the rest of its life cycle.

The longer a technology lasts in the market, the safer and more worthwhile it is to invest time in learning it.

Don’t be too busy trying to learn the latest technology because it will probably die soon.

Time will tell you which skills are worth the effort to learn, time is your best advisor, and learning to wait is important.

Ten years have passed since that conversation with my mentor. I’ve been involved in over 50 different software projects on and off. Thanks to my mentor’s advice, everything I learned was easily transferable across companies, teams, and domains. What I learned is still useful today. I didn’t waste my time.

A still from the film “The Time Plan Bureau.

All the projects look different. But scratch beneath the surface and it’s not hard to see the similarities. For example:

  • Different programming languages, but similar design styles

  • The framework is different, but the design pattern is similar

  • Developers are different, but the principles of dealing with people are the same

Always remember that frameworks, libraries, and tools are constantly being replaced, and your time is precious.

Be sure to invest your most valuable time in transferable skills. In other words, putting the most effort into skills that you will always use, like the ones below, will probably pay off in the long run.

  • 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.



, END,

The growth path of programmers

Though the road is long, the journey is sure to come

This article was originally posted on the wechat public account of the same name “The Growth of programmers”, reply to “1024” you know, give a thumbs up.

Reply [520] to receive the best learning method for programmers

Reply to [256] for Java programmer growth plans


Highlights from the past

Remember: never use UTF-8 in MySQL

IDEA debugging graphic tutorial, let the bug nowhere to hide!

SSM realizes alipay payment function (illustrated + complete code)

Java lock principle, lock optimization, CAS, AQS details!

Talk about limiting the growth path of architects

Why should programmers have a Mac PC

Explore a business model with a brief book review