Techなニートが世界を救う

ニート生活を満喫しているTech芸人が世界を救います

「プログラマー」が知っている!たった一つの論理的思考

f:id:gaku3601:20161009210128j:plain

Gakuです。
みなさん、「論理的思考」でものごとを考えれていますか?
「論理的思考」は様々なところで私たちを救ってくれます。

しかし、「論理的思考といっても、どう考えればいいの?」という方も少なくありません。
今回は「プログラマー」なら誰しもがやっている「論理的思考」について書かせて頂きたいと思います。

プログラマーなら知っている!たった一つの論理的思考

それは「くじら千分法」です。

「くじら千分法?何それ?」

という方に説明しますと、大きなクジラを一人でかつ一日で食べることはできませんよね?
それなら、クジラを1000等分して毎日少しずつ食べれば「いつか」食べ終えることができる。という有名な言葉です。

プログラマーの場合、この考えができないとプログラムを書き終えることができません
例えば、「炊飯器」をプログラムする場合を考えます。主な「炊飯器」の機能はこんなところでしょうか?

【炊飯器】  
[メイン機能]  
・お米を炊く  
[サブ機能]  
・タイマー機能  
・早炊き機能  
・おこげ機能  
etc...  

まぁ、これだけでも良いのですが、もっと細分化しないとプログラムは書けないので更に細分化します。

【お米を炊く】  
1. 炊飯器に入っているお米の重さを計測する  
2. 1で計測した重さから最適なお米を炊く時間を算出する  
3. 1で計測した重さから最適なお米を炊く温度を算出する  
4. 2と3で算出した結果を元に実際にお米を炊き出す  
5. 炊き終わり時間を炊飯器の表示パネルに出力する  
6. 米が炊き終わったら「音」で炊き終わりをお知らせする  
etc...  

と、まぁ、単に【お米を炊く】といっても、ざっと考えるだけでこれだけのことを考え、プログラミングしないといけません。
このタスクの細分化能力をプログラマーは持っています。
初心者プログラマーさんに「お米を炊く機能作って」と言ってもひたすら悩んでしまいます。
そのため在職中に後輩にプログラミングを教える際は、「お米を炊く機能」を作るためにはどういったStepが必要か、その点を一緒に考えてから作ってもらうようにしていました。

このStepを踏むだけでプログラミング初心者の方でも、結構な割合でちゃんとしたものを作れるようになるから驚きです。

「くじら千分法」は様々なタスクで活用できる

この「くじら千分法」、プログラミングだけでなく様々なタスクで活用できます。
単純なタスクではあまり効果を発揮しませんが、ある程度メンバーが必要な大きなタスクで効果テキメンです。

要はタスクの見える化ですね。

このタスクを消化するためには何をしなければいけないか。これをひたすら考えます。
タスクをできる限り細分化することでスケジュールの見積りも可能ですし、タスクの振り分けも可能になります。

おわりに

この考えは何をするにも役立ちます。
学生時代、論文を書くことが何度かあったのですが、この「くじら千分法」が非常に役立ちました。
「めんどうだな~」と思う前に、まず目次だけ決定してしまえばいいのです。そうすれば、あとは目次に沿って書くだけです。
こうすることで「終わり」が見えるので、心理的な負荷が低減し楽に作業することができます。

本を書く時とかにでも有効な手段かもしれませんね。

「何かやりたいな~。これやらないとな~」と考えている方は、この「くじら千分法」に沿ってものごとを考えてみれば解決するかもしれませんよ。