見出し画像

スクラムで開発者のスキルを高めるための方法 お手軽3選

スクラム開発をしていると、スクラムの知識は少しずつ身についてきたけど、どうも開発者の技術力が低いのではないか?と思ったり、開発スキルに自信がないといった事があるのではないでしょうか。実際に私がスクラム開発の支援に訪問しても、スクラム開発の支援だけではなく、開発スキルの支援をすることも珍しくありません。

実は、重要な場面の単体テストのコードや、エンドツーエンドのテストコードを書いていて、CI/CD(継続的インテグレーション/継続的デリバリー)ができているチームは、そんなに多くないのです。また、技術選定の方法に自信がない、障害時に原因を特定しやすいログ設計ができていない、ペアプログラミング・モブプログラミングに自信を持てないなど、多くのチームで技術的な部分に問題を抱えています。

そこで今回は、チームで開発者の技術力を高めるための方法の中で手軽なものを3つ選んで紹介したいと思います。

その1:チーム内勉強会

開発者のスキルを高めるために最も手軽な方法は、チーム内勉強会でしょう。これは、定期的に一定時間をチームの学習時間に投資するものです。私も支援しているチームの多くで、このチーム内勉強会を提案して、習慣化することでチームでのスキルアップを目指しています。

チーム内勉強会は、普段のタスクのための調査とは別に、直近のタスクを実施しても調べることのない技術や情報について挑戦するのがポイントです。長期的なスキルアップに投資することが、トータルとして業務効率を高めたりします。こういった機会がないと、新しい技術や設計手法について調べる機会がないチームも多いためです。

時間

勉強会を実施するときに悩ましいのが開催時間です。他のチームは、一体どの程度の時間を勉強会に当てているのでしょうか。準備時間と発表時間を含めた合計時間で少空きします。

私が知る限り一番多いチームは週に1日取っていました。技術力アップをかなり重視した会社で、請負契約だったためある程度時間を融通していた様子です。逆に少ないチームは2週間(1スプリント)で1時間のチームがありました。最も多いのは、準備時間も含めて1週間に1〜2時間程度の時間を使っているところが多いように感じます。

題材

勉強会と言われても、慣れていないと、どんな内容をやればいいか困ると思います。いろんなチームを見てきましたが、以下のような内容のものが多いので、参考にしてみてください。

  • 新しいライブラリ/フレームワーク/アーキテクチャを触ってみる

  • 新しい技術を調べて共有する

  • 設計手法について調査して共有する

  • 読んだサイト/本の要約を共有する

  • 自分の体験をまとめる

形式

勉強会の題材を見たところで、どのような形式で会を実施するのか慣れていないと選びづらいように思いますので、形式も紹介します。

  • プレゼン会

  • もくもく会+発表

1つは、プレゼン会です。プレゼン会は、事前に時間を確保してプレゼンを作成することで、発表する場だけ同期的に集まる形式です。これは、準備に使う時間は週1時間と決めておくのが良いです。全員が毎回のプレゼン会で発表するのもいいですし、担当者を2人程度決めて交代で発表するのも良いでしょう。

もう1つは、もくもく会です。準備時間を事前に取ってくださいというと、時間を確保することにためらったりして、業務時間外に準備をしてしまう方もいらっしゃるので、この形式を使うこともあります。これは、プレゼンを作ったり、調査する時間も、同期的に集まってやろうというものです。そして、会の最後に発表する形式です。

勉強会導入のハードルを下げるために

勉強会の実施には、慣れていない組織であれば難しく感じるところもあるようです。そういった場合は、趣味のライトニングトーク(5分程度のプレゼン)会を実施することで、チームの前でプレゼンすることになれることから始めやすいです。

その2:ペアワーク・モブワーク

もう一つの手軽な方法は、ペアワーク・モブワークです。こちらは勉強会のように、普段業務で使わない長期的な技術への投資ができるわけではないので、ペアワーク・モブワークをしているからといって、チーム内勉強会が不要になるわけではありません。

この方法は、複数人で同じディスプレイを見ながら一緒に作業をすることで、他者の仕事の仕方を学べるという大きなメリットがあります。普段、一緒に仕事をすることがなければ、知る由もなかったことを知ることができます。

例えばこんなことが学べます

  • 一緒に設計することで、設計のときに考えていることを知れる

  • 技術を調べるときにどんなキーワードを使えば良いのか

  • どうして、このサイトを確認せずに、あのサイトの情報を採用したのか

  • 普段、業務効率化のために使っているCLIコマンド

このお手本をみるといった行為は、学習科学の分野でモデリングと呼ばれる手法であり効果が高いとされています。また、複数人で考えていることを話しながら、説明を聞いていた側が分からないことを聞くことで、説明していた側も実は理解が足りなかったことに気づくといったこともあるでしょう。これは、建設的相互作用と呼ばれる現象で理解が深まるとされています。実はペアワーク・モブワークは科学的にも学習効果の高い手法です。

ペアで作業をすると、作業効率が1/2になるようになり、学習のために作業効率を落とす方法のように感じられます。しかし、実際には手戻りが減ったり、コードレビューの手間が減るなど、メリットもあるためそこまで作業効率は下がりません。

私も2年ほど、すべての業務をペアワークで実装していたことがあります。そこでは普段のプログラミングと違った辛さを感じたものの、作業で詰まったときの解決が大幅に早くなりました。さらに、ベロシティ(生産性)を計測すると、ペアワーク導入前と後では、変化がありませんでした。そのため、作業効率を犠牲にして学習するための方法ではなく、ペアワークは生産的な方法なのです。

実施したチームでは、ペアワークの感想を聞いてみました。慣れない作業で疲れるのもあり、ずっとペアワークがいいと回答されるケースはありませんでしたが、複雑な作業のときはペアワークの方がいいといった回答は多く得られました。

もっと詳しく知りたい方へ
https://www.scrum.org/resources/blog/turn-pair-programming-daily-practice

その3:スキルを可視化する

ここまで、勉強会やペアワークを紹介してきました。勉強会やペアワークでなんとなく技術力を高めることは可能です。しかし、可視化して目標を持って学習していかないとなんとなく良いことをしている事になってしまい、何ができるようになったかわからず達成感が得づらくなってしまいます。しかし逆に、プロダクトから求められるもの・会社から求められるものを可視化し、身に付けられれば人事評価にも繋がりやすくなります。

星取り表

スキルの可視化としては、横軸に人、縦軸にRubyやAWSといったスキル名を並べて、5段階評価などする星取表形式が一般的です。この可視化方法は、時間が作成に時間がかからないので、おすすめの方法の1つです。しかし、組織から何がどの程度求められているのか分かりづらいといった問題もあります。

ルーブリック

こちらは、インストラクショナルデザインと呼ばれる教育の分野から始まったやり方です。
応用して、川口 恭伸さんがドラクエ風スキルマップとして開発チームで実施できるようにやり方が公開されています。この方法は、星取り表に比べて作成に時間がかかってしまうのが難点です。しかし、作っている間にチームのスキルに関する言語化ができるようになり、開発者の方々も日頃意識したことのない観点でスキルに向き合えるよい機会になります。

リンク先のやり方は、ドラクエ風になっているということもあり、ゲームが好きな開発メンバーからすると作るのが楽しいらしくワークショップをやったところ大好評でした。3〜4時間ほど時間を確保しておくのが良さそうです。

まとめ

今回は、お手軽に技術力をアップできる方法として、社内勉強会、ペアワーク・モブワーク、スキルを可視化する、をお伝えしました。どれも、時間だけ捻出することで試すことのできるお手軽な方法ばかりです。業務時間を使うことに抵抗のある人は、1スプリントに1時間だけ使ってみることから挑戦してみてはいかがでしょうか?

それでも、うまくいかないなどお困り事がありましたらコメントにて教えていただければと思います。よろしくお願いします。

この記事が気に入ったらサポートをしてみませんか?