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

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

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

読み終えるまで約3分

 

 

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

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

 

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

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

 

下の記事の続編です↓↓

chan-naru.hatenablog.com

 

 

 

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

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

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

  1. テストのないソフトウェア開発はあり得ない(No. 79)
  2. 1人より2人(No. 80)
  3. エラーがエラーを相殺してしまう(No. 81)
①テストのないソフトウェア開発はあり得ない

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

「テストをすることは、作るものに責任を持つことである!」

ということです。

 

以下、要約です。

建築・土木作業で建設する橋のような形のあるものを「テスト」するのは大変です。

「テスト」をするにはまず作る必要があり、しかし作るにはコストがかかり、一旦作ったものを壊したり作り直したりできないからです。

 

一方ソフトウェアの場合、「とりあえず作る」が橋に比べて圧倒的低コストで行えます。

また、「テスト」を容易に進める手法・ツールが数多く生み出されており、ユニットテスト、モックオブジェクト、テストハーネスなどはその例です。

他の分野では、まず実際のものを作って現実の環境下で「テスト」をしますが、ソフトウェアの場合は作りながら「テスト」する、「テスト」しながら作るということをします。

テストが品質保証のための第一手段なのです。

 

こう考えると、「テストなんてしている時間はない!」と言い放つマネージャは非常に困った存在ですね。

橋の建設をする技術者が、上司から「今回は構造解析しなくていいよ!なにしろ工期が迫っているからね」と言われることがあるでしょうか?笑

こう考えると「テストなんてしてられない」という人はとても無責任であることになります。

 

「テスト」をすることは、作るものに責任を持つということです。

「テスト」をすれば十分というわけでは決してありませんが、まず「テスト」をしないと話にならないというくらい「テスト」は重要なのです。

②1人より2人

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

プログラマは一匹狼の仕事ではなく、他者と協力して行う仕事である。」

ということです。

 

以下、要約です。

プログラミングには、1人でじっくり考えることが必要…プログラミングは1人で作業するというステレオタイプはそこから生まれたのでしょう。

そこから、プログラマは技術力が高ければOKである、と考えるひとも出るのでしょう。

しかし、実際は複数人で協力して何かを作り出すということが仕事であり、プログラマ同士の連携だけでなくプログラマでない人たち(例えばビジネスアナリスト、システムアナリスト、QA担当者、ユーザなど)との関係も密にするべきです。

 

つまり、プログラマはもはや、技術が優れてるだけでは十分でないのです。

 

プログラマをしていると、どうしても技術力を高めることに目が行きがちになります。

しかし、それだけではなく「どうやったら他者と協力して問題解決できるか」と考えるべきです。

 

プログラマとして他者と協力するアプローチの一つに、「ペアプログラミング」があります。

ぜひやってみてはいかがでしょうか?

お互いの学びになるし、何より1人では出せない解決策が出せる可能性があります。

③エラーがエラーを相殺してしまう

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

「複数のエラーがお互いを隠蔽してしまい、改修が非常に困難になる。このような状況があることを認識しよう。」

ということです。

 

以下、要約です。

コードは必ず書いた通りに動きます。

しかし、別の箇所で書いたことが矛盾している場合に思わぬ動きをする場合があります。

 

表面上起きてる問題は1つなのに、それに関わっているコードが2箇所ある場合、一つ一つ不具合を修正していくという方法で対処していくと問題が解決しない恐れがあります。

バグの報告を受けると、プログラマは原因となる箇所を見つけ出して修復し、テストをします。

バグの原因となっていたコードが元々2箇所だったとしたら、それでは問題は解決しないでしょう。

2つ目の不具合は修正されていないからです。

その場合は、最初の修正は一旦元に戻し、またコードを調べて別の不具合を探すことになるでしょう。

それで2つ目の不具合を見つけ出し、修正をしたとします。

しかし、1つ目の不具合の修正は元に戻っていますから、やはり問題は解決しません。

問題が解決しなければ、修正は元に戻されることになります。

これが何度か繰り返されることも多いですが、やがて人によっては、どちらの不具合も問題には関係ないとみなし、第3の不具合を探し始めることもあります。

しかし、それが見つかることは決してないのです。

(163ページより)

 

カオスです。

表面上1つに見える問題が2つのコードの相互作用で生じている場合は、原因箇所の特定が難しく袋小路に入ってしまうことが珍しくありません。

このような問題に「こうすればOK」という解決策はありません。

大切なのは、このような問題が起きうると認識した上でバグ修正作業に入るということでしょう。

 

まとめ

「テスト」超重要

プログラマは孤高の戦士ではなく、他者と協力して問題解決を行う仕事である!

③複数のエラーが重なってエラーが起きてるように見えなくなってしまう。エラーがエラーを相殺してしまう。それによってエラーの改修が困難になる状況があるのです。

 

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

書籍情報

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

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

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

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

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

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

【出版社】オーム社

【出版日】2010年12月

【ページ数】243ページ