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

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

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

読み終えるまで約3分

 

 

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

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

 

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

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

 

下の記事の続編です↓↓

 

chan-naru.hatenablog.com

 

 

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

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

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

  1. API設計の黄金律(No. 34)
  2. 超人の神話(No. 35)
  3. ハードワークは報われない(No. 36)

 

API設計の黄金律

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

APIを提供するときは、API自身のテストだけでなく、『APIを利用するコードのユニットテストも書く』。これを黄金律にするべし!」

ということです。

 

以下、要約です。

 

APIの設計は、特にその規模が大きいときに困難になります。

将来API変更を加えた際の影響について考慮する必要があるからです。

 

またその一方で、APIユーザがAPI開発側に与える影響についても考慮する必要があります。

例えば、ユーザがAPIのクラスを継承してサブクラスを作り、メソッドをオーバーライドする場合があるということです。

こうなると、API開発側は、そのメソッドに変更を加えることができなくなります。

 

このようにユーザの使い方によって、その後の開発側の内部実装に制約が加えられてしまうことがあるのです。

 

これを防ぐ方法の一つには、APIクラスをオーバーライドできないようにすることがあります。(Javaだとfinal宣言、C#だとsealed宣言など)

 

 

昨今、開発作業におけるユニットテストの重要性が高まっています。

上記のようにオーバーライドできないAPIを提供すると、APIになりすます方法がないためユニットテストが難しくなります。

「自分のコードがAPIクラスとどういうやりとりをしているか」、「テストに必要なAPIからの戻り値」がわからないとなりかねません。

 

このような状況が起きないように、APIを提供するときは、APIを利用するコードのユニットテストも書いておくようにしよう!

これにより、APIの利用者がユニットテストに際してどのような問題に直面するかを事前に検知できるのです。

 

 

②超人の神話

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

「『超人』と思われている技術者も人間であり、詳細な情報を与えられないと問題解決はできない。『超人』に聞けばすぐになんでも解決するとは思うな!」

ということです。

 

以下、要約です。

ソフトウェア業界で働く人なら、こんな質問受けたことはありませんか?

 

「○○○という例外が発生したんですが、何が問題なのでしょうか?」

 

質問をした人が、スタックトレースやエラーログを提示してくれたり、問題の起きた状況を詳細に説明してくれることなく、ただ質問だけ投げてくる場合が多々あります。

 

こんなとき、質問に適切に答えられるでしょうか?

一部のエキスパートや同じエラーに直面したことのある人を除き、答えられないでしょう。

 

多くの人が、情報や資料を持たない人に対して質問をし、まともな答えが返ってくることを期待してしまうのです。

『超人(身近な優秀な人)』に聞けば、すぐに解決する、と思っている人が多いのです。

しかし、『超人』も人間であり、適切な情報と知識がなければ返答できないでしょう。

 

 

『超人』は神話である。

エラーやバグで困って質問をする際は、その状況を事細かに説明する

これらを心がけましょう!

 

 

③ハードワークは報われない

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

「長時間働くことは、プログラマにとっては非効率であり、会社への貢献も薄い。仕事のできる人ほど働く時間が短いのが真のプログラマである。」

ということです。

 

以下、要約です。

 

長時間働いていると自分がプロジェクトに貢献しているような錯覚に陥る場合があります。

また、そのような人を見て「あいつは頑張っている!」と評価する人もいます。

しかし、彼らは本当にプロジェクトに貢献しているのでしょうか? 

 

 

プログラミング、ソフトウェア開発という仕事の特徴として、次のものがあります。

 

『取り組みながら絶えず学ぶことができる仕事である』

 

仕事をするほど問題領域についての理解は深まり、同じ目的を達成するために必要な労力、時間は減っていくのです。 

 

ただ、闇雲に働き続ければ仕事が効率化されるわけではなく、仕事が効率化されるように自己研鑽をし続ける必要があります。

そしてそれは仕事以外の時間で行うことが多いでしょう。

 

毎日夜まで残業し、休日出勤もバンバンする。

これでは仕事以外の時間なくなるはずです。

 

 

仕事には長い時間をかけず、集中して短時間で終わらせることを目指す。

より効率の良い働き方を常に探し続ける。

プロジェクトに貢献するとはそのようなことでしょう!

 

 

まとめ

APIを提供するときは、APIを利用するコードのユニットテストも書いておこう!

 

②質問をする際は、その質問の背景・理由・状況を丁寧に伝えましょうね!

 

③常に仕事を効率化して早く終わらせられるように試行錯誤しましょう!

これがプロジェクトに貢献することに繋がります!

 

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

書籍情報

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

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

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

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

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

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

【出版社】オーム社

【出版日】2010年12月

【ページ数】243ページ