こんにちは、NFR(@NFRlog)です。
新卒プログラマーの皆さん、地獄へようこそ 楽しい世界へようこそ。
そろそろ新人研修も終わり、OJTがはじまるころだと思います。
もしかしたら裸一貫で現場に飛ばされた人も居るかもしれません、ご愁傷様です。
今回は、そんなピカピカ一年生の皆さんに
これだけは絶対読んどけ!仕事しやすくなるぞ!!
とおすすめできる技術書を3冊紹介します。
「おすすめの技術書20選!」とかまとめてる所もあるけど、そんなたくさん読めないでしょ。僕も読む気ない。
なので、今回紹介する3冊は、
現場でバリバリ働いている現役プログラマーとして本当におすすめする3冊
となっております。
稟議書提出して会社に買ってもらうも良し、自分で買って読みつぶすも良し。
筆者について
まず簡単に僕の経歴について勝手に語ります。興味ない人は読み流してね。
僕は現在8年目のWEBプログラマーで、現在はPHP(Lalavel, CakePHP)をメインに扱ってます。
今まで触ってきた言語はJava, COBOL, RPGで、PHPやJavaに付随しているようなHTML, css, js, SQL(MySQL)なんかも一通り扱ってます。
設計から保守、最近だとコードレビューやら後輩育成なんかも任されているような社内の何でも屋って感じでしょうか。
インフラ系や組み込み系は門外漢ですが、これから挙げる技術書はあらゆるプログラマーにとって良書となる存在だと思います。
お前らもコーディングするだろ?class作ったり変数いじるだろ?じゃあ読めよ!!!
技術書を薦める理由
プログラマーとしての脳を作るため
技術書読めよ!!と言う大きな理由として、
プログラマーとしての脳を作れるから
です。
新人研修の時は、初心者に合わせた説明や段取りがあったと思います。
が、
お前ら現場がそんな優しい甘ったれた世界だと思うなよ!!
気を抜いたら自分が何もわからない事しか分からなくなるぞ。
コーディング中の無駄な時間を減らすため
我々凡人プログラマーは頭を悩ませ考えて考えてコーディングし続ける運命にありますが、
そんな中で何から何まで悩んでいたら時間が無くなります。
新人の頃は特に悩むことが多くなると思います。
不要な事で悩んでいる時間を減らせば、その分コーディングの効率が良くなります。
コーディングの効率が良くなれば早くコーディングが終わるかもしれません。
もしコーディングが早く終われば、早く帰れるかもしれません。
そんな不要な事で悩まなくて済むための知識、ノウハウを身に着けるために技術書が良いわけです。
まぁ、いつコーディングが終わっても大抵は足を引っ張っているメンバーのサポートに回されて無駄に疲れるだけですけどね。
トレーナーがどーしようもない人間だった時の保険
OJTがある企業なら、新人プログラマーのうちはトレーナー(先輩)の元で実務経験を積んで成長できますが、
議事録を書いたら句読点の位置で文句を言い、
設計書を作ったらバランスが悪いからやり直せと言い、(そもそも設計書のバランスって何…?)
ggっても分からない事があったから聞いたのに「調べ方が悪いんだやり直せくだらない事で俺に質問するな」と宣うような、
尊敬するに値しない、こちらを潰そうとしてくるどーしようもない人間がトレーナーになってしまう事もあります。
そういった時、技術書が素晴らしい先輩になってくれるわけです。
オススメの技術書
イラスト図解式 この一冊で全部わかるWeb技術の基本
イラスト図解式 この一冊で全部わかるWeb技術の基本 はWEBプログラマーなら必読
URL, ドメイン, サーバー, セッション, API …
プログラマーとして働いていると様々な単語を耳にすると思います。
聞き馴染みのない単語が多いと思いますが、
どれもこれもプログラムを動かすうえで大事なものです。
URLを叩くとどんな流れでシステムが動くのか や、
セッションが切れたとか言ってるけどそもそもセッションって何? のような
WEBアプリを開発するうえで必要な知識が分かりやすく説明されています。
イラスト図解式 という名前の通り、イラストや図が多く載っているので直感的に理解できると思います。
「開発者」としての知識を増やすと話についていける
お客様との打ち合わせや、チームミーティングなどでシステムについての話を聞く機会が多いと思いますが、
知識が無いと話についていけず、まるで異国に来たように思えてしまいます。
何となく話を理解してもいい事は何もないです。
分からない単語をメモして後で調べる?
ミーティングが終わった後に先輩に要点を聞く?
時間のムダだろ!!コーディングをしたまえよコーディングを!!!
という事で、イラスト図解式 この一冊で全部わかるWeb技術の基本に載っている用語を覚えておくことで、
相手の言っていることが理解でき、話にもついていけて、ムダな時間を作らずコーディングに集中できます。やったね
イラスト図解式 この一冊で全部わかるWeb技術の基本 で覚えて欲しい事
- 本書に書かれている事全部
雑?無責任?ごめんよ。
でも少なくともWEBプログラマーなら、
- そもそもWebとは何なのか
- HTTPリクエスト/HTTPレスポンスの中身
- Webアプリと切り離せないHTML(とその周辺)
- Webプログラマーなら覚えなければ話にならないMVCモデルやフレームワーク などなど…
最初に知っておくべき必須情報がほとんど網羅されています。
新人研修でも教えてもらったかもしれませんが、+αの知識が身に付くはずです。
イラスト図解式 この一冊で全部わかるWeb技術の基本 を読んで同僚たちと差を付けろ!
注意点
イラスト図解式 この一冊で全部わかるWeb技術の基本が出版されたのは2017年なので、
ちょっと時代遅れ感のある項目もあります。
Webサイトではhttps化が加速している! なんて書かれてますが今じゃhttpsじゃない方が珍しいわけで。
あとは、1つ1つの事を深堀しようとすると本書だけでは情報不足なのでご注意を。
あくまでもWebにかかわる技術を分かりやすく網羅しているだけなので、
さらに知りたい場合はより専門的な技術書を読もうな!稟議出して会社に買ってもらえばタダだぞ!
とはいえ、最初は本書を読み込んで知識をインプットするだけで十分。入り口を知る事が大事。
リーダブルコード
分かりやすいコードを書くためのみちしるべ
本当にオススメ。必読。コーディング中の無駄な時間を減らすためにマストな1冊。
読んでくださいお願いします。なんなら僕が買いますから。読めよ。
読まないとお前の夢に出て朗読してやるぞ。
基本的に1つの案件、1つのプロジェクトにプログラマーは複数いると思います。
しかしみんなで1つの画面を見ながらコーディングするのではなく、1人1人がそれぞれコーディングするわけで。
そこで大切になるのが分かりやすい(読みやすい)コードを書くことです。
最初は何が分かりやすく、何が分かりにくいのかすら分からないと思いますが、
そんな時のみちしるべとなるのがリーダブルコードです。
分かりやすい(読みやすい)コードの重要性
コードレビューするとき、バグ修正するとき、改修するとき、
それらの難度を下げるのがコードの分かりやすさです。
あなたが書いたコードでもバグ修正や改修するのは他のプログラマーかもしれません。
コードが分かりにくく、バグ修正や改修難度が高いと新たなバグを出してしまうかもしれないし、
そもそもコードを書き換えるのに時間がかかってしまい効率が悪いです。
何より汚いコードは読むだけで疲れるしイライラする。
ワンライナーで書くことが格好良いとか思うんじゃねえよ!
$sumってなんの合計だよ!
getStatus();って何のステータスを取得してんだよ!!!
まぁ、色々書きましたが、分かりやすいコードは他のプログラマーへの思いやり、プロジェクトへの誠実さとか思ってくれて結構です。
まだピンと来ていなくても
実際に酷いコードを見ることで、分かりやすいコードを書く大切さが「言葉」でなく「心」で理解できるはずです。
リーダブルコード で覚えて欲しい事
- 分かりやすい変数や関数の命名方法
- コメントを書く重要性と、適切な書き方
- 分かりやすいコードを書くための考え
本書は大きくⅠ~Ⅳ部に分かれて構成されていますが、
まずはⅠ、Ⅱ部だけ読んで知識として落とし込みましょう。
最初に覚えて欲しい、いつまでも覚えていて欲しい事はここに詰まっています。
我々はこの先数えきれないほどの変数を書き、関数を作り、処理をくみ上げるわけですが、
その根本部分を分かりやすく丁寧に、時々面白く教えてくれます。
リーダブルコード は2年後、5年後にも読んで欲しい
先ほど、まずはⅠ、Ⅱ部だけ読めと書きましたが、
プログラマーとして成長したなと思ったらぜひその先も読んでください。
出来ればⅠ、Ⅱ部も読み直しましょ。
最初読んだときぼんやりとしか想像できなかったことがハッキリと理解できるかもしれないし、
新たな気づきが生まれるかもしれません。
僕もこの記事を書くために久しぶりにリーダブルコードを読みましたが、
コードレビューをする際に持つべき視点が新たに理解できました。
2年後、5年後だけでなく、プログラマーとしてステップアップした時、
初心に戻りつつ、新たな発見を求めてリーダブルコードを読むことをおすすめします。
注意点
リーダブルコード内で紹介されているコードは様々な言語で書かれています。
C+で例を挙げていたのに、次の項目ではJavaのコードが書いてあった、ページめくったらjsだった。
みたいな感じで節操なく様々な言語が書かれているため、
自分が知らない言語で書かれてしまうと若干分かりにくいかもしれません。
もちろん、ちゃんと文章でも解説されているので、知らんコードが出てきたら何となくで読みましょう。
プログラムはなぜ動くのか 第3版 知っておきたいプログラミングの基礎知識
プログラミングの基礎知識がギュッと詰まった教科書
新人研修でプログラミングに必要な基礎知識は教えてもらえると思いますが、
1つ1つを掘り下げて理解できるほどの時間は無かった人も多いのではないでしょうか?
どちらかというと実際のコーディングをさせられたり、ビジネスマナーをだらだら説明されたり…
本書は新人研修で深く掘り下げてもらえなかったようなプログラミングの基礎の基礎を説明してくれます。
コーディングするうえでは不要、だけど知識が有るのと無いのとでは大違い
正直、実際のプロジェクトでコーディングするうえで絶対に持っていないといけない知識ではないです。
それよりリーダブルコードを読んで分かりやすいコードを書けるようになる方が重要です。
ですが、
我々が作っているプログラム、その内部では実際にどんなことが起こって、どうやってプログラムが動いているのかを理解することは大切です。
この先1つの言語を突き詰める場合でも、様々な言語に触れる場合でも、
根本となる知識が有るのと無いのとでは、理解度や知識に落とし込める粒度が大きく異なってきます。
理解度が低いと、覚えたことの応用が利かなかったり、根本的な勘違いをしてしまったり…
そんなことが起こらないように本書で基礎知識を身に着ける事は大事です。
家を建てる時も基礎が大事だよね、それと一緒。
プログラムはなぜ動くのか 知っておきたいプログラミングの基礎知識 で覚えて欲しい事
- プログラムがPC上で動く理由
- プログラムでの少数の扱い方や浮動小数について
本書で書かれていることは、実作業ではあまり意識する事が無い知識なので、
読んでいてもピンとこない事が多いかもしれませんが、それで大丈夫。
何となくプログラムってこうやって動いてるんだなぁ というふわっとした知識を持つことが大事だと思ってます。
ただ、プログラム側での小数の扱いについてはしっかりと理解しておいて損はないです。
第1章、第2章をサラッと読み、小数や浮動小数について書かれている第3章はしっかり読み込んで知識に落とし込めると良いですね。
リーダブルコードと同じくプログラマーとして成長したと感じたら、あらためて読んでください。
ふわっとした知識がより鮮明なものになりますよ。
注意点
初心者が本書を全て理解しようとするのはちょっと大変だと思います。
メモリーやらCPUやらの処理方法が云々…
アセンブリ言語がほげほげ…
プログラムはなぜ動くのか 分かりやすく解説されていますが、
全て理解して仕事に役立てるぞ!と気負う必要は無いです。
完璧に覚えるならリーダブルコードやイラスト図解式 この一冊で全部わかるWeb技術の基本の方が良い。
まとめ
本当に読んで欲しい3冊のみ紹介しました。
買う順番としては紹介した順でいいかと思います。
まずイラスト図解式 この一冊で全部わかるWeb技術の基本でプログラマーとして必要な知識をしっかりインプットし、
リーダブルコードを読んで分かりやすいコードとはどんなものなのかを理解し、コーディングに臨みましょう。
その後ある程度慣れてきたときにプログラムはなぜ動くのか 知っておきたいプログラミングの基礎知識で更に知識を深めれば完璧ですな。
ここまで読んでくれてありがとう。
みんなのプログラマー人生がつらくても楽しい、充実したものになる事を祈っています。
もしプログラマーとしてやっていくうえで聞きたい事や相談したいことがあったらお気軽にDMでもどうぞ。
以上、どーしようもないトレーナーが居たどーしようもない会社とはさっさとオサラバしたNFR(@NFRlog)でした。
何かあったら労基にかけこめ!