【ちゃんなるぶろぐ】社会人1年生が日々の学びをアウトプット!

>>> 読書・遊び・プログラミング・アプリ開発などを通して学んだことを、文章という形で出力 <<<

5分でわかる!「プログラマが知るべき97のこと」その②③

読み終えるまで約5分

 

 

どうも、ちゃんなるです! 

今日も”デキる”プログラマになるべく勉強していきましょう!

 

今回は、次の書籍の一部を要約します。

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

 

下の記事の続編です↓↓

chan-naru.hatenablog.com

 

 

 

今回選択した3つのテーマ

本書はタイトル通り97のことについて書かれています。

今回は、67~69番目の項目についてまとめます。

  1. コードを読む(No. 67)
  2. 「人間」を知る(No. 68)
  3. 車輪の再発明の効用(No. 69)
①コードを読む

このテーマで述べられていたことは、

「プログラミングの技術力を高めるには、技術書を読むことも大切だが、一番良いのは、他人が書いたものでも自分の書いたものでも、とにかくコードを読むことである。」

ということです。

 

以下、要約です。

我々プログラマは、コードを書くのは大好きなのに、コードを読むのは嫌がる傾向にあります。

コードを書くのは楽しいのに、読むのは辛いと感じるのです。

特に辛いのは、他人の書いたコードを読むことで、それは他人のコードがひどいからではなく、思考や問題解決の方法が自分とは異なっているからです。

しかし、他人の書いたコードを読むことは、自分の成長につながります。

 

ある人が「完璧だ」と思うコードが、別の人からすると「読みにくい」と感じられるということは大いにあり得ます。

他人の書いたコードを読むことは、単に技術力を比較できるだけでなく、なぜそのように書くのかといった他者の観点を学ぶことができます。

 

また、過去の自分のコードを読むことも重要です。

書いた当時は「完璧だ」と思っていても、見返すと「ひどすぎる…」と思える恥ずかし瞬間も多いでしょう。

そこから今の自分の成長を実感することもできるでしょう。

 

プログラミングの技術を磨くなら、技術書を読むのもいいですが、やはりコードを読むということに注力するべきなのです。

②「人間」を知る

このテーマで述べられていたことは、

プログラマの思考とユーザの思考の仕方は異なっている。これを認識してソフトウェア開発に臨むことが大切である。」

ということです。

 

以下、要約です。

ソフトウェア開発は「人のビジネス」です。

ある人々がソフトウェアを作り、そのソフトウェアが他の人々の問題を解決するからです。

人は、人とともに、人のためにソフトウェアを開発するということです。

 

人のためにソフトウェアを作るならば、ソフトウェアを良質なものにするためには、人についてよく知る必要があります。

そのためには哲学を学ぶことも重要といえます。

例えば、ルートヴィヒ・ウィトゲンシュタインの著書哲学探究、ジョージ・レイコフとマーク・ジョンソンの著書『レトリックと人生』マルティン・ハイデガーの著書存在と時間のような人間に関して行った考察をまとめたものを参照するのも良いでしょう。

 

人がお互いに理解し合うには、『定義の共有』ではなく、『経験の共有』が必要です。

生きてく中で得た経験に共通する部分がないと理解し合えないということです。

 

我々プログラマは、システムを構築する際にユーザに要望を尋ねます。

ユーザの話を聞いて、要求を明確な定義をもとにカテゴリー分けするのです。

しかし、困ったことに生物としての人は、元来そのように世界を認識していません。

人間は、『例』に基づいて物事を理解します。

『例』がなく、ただ『定義』だけが渡されても、理解に苦しむのです。

 

明確な『定義』を求める限り、私たちはユーザに対して妥当な問いを発することができません。

その考え方が、ユーザの捉え方と相容れないと認識し、ユーザと共通理解を得るためにどうすればいいかを考えていきましょう。

車輪の再発明の効用

このテーマで述べられていたことは、

車輪の再発明は、プログラマが学び、技術を高める上で非常に重要なことである。」

ということです。

 

以下、要約です。

新たにコードを書くより既存の資産を再利用した方が効率が良いので、車輪の再発明は敬遠されます。

既存の資産のコードは、厳しいテストを潜り抜け、製品として役立ってきた実績があるコードが多いです。

あえて車輪の再発明するとしたら、それなりの理由が必要とされるでしょう。

 

世の中には素晴らしい技術やそのコードが出回っています。

OSSやソフトウェア開発パターン・設計について書かれた技術書などです。

多くの人はそれら資産を探してきて、適切な場所にはめ込むだけで済ませるでしょう。

 

既に存在するコードを流用するのと、自分でゼロからソフトウェアを設計、テスト、バグ修正して品質を向上させていくのはまるで違います。

ソフトウェアの核となる部分を自ら実装する機会を持つプログラマはわずかです。

そして、普通の開発者はこれらの部分が現実にどのように機能しているのかを詳しく知ることができません。

どう動いているかわからず、神秘的なブラックボックスとみなし、結果を利用するしか無くなっているのです。

 

車輪の再発明をしようとして失敗することもあるでしょう。

しかし、自分の手を動かしてゼロからコードを書いて試行錯誤することを通して得る学び・経験は貴重なものです。

試行錯誤している間は、悔しかったり嬉しかったり感情が動くので、記憶に定着しやすいです。

 

優れたプログラマになるには経験を積むことがどうしても必要です。

車輪の再発明は、プログラマが学び、技術を高める上で非常に重要なことです。

ただ周りの人に「車輪の再発明は無駄だ」と言われたことを鵜呑みにせず、自分の頭で考えて行動するべきでしょう。

 

 

まとめ

①コードは書くだけでなく、読むことも積極的に行おう!読むことで得られる学びがたくさんあります!

プログラマとしての人間の思考』『ユーザとしての人間の思考』の仕方は異なっていると認識しましょう!
そして、人間について学んでみることが重要です。

③敬遠されがちな車輪の再発明も、プログラマ技術向上としては取るべき手段の一つになり得るのです!そのメリットを認識しましょう!

 

*より深く知りたい方は、ぜひ本書を手にとってみてください!

書籍情報

プログラマが知るべき97のこと [ ケブリン・ヘニー ]

価格:2,090円
(2021/5/13 11:12時点)
感想(1件)

【中古】 プログラマが知るべき97のこと /ケブリンヘニー【編】,和田卓人【監修】,夏目大【訳】 【中古】afb

価格:825円
(2021/5/13 11:12時点)
感想(0件)

【書籍名】プログラマが知るべき97のこと

【著者名】ケブリン・へニー、夏目大(訳)

【出版社】オーム社

【出版日】2010年12月

【ページ数】243ページ