私のアジャイルコミュニティ・ジャーニー

Regional Scrum Gathering Tokyo のアドベントカレンダー2018 11日目です。

永瀬さんの提案により実現したこの企画。とても良記事ばかりで、25日までではなく年末まであったらいいのにな、という気分です。

昨日は、土肥さんの『RGSTを通して振り返る自分とScrum』でした。土肥さんが書いてくださった”年の終わりに、セッションプロポーザルを書くことで、何が今年の学びだったのかを振り返り、年の最初にRGSTに参加することで、刺激とエネルギーをもらうというサイクル”を作れていることは運営側にとって大変喜ばしいことですし、私自身もRSGTに参加することで、その一年が始まる気がしています。

さて、私の記事では、私がアジャイルコミュニティに出会うまで、そこからどのような人々と出会い、XP祭りやRSGTの実行委員となったのか、そして今後どのようなことをしていきたいのかを語りたいと思います。

というのも、元来私はあまり人前で話すのが得意ではなく、ましてや人に自分の気持ちを伝えることがとても苦手で(ただコミュ障なだけ)、しかし、ここ最近は、「言わなければ伝わならない」ということを身にしみて感じており、仲間を見つけるには、例えそれが実行できなかったとしても、言った方が良い、と感じようになりました。

ですので、本記事はそれはそれはとても個人的な内容の記事で、内容のほとんどが思い出話であり、読者のみなさまの為になるものではないかもしれないのですが、もし年末のクリスマス気分の中で、ある一人の少女(?)のアジャイルコミュニティ・ジャーニー*1 に少しでも耳を傾けていただけるのであれば、それは私にとって最高のクリスマスプレゼントです。

注意)年末の雰囲気に便乗して、エモさ2倍増しでお届けしております。

注意)長文ですので、もし途中経過にあまり興味がない方は「アジャイルコミュニティの活動を通して思ったこと」あたりから読んで頂けると嬉しいです。

アジャイル・アジャイルコミュニティとの出会い

私のアジャイルとの出会いは、大学院生の時でした。その頃、私は大学の研究室でPBL(Project Based Learning)をしており、ソフトウェア開発プロジェクトだけでなく、授業の枠を超えてさまざまなプロジェクトを通して学ぶ環境にいました*2。 

ソフトウェア開発で言えば、大会期間中10万人がアクセスするシステムから、小さなシステムまで、クライアントとのコミュニケーション、要求定義から開発、運用・保守、プロジェクトマネジメントまで一通りの経験はしていましたが、それはアジャイルとはかけ離れたもので、テストコードもなく、プロジェクトマネジメントもあるようなないような、で、今ではできない徹夜を駆使しなんとか乗り越える、という状況でした(まさに学生症候群)。このままではいけないと思いつつ、そこから脱却することが出来ずにいました*3

2010年、私の最上級生としてのチャレンジは、「プレイングマネージャーをやめる」だったのを覚えています。その当時まだ「プレイングマネジャー」という言葉すらも知りませんでしたが、いつも自分でタスクをこなしてしまい、その結果、プロジェクトの計画や先読みをするメンバーがいなくなり、スケジュールはガタガタでした。その状況を改善するため、リーダーとして奮闘していたところでした。

そんな中、研究室の先輩*4から、学生をアジャイルカンファレンス(Agile Allianceが毎年開催している世界最大級のアジャイルのカンファレンス)に連れて行くという企画があり、応募してみない?というお誘いがありました。その当時、「アジャイル」という言葉自体にもあまり馴染みがなく、海外カンファレンスというものがどんなものであるのか一切知識がなかった(そもそも海外旅行すらもほとんど行ったことがない)私でしたが、応募してみることにしました。この企画の発案者が川口恭伸さんで、まさに私をアジャイルコミュニティに誘惑した人の一人です。

当時の募集内容 

Agile Conferenceに行くには、飛行機代、ホテル代、カンファレンス代など普通の学生では到底手が出せない金額がかかるので、川口さんがスポンサーを集めてくださいました。スポンサーはOdd-e Japan様、翔泳社様、情報システム総研様でした。また、コミュニティでもたくさんの方が賛同してくださり、寄付をしてくださったと聞いています(Agile2.0 〜 アジャイルジャパン再演企画 - kawaguti’s diary)。

この企画には2名の応募があり、エッセイでの選考の結果、参加できることなり、こうして、2010年の夏、私はフロリダ・オーランドで行われたアジャイルカンファレンスに参加しました。当時のレポートは翔泳社様のEnterpriseZineで書かせていただいています。

 行きの飛行機では、Odd-eのEmerson Millsさん、江端一将さんと一緒で(一緒といっても入国審査のときに声をかけられたのですけど)、トランジットでビール飲んだり、Millsさんと「リーダとは何だ」と脅かされディスカッションしたり、それだけでとても楽しかった記憶があります。カンファレンスでは、まずその規模に圧倒され(この年の参加者は1400人でした)、アジャイルコーチなどのソフトウェア開発に携わるプロたちが、それぞれの手法や考えをシェアしたり、まさに夜通し議論する熱意にインスパイアされました。何もかもが新鮮で、こんな世界があるのだと感銘を受けたのを覚えています。また、日本からの参加者や、ボランティアスタッフをされていた masayang さんと出会ったり、セッションでは、Ken Schwaber、Mike Cohn、Jeff Pattonのセッションに参加したり、今思うとそれがどれだけすごいことか全く知らずに、ただその時を楽しんでいました。私の下手な英語にも関わらず、他の参加者の方は私の状況を聞いてくださり、「リーダーとして何をすべきか」を丁寧に親身に回答してくださいました。

日本に帰国してからは、いくつかのコミュニティで報告会をしました。まずXP祭りで、カンファレンスで出会った藤原大さん、安藤寿之さんと共に、報告セッションを行いました。次にすくすくスクラムで『私がみたAgile2010はコレだ!?』というタイトルで、報告+学生からみたIT業界という内容で、ビアバッシュ形式のセッションをさせていただきました。

すくすくスクラムでは、初めて素振り(事前練習のことをこの業界では素振りと呼びます)を体験したり、当日はお姉様に質問を受けたり(これが永瀬美穂さんとの出会いでした)、XP祭りでも、すくすくスクラムでも、今ほど学生がコミュニティに参加する機会が少なかった中、私の稚拙な発表をみなさん真摯に聞いてくださって、とても有り難かったのを覚えています。

このように、Agile Conferenceの参加をきっかけに、日本のアジャイルコミュニティに参加したのが、私のアジャイルコミュニティとの出会いでした。これらの経験こそが私のアジャイルコミュニティの一助となりたいという気持ちの原点であり、また、その後の人生を変えた出来事であったとといっても過言ではありません。この企画をしてくださった川口さん、スポンサーの皆様、寄付してくださったコミュニティの皆様、カンファレンスで面倒をみてくださった原田騎郎さん、スポンサーの一人であった翔泳社の岩切晃子さんは、(勝手に)私の中でこの業界でのお父さん、お母さん的な存在です。皆様には、感謝してもしきれません。

コミュニティスタッフになるまでの道のり

2011年、無事に大学を修了し、就職後すぐに、あるプロジェクトのスクラムチームの一員として立ち上げから参加できることになり、3名ほどの小さなチームでしたが、スクラムでの開発を経験しました。そこではアジャイル開発の基礎を叩き込まれたような気がします。この時期、コミュニティとの接点は、プロジェクトの場所が名古屋だったこともあり、名古屋アジャイル勉強会や、TPS/Agileソフト研究会、名古屋Geek Barなどに参加していました。あとはScrum Boot Campが開催されたこともありました。

ちょうどScrum Gathering Tokyo 2011(Regionalになる前)が開催されて、Scrum Alliance Regional Gathering Tokyo 2013のPOとして準備していた永瀬さんも参加されていました。

上記は当時のレポートですが、またこれはAgile Conferenceとは異なる雰囲気で、参加者層が若くて、その熱気に驚きました。

この当時、コミュニティにはただ参加するだけで、自分がスタッフになって何かをする、という気持ちはほぼ持ち合わせてなかったように思います。ただ、今思うとSRGS2012のOpenJam(今思うとOSTに近いかな)で、永瀬さんホストのSARGT2013についての意見交換セッションに参加したのは、何かしら影響しているように思います。

その後、東京に戻ってきてからは、XP祭りやRSGTにたまに参加するぐらいで、しばらくコミュニティ活動休止期間となります。

 XP祭り実行委員に

仕事での余裕もでてきた2015年に、XP祭りの実行委員になることでコミュニティ活動を再開します。それまでスタッフになることに強い意思を持っていなかったものの、アジャイルコミュニティに対し、今までの恩返しをしたいと思い、参加してみることにしました。

ところで、XP祭りは毎年、実行委員を公募しています!毎年1月か2月ぐらいに募集するので、興味のある方はTwitterもしくはFacebookをフォローしてください!(突然の宣伝)

久しぶりのコミュニティへの参加ということもあり、意気込んで参加したスタッフミーティングの最初の感想は「ゆるっ!」でした。今になって思うと、最初からフルエンジンで運営していたら続かないので、最初はゆるーく始まるのですが、その感触が全く分からず、これで大丈夫なのかなぁと思った記憶があります。でもみなさんプロなので、決めるときは決める、アイディアを出す時は出す、頑張るときは頑張るといったように切り替えを学んだような気がします。仕事終わりにミーティングすることもあり、早く終わろうぜが口癖です。また、毎年基調講演をどなたかにお願いするのですが、みなさんコネがあるので、スタッフだけで(というか、ほぼずっとXP祭りを続けてこられた小井土亨さんだけで)リーチしてしまい、メッセージ出しといたからー、という感じで、その素早さに「これがアジャイルなコミュニティ運営か!」と感動したのを覚えています。

こうして、2015年から始めたXP祭りの実行委員ですが、今でも続けています。

Regional Scrum Gathering Tokyoのボランティア

XP祭りの実行委員に参加することで、スタッフになることにそこまで抵抗を感じなくなった私は、Regional SCRUM GATHERING® Tokyo 2016にボランティアスタッフとして応募することにしました。前日準備も含め3日間は仕事を休まなければならず、少し敷居が高かったのですが、それでも何か自分にできることがあればと思い参加してみることにしました。XP祭りと違い、こちらは有償なので、また違った緊張感がありましたが、その中でも和気あいあいと、素早く仕事をこなす皆様は、やはりプロで、「これこそ自己組織化の極み!」と思ったのを覚えています。RSGTの雰囲気が好きで、その次の年のRSGT2017にもボランティアとして参加しました。 

RSGT2019もボランティアスタッフを募集しています!

Regional Scrum Gathering Tokyoの実行委員に

2017年に実行委員として参加しないかとお声がけいただき、RSGT2018から実行委員として参加しています。みなさん本当に仕事が早くて、私にできることは本当に少ないのですけど、実行委員になって改めて、このイベント運営の大変さや実行委員のイベントを大切に想う気持ちを身にしみて感じました。

RSGTの運営についての歴史は永瀬さんのブログ、RSGTの運営の中でもキモであるセッションの採択については川口さんがブログに書いてくれています。

前回は、実行委員としてしっかりやらなきゃ!という気持ちが先走り、当日はあまり楽しむ余裕がありませんでした。次回はもう少し肩の力を抜いてできると思います。。

アジャイルコミュニティの活動を通して思ったこと

コミュニティは、企業の枠を超えて、エンジニアやディベロッパーが繋がる場です。もし今、職を失ったら、私は生きていけるのか?と不安になることもありましたが、それでもコミュニティでみなさんと繋がっている安心感がどこかにあって、なんとかなる、誰かがきっと助けてくれると思えるのは、コミュニティがそこにあって、一緒に学ぶ仲間を歓迎し、お互いを尊敬し、助け合う雰囲気があるからこそだと、私は思っています。それもひとえに、コミュニティを立ち上げ、今まで維持してくださった先人たちのおかげであり、私のミッションは、そんなアジャイルコミュニティを次の世代にきちんと残すことだと、最近は思っています。

とはいえ、まだまだ未熟者で、まだ実行委員やスタッフとして参加するだけで、私自身アジャイルコーチでもなければ、アジャイルの経験は少なく、至らない点や、まだまだ学ばなければならないことはたくさんあるのですが、焦らず一歩一歩、自分らしくやっていきたいなと思っています。

そして今

そんな想いが私の中ですくすくと育っていく中、去年、語学留学という新たなチャレンジのために海外での生活を始めました。なのでこの記事はカナダから書いています。もはや英語の必要性を強調する必要はないかと思いますが、私の中では、仕事だけでなく、コミュニティ活動にもやはり英語が必要だと思っていて、英語を勉強する理由の一つでもあり、コミュニティへの貢献は日本国内にとどまらず、いつか海外でもできたらいいな、なんて考えています。

留学するにあたり、XP祭りやRSGTの実行委員としての活動はほぼ出来なくなってしまったのですが、送別会を開いてくださったり、暖かい言葉をかけてくださったりと、本当に素晴らしい方々と一緒に活動しているのだなと再認識しました。

また、カナダではミートアップやカンファレンスに積極的に参加しています。こちらではアジャイルに限定せず、広くプログラミングやコーディングに関わるミートアップに参加しました。こちらでも、やはりコミュニティの存在はありがたく、まだまだ英語が下手な私を受け入れてくれました。カナダでの生活はまた別途ふりかえりたいなと思うのですが、こちらで参加したミートアップやカンファレンスをみて学んだことを、日本に持ち帰れたら良いなと思っています。

今やりたいこと

私は、勝手に自分をアジャイルコミュニティにおける”第二世代”だと位置付けています。私がアジャイルに出会った頃には、先人のみなさまが開拓したコミュニティがすでにあり、その中で育ち、今は幸いなことに一緒にコミュニティ活動をしています。そして、今、私がやりたいことは、同世代と繋がること。上の世代を見ていると、みな同世代でやってきた仲間なんですよね。おそらく、若い頃はきっとこの先もずっと付き合っていく仲間だとか思ってなくて、同じような問題意識や面白いと思うことに集まって活動を続けていく中で、そういえば長い付き合いだよね、という感じなのではないかと思っています。

コミュニティを今後も維持、継続していくには、私一人の力では出来ないので、そういった同世代の仲間が必要不可欠です。とはいえ、俺たちの時代を作ろうぜ!とか、世代間で争ったりするつもりもなく、そのような人と一緒に、今後のコミュニティを作り上げていきたいし、仲間にしてもらえるよう、努力していかなければと考えています。すぐに新しいことをやろうぜ!もなく(ないんかい)、粛々と今の活動をしながら、頃良いタイミングで何かできればよいなと思っています。もし同世代の人、何か新しいことをやるときには、こんな私を混ぜてくれたら嬉しいです。

同世代といえば、同世代の中でも、特に私が尊敬するお二人、kyon_mmさん、Takao Oyobeさんが基調講演を務めるScrum Fest Osakaが開催されます!

今からもうワクワクでしかない!

最後に

だいぶ長々と書いてしまいました。ある一人の少女(しつこい)が、アジャイルコミュニティに出会い、たくさんの素晴らしい出会いに恵まれ、スタッフや実行委員として参加するまでの物語でした。次章は新しい仲間探しの旅になるのかななんて、新しい出会いや機会に胸をふくらませています。私のアジャイルコミュニティ・ジャーニーはまだまだ続きます。

アドベントカレンダー12日目は、こちらも同世代で、#omoiyarifm というPodcast配信をしていたり、RSGTの実行委員以外にも様々なコミュニティ活動を精力的になされている、マルチタレントな横道稔さんです!楽しみ!


*1:タイトルは今年出版された市谷聡啓さん、新井剛さん著『カイゼン・ジャーニー』リスペクトです!

*2:私たちはこれをプロジェクト指向教育(Project Oriented Education)と定義し、他の大学とのPBLと区別していました。もしこれらに興味がありましたら、論文もありますのでぜひご覧になってください。

*3:これを書くと、先生は何を教えていたんだ、という方がいるのですが、POEは効率的なプロジェクト運営やソフトウェア開発手法を学ぶのが目的ではなく、学生が本気のプロジェクトを通して(実際に金銭も発生しています)、自ら学ぶ方法だったり、考え行動していくスキルを獲得することを目的としていました。なので、先生が学生に直接何かを教える、ということはほとんどなく、知識は授業などで補填したり、自ら調べたりしていました。

*4:その当時、彼女は日経ITproで「アジャイル研究所」という記事を書いていました。

トロントでCoderetreatに参加してきました

Coderetreatとは、ほぼ丸1日、ソフトウェア開発と設計について学んだり挑戦したりするイベントです。詳しくはコチラ Global Day of Coderetreat

もともとは、Corey Hainesさんという方が始めたイベントで、現在は世界中で開催されています。年に1度、Global Day of Coderetreat (GDCD) という日があり、各地でCodeRetreatが開催されます。このGDCDに合わせて開催されたCoderetreatに参加してきました。

GDCDを記念して?Coreyさん著『Understanding the 4 Rules of Simple Design』がお安くなってます。Coderetreatのお題でもあるConway's Game of Life を題材にして、シンプルな設計について説明されています(私も買いました!)。

Coderetreatは、大体このようなルールで運用されています。

  • 朝から始まり、1日で5〜6セッション行う(土曜日に開催されることが多い)
  • 各セッション1時間、コーディング:45分、10分:ふりかえり、5分:ペア組・休憩
  • 毎セッション、パートナーを交換して、ペアプログラミング(日本ではモブもやっていたそうですね!)
  • 毎セッション、コードは削除、スクラッチで開発する
  • 課題はコンウェイのライフゲーム(Conway's Game of Life)を実装する 
  • 言語はなんでも構わないが、ペアのどちらかが詳しいものにしておくと良い
  • TDD推奨
  • お昼、おやつ、飲み物はスポンサー持ち

いきなり知らない人とペアを組んでプログラミングを1日中するので、終盤はクタクタになります。

私は日本で2回(名古屋と東京)参加したことがあり、Coderetreatの楽しさを知っていたので、せっかくトロントにいるし、今回は思い切って英語で挑戦してみました。

 Coderetreat Toronto Edition

今年のGDCDは11月17日でした。

トロントでは、nulogy というダウンタウンにある会社で開催されました。予定としては9:00-17:30、6セッションというかたちでしたが、案の定、9時にはみなさん集まらず、9:15ぐらいからゆるゆると始まりました。参加者は最大で20名ぐらいかな、途中で帰った人も(この辺もゆるい)。

  • 午前中:3セッション
  • ランチ、軽いオープニングワーク
  • 午後:3セッション
  • クロージングふりかえり

私のセッションはこんな感じでした。

1セッション目:
  • 言語:JavaScript、テストフレームワークは使わずにテスト(素のJavaScript)
    • ペアの方がPythonで、JavaScriptならなんとなくわかるということだったので
  • 最初の1回目で、ペアの方もCoderetreat初めてだそうだったので、手探りで進んだ
  • 私がドライバーをしたが、なかなか次のステップをどうするかの意思疎通が難しかった
  • Cellクラスの次世代を作るメソッド名を「passToNextGeneration」をしたのだけど、「pass」としたのは初めてだった
  • Cellのルール実装までは完了
2セッション目:
  • 言語:JavaScript、テストはJestを使用
  • ピンポン形式(どちらかがプロダクトコードを書き、もう一人がテストコードを書くやり方)で、私がテストを書いて、ペアの方がプロダクトコードを書くかたちで進めた
  • Jestは初めてだったけど、特に難しいことはしてなかったので文法的には問題なく記述できた
  • クラス属性としてfunction書いちゃうあたり、JSな感じ
  • テストが通ったら、いえ〜い!
  • Cellのルール、隣人の生きているCellの数の計算までは完了
3セッション目:
  • 言語:Java、テストはJUnit
  • ペアの方がRubyだったので、Javaにしたけど、全然私よりエディタの操作になれていて、速かった
  • Cellクラスから実装するのではなく、Gameクラスから実装
    • コンストラクタで一気に初期化するのではなく、一つ一つaddしていく方法
  • 座標(Coordinatesクラス)をPairの拡張として実装
  • なかなか何を次のステップとするか理解できず、ほぼ書いてもらってた
  • 隣人をCellにセットするところまで完了
4セッション目:
  • 言語:Java、テストはJUnit
    • ペアの方がPythonだったので、Java
  • 今回もドライバーだったが、あまりペアの方の意思が理解できず、とにかく実装して確認、という進めかただった
  • 隣人の生きているCellの数を計算するところの途中で終わった
5セッション目:
  • 言語:HTML, CSS, JavaScript
  • ペアの方がフロントエンドデベロッパーで、UIファーストでやってみたいということでHTMLを書くところからスタート
  • CSSの「grid-template-columns」を使ってCellを表現
  • 次世代を計算するところはJavaScriptで主に私が実装
  • 特にクラスとかも用意せず、単純に2次元配列の[0, 1]で表現していたので、生きているCellをカウントするのは楽だった(足せばいいだけ)
  • 残り次世代をHTMLに反映するところでタイムアップ
6セッション目:
  • 言語:Java、テストはJUnit
    • ペアの方がPythonだったのでJava
  • 今回もドライバーだったが、もう最後ともなると二人とも疲れていて頭回らず
  • Cellが隣人のCoordinatesを返すアプローチ
  • 隣人のCellを取得することろまでで終了

感想とふりかえり

今回のCoderetreatについて
  • HTMLも面白い(Twitter見てたらSQLでやっている人もいた)、ついつい「テスト書くぞ!」ってなると動的な言語を選びがちだけど、もっと自由に楽しくやってもいいのかな、と思った
  • お昼明けに軽いワーク(サークルになって1人が質問して、当てはまる人がサークルの真ん中に集まる、例:仕事でTDDやっている人?)はよかった
    • バックグラウンドの共有もできるし、ランチ食べて眠いところに体動かせる
    • そこで分かったのは、Javaエンジニアは私しかいなかったこと、RubyかJavaScriptかPython、あとはGoもいた
  • ペアの英語はほぼ聴きとれてたと思うけど、何をしたいのかを理解するのに時間がかかった。ペアが何をしたいのか理解するのが難しい、と思ったけどこれは日本語でも英語でも同じだと感じる(私の理解力も足りないのもさることながら)
    • 残念ながら、ふりかえりは、サークルで皆声が小さかったり速かったりでなかなか聴き取るのは難しかった(泣)
  • よくコードで会話しろ、と言われますが、プログラミング言語のおかげでなんとか6セッションやりきることができた
    • 2つの言語を持つ我々強い。もしかしたら、ペアプロしながら英語を学ぶのはよい方法なのかもしれない。サイレントプログラミング(会話禁止、コメントでの会話禁止)もあるそうで、それも挑戦するのも面白そう
  • こっちのMeetupやイベントに出ていつも思うのが、ゆるい。決してダラダラしていたり、集中力がない、というわけではなく、ゆったりと時間が流れている感じ。おかげで、比較的リラックして取り組むことができた
  • 日本との差なのか分からないけれど、日本で参加してたときには、きっちりCellのルールを実装しきってから次、のように確実に進めていくことが多かったが、こっちでは半分ぐらい、Cellのルールを実装し終わらずにGameやBoardなどの実装に移ることがあって、日本と欧米人の違いなのかなと思った
  • もう少しインターフェースや名前を中心に議論したい、最初に軽く設計をしてコードを書き始めて、途中であまりメソッド名やクラス名をふりかえったりしないので(時間がない)、特に仕事では途中で手を止めて全体を見渡す時間をあらかじめ設けることも必要なのかなと思った
Coderetreatについて
  • 毎回思うけど、1(0?)から書くの大事、プロジェクトにいると、まっさらな状態から書くことが少なく、設定の仕方とか忘れちゃう
  • 同じ課題に取り組んでいるのにも関わらず、一度として同じコードを見たこともないし、一度としてペアと進め方が同じだったことはない、100人いたら100通りのアプローチがある
    • このような"チームの文化"ははコード規約やコードレビュー、普段の会話などで擦り合わせられていくのだろうと思うのだけれど、これをすり合わせるのは時間・労力が必要だなあと感じる。そういう意味では、チーム全体で課題に取り組むモブはすごく良さそう(でもまだ体験できてないので、いつか挑戦!)
  • 毎回疲れる、そもそもこのエネルギーで8時間は持たないということだろう
  • ライフゲームは奥が深い
    •  いつも隣人を取得する実装がシンプルでないことが多くて、どうやったらシンプルになるのかいつも模索している、なんかいい方法ないのかな
    •  あと、初期のパターンによってはCellの世界が拡張されていく必要があるのだけれど、まだ実装できていない
    •  四角形じゃなくて、5角形だったり、6角形だったり、世界が陸続きになってたり...やることはたくさん

ということで、疲れたけどとても充実した時間でした。いつもこの素晴らしいイベントを企画してくれるホストのみなさん、美味しい料理と会場を用意してくださるスポンサーの皆様に感謝です。

エンジニア向けのみのイベントではないので、プロジェクトマネージャーやデザイナーさんとかにもオススメです。

あとは、まだ参加したことがないけど、「Legacy Coderetreat」ってのもあります。これは1から実装するのではなく、すでにあるレガシーなコードをリファクタリングしていくCoderetreatです。Reforctoringの練習には良さそう。

f:id:ayumi_h:20181120092030j:plain

f:id:ayumi_h:20181120092057j:plain
f:id:ayumi_h:20181120092139j:plain
右はライフゲームが実装されたオブジェ

日本のアジャイルコミュニティとアジャイルについての質問と回答

最近、トロントで『Woman in Agile』というコミュニティが立ち上がり、参加しています。

コミュニティ専用のSlackがあって、そこではインターナショナルに会話がなされているのですが、その中でワシントンにお住まいのアジャイルコーチから日本のコミュニティに関する質問をもらいました。

質問の内容はこちら:

  1. What is the agile community like there? how big? how mature?
  2. What are some of the unique challenges faced by Agile coaches in Japan? structural? cultural?
  3. What industries are heavy into Agile? which ones are not?
  4. Finally, is there more integration of Lean and Agile in Japan because of your history/experience with Lean and Toyota?

私自身はアジャイルコーチではないので、Facebookでコーチのみなさまにご意見を伺ってみました。その回答が、私にのみ留めておくのはもったいないなーと感じたので、少し要約して、シェアしたいと思います。

回答をくださった、Ryuzeeさん、Mihoさん、Kiroさん、ちぇんわさん、やっとむさん、かわぐちさん、福井さん、菅野さん、北原さん、ありがとうございます!

1に関しては私の方で回答を作成しました。英語での回答も下に載せておきましたので、もしよろしかったらご参照ください。

2. What are some of the unique challenges faced by Agile coaches in Japan? structural? cultural?

構造的、文化的、どちらの問題もある。

構造的な問題:

  • 解雇規制により、SIerなどにソフトウェアはアウトソースされることが多い
    • スコープを大きくして外注を使うことで利益を上げるビジネスモデル
    • 労働集約型ビジネスになっており、アジャイルな働き方と相反する
    • 発注者側にソフトウェアに詳しい人が少ない、コンピュータサイエンス学位保持者はほぼいない
    • ソフトウェア企業の売上とエンドユーザのエンゲージメントが一致せず、品質や開発者のスキルへの投資が起こりにくい
    • 教育してエンゲージメントの高い開発者を社内に維持することでビジネスの競争力が上がるというエコシステムが回ってない
  • 組織構造がプロダクトやサービス中心ではなく、職能中心でクロスファンクショナルなチームが作りにくい

文化的な問題:

  • 予算主義や計画通りに進めることに対して偏重
  • 重要・必要なタスクにフォーカスせずに全て終わらせようとする組織的なメンタリティ
  • 本音と建前:根本的な解決や問題の発覚を避ける
  • お客様は神様:要求が非効率であってもソフトウェアを作ってしまう
  • 成果ではなくプロセスを評価、結果ではなく努力や態度を評価する
  • 判断が保守的で慎重、一方で流行に敏感なの急いで取り組んで失敗例を大量に作る
    • 挑戦よりも前例踏襲に趣をおく
    • 実践して学ぶより、論理的に辻褄が合うことを優先する
  • システム全体にかかるコストを重視し過ぎて柔軟に決済が下りない
  • コミットできない内容は承認されづらい
  • 業務が固定化しない(新しい仕事が増える)のであれば、システム開発に終わりない、というパラダイムシフトができていない
  • いまだにアジャイルへの誤解がある
    • 付箋を貼って立ってミーティング、タスクボードを使えばスクラム、みたいな
  • 英語ができない人が多いので、英語圏の知識を得る方法が翻訳(ビジネス)に頼り、間接的で遅く誇張されエラーを含みやすい
  • 東南アジアのアジャイルコミュニティに比べると日本は極端に女性の参加が少ない

3. What industries are heavy into*1 Agile? which ones are not?

  • 業種は産業は関係ない、これらは言い訳に使われることは多いけど、色々やってる会社は業種に限らずやっている
  • 金融系の企業は規制産業で大変ではあるが、たとえばアクサ生命なんかは数年前から取り組みを始めてて、最近事例として出回っている

4. Finally, is there more integration of Lean and Agile in Japan because of your history/experience with Lean and Toyota?

  • Leanの言葉自体が混乱しているので、Leanという言葉が何を指しているかによって異なる
    • Leanは最初生産調整の部分をソフトウェアに適用しようとしたが、そのあと生産じゃない部分が鍵であることに気づく
    • Lean StartupはLeanとは無関係

私の回答はこちら(全てのご意見を含められなかったのは残念):

1. What is the agile community like there? how big? how mature?
There are a lot of Agile communities in Japan such as Regional Scrum Gathering Tokyo(RSGT), Agile Japan, Agile Process Association, and Agile Tour Osaka. I'm an organizer of RSGT and XPJUG(XP Japan User Group). RSGT will hold the 8th annual Regional Gathering next year, and about 300 people take part in it each year. XPJUG has conducted XP Matsuri('festival') every year since 2002, and we welcome about 200 attendees. I can see the variety of types of communities; small or big, every month or every year, conference or reading circle. Anyway we have many Agile communities in Japan.

And also, there are communities for software development, which is not related to Agile directly, such as programming language communities (especially Ruby!), and communities for software engineers, one of which has 2500 participants in its conference.
I think that the Japanese Agile community has become the second generation*2. In 2009 to 2014, many communities for newbies were the most active, but recently they have been not so active. However, new communities for newbies started to be formed from 2016.

You seem to be interested in women's presence in Japanese Agile communities, but unfortunately it's not so good. I think that it's because of cultural and structural problems, and Agile itself is not the problem. For example, generally speaking, many women can't continue their work after they give birth because we don't have a culture of baby sitting, it's difficult to find a preschool, husbands work for many hours and do not help their wives, and their parents live far away... Moreover, Japanese software engineers usually work at their client's company for hourly unit prices, which means that it's not flexible. So, in Japan, it's really hard for women to keep their job and join tech communities if they have kids.

2. What are some of the unique challenges faced by Agile coaches in Japan? structural? cultural?

I asked Agile coaches about this question. According to them, they face structural and cultural challenges. The structural challenge comes from legislation that does not allow a company to fire an employee easily. So, a lot of companies outsource engineers from other software companies or system integrators because they don't want to take the risk of hiring them by themselves. Usually, the contract is to develop all functions that they planned before signing it, and software companies tend to expand the scope of products because it's their sales. And if a company outsources a development, they should have management skills, and fundamental engineering and computer science knowledge at least; we, however, can see such a situation rarely. This is like a labor-intensive industry, where huge system integrators also outsource engineers from other small companies, then a team member who is collected like that, is not a self-organized person usually, and they need to be controlled by a manager. Therefore, these factors obstruct the increase of agility in software development in Japan.

And also, there are a lot of cultural challenges; an organization is divided by function, so it's difficult to organize a cross-functional team, and Japanese people tend to conduct projects by following the plan or budget exactly, and make a decision conservatively and carefully, which means they are not adaptable and they avoid challenging convention. Furthermore, a process is more important than its result for Japanese people; most people care about effort or attitude than consequences, so those people believe that working for long hours is good even though they don't have any tasks that they should do immediately.

3. What industries are heavy into Agile? which ones are not?

I asked this question as well. Everyone who answered this says that the type of industry does not matter. Even thought companies may be huge and traditional such as banks or medical care, they recently started to adopt Agile. As I mentioned, the Japanese Agile space has many challenges and the adoption rate is still lower than other countries, but the situation is changing gradually.

4. Finally, is there more integration of Lean and Agile in Japan because of your history/experience with Lean and Toyota?

I'm afraid that I'm not familiar with Lean. According to an expert, 'Lean' has a lot of meanings, and the definition is confusing now; originally, Lean was an idea to adapt a production adjustment system in the Toyota Production System to software development. Some people, however, discovered later that the key points of Toyota's system are in other areas. Besides, Lean Startup isn't Lean. So, the answer to your question depends on what 'Lean' means.
I wonder whether people in your country discuss Lean and Agile separately or not.

*1:"be heavy into" の意味を勘違いしていて"difficult"的な意味かなと思っていたら"really interested in..."のカジュアルな言い回しだったようです(ネイティブ談)。でも回答としては遠からずだったので、そのまま回答してしまいました。

*2:あくまでも東京の状況をみて私が感じている、という話です。