bekkou68 の日記

Gogengo! や IT 技術など。

RubyKaigi2010 で弊社永和がセッション「Head First ふつうのシステム開発」をしました

Japanese only.

導入

以下はオブジェクト倶楽部のメルマガの記事の引用です。この記事に書き切れなかったことをこのエントリに書きます。

こんにちは、bekkouです。先日、つくば国際会議場にてRubyKaigi2010が開催されました。
私は、kakutani、nawoto、ursmと共に「Head First ふつうのシステム開発」[*1]というサブイベントに登壇しました。

当初は、20人から30人程度の参加者を想定していましたが、予想を大きく超えて、
立ち見がでるほどの盛況でした。私は開発者Bというロールで登壇したのですが、
参加した他のセッションと比べても、参加者と登壇者の距離が非常に近いと感じました。
実装方法について煮詰っていたところで、参加者の方からアドバイスを戴いたり、
質疑応答では質問が絶えなかったことなど、有意義なセッションだったと思います。

また、コミュニティ・ナイトでは、「第2回をぜひ開催してほしい」という声を多く聞きとても嬉しかったです。

ただ、残念ながら今回のサブイベントは映像として残ってはおりません。
当日の詳しい様子は、私のブログ[*2]に記事を書く予定ですのでご期待ください。

なお、「ふつうのシステム開発」をもっと知りたい方は Ruby x Agile のサイト[*3]もあわせてご覧ください。(bekkou)

http://www.ObjectClub.jp/ml-arch/magazine/352.html

映像に関して補足ですが、チームの考えとして映像は残さない方針です。「ライブで感じて!」という考えです。ご了承ください。

所感

普段使っている技術、ツール、仕掛け、進め方、雰囲気等が伝われば嬉しいです。ですが、まだまだ伝えきれない部分は多く感じます。東京の支社に来てから2ヶ月経ちますが、永和の開発のふつうさをふつうたらしめている”何か”はもっと沢山あるように感じてます。それは、チームが新しい技術に貪欲であることであったり、場を良くするためにどんどん行動したり、困ったらすぐに情報を共有し解決したり、何より楽しくやっていたり(もちろん自分自身も!)することだったりします。「ふつう」にシステムを開発できるように頑張ろうと強く思いました。

質問していただいたこと

当エントリ以外にも sugilog さんがまとめてくださってます。ありがとうございます!

http://d.hatena.ne.jp/sugilog/20100905/1283673123

回答の()内は、自分が追加したものです。

お客様に伝えるまでもないが、タスクとして分割するレベルはどうしているの?

タスクはアナログにかんばんを使っています。なぜかんばんを使うのかというと、開発チーム内で手っ取り早い共有ができるからです。お客さんが Accept するようなものは、Pivotal Tracker で電子化して残してます。切ったストーリーがタスクと同レベルになってきているかもしれないです。Java の時はやっていましたが、Ruby ではやらなくなってきました。手を動かす量が少なくなってきているからかもしれないです。

どんなタスクの粒度はどのくらいにしていますか?

イテレーション単位が一週間なら、それよりはもちろん短いです。だいたい一、二日です。進捗が動くのが分かる程度です。お客さんに伝えられる粒度です。また、夕会で大きすぎたり小さすぎたりすると伝えにくいのでそうならないくらいです。

ペアプロはしていますか?

目的に応じてやってます。教育目的で時間をかけてやったり。やり方は、時間を区切ってとか定期的にとかをチームとして実施します。
(今のプロジェクトでは、したりしなかったりです。やる時は、例えば、RSpec を書くのに慣れていなかったり、複雑な実装だったりしたらやってます)

コントローラとかビューとかのテストは実際やっていますか? やっているなら、労力と効率のバランスを教えてください。

モデルにロジックを寄せるのでコントローラは薄くなります。そうすると、コントローラの”不安を感じない”のでテストしなかったりします。ビューは変更が生じやすいこともありますし。Cucumber とか steak とかで大外からガツッと叩いたりします。Helper は書いた方が良いかもしれないです。

新人が実際の案件に入るのはいつ頃ですか?

4月から6月末まで研修です。大体7月から案件に入ります。一緒にモデルを考えたり、業務要件定義書を見たりして、なぜやるのか? どう考えるのか? を考えて仕事を進めます。やってみてと言われたらやって、レビューをもらいます。挑戦できる粒度でやってもらいます。

デルタって何ですか?

浮動小数点を == で比較しにくいので、一定の幅で検証することです。

Pivotal Tracker で、日本語が打ちにくくないですか?

SKK っていうものがありまs(ry もしくは、Ctrl+M で幸せになれます。

Ruby x Agile サイトにおける)バージョンアップってどうしてます?

ガツーンってあげます。お昼休みにあげます。感極まった人がやったりします。やってないの!? じゃあやろう! みたいな感じです。

朝会以外に何かやってますか? どうコントロールしてますか?
  • プランニング:一週間とか二週間とかに一回です
  • 夕会:進捗の確認です
  • 月とかでお客さんとふりかえりできれば
リファクタリングのタイミングはどうしてます?

随時です。一つのストーリーが終わるまでには。技術的な負債をどこで返すのかが最近難しく感じます。捨てて作り直してしまうのもありなのかもしれないです。モデル名変えるとか、別ブランチで切ってまとめてマージとかはお客さんの許可は取りません。

見積りはどうしてますか?

見積り担当はいません。みんなで見積もります。違った知識等で見積りの精度があがったりします。でも、見積りはクイズのようなもので当たらないです。精度はチームの成熟度であがっていくと思います。最初の一週間である程度を見積もり、大きな見落としは無くしています。計画から外れたらお客さんに謝ります。また、ふりかえりをします。

遅くまで仕事をしてますか? アジャイルが無駄をカットできるならアジャイルな文化を広めていきたいです。

平均的には7時から8時くらいに帰ります。シフトが早い人は、6時とかです。仕事があったり、業務以外でやりたいことがある人は11時まで残ったりしてます。

新人として、(Vim 等を華麗に使いこなす)ursm さんのやっていることは分かりますか?

随時聞きました。最初の一ヶ月は難しかったけど段々慣れてきました。Vim に関して言えば、GitHub に dotfiles があるのでそれをウォッチしたりです。

最後に

沢山の方々に来ていただき、質問をどんどんしていただきとても嬉しかったです。反響も多くいただきました。永和として自分として大成功だったと思います。ありがとうございました!