BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース リーンコーディングでより良いコーディングを学ぶ

リーンコーディングでより良いコーディングを学ぶ

原文(投稿日:2019/01/31)へのリンク

リーンコーディングは、実際のコーディング作業についての洞察を提供することを目的としており、開発者が10分レベルで物事が想定通りに進行していないことに気付き、直ちに支援を求めることを可能にする。開発者はリーンコーディングを使用することで、より良いコードを書けるような技術的スキルを向上させることができる。

Theodo UKの共同創設者兼CEOであるFabrice Bernhard氏と、Theodo Franceのアーキテクト開発者兼コーチであるNicolas Boutin氏は、Lean Digital Summit 2018でリーンコーディングについて話した。InfoQはこのイベントを要約、記事、そしてQ&Aでカバーしている。

「リーンコーディングは私たちが科学的にコーディングする方法を研究するための努力であり、カイゼンを使用して、より良いコーディングへの洞察を与えるようなボトルネックを特定します」とBernhard氏は述べた。「私たちは特にゴーストプログラミングと呼ぶ1つの手法を試しました」と彼は続けた。

Bernhard氏は、ゴーストプログラミングの仕組みを説明した。

この考えは、まず最初に数分のステップで次の数時間の間コーディングする計画の詳細な技術的計画を書きます。そして、マリオカートでのあなたのゴーストと戦うように、実際の実行ステップと各ステップに費やされた時間を初期計画と比較します。これにより、コードレベルで期待と現実の間の強い不一致を発見することができます。それは潜在的な改善の金山です。

リーンコーディングを使用してTheodoは生産性を向上させた。さらに彼らのチームの働き方を改善する手助けとなった。

InfoQは、Fabrice Bernhard氏とNicolas Boutin氏にリーンコーディングについてインタビューした。

InfoQ:"リーンコーディング"とは何ですか?

Nicolas Boutin氏:私たちは翌日の遅延につながるような問題を解決して、日々の作業を改善しようとしていました。そしてコーディング中に何が起こったのか自問してみたものの、問題がぼやけていることに気づきました。無理もありません。私たちの最も正確な問題指標が実は毎日のバーンダウンチャートであったため、問題が発生しているという認識が発覚するのはいつも翌朝だったのです。

日本のリーンな工場への訪問でインスピレーションを受け、私たちはどうしたらもっと粒度の細かいレベルで "andon"指標を作成することができるだろうかと考えました。コーディング前の設計段階で予想されるタイムラインを追加すれば、10分レベルで物事が想定通りに進行していないことを検出し、すぐに助けを求めることができるだろうということに気づきました。これは、非常に興味深い2つの変化をもたらしました。まず、チームは問題に対して素早く反応し、翌日ではなく即座に上級のチームメンバーからの助けを求めることができるようになりました。さらに、一日の終わりに問題がどこで発生したのかを正確に把握し、継続的な改善努力をどこに投資すればよいかの特定に非常に役立っています。インスピレーションを受けたリーンな工場から、私たちはそれをリーンコーディングと呼びました。

Fabrice Bernhard氏:リーンコーディングは、リーン開発とソフトウェア開発のクロスロードで検討した分野の1つです。興味深いことに、アジャイルの動きが優位になってからプロジェクト管理またはオペレーションの観点から開発作業を改善する方法には多くの焦点が当てられてきましたが、コーディングの観点からの改善方法ははるかに少なかったのです。

InfoQ:リーンコーディングはどのように行うのですか?

Boutin氏:具体的には、このように行います。

  • 一日の始めに、私は次に出荷するユーザーストーリーを選びます。
  • それから、ユーザーストーリーを10分以内の技術的なステップに分割します。これを"テクニカルデザイン"ステップと呼びます。
  • "テクニカルデザイン"ステップは、数時間分の作業の準備として最大30分かけます。
  • それから、コーディングを始めます。10分のタクトタイムを超えるたびに、期待と現実の間に相違があることを認識します。問題を乗り越えるため他の開発者に"andon"することもできますし、あるいは後で分析するためにその問題を記録に留めることも可能です。
  • ユーザーストーリーの最後に、私は遭遇したすべての問題をリストアップし、根本的な原因を特定し、そして次の日を成功させるのに役立つ小さな行動を計画します。

これが私たちがTheodoでゴーストプログラミングと呼んでいるものです。Casprと呼ばれる内部デジタル製品も作成しました。

  • 私たちが使うプロジェクト管理ツールであるTrelloにリンクして、Casprはユーザーストーリーを10分以内の技術的なステップに変換する"テクニカルデザイン"ステップで使用します。
  • コーディングのフェーズでは、IDEから直接ステップを操作できるようにbashインターフェイスを作成しました。
  • コーディング中に問題が発生した場合、Casprはジェスチャーと誰に助けを求めるべきかに関する標準を提案し、解決方法の特定を手助けしてくれます。
  • 一日の終わりに、私はどのコーディングスキルを最初に向上させる必要があるか知ることができ、チームリーダーはdojosまたはペアプログラミングセッションを通して私を訓練することができます。

InfoQ:ゴーストプログラミングからどんな恩恵を受けましたか?

Boutin氏:私は7人の開発者チームのチームリーダーでした。ゴーストプログラミングを始めてから5週間後、私たちは生産性を2倍にすることができました。期待されたものと比較して2倍多くの機能を提供したのです。

同時に、私はチームメンバーの技術的なスキルを向上させるためにdojosやプロジェクトの作業環境を改善して彼らを指導しました。このようにして彼らはより良い仕事ができるようになりました。

このアプローチには強力な規律が必要であるため、他のチームが簡単に採用できるようにするためにはまだいくつか改善作業が必要です。私たちが注目している1つの側面は、次に来るタスクで先を見越して開発者を支援する機械学習を使用した"テクニカルデザイン"ステップを活用することです。

Bernhard:ゴーストプログラミングを採用しているチームでは、生産性が最大で2倍向上しました。私たちはこれらの結果をトヨタVSテスラ リーンがデジタルネイティブから学べることは何かというプレゼンテーションで示しています。

しかしこのような目を見張る生産性の向上よりも、本当の利点はチームにとっての学習です。これらの学習は非常に幅広いものです。例としては、トレーニングを通じて対処できるチーム内のスキルギャップの迅速な特定、想定を超えてテストやデプロイを遅らせるインフラストラクチャ内の問題の解決、不要なミスを回避するための開発者タスクの自動化、新しいテスト方法の採用などがあります。

コーダーがより良いコーディングの方法を学ぶために自身のコーディングを科学的に分析しているのを見るのは今回が初めてです。この可能性は計り知れません。

この記事に星をつける

おすすめ度
スタイル

BT