This week, I finally got to the core idea and value of the Tao of Coding:

There’s a way to code, there’s a way to code

If you want to be a good programmer, I wrote this article for you.

This is the fourth article in a series on the Tao of Coding. The others are:

  1. The Code Code (I) : The Programmer’s Bible
  2. Code Code (2) : The value of software
  3. The way of coding (3) : the dilemma of coding, unbalanced value

Let’s start with tao Te Ching

My two favorite books are The Tao Te Ching and the Analects of Confucius.

There is a sentence in the Tao Te Ching:

Tao begets one, life begets two, two begets three, and three begets all things

This sentence must be basically a Chinese familiar with, its meaning is basically understood by everyone, everything is derived from the Tao.

This is the world’s most sacred truth, and can be applied in almost any field without being rude. Of course, in my programming industry, this is also a natural fit.

My understanding of this sentence is as follows:

We are directly connected to all things, and everything we touch in our life and work belongs to all things. Everything is so complex and so varied, does that make us overwhelmed?

No, because according to the Tao Te Ching, although everything is numerous and complicated, in the final analysis, it is derived from tao, which is pure, simple and single.

If we learn the Tao, then everything will be all right.

Is that the same thing with programming?

The Tao and art of programming

Has it occurred to you that in our programming, there are similar technologies, there are many different technologies, and they are updated frequently.

One of the biggest challenges for technical people is:

New technologies, new languages, and new frameworks are constantly emerging, and if you don’t pay attention, you can fall behind.

So many technicians, as they get older, feel they can’t keep up with the changes and frequencies. That’s why our industry only likes to use young people. Young people are exposed to new technologies, new languages faster and less burdened.

For example:

When I just graduated, the backend of the popular SSH framework, then SSH is equivalent to programming. SSH is Spring,Strtuts and Hibernate.

Later, after I didn’t touch the back end for a while, I came back to find it unified by Spring and occupied by Spring Boot.

However, a little analysis will show that both SSH and Spring Boot in the past are actually implementations of the MVC model.

It’s a lot of experience, and it’s a lot of times over the years that I’ve been programming on all sides, that the technology has changed a lot, but the idea behind it hasn’t.

I gradually realized that in the field of programming, it was the same as what tao Te Ching said, that there were tao and art.

If we, as programmers, only immerse ourselves in specific techniques, we will never keep up because the techniques change so quickly.

But if we understand the Tao, we can easily keep up with changes in technology. That’s why I’ve been using new technologies to do things in new areas for years and never felt any difficulty.

The art of programming

Okay, so we have to analyze, what is the art of programming?

For example, when a company is preparing a new project or product, the first step in technology selection must be technology selection.

The selection conclusion is assumed as follows:

The back-end

Using Spring Boot singleton service form, database using Mysql, framework using Spring Data JPA. This should be a common collocation.

The front end

Use the React technology and use TypeScript instead of JavaScript as the coding language, considering that TypeScript is better for teamwork.

The mobile terminal

Considering the low performance requirements of the project, React Native cross-platform development technology was used to reduce costs.

This should be a process that every programmer is very familiar with. In fact, a large part of the so-called architect’s work may be in selecting and matching different technologies.

In this conclusion, various languages, frameworks, technologies, etc., all fall within the scope of magic.

What is art? These are all techniques:

  • Specific programming language
  • The ecology of various languages, including libraries and frameworks
  • Tools to aid in programming, such as code generation

In fact, most programmers use the art of coding, depending on which language and framework they use. A good or bad programmer is evaluated based on familiarity or years of use of a particular language or framework.

Most so-called interviews, which test programmers by constantly asking questions about a particular language or technical framework, are a big mistake.

The way of programming

Here’s a simple question:

Is a programmer who has been using Spring Boot the longest, and the more he knows and uses its features, the better he can write code?

Of course not. We both know it’s not, right?

We sometimes see potential in a programmer who is not exposed to many languages or technologies, but we can tell that he is a good programmer and can quickly pick up new technologies or languages.

So what’s behind this, exactly?

Here’s why:

Understanding and mastering the tao of coding is far more important than the technique of coding

It may not be as important as we think. A programmer who can write high-quality code with React should be able to write high-quality code with Vue, even if he has never used Vue. On the other hand, if a programmer can’t write good code with Vue, he can’t write good code with React, no matter how familiar he is with React.

As I mentioned above, both SSH and Spring Boot are probably implementations of the MVC idea. Obviously, is the MVC idea that is invisible, intangible, and not a specific language or framework more important?

Those are similar things, I call them tao.

These are all ways of coding:

  • Coding ideas, such as MVC ideas, hierarchical ideas, domain-driven ideas, etc
  • Coding methodology, such as agile software development methodology
  • Object – oriented three characteristics and five basic principles
  • Some common architectural styles and patterns: layered, hexagon, CORS, event source driven, etc
  • Design patterns
  • Code simplicity
  • refactoring
  • Test drive (TDD), etc

None of these things are concrete languages or concrete technologies.

However, if you think about it a little bit, there is almost no specific art that does not come from the Tao.

For example, LET me illustrate in an object-oriented language

There are three basic features and five basic principles of object-oriented languages that I suspect many programmers are not aware of.

The three major characteristics

  • encapsulation
  • inheritance
  • polymorphism

The five principles of

  • Single responsibility principle
  • The open closed principle
  • Richter’s substitution principle
  • Interface Isolation Principle
  • Rely on the inversion principle

Basically, our industry, at the application level, is dominated by object-oriented programming languages, Java on the back end, Swift or OC or Kotlin on the mobile end, TypeScript on the front end, it’s all object-oriented.

I have used all of these languages over the years, and they all conform to the three characteristics and five principles of object orientation.

So while I’m writing in Java and trying to code around the Five principles, I’m also working with TypeScript. These are the things that make code good or bad.

The difference between Java and TypeScript is the syntax of defining a function, whether it’s fun or function.

The art of change, and the tao of eternity

I hope that what I’ve written has been helpful or useful for you to start thinking about what it takes to be a good programmer.

Knowing a specific language or framework is certainly important, but it is by no means decisive. What determines whether you can be a good programmer is still the concept, understanding and mastery of the code code.

Next, the Tao of Coding: The Tao of Coding (5) : The Art of change, and the Tao of Eternity. Further elaborated to code the way and the code of understanding and thinking.


Taoofcoding. tech – Spread the word ofcoding with our little power

Visit myDDD – Full stack Domain Driver website: myddd.org