Linus Torvalds: The mind behind Linuxの中で出てきたGood taste

日記
この記事は約4分で読めます。

英語の学習も兼ねて「TED: Linus Torvalds: The mind behind Linux」を見ていた中で、プログラミングに関する話題が出てきたのでピックアップしてみます。

単方向リストの実装に関するトピックで、どちらの実装がより良い?という問いに対してのトークです。2つの実装例は以下の通りです。

例1

例2

singly-linkedlist

上記のコードはいずれも同じ問題を解こうとしているのですが、実装例2の方がbetter、Good tasteと話されています。そして、Linusさんは以下のようにも話されています。

And this is better. It does not have the if statement. And it doesn’t really matter — I don’t want you understand why it doesn’t have the if statement, but I want you to understand that sometimes you can see a problem in a different way and rewrite it so that a special case goes away and becomes the normal case. And that’s good code. But this is simple code. This is CS 101. This is not important — although, details are important.

by  Linus Torvalds: The mind behind Linux 15:33

ところどころ和訳に苦慮し横文字になってますが、稚拙ながら和訳してみます。

「こっちの方が良いです、それはif文を持っていません。しかし、それが本当に重要なことではありません。私は、if文を持ってない理由を理解して欲しいのではなく、人は時々同じ問題を異なった方法で見ることがあり、特殊なケースがノーマルになるよう書き直して欲しいのです。それは、良いコードです。しかし、シンプルなコードです。これは、CS101です。これは重要なことではありません。ですが、詳細は重要なのです。」

To me, the sign of people I really want to work with is that they have good taste, which is how … I sent you this stupid example that is not relevant because it’s too small. Good taste is much bigger than this. Good taste is about really seeing the big patterns and kind of instinctively knowing what’s the right way to do things.

by  Linus Torvalds: The mind behind Linux 16:00

「私にとって、本当に一緒に働きたいと思う人のサインは、彼らが良いテイストを持っていることで、それは…私は皆さんにこのつまらない例をお見せしましたが、あまり関係はありません、なぜならばあまりに小さすぎるので。Goot tasteは、これよりもずっと大きいです。Good tasteとは、大きなパターンを正しく見ることができ、物事を行なう正しいやり方が何であるかをほぼ直感的にわかっているということなのです。

Linusさんの言われているGood tasteとは、言葉で表現するのは非常に難しいですが、感覚的には確かに伝わってきます。Linuxカーネルのような巨大なプロジェクトの中では、Good tasteはより一層重要になってくるのだろうなあと想像できます。むしろGood tasteでないことは、多くのプロジェクトに参加している開発者に労力を浪費させることになってしまうのかもしれません。たまたまLinuxカーネルの文脈で想像で書いてみましたが、これは他のソフトウェアのプロジェクトやソフトウェア以外の産業でも当てはまることのなのではと考えさせられました。

どうすればGood tasteを身につけられるのだろうか。これは、ある意味センス的なところもあるのかもしれません。しかし、Good tasteの人やGood tasteのコード(や物)にたくさん触れ、真似(いい意味で)することで、Good tasteな感覚を磨き、良いエンジニアに近づけるのではないでしょうか。人によってその領域に達する時間は異なるかもしれませんが、少なくともその意識を持たずして、Good tasteには近づけません。

私自身、センスはありませんがGood tasteを持ち合わせたエンジニアになれるよう今後も努力していこうと思いました。

コメント

タイトルとURLをコピーしました