【2013年】新人プログラマが読むといいもの
隣のエンジニアが新人プログラマに読んでもらえるといろいろ捗りそうな書籍を書いていて、自分も影響を受けて書いてみた。
「読むといいもの」なので本に限らず Web サイトも取り上げました。
最初の一冊、もしくは一冊だけ読むとしたら
- 作者: アンドリューハント,デビッドトーマス,Andrew Hunt,David Thomas,村上雅章
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2000/11
- メディア: 単行本
- 購入: 42人 クリック: 1,099回
- この商品を含むブログ (341件) を見る
「いい加減な言い訳よりも対策を用意すること」「DRY―Don't Repeat Yourself (繰り返しを避けること)」「仮定せずに、証明すること」「あなたは完璧なソフトウェアを作ることができない」などの長年の経験で得られる貴重な知見が書かれたチートな一冊。
しかも説教臭くなく、ユーモラスに ( ←重要 ) 具体的解決策を語っています。
バージョン管理、テスト、自動化の重要性に気づかせてくれます。
新人から達人への一歩を踏み出すのに最適の書。
バージョン管理
Git 一択。
1.8 のまとまった情報がないので 1.7.2.2 ベースの Pro Git を紹介しますが、古い情報は基本 NG。
古い情報でハマるのは時間の無駄。これに限らず日本語訳は便利だけど古いことがあるので注意。ただし、この Pro Git の英語版も 1.7.2.2 なんだよね。
Git ホスティングに GitHub が有名だけど、非公開なリポジトリがほしければ Unfuddle があります。
テスト
レガシーコード改善ガイド (Object Oriented SELECTION)
- 作者: マイケル・C・フェザーズ,ウルシステムズ株式会社,平澤章,越智典子,稲葉信之,田村友彦,小堀真義
- 出版社/メーカー: 翔泳社
- 発売日: 2009/07/14
- メディア: 大型本
- 購入: 45人 クリック: 673回
- この商品を含むブログ (141件) を見る
新人の仕事といえばクソなコードの引き継ぎだよね。
プログラムを引き継いだら、まずやるべきことはテストを書くこと。
もしくは新たにプログラムを書く仕事もあります。
自分の書いたコードが新たなクソにならないためにもテストを書きましょう。
テストファーストや TDD はとりあえず置いておき、とにかくテストを書きましょう。
自動化
継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化
- 作者: David Farley,Jez Humble,和智右桂,高木正弘
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2012/03/14
- メディア: 大型本
- 購入: 24人 クリック: 567回
- この商品を含むブログ (45件) を見る
544 ページと分厚い本。
継続的インテグレーション ( CI ) から更に進んで、リリースも自動化する試み。
Amazonは1時間に最大1000回もデプロイするそうですよ。
Jenkins 導入が面倒なら GitHub と連携する Travis CI が便利。
「自動化」は CI やデリバリー以外にサーバ構築も含まれます。
もし、サーバを扱うならこの本も。キーワードは DevOps。
入門Chef Solo - Infrastructure as Code
- 作者: 伊藤直也
- 出版社/メーカー: 伊藤直也
- 発売日: 2013/03/11
- メディア: Kindle版
- 購入: 16人 クリック: 1,027回
- この商品を含むブログ (5件) を見る
なんでも自動化しましょう。
綺麗なコード
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
- 作者: Dustin Boswell,Trevor Foucher,須藤功平,角征典
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/06/23
- メディア: 単行本(ソフトカバー)
- 購入: 68人 クリック: 1,802回
- この商品を含むブログ (95件) を見る
「コードは他の人が最短時間で理解できるように書かなければいけない」をコンセプトに書かれた本。
だから他人のために
details = request.POST.get('details') location = equest.POST.get('location') phone = request.POST.get('phone')
のように = で整列させる ( Emacs や Vim なら align を使えば整形は簡単 )。
それに整列したことで r 抜けのスペルミスも気づきやすいし。
エディタ
Emacs実践入門 ?思考を直感的にコード化し、開発を加速する (WEB+DB PRESS plus)
- 作者: 大竹智也
- 出版社/メーカー: 技術評論社
- 発売日: 2012/03/07
- メディア: 単行本(ソフトカバー)
- 購入: 22人 クリック: 396回
- この商品を含むブログ (1件) を見る
Vimテクニックバイブル ?作業効率をカイゼンする150の技
- 作者: Vimサポーターズ
- 出版社/メーカー: 技術評論社
- 発売日: 2011/09/23
- メディア: 単行本(ソフトカバー)
- 購入: 19人 クリック: 661回
- この商品を含むブログ (38件) を見る
どちらかを使いましょう。
どちらを使うかは職場で聞ける人がいる方で。
秀丸ディタ派しかいなかったり、半々で迷うなら Vim 。サーバには Emacs がなく、Vim しか入っていないことがあるため。
Emacs や Vim の設定は id:yuroyoro さんの https://github.com/yuroyoro/dotfiles を使うといいですよ。
あと、
も使いましょう。いろいろと捗ります。
mosh はサーバにも入れないといけないので新人プログラマには立場的に難しそうなので外しました。
データベース
Webエンジニアのための データベース技術[実践]入門 (Software Design plus)
- 作者: 松信嘉範
- 出版社/メーカー: 技術評論社
- 発売日: 2012/03/09
- メディア: 単行本(ソフトカバー)
- 購入: 20人 クリック: 486回
- この商品を含むブログを見る
モバゲーを支えている人たちが書いた本。
正規化やインデックスといったデータベース全般の話から、クエリログの見方やチューニング、ハードウェアなど運用もカバーしています。
『ハッカーと画家 コンピュータ時代の創造者たち』で、他人の本を読まない小説家や、他人の音楽を聴かない音楽家がいないように、プログラマはソースコードを読むことを勧めています。
MySQL のソースはレベル高すぎなので、自分の使っているライブラリから読むといいですよ。
セキュリティ
体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践
- 作者: 徳丸浩
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2011/03/03
- メディア: 大型本
- 購入: 119人 クリック: 4,283回
- この商品を含むブログ (136件) を見る
Web サービスで気をつけるべきセキュリティの決定版の本です。
IPA の『安全なウェブサイトの作り方』もどうぞ。
デザイン
- 作者: Robin Williams,吉川典秀
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2008/11/19
- メディア: 単行本(ソフトカバー)
- 購入: 58人 クリック: 1,019回
- この商品を含むブログ (94件) を見る
使いやすくて見やすい UI を作りたいよね。
あと、同じパワポを使った資料でもなんか綺麗な人っているよね。
その「なんか」を科学したのが本書。
あと、Web サイトを作るなら Bootstrap を使うとお手軽にいい感じのものが作れます。
それと、プログラマ同士ならバイナリなファイルを作らず、テキストで作ろう。
プレゼン・ツールならこれとか。
あらゆるドキュメントは Markdown で書くのがオススメ。
GitHub もはてなブログも Makrdown に対応しているし、Redmine も Markdown のプラグインがある。
いろいろ
隣のエンジニアと雑談していて、よく出る雑多なキーワードとか。
- バッドノウハウ
- ヤクい
- ジョエル・テスト ... ジョエル・スポルスキーは他にも面白いエッセイがいっぱい。これが面白ければ『Joel on Software』『More Joel on Software』もオススメ
- YAGNI
- 普通のやつらの上を行け ... ポール・グレアムは他にも面白いエッセイがいっぱい
- 銀の弾などない
- 自転車置場の議論
何かプログラムの調べ事は Stack Overflow に辿り着き、便利なツールや技術的小ネタは Qiita がいい感じ。
お金がまだ余っているなら
- 作者: 和田卓人,Kevlin Henney,夏目大
- 出版社/メーカー: オライリージャパン
- 発売日: 2010/12/18
- メディア: 単行本(ソフトカバー)
- 購入: 58人 クリック: 2,107回
- この商品を含むブログ (329件) を見る
職場に尊敬できる人や、ロールモデルがいないなら、この本で出会えます。
- 作者: Jeffrey E.F. Friedl,株式会社ロングテール,長尾高弘
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/04/26
- メディア: 大型本
- 購入: 24人 クリック: 754回
- この商品を含むブログ (83件) を見る
SQL 同様、難しいことをやろうとすると複雑だけど、ほとんどのことは基本的な組み合わせで出来る正規表現。
正規表現を知っておくと Web スクレイピングや、コードの一括書き換えなど世界が広がります。
リファクタリング―プログラムの体質改善テクニック (Object Technology Series)
- 作者: マーチンファウラー,Martin Fowler,児玉公信,平澤章,友野晶夫,梅沢真史
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2000/05
- メディア: 単行本
- 購入: 94人 クリック: 3,091回
- この商品を含むブログ (296件) を見る
『レガシーコード改善ガイド (Object Oriented SELECTION)』か、こちらにするか悩んだ本。
どちらも言っていることはテスト重要。
- 作者: ジェラルド・ジェイサスマン,ジュリーサスマン,ハロルドエイブルソン,Gerald Jay Sussman,Julie Sussman,Harold Abelson,和田英一
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2000/02
- メディア: 単行本
- 購入: 35人 クリック: 1,149回
- この商品を含むブログ (488件) を見る
プログラムには Web サービスやソシャゲ以外の世界もあります。
- 作者: Jonathan Rasmusson,西村直人,角谷信太郎,近藤修平,角掛拓未
- 出版社/メーカー: オーム社
- 発売日: 2011/07/16
- メディア: 単行本(ソフトカバー)
- 購入: 42人 クリック: 1,991回
- この商品を含むブログ (238件) を見る
「あとで読む」せず、ここまで読んでくれてありがとうございます。
現実的な話、Agile で DevOps で git で CI な職場なんて 1% 以下なんじゃないですかね。
1975 年に出版された『人月の神話』の内容をいまだ議題にしている所が大半じゃない?
Code for America ならぬ Code for Company の参考になれば幸いです。
以上、耳が痛くなりながら書きました。あと、額にはブーメランが突き刺さっています。