#devsumi【18-B-1】プログラマが知るべきたったひとつの大事なことがら

デブサミ2011の id:t-wada の講演のメモです。嘘書いてあるかもしれません。

  • タイトルは釣り
  • きのこ18. 学び続ける姿勢
  • 読む/書く/話す
  • サッカーファンが得意なことは二年単位でものを覚えること

1996/07/22 マイアミの奇跡

  • アメリカにいた
  • 初めてコンピュータに出会った
  • ホームステイ先の子供と仲良くなりたい
  • ファミコンマリオ3をやってみせた
  • 本当に没入したものは体が覚えている
  • 無限1UP
  • ニンテンドーの国からきた男は違う」
  • 心をつかんだ
  • 原体験 ひとを動かすためにはやってみせる

2000年 OO厨をこじらせる

  • RDBの世界は汚いから俺が正す
  • テスト大嫌い
  • 俺が書いたコードにバグがあるわけがない
  • でもバグや手戻りが多い
  • 完璧主義の呪いにかかった
  • ただしいモデルがわかるまでコードを書いてはいけない

2002/06/07 日韓ワールドカップでアルゼンチン対イングランド

  • 技術イベントで、まさーるさんに出会った
  • JUnitオブジェクト指向設計の記事
  • まさーるさんからテストの書き方メンテの仕方を学んだ
  • もう一つ学んだのは写経
  • 「技術書の写経の方法」
  • デスマの中にいた
  • 東急の深夜バスの中で写経をやっていた
  • ケントベックが書いている新しい本のドラフト原稿
  • TDDの原体験
  • ひたすら本を読む
  • ネットワーク上にもアウトプットしないでひたすらインプットし続けていた
  • 本当に身につけない技術はコードを自ら書き手を動かして学ぶ
  • 終わらない厨二時代やデスマ状況からまさーるさんとTDDに救われた
  • 完璧主義の呪いから救われた
  • 動作するきれいなコードはきれいに実装しないといけないという脅迫観念
  • それじゃないやり方もある

2004/07/01 チームかくたにに参加

  • アジャイルチームを新しく作るのにコーチとして参加
  • 誰が呼んだのかは謎
  • はてなダイアリーも始めた
  • 和田卓人が t-wada になった日
  • はずかしい
  • Emacs使ってたのでカーソル移動しようとしたら印刷ダイアログが出たり
  • 全開でやってくれ。出し惜しみせずに全力で
  • きのこ J02. ロールプレイングゲーム
    • 「だって、仕事でしょ?」
  • きのこ 54. 見えないものを見えるように
    • アナログツールを使った
  • きのこ 80. 1人より2人
    • ペアプロをした
    • 非常につかれる
    • 1日8時間は無理
  • きのこ 65. バージョン管理システムを有効に使う
    • CVSを使ってた
  • きのこ 79. テストのないソフトウェア開発はあり得ない
    • OO厨からテスト厨になりつつあった
  • きのこ 51. プロジェクト自身にしゃべらせる
    • テストの自動化、ビルドの自動化
    • 自動でできることはコンピュータにやらせてプログラマは設計をやる
  • 常に自分よりレベルの高い人と仕事をするようにする
  • 凄い人が何故か永和にどんどん行くという怪現象
  • ペアプロは常に教え教わる環境
  • 余裕ができてきたので勉強会読書会で発表したり

2005/04/25 JR福知山線の事故

  • まさーるさんが乗っていて亡くなった
  • 師匠がいきなりいなくなってしまった
  • ブログに書くだけでなく「話す」ようになる
  • 自分自身が教わったことを人に伝えないといけないと考え始めるようになった
  • テスト駆動開発についての議論をはじめた
  • 「テスト」という言葉が強すぎて議論が発散する
  • 誰が何のためにテストをするのかという視点で再分類
  • 四象限のモデルを作った
  • TDDと黄金の回転
  • アウトプットするとインプットが増えることに気づいた
  • WEB+DB PRESS 35 巻頭でテスト駆動開発の特集を執筆
  • gihyo.jp で動画も公開
  • 自分のブランディングテスト駆動開発の人間である」

2008/02/14 デブサミ発登壇

  • デベロッパー・テスティング・ライブ
  • TDDをしゃべりながらライブで見てもらう
  • 「やってみせる」が大事
  • 自分の考えを示すためにはやってみせるのが一番
  • java-ja という謎の集団に目をつけられた
  • ライブイベントをもっとやっていきたい
  • java-ja の人は見た目怖いので敬遠していたが会ってみたらナイスガイだった
  • Twitterが自分の中ではやりだした
  • ブログから Twitterに変わった

渦を作る: influence

  • 人を動かすのではなく、人に共感してもらう、人に動いてもらう
  • みんな現実と戦ってる
  • 来週に現場に戻るとテストのないコードがうじゃうじゃ
  • 現場は edit and pray
  • ペアプロはたのしい
  • プロとしてのたしなみ
  • 自分の書くコードに自信を持つ
  • そういうイベントができないか
  • TDD Boot Camp 東京
  • ペアプロの楽しさやTDD
  • 1日または2日で体験してもらう
  • TDD Boot Camp 北陸
  • TDDとレガシーコードとの戦い
  • TDD Boot Camp 名古屋
  • TDD Boot Camp 札幌
  • 自分が学んできたものを持って帰ってもらうにはどうしたらいいかを考えてできたイベント
  • 渦ができた
  • 今までいろんなものをもらってきた
  • それを次の人たちに伝えるのにどういうことができるかを考えた
  • 今後の TDD Boot Camp
  • 横浜、九州、四国、(大阪)

最後に

  • 学び続けるコツ
  • 身の回りをプログラミングする
  • 仕事のコードでは技術的な冒険はしにくい
  • そればかりでプログラマを何年も続けると腕が鈍る
  • 本業じゃないものをプログラミング対象にする
  • このプレゼンツールは自分で育てたもの
  • プレゼンをプログラミング対象にしよう。何故なら HTML5 と CSS3 をさわりたいから
  • 毎年新しい言語を学ぼう
  • メイン言語に良い還元をする
  • 学ぶ時には写経
  • 一昨年 JavaScript
  • 去年 Clojure
  • 今年はどうしよう Haskell? Go? Scala?
  • 学びを続けていると自分より若い人が増えてくる
  • 一生現役でいられるか、一生プログラマーでいられるかどうかは、年下の人から学べるかどうか
  • 毎年リセットし続ける?
  • そうではなく学びは「らせん」を描く
  • 経験や暗黙知
  • 毎回学びなおす
  • Hadoop を見て「昔の分散バッチだ」と言う人がいる
  • それは思考停止
  • 前の周期の反省を経て新しい要素があるはず
  • 差分を認識できるかどうか
  • プログラマーとして重要な能力
  • アジャイルじゃなくてTDDなのはなぜか?
  • アジャイルの導入はまわりの人の変化が必要
  • 自分一人で改革できることができないか
  • 渦を作っていくことができないか
  • それができるのがTDD
  • TDDは開発プロセスとは基本的には関係ない
  • プログラマーが意思があればできるのがTDD
  • 後押しをしたい
  • TDDはスキル
  • 才能ではない
  • 練習すれば習得可能
  • 写経しましょう
  • 渦に入り渦を作る人になってほしい
  • 次はあなたの番
  • 「君の銀河もきっと輝く」