今回はタイトルにある通りなんですが、2ちゃんねる開設者のひろゆき氏が書いた「プログラマーは世界をどう見ているのか」を読んだので、まだ読んでいない人のために、ざっくりと要約していきながら、感想とレビューをしていこうと思います。
先に解説しておくと、別にプログラマーだろうが、文系の人であろうが、一度読んでおくと見えてくる世界が変わるかなっていう風に思います。
僕自身も結構プログラミングをしたりしますが、プログラミングをする前と後じゃ、世の中の見え方とか捉え方って全く異なるんですよね。
それが、かなりハイレベルでプログラミングを行ってきてニコニコ動画や2ちゃんねるなどの経験ある熟練者のひろゆき氏が見えている世界観を本書では語っているので、一度見ておいて損はない本なんじゃないかなっていう風に思います。
別にひろゆき氏がめちゃくちゃすきだとか、信者的だっていうことは全くないんですが、個人的には、結構おすすめできるなっていう風には思いますね。
あらすじと要約
じゃあさっそく。
このプログラマーは世界をどう見ているのかっていう本をまだ読んでいない人のために、どんなことが描かれているのか、ざっくりと要約していくと。
本書の冒頭部分で「プログラマーの価値」ということが開設されます。
現在世界的な大富豪と呼ばれる人の大半がプログラマー出身だったりします。
アマゾンのジェフベゾス。
Googleのラリーペイジ。
テスラのイーロンマスク。
METAのマークザッカーバーグ。
オラクルのラリーエリソン。
これらの人は世界長者番付に常連で名を連ねている面々ですが、すべてプログラミング出身です。
そしてもう一つ注目しておきたいのは、継続してIT企業を経営している人もいますが、別の分野でも成功している人も多くいます。
代表的なのは、イーロンマスク。
イーロンマスクはもともとペイパルという決済サービスで起業し、その会社をバイアウトしたお金を元に、テスラやスペースXなどを立ち上げています。
自動車産業や宇宙事業などを手掛けているイーロンマスクは、元々プログラミング出身でありながら、そこから多岐にわたる事業を手掛けて、成功しているわけです。
それはひとえに”プログラミング思考”があったからと言えるわけですね。
だからこそ、冒頭で伝えた通り「プログラミングの仕事をしていなくても、文系の人であっても、一読する価値はある」っていう風に伝えたんですね。
当然そのほかの経営者も、創業時はプログラミングをしていたとしても、今は現場でプログラミングをしている人はほとんどおらず「経営」という仕事に従事しているわけです。
その経営という別の業種になったうえで、現在も成長を遂げているわけですから、本質として大切なのはプログラミングスキルというわけではなく、プログラミングをするうえで培った「考え方」だという風に言えるわけですね。
このプログラミングによる考え方の重要性というのが、「プログラマーは世界をどう見ているのか」の冒頭で描かれるわけですが、では実際にどのように物事をとらえているのか。
部分的にピックアップしていくと。
外的要因を言い訳にしない、ということがあげられます。
内的要因っていうのは、要するに「自分の問題」であって、外的要因とは「自分以外の問題」のことを指します。
上司や環境、職場やその周りというのは、すべて外的要因なわけですが、外的要因っていうのは「自分では変えられないもの」という性質があります。
自分では変えられないものに注目するのではなく、自分で変えられる範囲=内的要因に原因を探ろうとしているんですね。
よくいう「他人は変えられないが、自分は変えられる」
そのことをプログラマーは熟知しているわけです。
というのも、プログラマーというのは「自分が出した指示」をもって、コンピューターを動かしていきます。
ただ、適切に動かなかった場合、コンピューターが悪いのか?というと絶対的にそうではなく、自分が書いたコードに絶対の原因があるわけです。
つまり思考の順番がうまくいかなかったときに、まず自分を疑うということから入ります。
周りや環境といったことを言い訳に使うのではなく、変えられる自分自身を疑い自分(=コード)を変える。
その思考があるからこそ、ドンドンと自分を向上させることにつながっているわけです。
次いで問題解決能力。
これもプログラマーは独特の見方をしていますし、プログラマーであるがゆえに、大きく養われている能力でもあったりします。
というのも、問題が引きおこったときに、コード上ではほとんどのことが解決可能です。
実際にプログラミングをやっていれば分かるのですが、一見することできそうにないことでも、2段階3段階と順番を隔てるとできるようになることが大いにあります。
マトリックスの世界でもありましたが、コード上において、その世界というのは自分の思い通りに描けるわけです。
そうなってきたときに、「どのようにして問題を解決するか?」「どのようにすればもっとシンプルに描けるか」
という思考に多くの時間を巡らせます。
実はプログラマーというのは、コードを書いている時間よりも、試行している時間の方が長いわけです。
解決までの道筋さえ見えてしまえば、それを具体化させればいいので、さほど時間はかからないぐらいで、思考する時間=問題をどう解決するのか?に大半の時間を割いていたりするわけです。
ただ、一方で現実世界においては「変えられないこと」の方が多くあるわけです。
「変えられない」ということが当たり前になっていくと、当然思考を停止させます。
思考を停止させた結果、変えられるものまで、変えられないと思い込んでしまって、行動しなくなっていってしまう。
「どうすれば解決できるのか?」ということを常に頭で考えているからこそ、どんな問題にも冷静に対処できるわけです。
次いで「最小単位に分ける」という考え方。
プログラミングというのは、皆が考えている以上に「明確かつ具体的」であることが求められます。
分かりやすい例で言えば、じゃんけんをするプログラムを書くとしたとき、プログラム経験がなければ「自分と相手」との2人が、「ぐーか、ちょきか、ぱー」を出せばいいと考えているわけです。
つまり、「自分:ぐーorぱーorちょき」、「相手:ぐーorぱーorちょき」ということなので、2(自分と相手)×3(ぐー、ちょき、ぱー)=6のパターンを用意すれば、じゃんけんができるっていう風に考えるんですね。
でも実際にはそうではなく。
マシン言語なんかはそうですが、グーを出したということは、パーとチョキが出ていないということまで、指示してあげなくてはいけません。
マシン言語では、0と1とで判断するわけですが、グーを出したら1を明記するのと同時に、パーとチョキが出ていないということを0と明記してあげなくてはいけない。
つまり、プログラミング上でのパターンでいえば、2×3×3=18パターン必要なわけです。
まあこれはわかりやすく簡素化させた例なので、もっと複雑ではありますが、何が言いたいのかっていうと「具体的かつ明確」に本当に細かいところまで指示を出さないと、コンピューターは理解できないということをプログラマーは理解しているっていうことなんですね。
一方人間というのは、本当にアバウトなことであっても、忖度を行い理解をしてくれます。
じゃんけんやろうといえば、ほとんど理解できるし、明記してなくてもプレイできる。
そういえば、めちゃくちゃ融通の利く生き物だなと感じるわけですが、それによって色々な弊害も同時に起こってきます。
例えば、上司からの指示なんかがそうです。
「ライバルの会社を調べといて」
と上司から指示があったときに、経験がある人や優秀な人は、上司からたったこれだけの指示を受けただけでも、十分なリサーチをしてくれるでしょう。
でもそれが新入社員だったら?
ほとんど、まったく意味のなりリサーチが上がってくる、もしくは「何を調べたらいいんだろう」と、手が止まってしまうでしょう。
でもそれが「ライバル会社の前年の売り上げと業界全体のシェアが何%か調べといて」と言われたら、新入社員でもベテランでも同じ結果を調べ、報告してくれるでしょう。
どちらの方が、親切かつ適切かどうかは明確です。
プログラマーは「すべてを明確に指示しないと動かないコンピューター」を相手にしているので、具体的でわかりやすい指示だしができるわけです。
感想とレビュー
ってな感じで、「プログラマーは世界をどう見ているのか」をざっくりと概要を要約してきたわけですが、当然ながら全部を紹介はできないので、気になる人は手に取って読んでみてください。
ここから、このひろゆき氏「プログラマーは世界をどう見ているのか」を読んだ感想とレビューを伝えていこうかなって思うわけですが、本当にプログラミングをしていると、めちゃくちゃわかる内容が詰まっています。
僕自身、幼少期からパソコンに触っていたわけじゃなく、社会人になってから初めてパソコンを買い始めました。
その上でプログラミングをやるようになるのはもっと後の話です。
そうして自分の人生を振り返ると、本当にもっと早くからプログラミングに触れておくべきだったなっていう風に思います。
これは決して「プログラミングスキル」の有無を言っているんじゃなくって、思考のことなんですよね。
よく自己啓発なんかで「思考は現実化する」なんて言ったりしますが、これの是非はおいておいて、言語が思考を作るっていうのはあると思います。
その上でプログラミング言語といわれるぐらいなので、プログラミングも言語なんですよね。
言語が思考を作るっていう点では通ずるところがある。
コードを書いて正常に動かなければ、それはすべて自分の責任。
すべて自分の責任だからこそ、どうにかしようと思える。
そこに少しでも外的要因が加わるのであれば、それは自分が努力しても変えられない可能性も十分に秘めてしまっている。
仮に「雨を止めたい」って思って、それは変えられないものなので、雨をどうこうしようとは思えない。
でも目の前にある問題は、すべて自分の行動によって変えられる。
コードやプログラミング上では、自分自身のすべてに原因と結果があるわけです。
そう考えると思考の癖っていうのは、すごく習慣化するし「どこが自分の範囲で、どう改善を図ろう」という考えにすぐに至る。
それはコードを変えたら結果が変わるように、行動を変えたら結果が変わることを知っているから。
あと、プログラミングをする前と後とで、本当に衝撃だったのは「ここまで明確にしないと理解できないのか」ということ。
ある程度絞って指示を出しても、全然記入漏れがあって「そんなエラーになる?」っていうことが往々にしてあります。
要するに僕ら人間は「いかに抽象的な概念の元生きているのか」ということを痛感させられるし、その反面人間っていうのは優秀だなとも思うわけです。
ただ、優秀である反面、人間というのは「明確な目標」がなければアクション出来ないことも研究によって証明されていたりします。
だからこそ、行動を具体的かつ明確にする癖っていうのは、自分自身を行動させるうえでは、すごく役に立つツールだったりするわけです。
仕事場に行ったら、パソコンを開いてメールをチェックしたのち、開発環境を開いて、ログイン関係のクラスとメソッドを作るところから始める。
そんな風に一日の初めを明確にすれば、仕事を始めるのがスムーズになる。
デスクについてから「今日は何をやるっけ?」と考える人よりもはるかに効率的なわけです。
昨今ではchatGPTなどのAIが登場していて、プログラミングなどの職業が無くなるという噂もあったりします。
実際にchatGPTを使えば、はるかに簡単に正確なコードが出てきたりする。
ただ、現状まだエラーを吐き出すコードをchatGPTは教えたりするし、そのエラーに対応するためには多少なり知識がなくちゃいけない。
何よりコードということはAIに置き換わってもchatGPTに指示を出すコマンドプロンプトなんかも、必要であったりするので、「プログラミング思考」という重要性は変わらないわけです。
そういう意味で今読んでも面白いなと感じるし、実際にプログラミング思考を後天的に身に着けた側からすると、ほんとにあってよかったなって感じます。
そういう意味でも本書はオススメ出来るかなって思うんですよね。
ぜひ参考にどうぞ。