読者です 読者をやめる 読者になる 読者になる

Kevlin Henney編『プログラマが知るべき97のこと』(オライリー・ジャパン、2015年〔初版:2010年〕)読了

プログラミング 読書

Kevlin Henney編『プログラマが知るべき97のこと』(オライリー・ジャパン、2015年〔初版:2010年〕)を読了した。73人のプログラマによる97本のエッセイ+日本人プログラマ8人による描き下ろし10本の、計81人による107本のエッセイから構成されている。カテゴリ別にプログラマからの言葉が書かれており、プログラマならではのハウツーが詰まっている。その中でも、とりわけ印象に残った何本かを取り上げたいと思う。

 

Alan Griffiths「「魔法」に頼りすぎてはいけない」

厄介なのは、今は「プログラマ」でなくても、以前プログラミングをしたことがある人は意外にいるということです。しかし、「ちょっとやったことがある」という程度だと、プログラミング作業の中でも特に難しい部分―つまり自分の頭を使って考える部分―についてはよくわからないものです。少なくともそれをあまり重要とは思わないでしょう*1

 

まずこの言葉が目に入った時、それがそのまま胸に刺さるようであった。正に自分のことを指しており、「頭を使って考える部分」は非常に難しく理解が困難であり、それをとりわけ重要とも思っていなかった。

 

そして筆者は、自分が積極的に関わらない仕事に関しては、無意識のうちに簡単だと思ってしまう傾向があると述べる。まるで「魔法」のようになんでもできるような感覚に陥りがちだと指摘する。問題は「魔法が解けた時」である。その時が訪れれば、途端にプロジェクトは頓挫してしまう。

 

プログラマではない自分がプログラミングのことを全て学ぶ必要はないが、たとえほんの一部でも知ろうとすることに損はない。「自分に関わりのない仕事をする人を尊重すること」が大事なのであり、頭を使って様々な知識を吸収すべきであると感じた。

 

忘れてはならないのは、「魔法が解けてしまった時は、誰かがかけなおさなくてはならない」ということです*2

 

Klaus Marquardt「いろいろな言葉を学ぶ」

筆者は、プログラマにとってコミュニケーションはとても重要なことであり、プログラマに就いたばかりの頃は、コミュニケーションと言えば専らコンピュータ相手のコミュニケーションということになるであろうと述べる。しかし、それよりも大切なのはプロジェクトチームのメンバーとのコミュニケーションであるという*3

 

他人の言うことをよく理解し、自分の言いたいことを他人にわかりやすく伝えることが必要です。〔中略〕話す力が大事なのは、他人とのコミュニケーションが円滑にできるからだけではありません。自分の思考を明確にするためにも、話す能力は重要なのです。この能力は問題を抽象化する際には欠かせません。そして抽象化こそ、プログラミングの核心です。

 

プログラミングには抽象度の異なる複数の言語が存在しており、それらを多様に学ぶことで様々な概念に対応することができる。異なる相手と話をする時も、その相手に特有の言葉や概念を知る必要がある。つまり、他の世界の言葉を知ることが非常に重要となってくる。自分が話すこと以上に、相手の話に耳を傾け、「言葉にならない言葉の存在」を知ることが大事なのである。

 

他職種や他業界の知識を吸収したいという意識は常に持っているが、あまり抽象化というものは意識したことがない。最終的に何かしらの概念をコンピュータにより具現化するのはプログラマなのであり、「言葉にならない言葉の存在」を知る、ということは非常にプログラマらしいものであると感じた。

 

宮川 達彦『No といえることの大事さ』

このタイトルを見た時、非常に「日本人らしい」と感じた。もちろんプログラマに向けられた言葉ではあるのだが、やはり自分もこういった意識は大事にしなければいけないというように感じた。

 

一部ユーザーからの注文を細かく聞き入れ、あの機能も追加する、この機能も追加する・・・と行動していると、大多数のユーザーの意見に目が向かなくなってしまう。ユーザーのフィードバックは嬉しいものであり、はじめて公開したソフトウェアにおいて起こりがちなことであると筆者は指摘する。

 

しかし、こうすることでこのソフトウェアは一部にしか通じないニッチな機能を備えた複雑怪奇なものとなってしまう。これが、ソフトウェアが破滅に向かうないしは既に手遅れとなってしまう第一歩の状態である。

 

こうした悲劇を避けるポイントはただひとつ、そうした要望に「No」といえる勇気です。ソフトウェアのコアでないもの、他のソフトウェアと組み合わせて実装できるものに関しては、明確にNo といえることが、結果としてよいデザインやシンプルさを達成する原動力になります。

 

顧客の声は大切であるが、あれこれ聞き入れてしまっていてはいつかそのものが破滅に陥ってしまう。私はいずれ企画に携わりたいと考えているが、自分自身もこの点には常に気を付け、時には「No」とはっきり言える勇気を持ちたいと心から思った。

 

おわりに

プログラマからプログラマに向けられた多くの言葉が収録されている本であったが、自分自身がプログラマでなくとも心に響くものが多かったように感じる。とりわけ、最初に挙げたAllan Grifithsの言葉は非常に胸に突き刺さるものであった。プログラミングの学習も中途半端なところで終わらせるのではなく、少しでも多くの知識を吸収したいと考えている。

 

プログラマが知るべき97のこと

プログラマが知るべき97のこと

 

 

*1:Kevlin Henney編『プログラマが知るべき97のこと』(オライリー・ジャパン、2015年〔初版:2010年〕)p.56

*2:同前、p.57。

*3:同前、p.96