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

A 2015 Medley of a Programmer's Life

A 2015 Medley of a Programmer's Life

People often say that reading your own diary is like conversing with your past self. This morning on the train, I had a conversation with the self of six months to a year ago; still not satisfied, I began conversing with the self on my WeChat public account. In 2015 my output on the public account was not plentiful, but there is no shortage of pieces worth rereading.

For programmers new to the field, “How to Choose a Job” tells you the importance of measurable and amplifiable, and reminds you to choose your industry, boss, and team carefully. “A Programmer’s Guide to Efficiency” may help you grow faster on your path, but “A Programmer’s Guide to Showing Off” is purely for laughs.

As your influence in the team grows, you may need “The Technical Manager’s Startup Toolbox” to forge tools for the team’s hardest battles; read “On Engineering Culture” and consider what kind of culture you want to instill in the company, and how to “Build a Work Environment Conducive to Exploration.”

A good software engineer should not be confined to one language or one technology; only by daring to explore the unknown can you understand more deeply the strengths and weaknesses of the technology in your hands. You may want to read “How to Learn a Language,” then, from a higher vantage point, look at “The Disruptor’s Game: Programming Languages” and “Software Ruminations.” This is a small tribute to “Hackers & Painters” and “Seven Languages in Seven Weeks.” Next, “Golang at Five,” “Elixir: Panacea or Hype?” and “JavaScript: The Machine Language of the Century?” dive directly into specific languages. “How to Learn a Language” and “Golang at Five” were written last year; I include them here to fill out the list. I thought I had also written pieces on Clojure, Haskell, and Rust, but after rummaging through every repo where I keep my articles, I found only drafts. Maybe I’ll write them next year; maybe not.

Beyond language, ideas matter more. “The Enduring Charm,” “The Power of Laziness,” and “Software Rhapsodies — Do Not Go Gentle into That Good Night” pay tribute to functional programming (FP); nowadays, when I write JavaScript, if I can use FP, I do. I really should also write about pattern matching and recursion at the language level, but I’ll leave that for 2016. “Random Thoughts on Software Design” is, by contrast, high-level rambling.

Those who build systems know that sometimes the more constraints there are, the easier design and development become; that is what “Embracing Constraints” is about. Today we live in an era when the old Moore’s Law (CPU, memory, etc. doubling every 18 months) has ceased to hold and a new Moore’s Law (the number of cores doubling every 18 months) has taken its place, so software’s ability to handle concurrency is increasingly valued. FP is naturally adorkable and suited to concurrency, while Erlang’s actor model, Clojure’s STM, Go’s CSP, and JavaScript’s event loop are all sharp tools for handling concurrency. We know that the asynchrony brought by concurrency is hard to handle: some of it is absorbed at the language level (e.g., Erlang, Clojure), while some is resolved through the idea of handling asynchrony. “Promise: Give Me a Promise, and I’ll Return You a Promise” is JavaScript’s way; Observable is a universal contract you should not miss: “On FRP and Observable (1)” and “On FRP and Observable (2).”

As a programmer or code warrior—a species that must forage diligently—you cannot just have ideas, produce papers, write articles, and theorize on paper; you must also dig into details and solve problems. “Writing a Proper REST API,” “Packaging and Deployment from a Developer’s Perspective,” “Making Servers Fast Is Not Just About Switching Programming Languages,” and “Software Performance Tuning: Look at Data or Concepts?” are all worth reading. Of course, security is an unavoidable topic: “Network Security in Application Development” and “How to Store Passwords the Right Way in Internet Projects?” may awaken your attention to security. Sometimes life forces you to face difficult problems, such as the parser that most systems cannot avoid; I hope this short piece, “How to Happily Write a Small Parser,” can help a little.

It must be said that the past three to five years have been a period in which data centers shifted wholesale to the cloud. Instagram’s myth of a dozen or so people supporting hundreds of millions of users made putting IT in the cloud the first choice for new startup teams in their early days. It is foreseeable that in the future the whole industry will treat programmers and code warriors with rich experience in AWS, Azure, and even Alibaba Cloud as honored guests. “Why, Even If You Don’t Use AWS, You Still Need to Know Some AWS Technology?” and “Into the World of AWS re:Invent” make a start, while “A Deep Dive into IAM and Access Control,” “AWS and IAM Q&A,” “On AWS Lambda and Serverless Architecture,” and “S3: More Than Just Storage” dissect AWS’s services bit by bit. Looking back, some of these articles may seem a little shallow and immature, but that is precisely evidence of your growth.

In life you inevitably encounter all kinds of products. If you are a lover of new things, then in “Product Experience: Beepi,” “When Cars Can Drive Themselves,” “The Disruptor’s Game,” “Botwall: Bot Firewall?,” “Soylent: The Future of Food?,” and “A One-Week Soylent Test Report,” you may find products and services you like.

Many friends are curious about my work and life in the United States; “A Thousand Miles,” “Notes from a Southern Journey,” “Traveler Without Borders: Seattle, Portland, and Beyond,” “The Portland Marathon: A Feast for All,” and “Paramount, MGM, and Lionsgate” can give you a quick scan. After reading them, if you want to understand a little about physically getting over the wall, then “How to Get a Chance at U.S. Work Residency” and “Fate Is Predestined” are not to be missed.

MORE IN Essays & Reading

Further Reading in This Column

View all essays in “Essays & Reading” →

Happy New Year!

In the blink of an eye, a twelfth of 2020 is gone — has your New Year plan kept pace? After a month of outrage over attacks on doctors and anxiety over Wuhan's outbreak, I send New Year wishes along with a guide to a long holiday without regret: books, Rust, and time with the kids.

Book Next Chronicles (2013–2020)3,608 chars · 8 min read