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

Even If Others Are Code Monkeys, You Needn't Be

Even If Others Are Code Monkeys, You Needn't Be

There’s an article titled “Why Are All Chinese Programmers Called ‘Code Monkeys’?” (hereafter “Code Monkeys”) that makes for painful reading. It gets a few things right. But yours truly believes: whether other people are code monkeys is none of your business — you, however, should not become the code monkey that article’s author has in mind. The author says the term “code monkey” emphasizes that programmers are “low-status, doing dull and exhausting work.” As a programmer, let me weigh in as well.

Income and Status

Generally speaking, programmers are not badly paid. I don’t have hard numbers, but in first-tier cities, the average programmer’s income should land in the upper-middle range of that city — I’d guess around the top 30%. In 2012, when we were doing campus recruiting, many candidates we fell in love with after interviews (from Tsinghua, Peking University, the Chinese Academy of Sciences, and so on) ultimately took salaries of 100k–200k RMB and went to Baidu, Alibaba, or Tencent. There was one iOS engineer we especially wanted; we chased him for a long time, but in the end a famous game company snapped him up for a salary north of 200k — and that’s a salary it took yours truly several years of working to reach.

So, is a programmer’s income low? Why is your income low? Why do you fear your future income will be low?

Yours truly has a friend, also a former employee of Tukeq, who already had plenty of independent project experience before coming to intern as an undergraduate, and had mastered Python/Django and iOS development. He was smart and eager to learn, got up to speed very fast, and could take on important feature development with only a little guidance; his diligence was no less than mine, so he improved at a remarkable pace. Later, many of Tukeq’s core features were handed over to him, and there were features I honestly felt I couldn’t have done better myself. When he “graduated” from Tukeq a year and a half later, he had become an interview champion that every major company was scrambling to recruit, holding several offers at once. He ended up at a search company, and his future looks very bright.

I think this is an instructive example, especially for students still in school. As I wrote in “The Leveling-Up Road of Software Development,” there are so many interesting problems around us that can be solved with software. Are you willing to give up some of your Dota time and energy to solve them? Are you willing to push through every obstacle and gnaw through each hard bone along the way?

If you already have a pile of presentable projects from your student days, then in this era of a red-hot internet industry and a gaping talent shortage, is finding a decently paid job really so hard?

Programmers may hold the only job in the world that doesn’t depend much on your degree, doesn’t depend much on your parents, and doesn’t even depend much on putting in years of time to get ahead. Someone made up this story:

Python’s creator Guido van Rossum went to interview at Google one day, said three words — “I wrote Python” — and was hired.

Of course, a heavyweight like Guido has no need to go job-hunting himself. Like a superstar on the pitch, he just calls a headhunter and says he’s thinking of moving, and job offers come flying like snowflakes. The story is invented, but it’s still a fine illustration of the essence of being a programmer: “no leaning on heaven, no leaning on earth, just on your own two hands.” Your salary depends on what you can build.

As for status — I think that apart from the power elite, everyone’s status is about the same. If you’re not a civil servant, don’t waste time fretting about status; that stuff comes and goes. I actually think programmers should work more on their taste — at the very least, learn to dress themselves better, and stop living like the proletariat on a middle-class income.

One more thing: I’d suggest the ladies pay more attention to programmers as a group — after all, among the few kinds of people who can change the world, programmers are the easiest to approach, their potential shows early, and they’re the easiest to get along with.

Dull Work

Whether the work is dull really has to do with how you feel. First of all, not everyone is cut out to be a programmer. If you’ve moved through several teams or companies and find everything dull, and you have no interest in doing personal projects, then you should seriously consider whether this is the right path. Otherwise, if you keep going, you really will become the code monkey of “Code Monkeys.”

Someone once left me a comment saying he didn’t want to do business-related work because it was boring, and that he wanted to do what “real programmers” do. Come on — we build products, and what product isn’t tied to a business? Software divorced from business is either a pure personal hobby or something that can only survive in an ivory tower.

Some people say their job is damn boring, that every day they do trivial, peripheral chores, dull to death. Well, do you think yours truly always gets the glamorous work? The work I’ve done these past two weeks has been tedious as hell. One task, roughly: “From the Linux kernel source code, extract every .h file referenced by the .c files, keeping only the ones that are truly needed (while the system still compiles and runs correctly).”

There’s plenty of this kind of work on the job. It is a bit dull, but when you run into it, rather than complaining to heaven and blaming others, find a way to finish it fast. Yours truly spent most of a day on it; after going down many dead ends and writing two programs, I finally found a clever approach and finished it with just fifty-odd lines of Python. The result: from the initial scheme cutting 25% of the .h files, all the way to cutting 95%.

What I don’t quite understand is programmers who say they’re always forced to do repetitive work, and that’s why the job feels so dull. Think about what wearing the hat of “programmer” actually means. It means that every other group in the world has grounds to call their labor repetitive — every group except programmers. Why? Because the creed programmers hold to is DRY (Don’t Repeat Yourself): the moment you find yourself doing something a second time, you should consider automating it. If you can’t do that, work on it, because it determines your efficiency and effectiveness.

Let me give another example of my own. A while back I needed to test several dev environments; the process was roughly: download the code, compile, run unit tests. Because the dev environments had some issues, after downloading the code I needed to apply a patch. The first time I did this by hand, to verify the whole process was correct and to adjust the patch. From the second time onward I wrote a script to automate it. Sure, I could have spent the time I spent writing that script verifying every dev environment one by one — but the beauty of scripting it is that I can have someone else use the same script to verify independently, and I can reuse it over and over in the days to come.

Dullness is your subjective feeling about a task. In many internet or software companies that look glamorous from the outside, the tasks that actually land in your hands are not necessarily glamorous. Big data? That’s the pretty business narrative for outsiders. What you actually do may be manual or semi-automated analysis of massive logs — dull? Operating systems? Fine, you get there and find you’re mainly doing localization — dull? Virtualization? Fine, a big team there is doing driver development — dull?

It’s not that dull. Software is a set of individually very dull features, organically combined to deliver value to users (customers). If you can’t recognize this and keep believing that what you do is the dullest of all, then you’ll just keep being dull, and you’ll become exactly the code monkey in the “Code Monkeys” author’s eyes.

Hard and Tiring

Hard and tiring — that much is true. But it depends on how you’re being worked hard.

If you’re at a company that restricts your freedom to do your best work at every turn, and that judges your work attitude and ability by how many hours you put in, then unless you have other ideas, you should choose to leave. I remember my first company after graduation. One evening at dinner, my boss asked me what I thought of two women on the team. I said they worked well and were a pleasure to collaborate with (my subtext: man-and-woman pairing makes the work lighter ^_^). The boss pursed his lips and said: “But they go home the moment work ends; that’s not a positive attitude.” It left a bad taste in my mouth, and the thought of leaving began to form.

A programmer’s work should absolutely never be measured by working hours or by whether you work overtime. If your boss’s appraisal of you reads “this employee works hard and proactively stays late,” and you’re still willing to stay, then don’t complain about being hard-worked and exhausted.

That said, the reality is that many programmers do work overtime, myself included.

Some people work overtime because they’re genuinely busy. But plenty of industries are far busier than programming — accounting (audit) at the Big Four, investment banking, consulting.

Some people work overtime to signal their presence.

But most people work overtime to have a quiet environment in which they can get something done.

As for hard, tiring work, I think one very important reason is this: the job requires you to constantly refresh and reinforce your skills.

If you’re forced into it, you’ll be drained body and soul; if you go on the offensive, your body gets tired, but the sense of accomplishment is considerable.

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