Developers Summit 2011参加メモ(2日目)
Developers Summit 2011参加メモ(1日目) - 達人プログラマーを目指してに続いて、2日目のレポートです。
【18-B-1】プログラマが知るべき、たったひとつの大事なことがら
タイトルはもちろん、以前もすべてのプログラマーに読んでもらいたい本 - 達人プログラマーを目指してで紹介させていただいた、きのこ本のタイトルからきています。この本を監修された和田卓人 氏(id:t-wada)の講演です。個人的には2日間の中で最も感銘を受けたセッションでした。*1
現時点では講演スライドはアップされていないようですが、以下が参考になります。
#devsumi【18-B-1】プログラマが知るべきたったひとつの大事なことがら - @tmtms のメモ
デブサミ2011【18-B-1】プログラマが知るべき、たったひとつの大事なことがら和田卓人 氏 - Togetter
プログラマが知るべき、たったひとつの大事なことがら - Developers Summit 2011 - techlog
講演スライドは以下The only one big thing every programmer should know
いきなり、講演の最初でたった一つのことという「タイトルは釣り」との発言がありましたが、お話の中で(通奏低音として)終始一貫して鳴り響いていた主題(テーマ)は
きのこ本で一番大事なキノコ「18, 学び続ける姿勢」
ということでした。確かに、プログラマーとして学ぶことは無数にあるのだけれど、結局、学び続けるという姿勢は一つということですね。通常我々が「学ぶ」という言葉を聞いた場合、読書やネットの情報、勉強会への参加などを通して、外部から情報を受け取るという受身的な行為を想像してしまうのですが、
- (読む)プログラム本をただ読むのではなく、コードを写経しながら自分なりに考える
- (書く)ブログを書いて、自分から積極的に情報発信することでコメントやトラックバックなどを通してより多くの情報を学ぶことができる
- (話す)書くだけでなく、自分から勉強会やセミナーで積極的に話すことでさらに深く勉強する
というように、段階的にステップアップするにつれ、よりアクティブな活動も加わってくるようです。自分は対人恐怖症などで回り道したこともあって時間はかかったのですが、(プログラマーの定年*2を過ぎた)5ヶ月前からふと思い立ってブログとTwitterを始め、この歳になってようやく「書く」段階にシフトしてきたばかりです。確かにブログを付け始めてから情報の吸収力は以前と比べ物にならないくらいのスピードとなり、圧倒的に増えた気がします。*3「話す」はまだプロジェクトや社内に留まっている段階なのですが、まずは小さな勉強会のLTからでも、勇気を出してコミュニティー活動で自分から積極的に「話す」ようなスタイルの勉強にも挑戦してみたいとこの講演を聴いて思いました。
もう一つ、「年配」プログラマーの一人として感銘を受けたことは、
若い人から学ぶ。一生プログラマーでいられるかどうかは年下から学べるかどうか。
ということですね。確かに、これができないと自分自身若いプログラマーから本当に老害とdisられる*4存在になってしまいそうです。ただし、以前の経験は完全に無駄になるわけではなくて、何度も原点に返りながらも螺旋階段を上るようなものであるとのこと。
ちなみに、お話の中で達人プログラマーの書籍に何度か言及されていたこともまた良かったです。毎年新しい言語を一つ覚えるとか、プレゼンもプログラミングの対象にしてしまうなどの発想は達人プログラマーの教えですね。
私も常に学び続けるという姿勢を大切にしつつ、経験を積み重ねることでプログラマーとして確実にステップアップしていきたいと思います。
【18-B-3】これからの「アジャイル」の話をしよう ――今を生き延びるための開発手法とスキル
永和システムマネジメントの木下史彦 氏から、受託開発におけるアジャイル開発の実際についてお話がありました。
デブサミ2011【18-B-3】これからの「アジャイル」の話をしよう 木下史彦 - Togetter
おそらく、多くの人が既にご存知かと思いますが、永和システムマネジメントと言えば
http://www.esm.co.jp/trial/new-agile-contracts-service.html
というニュースが昨年末話題になりました。人月ビジネスが当たり前のSI業界において、作業工数に比例しない、新しいビジネスモデルというパンドラの箱を開けてしまったのは、木下氏の提案によるものらしいです。今のところ、人月ビジネスはまだこの業界の常識ですし、今後すべてがこうした新しいモデルに移行するわけでもないと思いますが、SI業界のリファクタリングという意味でも大いに期待されるところです。
今のところ、このモデルでの案件がようやく1件受注できたということなので、まだまだ駆け出しの状態のようですが、がんばってもらいたいですね。なお、Ask the speakerコーナーで質問したところ、実際の開発はRubyを使ったスクラッチのWebアプリケーションが多いとのことでした。Javaプログラマーの私としては、Java EEでも同様にできないかなと思いましたが。
もちろん、
魔法なんてないよ
ということですし、アジャイルを取り入れればすべてがバラ色ではないということをも強調されていました。そういうところは実践に基づいてアジャイルを実業務に取り入れている木下氏ならではの重みのある発言だったと思います。でも、2006年以降
離職率ゼロパーセント
というのはすごいですね。これは、業界の一般的な職場では考えられないことだと思います。
【18-B-5】クラウド時代のソフトウェア開発
講演者の及川氏(id:takoratta)は
大学を卒業後、外資系コンピュータメーカを経て、マイクロソフトにてWindowsの開発を担当。Windows Vistaの日本語版および韓国語版の開発を統括した後、Googleに転職。ウェブ検索やGoogleニュースをプロダクトマネージャとして担当した後、2009年10月よりエンジニアリングに異動。現在、Google ChromeやGoogle日本語入力などのクライアント製品の開発を担当。また、Google Developer Dayなどの開発者向けイベントにてスピーカーも務める。
のようなすばらしい経歴をお持ちの方なのですが、まさに、常に学び続ける姿勢というか、いわゆる老害と呼ばれる人とはまったく異なるタイプの方のようで、実にすばらしいですね。経歴の前半でいわゆるSIも経験されたことがあるようですが、Microsoft入社以降はWindowsなどの大規模な製品の開発に携わってこられたようです。
講演では、Microsoft時代製品開発経験と現在のGoogleにおける開発経験の比較を元に、クラウド時代のソフトウェア開発はどうあるべきかについて説明されました。
Microsoftのパッケージに象徴されるように、従来の大規模製品開発では、リコールを避けるために文言といった些細なバグでも完全につぶしこんでから出荷するというのが求められました。そういう失敗の許されないところがあったため、ある程度アジリティーを犠牲にしてもトップダウンの品質コントロールやマネジメントが求められたということです。一方、対照的に最初からクラウドをターゲットにしたGoogleの開発では、よりアジリティー(機敏さ)とサービサビリティーに重点が置かれるようになっているとのことです。
- デプロイメントのコストはゼロに近くなった
- リリースしてからが本番
- 避けるべきはサービスダウン
それから、Launch & Iterateという考え方についても紹介されました。実際、Webアプリケーションだとユーザーがクリックした情報などが簡単に収集できますから、そうした情報に基づいて機能改善や拡張を行った方が効果的ということでしょう。その他、従来の離散的なVersion番号に従ったリリース管理から、Versionlessの連続的な進化への対応するためのスケーラブルな開発インフラ、リリースサイクルの改善、オープンソース化などについても説明されました。
確かに、受託のSI案件とは違う側面もあると思いますが、クラウドを前提として開発において、Googleのこうした先進の取り組みはSI業界で開発を行う我々も大いに参考にすべきであると感じました。