海外の開発者はどのような開発手法を使っている?
Stack Overflow という世界中のエンジニアが集う QA サイトで、どのような開発手法を用いて開発しているのか大規模なアンケートが行われました。およそ 26,000 名もの開発者の回答をまとめた情報があるので見ていきましょう。海外エンジニアへの開発手法に関するアンケート結果
海外のエンジニアの約 26,000 名の回答によると、アジャイル開発手法(Agile)を用いているのが 76.9% と最も多く、そして 65.2% がスクラム開発手法(Scrum)、そしてペアプログラミング(Pair)が 42.8%、かんばん開発手法(Kanban)が 34.8% となっています。この結果は複数の手法を同時に利用してそれぞれのメリットとデメリットを補っていると言えます。
Stack Overflow Developer Survey Results 2017
アジャイル開発手法(Agile)とスクラム開発手法(Scrum)を利用して、海外の開発者たちはプロジェクトを進行して納期を守っていくようにしています。またペアプログラミングを利用してコードの品質を高め、技術力(スキル)を高めているそうです。
アジャイル開発(Agile)とは?
アジャイル開発とは、次のような開発手法を指しています (Wikipedia より)。アジャイルソフトウェア開発手法の多くは、反復 (イテレーション) と呼ばれる短い期間単位を採用することで、リスクを最小化しようとしている。 1つの反復の期間は、プロジェクトごとに異なるが、1週間から4週間くらいであることが多い。
アジャイル開発手法においては、開発対象を多数の小さな機能に分割し、1つの反復 (イテレーション) で1つの機能を開発する(⇒反復型開発)。そして、この反復のサイクルを継続して行うことで、1つずつ機能を追加的に開発してゆくのである。また、各々の反復は、小規模なソフトウェア開発プロジェクトに似ている。なぜなら、計画、要求分析、設計、実装(コーディング)、テスト、文書化といった、ソフトウェアプロジェクトに要する全ての工程を、1つの反復内で行うからである。
アジャイル開発手法では、各反復が終了するごとに、機能追加された新しいソフトウェアをリリースすることを目指す。各反復が終了するごとに、プロジェクトチームは、プロジェクトにおける優先度を評価し直す。
アジャイル開発では、たくさんの文書を書くことよりも、プロジェクト関係者間で必要な時に即座に直接顔を合わせて意思疎通を行うべきであることを強調する。
スクラム開発(Scrum)とは?
スクラムによる開発とは次のような開発手法を指しています (IT用語辞典より)。スクラムとは、ソフトウェア開発手法の一つで、チームが一丸となって仕事に取り組むための方法論を中心にまとめられた方式。少人数で迅速に開発を進める、いわゆるアジャイルソフトウェア開発手法の一つ。
スクラムでは開発作業はスプリント(sprint)と呼ばれ、1週間から1ヶ月程度に期間を区切って作業を行い、結果を検証(レビュー)する。
取り組むべき作業や事柄をバックログ(backlog)と呼ばれるリストに優先度順に掲載し、これをチームのメンバーがこなしていく。バックログは開発している製品に必要となる項目を列挙したプロダクトバックログと、スプリントで実施すべき項目を列挙したスプリントバックログがある。
チームにはいわゆるリーダーや管理者は存在せず、チーム内外の調整や外部との窓口となるスクラムマスターと呼ばれる役職が置かれる。すべてのメンバーが主体性を持って行動し、チームに責任を負うことが期待される。
かんばん開発(Kanban)とは?
かんばんによる開発とは次のような開発手法を指しています (Wikipedia より)。この開発手法はすべての作業を見える化する、という手法です。つまり作業の流れを全て可視化することを重視しています。かんばんはソフトウェア製品を開発するための方法である。さらに、かんばんは、ソフトウェア開発者に過剰な負荷をかけずに、ジャスト・イン・タイム (トヨタ自動車の生産方式(トヨタ生産方式)の代表的な要素としてよく知られている。カンバン方式とも言われる。“必要な物を、必要な時に、必要な量だけ生産する”こと) でのソフトウェアリリースを強調したプロセスでもある。
このアプローチでは、顧客へのデリバリーに必要なタスクの定義を行い、そのタスクをソフトウェア開発プロジェクトの関係者が理解するために、プロセスを視覚化する。そして、タスクの作業者は、作業をキューから引っ張って(プル)していく。
ペアプログラミング(Pair)とは?
ペアプログラミングとは次のような開発手法を指しています。1人がプログラムを書いて、もう1人がプログラムを見ながらレビューすることで品質を向上させるとともに、お互いの技術力向上を図る開発手法です。ペアプログラミング(英: pair programming)は、2人のプログラマが1台のワークステーションを使って共同でソフトウェア開発を行う手法である。一方が単体テストを打ち込んでいるときに、もう一方がそのテストを通るクラスについて考えるといったように、相補的な作業をする。
実際にキーボードを操作してコードを書く人を「ドライバ」、もう1人を「ナビゲータ」と呼ぶ。30分ごとか、単体テストを1つ完成させる度に役割を交替するのがよいとされる。また、1日に一度の頻度でパートナーを変えるのがよいともされている。