３年目Webアプリエンジニアが、きのこ本を読んだ個人的な所感

# ３年目Webアプリエンジニアが、きのこ本を読んだ個人的な所感

## はじめに
都内在住、社会人歴・プログラマ歴３年目です。
主にWebアプリケーションを作成しております。

３年目になって色々と技術本も読んできたのですが、アウトプットが大事だと再認識したためアウトプットの意味も込めて投稿します。

## きのこ本を読みました。
きのこ本を読みました。
[プログラマが知るべき97のこと](https://www.oreilly.co.jp/books/9784873114798/)

最初、`きのこ本`と聞いた時なんのことかなと思ったのですが、

プログラマが知るべ**き**９７**のこ**と

で`きのこ本`なんですね。（違っていたらごめんなさい）

個人的に心に残った言葉を中心にまとめています。


## 所感
### [05]美はシンプルさに宿る
シンプルって美しいですよね。

ソースコードにおいても、可読性、保守性があるソースは美しいという感情が芽生えます。
そういうソースコードを書けるように、普段から意識してコード設計をしましょうということですね。
精進いたします・・・

また、これを見て思い出したのがHTTPですね、
HTTPはシンプルでかつ、美しい。
今年の5月頃なのですが、HTTPの基礎を勉強しました。
~~３年目にしてやっとかよ~~
その時に改めて知ったのですが、リクエスト時のメソッドって８つなんですよね。
数十年前に作られたものなのに凄いなと思いつつ、シンプルだなと感じたのを覚えています。

**超絶余談**
私はヒーロー物が大好きです。
その中でも[初代ウルトラマン](http://m-78.jp/ultraheroes/)はとても美しいと思っています。
それはやはり、初代ウルトラマンのデザインが、HTTPと同じくシンプルだからなのでしょうね。
初代ウルトラマンがシンプル故に、続くウルトラマンシリーズは基本的に、この初代ウルトラマンに角（正式にはアイスラッガー、ウルトラホーン）を付けたり、鎧を着せたり、紫や青、黒などの色を加えたりしています。
初代ウルトラマンが究極なシンプルだったからこそ、そのあとの派生キャラクターが作りやすいのかなと思っております。


### [18]学び続ける姿勢
プログラマとして凄い大切な要素だと思っております。
私自身１年目の時は、「休日まで仕事の勉強なんてしていられるか」という人間でした。
それが変わったのは、とある時期にアサインされたプロジェクトの影響です。
そのプロジェクトでは進捗報告の時にLTが求められたんです。
昨日、学んだことは何か？業務時間内でハマったこと、どう解決したか？興味がある技術系ニュースは？
これが毎朝求められるんですから、自然と技術に触る癖がつきました。

今では、休日何もない日は家に引きこもって技術を触ってます。
平日は早起きして毎朝カフェで１時間、お昼休みに１時間、定時で帰れる日は帰宅後も勉強するように頑張って時間を捻出しています。

技術系のコミュニティにも積極的に参加するようになりました。
大学時代の友人、会社の同期、先輩、後輩、インド人など技術系のコミュニティは拡大していく一方です。
そんな彼らと一緒にいれることで、私も学び続ける姿勢を維持できているのかなと思っております。

### [25]見られて恥ずかしいデータは使わないこと
これはクスッとしてしまいました。
心当たりがあったからです。
テスト用だからといってテストユーザに土屋太鳳と名前をつけて、会社の同期の女子にドン引きとかされたくないですよね（白目）

### [26]文化も学ぶ
私の母国語は`Java`です。
訳：初めて本格的に学んだ言語は`Java`です
本当は物心つく前（学生時代）に`C+`か`C#`を触ったのですがコピペばっかだったので覚えてないです。

その時は、言語に文化があるなんて考えもしなかった。

`Java`の後、`PHP`、`Ruby`を学びました。
`PHP`は最初プログラム言語ではなく、Webを作るためのツールだったんですね。
だからこそバージョンが上がるたびに、オブジェクト指向が取り入れられたり、例外処理が入ったり、他のプログラム言語に近づこうとしている（ような気がします）。

`Ruby`は、`Java`、`PHP`に比べて圧倒的に書きやすいんですよね（すごい個人的な意見）
`Hello world`なんて、`p`で終わってしまう。
`Ruby`はこれからも付き合っていきたいと思える言語。
もっと深く、深く潜り込んでいきたいです。

言語がなぜ生まれたのか？どのような思想で作られているのか？などの背景を知ることで、よりプログラムを知ることができるなと思っております。


### [27]死ぬはずのプログラムを無理に生かしておいてはいけない
最近の私がプログラムするとき意識していることです。
少しでも変な動作を行うプログラムがあったら、中途半端に生かすよりも落としたほうがいい。
落とすといってもしっかりログを出す後処理を行ったり、適切なエラーとして返しましょう。
中途半端に動くプログラムを続けたところでいいことなんて何もないですよね。

こういうこと考えると`PHP`のメソッドに渡す変数の数を間違った時`null`で返ってくる仕様が違和感ありすぎてもう・・・
中途半端に`null`を返すなら落として欲しい。。。


### [36]ハードワークは報われない
残業という時間で日々の仕事の足りない時間をカバーするのではなく、CIを導入したり、創意工夫を行ったりしたほうがプロジェクトにとってもいいですよねというお話ですかね。

オフィスに残れば残るだけ「頑張った感」が出る。
その一時の「頑張った感」に酔いしれるか、残業せずに定時に上がり将来的に自分の単価を上げるための活動をするかの違いなのかなと思っています。

もっと勉強、効率化を行って残業代ではなく単価で稼げるようなプログラマ目指します。


### [64]プロのプログラマとは
考えさせられてしまいますね。

エッセイによると、プロのプログラマとは、
> プロフェッショナルなプログラマの最大の特徴は「自分が責任を取る」という態度、責任感です

と書いてあります。

上記もそうだと思いますが、個人的にはプロのプログラマとは`技術に対する姿勢`のことなのかなと思います。

プロでもバグを仕込む時があります。
プロでもイケてない設計をしてしまう時もあるはずです。

それは仕方がない。
自分の力不足を認識した上で、常に改める姿勢を持っているかが大事なのだと私は考えます。

バグが起きた時の素早い対応、バグが入らないように普段からの努力、取り組みが大事。
イケてない設計をしないために、どのような知識が必要なのかを休日に勉強することが大事。

これはプロの定義として逃げの意見ですかね？

１年目の頃の上司によくプロとしての姿勢を、イチローに例えて説明していただきました。
プロとしての代名詞であるイチローだって、三振をする時はあるでしょう。
（イチローの三振率の低さに怯えていますが・・・）
三振しないために、きっと試合以外のところで素振りなどの練習をしているはずです。
その素振りは私たちにとって何に値するのでしょうか。

私は普段からの`技術に対する姿勢`なのかなと思っております。

プログラマのプロはプロフェッショナルのプロでもありたい。
アマチュアなプログラマはアマグラマですね（意味不明）


### [66]いったんコンピュータから離れてみる
新人の時からなんども経験しているのですが、「良いコード」が思いつくのってパソコンの前じゃないんですよね。
私はお風呂はいっている時、就寝前、夢の中、朝の散歩の時間などに思いつきますw


## まとめ
きのこ本めちゃくちゃいいじゃないですか！
私的にはリーダブルコードと並んで、プログラマが読んでおくべき一冊なんだろうなと思いました。
社内の貸出し図書というわけでなく、バイブルとして一冊常に手が届く範囲に置いておきたい。