The maze book for programmers!
mazesforprogrammers.com

Algorithms, circle mazes, hex grids, masking, weaving, braiding, 3D and 4D grids, spheres, and more!

DRM-Free Ebook

The Buckblog

assorted ramblings by Jamis Buck

Software Proverbs

30 January 2016 — Four Korean proverbs, applied to software development — 4-minute read

When I was in Korea (20+ years ago), I picked up a little book called “속담백과”, which could maybe be translated as “The Proverb Encyclopedia”. It was a fun exploration of hundreds (thousands?) of Korean proverbs, all in Korean. I worked through a few pages of the book when I was in Korea, and then packed it away when I came home.

That book sat on my shelf for two decades, until a few months ago when I decided I wanted to start dusting off my Korean language skills. How to go about it? My eyes fell on that book of proverbs, and I figured translating one or two of them each day would be a good exercise.

So far, so good!

My favorite thing, though, has been trying to apply these proverbs to software development. I’ve posted a few of them on Twitter, but Twitter is a lousy platform for sharing lengthier insights. (You can only say so much in 140 characters.) So, in addition to the occassional Twitter post, I’d like to do a periodic blog post summarizing some of my recent favorites, and suggesting ways they might be used to gain insight into software development processes, programming languages, and even developer culture.

Let’s see how it goes! I’m going through the book in order, so you’ll find these tend to come out alphabetical (in Korean).

Caveats: My Korean is about twenty years rusty, so my translations may be iffy. I’ve been using the Dong-A “Prime” Dictionary on my iPad, but it only takes me so far. I’ve had to guess on some vocabulary and grammar forms that I couldn’t find in the dictionary. If you find something I’ve translated wrong, please let me know! I’d love to get these right.

1. 가까운 길 버리고 먼 길로 간다 – “Leave the shorter path and take the longer one.”

Literally, the Korean suggests not just leaving the shorter path, but discarding, forsaking, and actively throwing away the shorter path. The proverb is used to say that someone has preferred a complicated way of doing something, rather than the most simple and straight-forward way.

And if that doesn’t describe the most prevalent curse in software development, I think you’d be hard-pressed to find one that does. Most of us, at one point or another, have been bitten by this. Given the choice between a simple implementation, and a “flexible, robust, future-proof, modular, configurable” implementation, it’s surprising how often the former gets “thrown away” in favor of the more complicated, longer path.

To rephrase as a software proverb, we might say something like “start with the simplest solution, and engineer the heck out of it.”

2. 가까운 데를 가도 점심밥을 싸 가지고 가랬다 – “Even going someplace close, you should pack a lunch.”

This proverb speaks to the necessity of making the proper preparations for even small tasks. There are lots of parallels here for any kind of activity, but especially in software development. The example that jumps to my mind is unit testing. I know that I’ve been guilty on more than one occassion of skipping the tests because it’s “just” a simple change.

Too often on those short trips, I’ve come to regret not packing a lunch.

3. 가까운 제 눈썹 못 본다 – “He can’t see his own eyebrows.”

I love the pithiness of this one! My source says it describes someone who can do various different tasks, except for the one they’ve been assigned. This suggests, too, that it might describe someone who prefers to have their nose in other peoples’ jobs–micromanaging, as it were.

The ubiquitous PHB. Surely even Dilbert would agree that his boss “can’t see his own eyebrows.”

4. 가난뱅이 조상 안 둔 부자 없고, 부자 조상 안 둔 가난뱅이 없다– “There is no rich man without a poor ancestor, and there is no poor man without a rich ancestor.”

Kind of a verbose one, but I really like what it says about how fortunes can change. Life is full of ups and downs, valleys and peaks, and just because you find yourself in one or the other, doesn’t mean you’ll be there forever.

As someone who once envisioned himself (happily) as an employee for the rest of his life, and who now (unexpectedly, but happily) is working the freelance scene, this really speaks to me. Life and careers are full of uncertainty, but especially in the software world. The domain your company has a corner on today will almost certainly find itself full of competitors tomorrow. Or even worse, you may discover the entire domain obsolete! Things change fast.

Are you ready for that change? What can you do to prepare for it? Because change is going to come, whether you’re ready for it or not!