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

#97prog_ja プログラマが知るべき97のことの書評

プログラマが知るべき97のこと(通称きのこ本)の中から個人的に関心を 得た45のことを2011年8月から2012年1月までブログに書いてきた。 このエントリーはそのまとめ。 当初目的は2つあって、プロジェクトメンバーに対して、 「良いサービスを作るためには何…

#97prog_ja 92 顧客の言葉はそのまま受け取らない

これはいつだって意識すること。僕は顧客の言葉を鵜呑みにしない。 顧客が自らの要望を完璧に伝えられないと思っている。これは顧客を 馬鹿にしているのではなくて、要望を伝えきるということが至極難しい ことであるためだ。例えば僕自身が顧客の立場に立っ…

#97prog_ja 93 エラーを無視するな

エラーが起きているのに、大したことはないと思い込もうとする。 大丈夫だと自分に言い聞かせて無視する。そんなことをしても何 も良いことはないのです。これでは品質の高いコードはとても書 けないでしょう。これは単なる怠慢(良い「怠慢」ではなく、ひ …

#97prog_ja 93 ペアプログラミングと「フロー」

僕はよく「あなたがトラックに轢かれて何かあっても大丈夫なように作業 ログや結果はWikiやチケットに書いてくださいね。(リスクヘッジしてね♪)」 と言う。同様の例えがこのエントリにもあったのでこのエントリが気に入って しまった。もちろんこのエント…

#97prog_ja 日本人プログラマによる知っておくべき10のこと 名前重要

何に対しても名前は重要だ。 適切な名前をつけられると言うことは、その機能が正しく理解されて、設計 されているということで、逆にふさわしい名前がつけられないということは、 その機能が果たすべき役割を設計者自身も十分理解できていないということ な…

#97prog_ja 91 良いプログラマになるには

このエントリを読んで昔よりはまともなソースコードが書けるようになったかな、と振り返った。 昔は良いプログラムを書こうとしても書けなかった。経験も努力も足りなかった。 多分達人プログラマになりたいのであればこのエントリにある通りに努力して実践…

#97prog_ja 90 コードを見る人のためにテストを書く

このエントリはタイトルが秀逸すぎる。 一体誰のためにテストを書くのか?それはコードを見る人のためだ。 コードを見る人は未来の自分かもしれない。もしくは自分以外の誰か。 そのためには良いテストを書かなければならない。良いテストとは何か?コードが…

#97prog_ja 84 正しいアルゴリズムとデータ構造を選ぶ

プログラミングにおける「再利用」を重視する人は多いですが、いつ、何を、どのように再利用すべきかがわからなければ、良い結果にはなりません。それをわかるためには、問題領域について、またアルゴリズムとデータ構造について、十分な知識が必要なのです…

#97prog_ja 83 UNIXツールを友にする

もし無人島にIDEかツールのどちらかしか持っていけないとしたら、私は迷うこと無くUNIXツールを選びます。 もちろんそんなシチュエーションは存在し得ないとは思うが 僕もUNIXツールを選択する。 ここで言うUNIXツールとはコマンド群の事。 テキストの取り扱…

#97prog_ja 82 他者への思いやりを意識したコーディング

Webに限って言うなればプログラマやデザイナどちらも対象とすることができるエントリ。 そのコードに触れた誰もが、触れる前より良い人間、良いプログラマになれる 誰かが書いたコードの質は、必ず誰かが書くコードの質に影響します 最近特に疎結合を意識し…

#97prog_ja 80 1人より2人

私は「ペアプログラミング」の信奉者です。ペアプログラミングは、協力の究極のかたちと言ってもいいでしょう。ペアプログラミングの利点は、プログラマとしてのスキルが確実に向上するということです。プログラミングの技術、あるいは問題領域についての知…

#97prog_ja 79 テストのないソフトウェア開発はあり得ない

橋の構造解析に時間がかかるように、テストにもやはり時間がかかります。しかし、どちらも最終的な成果物の質を一定以上に保つためにすることです。 最近リリースしたプロダクトが結合テストと運用テストが 甘かったのでデータ保持やUIの品質が低くなってし…

#97prog_ja 78 テストは夜間と週末に

今のプロジェクトでは毎日AM1:00ごろにDailyBatchと称してユニットテストを作動させている。 ユニットテストは大体5分ほどで完了している。夜間に稼働させたほうが節電できるしね。 毎朝DailyBuildが送信するメールをチェックして失敗したテストがあればチケ…

#97prog_ja 76 コード分析ツールを利用する

前々からやりたいと思っているのだがなかなか手が出せていない。 静的なコード解析ツールを用いることでリポジトリにコミットされているコードをチェックすることができると思うが時間が作れていない。 でもちゃんとやろうと思うのでエントリには残しておく。…

#97prog_ja 75 面倒でも自動化できることは自動化する

自動化するためのステップがやや面倒でも自動化はしたほうがいい。 例えば毎日5分、何かしらのコマンドを書いてファイルを保存するという作業を 手で行なっているのであればそれはスクリプトを書いてcronに登録したほうがいい。 Excelであればマクロを書いて…

#97prog_ja 72 シンプルさは捨てることによって得られる

「やり直し、だな…」、Deleteキーを押しながら上司が言いました。私は、毎度のことながらとても沈んだ気持ちで、コンピュータの画面を見つめていました。私の書いたコードが1行、1行きれいに消されていくのを見ていたのです。 上の例はすごく極端で上司と部…

#97prog_ja 70 シングルトンパターンの誘惑に負けない

シングルトンパターンが安易に使われてしまうとユニットテストがしにくくなりそう。 と、このエントリーに書かれていたのでそう思った。 シングルトンパターンの使い所は見極めよう。 シングルトンパターンは、必要なインスタンスが絶対に1つだけと確信でき…

#97prog_ja 68 「人間」を知る

ソフトウェア開発のプロジェクトでは、よほど小規模なプロジェクトは別にして、必ず人と人が共に仕事をすることになります。 (中略) つまり、人は、人とともに、そして人のためにソフトウェアを書くというわけです。 プログラミングにかまけていると人との…

#97prog_ja 67 コードを読む

私たちプログラマは妙な生き物です。総じてコードを書くことは大好きなのに、 コードを読むとなると嫌がってしまうという性質があります。コードを書くのは楽しいのに、 読むのは辛いと感じるのです。特に辛いのが、他人が書いたコードを読むことです。 他人…

#97prog_ja 66 いったんコンピュータから離れてみる

今回は短めの感想。 たまにはコンピュータから離れよう! というのがこのエントリーの肝。 ある問題について十分に考えたら、あとは音楽を聴くなり、散歩をするなどして脳の創造を司る部分をはたらかせてみてください。 じっとコンピュータの前に座って考え…

#97prog_ja 65 バージョン管理システムを有効に使う

バージョン管理システムを使い始めてしばらくしたら思ったことだがまさにこの通り。 プロジェクトを構成する要素は、とにかく何でもバージョン管理の対象のすべきでしょう。 ソースコードだけでなく、ドキュメントやツール、ビルドスクリプト、テストケース…

#97prog_ja 64 プロのプログラマとは?

プロのプログラマとは、どういう人のことでしょうか。 プロフェッショナルなプログラマの最大の特徴は「自分が責任を取る」 という態度、責任感です。プロのプログラマは、まず自分のキャリアに 責任を持ちます。責任の取れないような見積やスケジューリング…

#97prog_ja 56 未来へのメッセージ

難しい問題をそのままに受け止めて難しいコードを書く必要はない。 というか、難しく書いてはいけない。今よりも先、あなたの作ったその難しいソースコードを 読むプログラマはその難しさに苦悩してしまうだろう。 難しい問題を難しいままに捉えるのは簡単だ…

#97prog_ja 60 真実を語るのはコードのみ

そのとおりだと思った。 結局実行されるのはソースコードのみ。 間違ってもソースコード内のコメントは実行されないし、 ドキュメントが実行されるわけじゃない。 人の言葉がそのまま実行されるわけでもない。もしドキュメントが存在しないのであれば「今あ…

#97prog_ja 52 「その場しのぎ」が長生きしてしまう

プロジェクトの中で「暫定ソリューション(その場しのぎ)」を作ったことがある人は多いのではないかと思います。 (^o^)丿 私もです。 ほぼ間違いなく作ったことがあると思う。 とりあえず今はifでしのぐ! とりあえずIDとかベタ書きであとで直す! とかあっ…

#97prog_ja 51 プロジェクト自身にしゃべらせる

「プロジェクトを見える化」しようという発想。 CI(Continuous Integration:継続的結合)サーバ用意してそのなかで静的コード解析ツールを走らせたり、テストカバレッジを設定して通知したり。 ところで通知には何を使うのか?メールか?IMか? このエントリ…

#97prog_ja 48 いろいろな言葉を学ぶ

このエントリーはこのような表現でも意味が理解できる。 いろいろな人と目線を合わせる。プログラマだからといってコンピュータとのみ コミュニケーションをとっていれば良いというわけではない。ソフトウェア開発のプロジェクトチームの中に例えば プログラ…

#97prog_ja 38 余分なコードは決して書かない

「より少ないことは、より豊かなこと(Less is more)」。言い古された格言ですが、確かに真実です。 ミース・ファン・デル・ローエという方の言葉らしい。 余分なコードは決して書かない。確かにそのとおりだ。可読性も高まる。 そのコードのためのテストを書…

#97prog_ja 46 すべきことは常に明確に

ダン・バーグ・ヨンソン氏のエントリー。 「今、どんな仕事をしているんですか」 プログラマ1「ああ、今、このメソッドのリファクタリングをしているところですよ」 プログラマ2「このWebアクションにパラメータをいくつか追加しているところです」 プログラ…

#97prog_ja 35 超人の神話

超人なんていない。 何も情報を与えられなくても、あらゆる質問に答え、あらゆる問題を解決できる。そんな人はいません。 社内にいるどんなに優秀なエンジニアも人なわけで完璧じゃない。 「ある超人的エンジニアに問題解決を任せると即時解決するんだよ!」…