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

ぺんぎん村での日々

イラスト・写真・ゲームを中心とした日々

今年の目標を立てた人へ  ―「早すぎる最適化」を避けよう―

考え方・思考法

 

あけましておめでとうございます。

f:id:drawdraw:20170102154125p:plain

新しい年になり、今年の目標を立てる人も多いと思います。

「今年こそは10kg痩せる」とか
「毎週1冊本を読む」とか
「次のTOEICテストで〇〇点以上取る」などなど。

 

ここで、目標を立てる上で重要なこととは何でしょうか。
「いつまでに何をどれだけどうするのか、定量化できるようにする」
たしかに、これは重要です。
期限と定量的な目標があるからこそ、
取るべき具体的な行動が明確になるからです。

 

しかし、これよりも私が目標を立てる上で最も重要だと思うのは、
「長期にわたる目標を立てない方がよい」
ということです。

 

これから先の1年間を見通して、
精度良い目標を立てられる人なんて
あまりいないんじゃないんだろうかと思います。

 

なぜなら、目標を達成していく過程で、
自分を取り巻く環境、そして自分自身も変化していくからです。

 

1年前の自分が今の自分を取り巻く環境を
どれだけ正確に予測できるでしょう。
また変化する環境の中で、
いままで知らなかったことを知り、
自分は成長していき、考え方も変わっていくだろうし。

 

また、目標達成のモチベーション維持のためにも、
一ヶ月から長くて三ヶ月ぐらいで達成できるものがちょうどよいように思えます。

 

長期にわたる目標に関連して、
米国のLispプログラマーでエッセイスの
ポール・グレアム(Paul Graham)が、
ある高校の講演依頼を受けて準備したエッセイ
『知っておきたかったこと--- What You'll Wish You'd Known』
が非常に示唆に富んでいると思います。

What You'll Wish You'd Known

ちなみに、その高校のお偉いさん方が反対して、
結局ポール・グレアムの講演はキャンセルされたそうです。

 

 

今決して学ぶことが出来ない仕事っていうのもある。 今はまだ誰もやっていないような仕事だ。ぼくがこれまでの10年間でやってきた 仕事のほとんどは、ぼくが高校生の時には存在していなかった。 世界はどんどん変化しているし、変化のスピードも速くなってる。 こんな世界では、決まった計画を持つことはあまりうまくない。

 

それでも毎年5月になると、全国津々浦々の卒業式で決まりきった演説が 聞かれることになる。テーマはこうだ。「夢をあきらめるな。」 ぼくはその真意を知っているけれど、この表現は良いものじゃない。 だって、早いうちに計画を立ててそれに縛られることを暗示しているからね。 コンピュータの世界では、これに名前までついている。 「早すぎる最適化」というんだ。別の言葉で言い替えると「大失敗」ということだ。

 

 

この問題の解法は、反対側からやってみることだ。 ゴールを最初に決めてそこから逆算するんじゃなく、 より良さそうな状況に向けて少しづつ前に進んでゆくんだ。 成功した人の多くは実際にはそうやって成功したんだ

 

卒業演説方式では、きみはまず20年後にどうなりたいかを決めて、 次にそこに至るには今何をすればいい、と考える。 ぼくが提案するのは逆に、将来のことは一切決めないでおいて、 今ある選択肢を見て、良さそうな選択肢がより増えるものを選ぶってことだ。

 

時間を無駄にしてない限り、実際に何をするかってことはあまり問題じゃない。 面白いと思えて、選択肢が増えるものなら何でもいい。増えた選択肢のどれを 選ぶかなんて後で考えればいいんだ。

 

 

あまりに長期的な目標を立てると、その目標に縛られて、
そのときやるべきことに集中できなくなるということでしょう。
「早すぎる最適化」については
YAGNI(ヤグニ)という考え方につながるものがあると思います。

 

"You ain't gonna need it"、縮めてYAGNIとは、

機能は実際に必要となるまでは追加しないのがよいとする、

エクストリーム・プログラミングにおける原則である。

 

YAGNI原則を提唱する人々は、その理由として以下を挙げている。

 

後で使うだろうという予測の元に作ったものは、実際には10%程度しか使われない。したがって、それに費やした時間の90%は無駄になる。

 

余計な機能があると、仕事が遅くなり、リソースを浪費する。


予期しない変更に対しては、設計を単純にすることが備えとなる。そして、必要以上の機能を追加すると、設計が複雑になってしまう。

 

人生の時間は、貴重である。したがって、人間の能力は、ただコードを書くためではなく、現実の問題に集中するために使うべきである。

YAGNI - Wikipedia

 

 

 

「ゴールを最初に決めてそこから逆算するんじゃなく、
より良さそうな状況に向けて少しづつ前に進んでゆくんだ。」
とあるように、

長期的な目標を立ててそこから逆算して
今やるべきことを考えるのではなく、
今取りうる選択肢の中から
「良さそうな選択肢がより増えるものを選ぶ」べきであり、

「時間を無駄にしてない限り、実際に何をするかってことはあまり問題じゃない。
面白いと思えて、選択肢が増えるものなら何でもいい」
のです。

 

 

それはやはり初めに考えたように
日々、自分は成長していき、
考え方も変わっていくからです。

 

今その時点で自分が面白いと思える選択肢を選ぶこと。

 

これは、自分が満足できるのは未来ではなく、
今この瞬間だけであるからでしょう。

 

その一方で、良さそうな選択肢がより増えるものを選ぶこと。


今の自分では想像できない未来の自分が
面白いと思える選択肢を残すことが出来るからでしょう。


最後に、具体的に今、何を、どうするかについても述べています。

 

今、何を、どうやってすればいいかって?

まず興味の持てるプロジェクトを選ぶことだ。

ある分量の資料を研究するとか、 何かを作ってみるとか、何かの問題の答えを見つけてみるとか。

ひと月以内で終わらせられるようなプロジェクトがいい。

そして、ちゃんと終わらせられる手段があるようなものにする

少しは頑張らなくちゃならないようなものがいいけれど、ほんとうに少しだけでいい。 特に最初はね。

もし二つのプロジェクトのどっちを選ぶか迷ったら、 面白そうな方を選ぼう。失敗したら、もう一方を始めればいいんだ。

これを繰り返す。

そうすると次第に、ちょうど内燃機関みたいに、 このプロセスが自分で走り出すようになる。

一つのプロジェクトが次のプロジェクトを生み出すようになるんだ。

 

プロジェクトが君の将来目指すものにあまり関係なさそうだったとしても、 心配することはない。

目指すものに到達する道っていうのは、君が思うより ずっと大きく曲がりくねるものなんだ。

プロジェクトをやることで、道は伸びてゆくんだ。

一番大事なのは、わくわくして取り組むことだ。

そうすれば経験から学ぶことができるからだ。

 


具体的に今、何を、どうするかについて
まとめると

・今の自分が面白いと思うプロジェクトをすること
・ひと月ぐらいで終わらせられるようなプロジェクトがよい
・終わらせられる手段があるものにする
・少し頑張れば達成できそうなプロジェクトがよい

となります。

 

 

一つ目のプロジェクトが終わったころには、
次のプロジェクトを未来の自分が
そのときで面白いと思えるプロジェクトを
思いついてくれるでしょう。



 


『知っておきたかったこと--- What You'll Wish You'd Known』について

What You'll Wish You'd Known

Paul Graham, January 2005
Copyright 2005 by Paul Graham.


これは、Paul Graham:What You'll Wish You'd Known を、原著者の許可を得て翻訳・公開するものです。

<版権表示>
本和訳テキストの複製、変更、再配布は、この版権表示を残す限り、自由に行って結構です。
(「この版権表示」には上の文も含まれます。すなわち、再配布を禁止してはいけません)。
Copyright 2005 by Paul Graham
原文: http://www.paulgraham.com/hs.html
日本語訳:Shiro Kawai (shiro @ acm.org)
<版権表示終り>

Paul Graham氏のエッセイをまとめた『ハッカーと画家』の 邦訳版が出版されました。
出版社の案内ページ Amazon.co.jp サポートページ

2005/01/22 翻訳公開
2005/01/24 水落毅様より誤記の訂正を反映

 

 

 

おすすめ記事

【考察】オーキド博士はどのようにして博士号を取得し名誉教授になったのか? - ぺんぎん村での日々

【おすすめ】『ゼルダの伝説名作ランキング』を作ってみた - ぺんぎん村での日々

【名曲】おすすめの癒し系ゲームBGMをまとめてみた - ぺんぎん村での日々