ボランティアプロジェクトを通じて学んだ「がんばらないアジャイル開発」
株式会社ゆめみ(以下、ゆめみ)でデベロッパーとして働く浜名将輝氏は、学生時代は論理回路設計の研究を専攻しており、Web開発経験ほぼゼロの状態で2020年に同社に入社。以来、サーバーサイドエンジニアとしてKotlinやSpring Bootを駆使した開発業務に従事している。また本業と並行して、学生時代から「LED-Camp」という組込みシステム初学者向けのセミナーの運営にボランティアとして参加している。
LED-Campは、3泊4日の合宿形式で組込みシステムのアジャイル開発やチームビルディングを体験できる初学者エンジニア向けのセミナー。参加者はいくつかのチームに分かれ、モデリングツールや3Dロボットシミュレータなどを使ってシンプルなロボット制御プログラムを開発する。ロボットには測距センサーや色識別センサー、移動用のモーターなどが搭載されており、これらをうまく制御してゲームで高得点を挙げることを目指す。
年1回のペースで開催されているこのLED-Campは、浜名氏を含む約10名の学生や社会人のボランティアで構成される「LED-Camp実行委員会」が運営している。浜名氏によれば、ボランティアで運営することにはいい面もたくさんある半面、苦労もあるという。
「ボランティアの人たちは志を持った優秀な方ばかりなので、そういう人たちと一緒にモノづくりをすることはとてもいい経験になります。その半面、ボランティアは仕事や勉学、プライベートの空き時間で活動するため、仕事で行う開発にはないさまざまな苦労が伴います」(浜名氏)
メンバーはそれぞれ異なる組織や環境に身を置いているため、どうしても活動時間に個人差が生まれ、また全員そろって顔を合わせる機会もなかなか取れないためチームの状況を把握するなど共通認識を取りにくい。こうした制約の中、ボランティアプロジェクトをうまく回してくために浜名氏らが採用しているのが、一般的なアジャイル開発手法を独自にカスタマイズした「がんばらないアジャイル」。そのコツの1つとして、浜名氏は「メンバーのやりたいことを尊重する」を挙げる。
「なるべく各人が『やりたいこと』『試したい技術』を尊重した活動方針を立て、誰もがやりたくないことは全員で手分けすることでメンバーのモチベーションを保つ工夫をしています」(浜名氏)
また、「スケジュールを詳細にしすぎないこと」も重要である。メンバー個々人の稼働時間がばらばらである以上、タスクが予定通りに進まない事態はどうしても避けられない。そのため、タスクの順番は決めるものの、厳密なスケジュールはあえて決めずに、全体のタスク進捗状況をバーンアップチャートで管理するレベルにとどめている。定例ミーティングも週1回ペースではなかなか全員が顔を合わせられず、開催したとしても報告内容が少ない割にメンバーの負担ばかりが増えるため、2、3週間に一度ぐらいのペースにとどめている。
ただし、成果物のレビューだけは決して手を抜かず、メンバー全員で行うようにしている。「レビューは手間も時間もかかるタスクですが、これをおろそかにすると間違いなく後悔することになるので、定例ミーティングなどの場を捉えて必ず全員で行うようにしています。またレビューすることで他のメンバーの作業状況が把握できますし、自身にとっても勉強になります。さらに修正点を指摘するだけでなく、優れた点を互いに褒め合うことでメンバー間の関係性も良くなります」と浜名氏は言う。
そして最後のポイントとして、浜名氏は「あえて余力を残すこと」を挙げる。全員が多くのタスクを抱え込んでしまうと、どうしてもレビューがおろそかになり、またチーム全体の状況も把握しづらくなってしまう。そこで、あえて「タスクを明示的にアサインしないメンバー」を決めておき、他のメンバーが多忙の際にタスクを引き取ったり、全体レビューの前に一次レビューを行ったりしている。
「なかなか予定通りに準備が進まずに、本番が近づいてくると胃が痛い思いをすることもありますが、こうして『がんばらないアジャイル』を実践することでボランティアプロジェクトを可能な限り円滑に回す工夫をしています。なお、私たちと一緒に実行委員会として活動してくださる方も随時募集しているので、興味を持たれた方はぜひ気軽に声を掛けてください」(浜名氏)
いろいろトライアンドエラーを繰り返したら実績が積み上がってきた話
続いて同社の桑原聖仁氏が登壇し、同氏がこれまでエンジニアとして成長する上で心掛けてきたことや実践してきたことについて紹介した。桑原氏はゆめみで「チャレンジ取締役」「サーヴァントリーダー」「採用広報」などさまざまなロールを自任するほか、社外においてもOSSエンジニアとしてRiot.jsのコミッターを務めたり、書籍を執筆したり、あるいはさまざまなイベントに登壇するなど幅広く活動している。
そんな桑原氏だが、かつてはデベロッパーという職業に生きがいを見いだせなかったこともあった。「今でこそこうして社外での活動に積極的に関わっていますが、かつてはこうしたコミュニティや活動があることすら知らず、プログラミングを積極的に学ぶ気になれなかった時期もありました。でもそんなとき、過去の自分を振り返っていろいろ思索を巡らしてチャレンジしていった結果、エンジニアリングの魅力を再発見して現在の活動につなげることができました」(桑原氏)
このマインドシフトを始めるに当たり、桑原氏はまず「そもそも自分にとっての成長とは何か?」という地点から出発した。「いろいろ考えた結果、『目の前の目標を達成するために必要なピース』が成長であると定義しました。ではそのピースを集めるためには、具体的に何をすればいいのか。結論的にはとにかくチャレンジをするになりますが、その際に私は『実行のサイクル』と『マインドセットのサイクル』という2つのサイクルを意識することにしました」(桑原氏)
実行のサイクルとはいわゆる「PDCAサイクル」のことで、Plan(計画)、Do(実行)、Check(検証)、Action(改善)の一連のサイクルを回しながら、活動の質を継続的に改善していく取り組みを指す。そしてもう1つの「マインドセットのサイクル」は、桑原氏が自身で考案した「DFILサイクル」を実践することでマインドセットを高めていく取り組みだ。
「まずやりたいことをSNSや身の回りの誰かに宣言(Declaration)することで、『宣言したからにはやらねば!』と自身の決意を固めます。次に『自分はバカだ(Fool man)』と思い込むことで、失敗や周囲からの批判・嘲笑に耐え得るメンタリティを確立します。あとはひたすら無心・無邪気(Innocent)に実践していきます。そして最終的に、実践した結果から学び(Learn)を得て、次のチャレンジへとつなげていくのです」(桑原氏)
桑原氏は日頃からこの2つのサイクルを意識しながら、さまざまなチャレンジに挑んでいる。加えて同氏は、チャレンジの結果から得られた成果や学びを、可能な限りアウトプットすることを強く推奨。今日ではSNSやブログなど多様な情報発信プラットフォームがあるため、これらを最大限活用してどんな些細な内容でもいいからアウトプットしていくことで、それを目にした人からのフィードバックが得られ、次の学びや展開へとつながっていく。また目にした人の学びにもなることも期待できる。
こうして情報発信を続けていけば、徐々に人的なネットワークが広がっていき、他の人々から貴重な情報が得られるなど次の活動につながるチャンスがもたらされる。そのため、コミュニティへの参加などを通じた人的ネットワークの構築は、常に意識した方がいいと桑原氏はアドバイスを贈る。
ただし、いきなり大きな目標を掲げてそれに向かって一直線に進もうとしてもハードルが高すぎるため、最終目標に至るプロセスを細分化して、小さな目標を設定してそれらを日々1つずつクリアしていく「スモールスタート」を桑原氏は推奨する。
最後に桑原氏は、「年配の方々を始めさまざまな方に『人生最大の失敗は何でしたか?』と聞くと、『本当は興味があったこと、やりたかったことにチャレンジしなかったことが最大の失敗だった』という答えが多く返ってきます。チャレンジすれば必ず何らかの結果と学び、気付きが得られるはずなので、極論すればチャレンジが失敗を生むことはありません。人生は『何を得るか』よりも『何を残すか』の方がよっぽど大事です。皆さんが人生を後悔しないためにも、思っていることがあれば是非チャレンジし続けることをお勧めします。そして、皆さんが充実したデベロッパーライフを送れることを願っています」と語り、セッションを締めた。