QIAOPANG.COM · SELECTED ESSAYS (2013–2026) · 260 ESSAYSBrowse Chronologically (2013 → 2026) ↗
QiaoPang · Programmers LifeSelected Essays · Systems, Craft & Agentic Era
Timeline ↗

The Road to Growth for Software Engineers

The Road to Growth for Software Engineers

Preface

This is a lightly edited transcript of a Zhihu live broadcast I gave.

Hello everyone, I’m VPE at Tubi TV — Vice President of Engineering, that is. Don’t let the title intimidate you. My “vice president” role is frightfully hollow — certainly not a corps-level command, more like a lowly platoon leader. So this live session is a peer-to-peer conversation: I won’t put on airs, and there’s no need for you to be obsequious :) We’re all here to pass on the Way, impart knowledge, and resolve doubts. I often joke that meeting someone in person can fall short of their reputation. All those supposedly mysterious, formidable “hotshots” — spend enough time around them and they’re nothing special.

I gave a rough account of myself in the article introducing this Zhihu live; here I’ll ramble a bit more. After finishing my bachelor’s in 2003, I joined Digital China, part of the Lenovo family. In 2005 I jumped ship to Juniper, a foreign company making networking equipment. During my time at Juniper I took a business trip to Silicon Valley, and from that moment a seed was planted in my heart — a pilgrimage to Silicon Valley. In my years at Juniper I got a great deal of exercise: I moved internally through three teams, from data plane to OS/kernel and all the way up to application; along the way I published four US patents, did plenty of interesting things, and took over a team of fifteen. In 2011 I co-founded the travel startup TukeQuan with friends and raised investment from Innovation Works and GSR Ventures. You can read that history in my book, The TukeQuan Startup Chronicles — no need to belabor it here. In 2013 I left TukeQuan and returned to Juniper, and a year later relocated to Juniper US. At the end of 2015, by a stroke of luck, I secured an O1 visa and moved to Tubi TV, where I’ve worked ever since. Last year I put together Tubi TV’s China team, based at a WeWork in the Sony Building in Wangjing. We still have openings for frontend, backend, and algorithm engineers — if you’re interested, take a look at my previous articles. Our compensation is fairly generous, with chances to travel to San Francisco on business; for outstanding talent who are willing, we’ll do our best to sponsor a work visa — a flesh-and-blood climb over the wall.

Alright, advertising time is over. Let’s get to the point. Something everyone cares about: the word “growth.”

Confidence

I put confidence first because, as an engineer — whether you grow into a technical master or a team leader — confidence is an indispensable key quality. I believe everyone agrees on this. We all grew up reading Tang poetry, especially Li Bai’s. Have you ever noticed that Li Bai was an extraordinarily self-confident fellow? Look at the lines he wrote:

When depressed and gloomy, for instance, he would draw his sword and look around, his heart at a loss — then pivot in the very next breath: “A time will come to ride the wind and cleave the waves; I’ll hoist my cloud-white sail and cross the vast sea” (Hard Is the Road). Or when there’s a chance to fulfill his ambitions: “Laughing at the sky, out the gate I stride; how could I be one of the common weeds of the field?”

See how optimistic his mindset is. We may not have Li Bai’s pedigree or his talent, but we can have his positive, optimistic attitude.

So I often tell the people around me to be optimistic. Be happy in life. I once quoted a passage from a Neil Gaiman speech in an article; let me read it again:

I’m serious. Husband runs off with a politician? Make good art. Leg crushed and then eaten by mutated boa constrictor? Make good art. IRS on your trail? Make good art. Cat exploded? Make good art. Somebody on the Internet thinks what you do is stupid or evil or it’s all been done before? Make good art. Probably things will work out somehow, and eventually time will take the sting away, but that doesn’t matter. Do what only you do best. Make good art.

If you have time, go watch that video on YouTube. Savor it.

Now everyone says how hard life is — but that’s because we fixate on what’s unsatisfactory, fall into tunnel vision, and forget the good side. Think back to when you were little: everything made you happy; you could squat on the ground watching ants crawl and be delighted for ages. A couple of days ago at dinner I ate myself silly — literally ate myself silly — and dragged my daughter out for a walk around the neighborhood to digest, three kilometers. Lap after lap, she kept skipping and jumping, finding her own fun; in her eyes everything is a joyful thing. I was the same as a child. My hometown is in Gansu. As a kid I traveled to Beijing on a train that took three days and three nights — for me, that was a wonderful three days and three nights: endless scenery and every kind of person. Most of us today get restless and irritable on any train ride over ten hours. My father is a supremely optimistic man. A few days ago he came to Tianjin to give a lecture and stopped by Beijing to see me. Last Saturday his flight out of Beijing kept getting delayed from morning all the way to evening. I was anxious to death, but he cheerfully said he hadn’t exercised in ages and this was the perfect chance to get some in — so he circled the airport hall, chatting and laughing, and racked up over ten thousand steps. That’s optimism: seeing the positive side of everything. Haruki Murakami said it in one of his books — I’ve quoted it many times — pain is inevitable, suffering is optional.

So I say optimism is the first ingredient of confidence. In The Road Less Traveled, the author says that under the brutal conditions of a concentration camp, he would shave each day with a shard of glass, keep his clothes neat and upright, and wear a smile on his face — all so he would look more spirited, and deep down would not be broken.

A smile on his face.

Beyond optimism, there are some other important factors to gaining confidence:

  • Continually trying things you’ve never done
  • Having been through enough failures
  • Facing all kinds of choices
  • Making yourself irreplaceable in some domain

Let’s talk about trying first — taking risks to do things you’ve never done. From my own experience, such risk-taking can greatly boost confidence. My whole career has been one gamble after another. Going from Digital China to Juniper, switching from a private company to a foreign one — that was a gamble. Within Juniper, I first worked on the flow team, doing the most core data plane. In about two years I studied flow inside out and distilled the whole codebase into an internal document that a director jokingly dubbed the “Sunflower Manual” — my colleagues may still be using it to this day. After that I volunteered to move to another team doing OS/Kernel — essentially starting from scratch. I studied preemptive and cooperative multitasking in far greater depth, and gained a solid grasp of system boot, memory management, scheduling, interrupt handling, and the assembly code for several CPUs. Then, by a stroke of luck, I moved from the technical track to the management track, merged in another team, and expanded from OS into application.

In tech we need to broaden our technical breadth. But not blindly, skimming the surface like a dragonfly touching water — rather, once you’ve drilled deep into one area, you go drill into the next.

Along the way I made many other attempts. I thought writing a patent would be a cool thing to do, so I tried submitting some original solutions from my work. Juniper had an internal technical committee that reviewed patents first. After being rejected several times, finally one of my patents — on a hot patch — went through. Lots of things have an element of chance. It’s like tennis players: plenty of one-Slam winners never win another Grand Slam in their lives. To prove I wasn’t a “one-Slam wonder,” I kept at it, and eventually the second, third, and fourth came in turn.

I used to be a very reserved, shy person, with a deep lack of confidence about speaking in public. So I deliberately made many attempts in that direction — from giving technical talks to my own team, to giving BBLs to the entire China team, to giving BBLs to the US team when I traveled there on business. Once on a trip, I presented systemtap — a runtime tracing tool on Linux — to a team in my department in the US. I booked a twenty-person room, but a whole crowd showed up, standing around the walls, and the response was good. With that experience under my belt, a week later I booked a session on Mesos and decided to make it a big one for the whole company — I worked with the training department to book the largest training room in another building, seating over a hundred, and hooked up the teleconference system so colleagues at other sites could dial in; of course, given the time difference, probably only the Boston team might join. I stood by the podium wearing a headset, three giant screens behind me. When the BBL started, fewer than ten people were scattered across the seats, maybe one or two on the conference call. I’d barely begun and a few people got up and left. By the end, only three or four Chinese colleagues were left to fill out the room. Awkward as hell. But the confidence I gained was this: I can hold my own in a room that big — and with so few listeners in a room that big, I could still shamelessly keep my composure and carry on.

So now, when it comes to speaking in public on a technical topic, whether in Chinese or English, I don’t have much trouble.

I’ve made many, many other attempts — starting a company, writing a book, running marathons, working in the US. Some attempts require a lot of preparation, your family’s consent, and a clear-eyed view of the worst case before you can let loose — like starting a company, or relocating. But many attempts you can undertake right away — like keeping a daily journal, or exercising. Every attempt helps us gain confidence; even the failure after an attempt helps us gain confidence.

There’s a great talk on TED called “What I Learned from 100 Days of Rejection.” Many people lack confidence simply because they fear failure, fear being rejected — or, put another way, they don’t know what failure tastes like. My grandmother told me that the year Chairman Mao was nearing his end, they all felt the sky was about to fall — a despair that came from the bottom of their hearts. How could China be without its red sun? And then, after the old man passed away, the sky did not fall. Life went on as before, and in fact got better and better. So a big way to boost confidence is to go through it — to go through failure. As I said in the introduction to this live: experience is what you got when you didn’t get what you wanted.

The protagonist in that talk forced himself to do things that were bound to fail, bound to get him rejected. For example, he asked a big, unfamiliar Black security guard in an office building to lend him a hundred dollars. He thought he’d get beaten up or cursed at — but the guard just asked, puzzled, “Why?” So you see, once things turn out not to be as bad as you imagined, doing similar things again is no longer so frightening. He did some other amusing things too — like holding a potted flower and knocking on a stranger’s door to ask whether he could plant it in their backyard; or asking a burger-joint clerk whether burgers could be refilled like drinks (in the US, soft drinks are usually free refills). I highly recommend this video — you absolutely must watch it after this live, even just for entertainment.

When a person is confident, he radiates a powerful aura. You’ll think, “Damn, how is he so impressive?” It’s just that he’s been through more, failed more, grown a thicker skin, and grown indifferent to gains and losses, pros and cons.

Finally, continually making yourself irreplaceable is another means of boosting confidence — especially in the workplace. At work, the company and the individual are at odds on this point. The company wants everyone to be replaceable, so there’s no systemic risk; the individual wants to be irreplaceable, to have enough bargaining room. There are many ways to make yourself irreplaceable. You can become the most proficient person in some domain — like Inzaghi, peerless in the world at poaching goals in the box; you can become the person on the team everyone most wants to work with, whose presence makes others better — like Curry of the NBA’s Warriors; you can make yourself a jack-of-all-trades talent who’s good at everything — like Zambrotta of Juventus, who can play left or right, up or down, demure little sister or commanding big sister, whatever’s called for; or you can become the one people depend on, without whom the team can’t function — like LeBron of the Cavaliers.

That’s confidence. Heaven gave me talents — they must be of use. We emerged from a competition among trillions of tadpoles — that alone is something to be proud of for a lifetime :) Erlang/OTP claims its stability is “nine nines”; we too beat out nine-nines of opponents to stand tall in this world.

Self-Discipline

Next, self-discipline. Su Dongpo said: “Since ancient times, those who accomplished great things possessed not only extraordinary talent, but also an unyielding will.” What is self-discipline? It’s that unyielding will. I don’t know how many of you have read Liang Qichao’s biography of Li Hongzhang. This passage resonates deeply with me:

Li Hongzhang’s conduct of affairs: no document left piled on his desk, no guest left waiting at his gate — his whole regimen followed Zeng Wenzheng. His rising and eating were all set at fixed times, quite in the Western manner. In his regard for discipline and strict self-governance, few Chinese could match him. Regardless of winter or summer, he rose at five o’clock. He kept in the house a Song-dynasty rubbing of the Lanting Preface, and every morning he would copy out a hundred characters; his copies he never showed anyone. This was one method of cultivating the mind through self-discipline. Zeng Wenzheng, every day in camp, would play a game of Go — the same idea. Every day after lunch, he would take a one-hour nap, never missing the time. When at the Zongli Yamen, each time his nap was about to end, he would give a stretch and a yawn, then extend one foot to put on a boot, extend one hand to put on a robe — the attendant was not permitted a moment’s delay.

That is self-discipline in the extreme.

What good is self-discipline? For me, it saves me a great deal of time, letting me do things “subconsciously.” For example, for more than a decade I’ve been getting up at five or six in the morning. Earliest, when Beijing wasn’t so congested, I’d get up at six, leave at six-thirty; later it got too jammed, so I’d get up at five-thirty and leave at six. I carried that habit all the way to Silicon Valley. When I worked in Sunnyvale, because home and office were so close, I often reached the office before seven. My colleagues wouldn’t come in until ten or ten-thirty, so I had at least three hours of solid, unbroken time to learn interesting technologies. In those days I basically went through all the awesome tech talks on GitHub, plus videos I was interested in from NDC, StrangeLoop, Erlang Solutions, Clojure/West, and various other conferences, then dug deeper into the interesting ones. Just like that, I had several extra hours a day out of thin air compared to most people. Now I work in San Francisco, still reaching the office before 7:30 each day, with two to three hours entirely to myself. On this business trip back to Beijing, I still got up early every day, swam half an hour at the hotel, and often showed up at the office around seven.

Uncle Lei Feng said: doing one good deed is easy; doing good deeds your whole life is hard. Self-discipline runs deeply against human nature. Without an “unyielding will,” it’s hard to sustain. But once you sustain it, you’ll find — just as Newton’s first law says — that everything runs on momentum, as if it were part of your life.

In our daily lives, if we can do many things “subconsciously,” that’s the least taxing. It’s like eating when hungry, sleeping when tired — you don’t have to make a choice; the power of habit makes the best choice for you. I commute to work in San Francisco by train, round trip each day. On the train I have 110 minutes — nearly two hours — of essentially undisturbed time to enjoy, or to waste. Most people play games on the train. When Pokémon Go was all the rage, everyone around me was battling little monsters. That’s a very ineffective use of time.

I don’t have a strong prejudice against games as such — while waiting in line for a table, or while my wife tries on clothes in the fitting room, whipping out my phone for a couple of rounds to delight the soul is an effective use of fragments of time.

At first I didn’t do any fixed thing on the commuter train — sometimes I’d listen to TED Radio Hour, sometimes write code, sometimes read — so after boarding I’d first spend quite a while deliberating and choosing what to do with such a big block of time. That’s where the trouble began. There are many things worth doing in your head, and choosing among them is like the dialogue between Zhu Bajie and Lady Lishan in the Journey to the West episode “Four Sages Test the Mind” — I don’t know if you remember it — where Guanyin, Puxian, and Wenshu each take the form of Zhenzhen, Aiai, and Lianlian:

Give the eldest daughter to you, and the second will resent me; Give the second daughter to you, and the third will resent me.

That’s a vivid picture of choice paralysis. And even after we pick one thing to do, while doing it we grow anxious about the other things left undone.

What did Zhu Bajie say? He said, then take all three sisters — even a few more, your son-in-law will happily accept. But that’s even worse — doing many things at once, biting off more than you can chew.

So later I simply fixed this time for writing. Writing is a single action, singular enough to easily form a habit.

Over time, when I board the train I subconsciously put in my earplugs, open Atom, and start thinking and typing, with no extraneous thoughts, my mind highly focused. That’s the benefit of doing things subconsciously.

So how do you achieve self-discipline? First, start with a strict routine. You don’t have to get up at 5:25 like me, but you can find the rhythm that suits you best. Cut your day into big blocks, then assign one thing to each block. For example:

5:25 AM Get up. 6:00–7:30 Commute to work. 7:30–5:00 Work. 5:00–7:00 Commute home. 7:30–8:30 Work. 8:30–9:00 Put the kids to bed. 9:00–10:30 Other. 10:30 Sleep.

Once the broad routine is set and habitual, then consider further subdividing. It’s just like software design: until the big interfaces are settled, premature optimization is meaningless.

Second, put down the phone. Honestly, I’m not great at this myself. But I’ve become aware of it and am working hard to change. I used to think scrolling content on the phone was an effective use of fragments of time, but in truth it’s easy to overcorrect — scattering your attention in the name of using fragments of time, until the fragments devour the big blocks. Programmers more or less have this problem. When we build, when we deploy, we’re forced to pause and wait for a step to finish, so we pull out the phone to scroll through WeChat Moments or official accounts. We meant to save a minute or two of waiting, but spend several times as long scrolling — wasting time and energy all the more.

If you do these two things well, you’re already doing self-discipline quite well. You can beat 99% of users.

Kant said: so-called freedom is not doing as you please, but being your own master. Being your own master is no simple thing. People are governed by instinct, desire, and impulse, and every choice that makes a person better is not easily executed.

If you want to practice self-discipline further, I suggest learning Zeng Guofan’s Five Diligences and Six Precepts (take what’s good and follow it):

First Precept: Do not do what has long been profitable; do not go where the crowds contend. Second Precept: Do not discard a person’s great virtue for a small fault; do not forget a person’s great kindness for a small grudge. Third Precept: To speak of others’ shortcomings is to cover one’s own; to boast of one’s strengths is to envy others’ strengths. Fourth Precept: Profit may be shared but not monopolized; plans may be made by the few but not by the many. Fifth Precept: From ancient times to now, all the mediocre people of the world fail through a single word — sloth; all the talented people of the world fail through a single word — arrogance. Sixth Precept: In handling great affairs, insight is primary and talent auxiliary; in accomplishing great affairs, human planning is half and heaven’s will the other half. Five Diligences: diligence of the body (lead by example), of the eye (observe), of the hand (habit), of the mouth (getting along with others), of the mind (willpower).

Confidence and self-discipline are the foundation of sustained growth. On that foundation, we must learn to teach ourselves, to build our own methodology for getting things done, to learn to make choices that are as correct as possible, and to learn to ask valuable questions — to ask more questions.

MORE IN Leadership & Career

Further Reading in This Column

View all essays in “Leadership & Career” →

The Programmer's Meltdown

After enduring the 'unsafe shitstorm,' actix-web's maintainer pulled the top-ranked Rust framework and walked away from open source—a story of maintainer burnout and the hidden cost of demanding that volunteers reshape their work for everyone else.

Book Next Chronicles (2013–2020)2,451 chars · 5 min read

Nana the Intern

When it comes to interns, beyond learning ability, I ask for one thing: a long enough runway. By "long enough" I mean at least two or three months — anything shorter and they leave before contributing anything of value, clutching a glowing evaluation form. Nana's story is an exception worth studying.

程序人生 (2015–2019)4,528 chars · 10 min read

ArcBlock at One Year

One year since trading the Bay Area for Washington State: a reflection on the winding road that built ArcBlock — its Forge framework, its bet on application chains, and the choices that led here.

Book Next Chronicles (2013–2020)6,593 chars · 15 min read