Sometimes I suddenly realize that
writing programs has had a profound influence on me.

Disclosure:
The following are all my personal thoughts,
and may not necessarily apply to the broader population of lovely programmers.

Su-crates once said:
“A person must constantly dissect themselves,
and then constantly dissect themselves again,
and finally constantly dissect themselves once more,
to be a great person.”

Su-crates:
I didn’t,
I didn’t say that,
stop making things up. (triple denial)

Socrates:
Don’t randomly put dots in the middle of foreign names.

So here, let me record some little things from everyday life,
maybe through them you can glimpse the leopard from a spot.

0

After dealing with computers for a long time,
I’m very clear that programs follow flows.
All so-called Bugs are caused by some piece of computer logic
not matching up with human logic.
So now when I’m fixing Bugs,
although I still exclaim “this is unscientific” like before,
in my heart I know,
it’s very scientific.
And as the old foreigners said:
Where there's a bug, there's a fix.

Humans are the same.

All the decisions we make,
all the results,
are generated by a decision tree,
and the tree may be shallow or deep.

I’m in a good mood today,
I suddenly sat down at a milk tea shop and had a cup of milk tea.
The little couple breaking up next to me,
the young guy working on his MacBook,
a few chattering aunties,
they’re all like what Qian Zhongshu said.
Just like switching radio channels,
catching bits and pieces from here and there,
but each of them has their own complete story.

So when I look at things,
once I know the cause and effect,
I can’t help but exclaim:
This is very scientific.

1

In the utopian world,
everyone is very scientific.
However in real life,
there are always trade-offs.

For example, topics like Vim vs Emacs,
PC vs console,
blue switches vs red switches,
in the real world we always have to make choices.
And the fact tells me that,
because at any moment,
our user habits,
user counts,
team atmosphere,
external environment are always fixed,
so although there’s no optimal solution,
we can always choose a better solution.

For example, Alibaba’s coding spec says no join across more than three tables,
I fully understand the reasoning here,
but when I do my own projects, I really can’t manage it.
Or as part of internet wisdom says,
a good boyfriend should know a lot of info including lipstick shade numbers,
well, I’d rather respect individual differences,
after all those who want to know the specific changes in the new Dota patch are also a minority…

Take the classic Vim vs Emacs topic from the beginning as an example.
After using both,
I do know why people say one is the god of editors, one is the editor of gods.
But for each person’s specific editing environment,
they’ll always pick one combination
that puts them in the most comfortable state.

01

Combining the two points everything is scientific and optimal solution,
one conclusion is that we should always keep an open mind.
If we hold the mindset that
in the world, everything that appeared before age 15 is mundane existing stuff, everything between 15 and 30 is world-changing inventions, and everything after 30 is what garbage is this?
then we’ll fall into local optima early.

A chestnut (example).
After writing lots of business code,
people I tend to fall into the inertia of formulaic code.
A while ago, when discussing the implementation of a requirement with the product manager,
when we got to a point,
I naturally said: “Can’t be implemented.”
But the product manager curiously / puzzledly / questioningly asked:
“Why?”
At that moment I was stunned,
yeah, why?
And so we went on to have a deeper discussion.

In general,
I deeply respect the ability to learn,
and I really like / admire people with strong learning ability.

When chatting with candidates during interviews,
I really like asking one question:
Can you tell me about your favorite project that you’ve done?
Some candidates get suddenly excited,
grab you and tell a complete story.
Like how it started for such-and-such reason,
how originally they wanted to do it some way,
then because of some reason later,
what they learned along the way.
In this kind of exchange,
not only do I learn quite a bit,
I can also see their accomplishments and growth.

11

So I’m very willing to be a curious baby.

It’s like the noob triple combo says:

What’s Baidu?
Baidu what?
How to Baidu?

And then with the bonus combo move:

Master, do you actually know or not?

combo

Sometimes for many questions,
even though I already have a high-probability answer in my heart,
I’ll still ask them out loud:

As they say, live and learn (said in Guangu’s tone)

100

Oh, one more thing.
I call it being fond of high information density.

This may not be noticeable in daily life,
but in resumes / interviews it’s very obvious:
in the same three sentences,
some people convey a lot of useful information,
while others say it like they said nothing.

In “Werewolf” this is also very obvious.
Many high-level players frequently use terms newbies don’t quite understand like “give golden water”, “sheriff flow”, “throwing water packs”.
This increases the information density of their statements,
making what they say sound more reliable.
While many people who say things like “Ah, XXX died today, so probably the witch is XXX, hope XXX”,
all get exiled with “this guy’s statements have low info density”.

This is also the fun part of many subcultures (memes).
With the same lingual building blocks,
expressed in unique ways,
they convey a feeling of subtle differences and rich information.

If, when writing code,
I could write code that is concise in expression,
complete in edge cases,
“high in information density”,
then I wouldn’t need teammates to shout 666 in Code Review.
I’d already be jumping three feet in the air,
happy like I just saw Aragaki Yui.

-1

Actually I can think of much more while writing,
but the margin of this book is too small to write it down
I want to go play games…

So in brief summary:

  • Believe everything is scientific
  • Believe an optimal solution must exist
  • Like people with strong learning ability
  • Strong curiosity
  • Fond of high information density

This is probably,
a small part of my logic as a programmer.