アレックス・イスコルド

Techstarsのマネージング・ディレクター

スタートアップのエンジニアリングチーム向けの5つのヒント

どのような企業もソフトウェアに頼るもので、スタートアップもその例外ではありません。ソフトウェアは、ビジネスにとって「大切な存在」から「ビジネスそのもの」に変わりました。

ソフトウェア開発は芸術であり、クラフトであり、プロセスです。

ソフトウェアの開発・出荷は企業の寿命の限りにまで続くマラソンです。

ソフトウェアを効果的に出荷するにはテンポと、プロセスを築く必要があります。この投稿では、スタートアップが質の高いソフトウェアを定期的に出荷する上でのコツと、軽いフレームワークを紹介したいと思います。

  1. セットアップのスプリント

始めるには、何を作り、どのように作るのかを認識するための軽いプロセスが必要です。プロセスなく出荷しようとするチームは、混乱し、ストレスが溜まりやすく、最終的に成功しません。

スプリントという軽いプロセスで、チームが2週間ごとに出荷できるような生産性を生み出します。

スプリントは、まず何を作るか計画を立てることから始まります。機能は二つのリストに整理されます。導入したい機能と、実際に今回のスプリントで搭載させる機能の二つです。

スプリントの前に、チームは一緒にどの機能を優先させるべきか話し合います。優先順位ができたら、トップの3〜5の機能はリストに含まれ、次のスプリントで完成させます。

機能が選んだら、それは今回のスプリントで開発が決まったものです。スプリントの途中で新しい機能を追加してはいけません。

これは重要なことです。スプリントの途中で変化を加えるということは、タイムラインをずらしてしまい、エンジニアチームに大きなストレスを与えてしまいます。なんとしてもそれは回避してください。

機能のための二つのリストと同様に、バグのためにも二つのリストを用意してください。スプリントのはじめに、バグを再度優先順位づけし、今回のスプリントで直さなければならないリストを作ってください。

スプリントの一例です:

  • プランニング:始まる3日前
  • バグ修正:第1日 - 水曜日
  • バグ修正:第2日 - 木曜日
  • コード:第3〜7日 - 金曜日から土曜日の間(ただし週末は覗く🙂)
  • テスト:第8日 - 金曜日
  • テスト;第9日 - 月曜日

スプリントのセットアップにはいくつかのコツがあります。

金曜日や夕方に製品を公開させないこと。

なぜか?なぜなら、もし何か問題があったときに、週末が潰されてしまったり、徹夜でオフィス働きになってしまうかもしれないからです。

二つ目のコツは、いつだって新しい機能をコーディングする前にバグの修正をすること。これによって、しっかりとした基盤の上に新しい機能を開発していることを確かにすることができます。

もしスプリントが2週間ならば、新しい機能をコードするのに5日ほどあります。これは、機能をいくつかにまとめておいたのであれば、十分な時間です。実際、このシステムはそれを強制させます。常に前進し、製品を向上させ続けます。

スプリントの最後の部分はテストで、質の確かなソフトウェアを開発することを確認します。

スプリント最後の数日は渦にいるかのような気分でしょう。

テストをして、バグをみつけて、修正する。公開が近づくごとに見つかるバグの数は減っていくでしょう。バグがもう見つからなくなれば、それは公開する準備ができたということです。

公開の大詰めに入ったとき、みんなが特定のバグや機能に集中することが重要です。全員が集中しているとき、バグをより素早く修正し、次の問題へと取り組むことができます。この戦略はチーム全体を公開に向けて渦に乗らせることができます。

2. 緊急事を優先させる

スプリントの導入に加えて、チームで常に機能やバグの優先付けをするようにしてください。

全てが重要であるとき、どれもはかどりません。

  • P1 - 最優先。ビジネス上で致命的
  • P2 - 重要。する必要はあるが、致命的ではない
  • P3 - 重要ではないけど、あったらいいな程度

P1のバグがあり、ビジネスに影響が出る可能性があるのであれば、公開を保留して解決する必要があります。この状況は稀でしょう。

もし頻繁にこの状況になっているようならば、スプリントの後半のテストとバグ修正がうまくいっていないということです。公開までの道筋を再度確認する必要がありそうです。

機能やバグのリストを確認するときに、優先順位に変動があることでしょう。スプリントごとの合間に順位の変化があることに問題はありません。ただ、スプリントの最中にそのようなことがないようにしてください。

3. ペアプログラムとテスト

素早いソフトウェア開発には、質の高いソフトウェアを開発する助けとなるコツが必要です。私のお気に入りは、ペアプログラムとテストです。

ペアプログラムは、文字通り二人のエンジニアが一緒に働くことです。一人はコードを打ち込み、もう一人はそれを見ます。

ペアプログラムは時間の無駄のように見えるかもしれませんが、実際にはコードする上で、特にシステムの重要な箇所にとっては、より効果的な方法です。

ペアプログラミングはコードの質を上げ、チームメンバー同士での同胞愛が生まれます。バグのない綺麗なコードをすぐに作り上げることができます。

テスト、そして特にユニットテストは、コードの質を上げるためのもう一つの戦略です。コードのためにテストをし続けるというのは実はなかなか難しいことです。しかし、必要なことであり、価値のあるものです。なんと言ったって、テストしなければ、本当に動くのか分かりませんよね?

特に便利なテストが2種類あります。一つ目はソフトウェアの重要なもの、壊れていてはならないものをテストするものです。二つ目は、見つけたバグを見つけたバグを露呈させるテストです。バグを見つけたとき、まずをそれをテストで露呈させたあとにコードを修正してください。それによって、またそのバグが出たときに、テストで簡単に見つけることができます。

4. コード・リファクトリング

諸行無常。ソフトウェアも時間と共に朽ちていくものです。コードに視認できるサビが出るわけではないので、あまり直感的ではないかもしれませんが、そうなのです。時間をかけて、大規模なソフトウェアは複雑に、そして脆くなり、リファクトリングされる必要がでてきます。

これに対処するには常にリファクトリングするか、ソフトウェアを改善させ続けることです。定期的に歯医者で歯を綺麗にするように、定期的にコードを整理する必要があります。

エンジニアに不必要なコードを取り除かせるようにして、常にソフトウェアを改善してください。

また、6〜8週間ごとに整理と改善のためのスプリントをしてください。このスプリントでは、ビジネス上の機能ではなく、チームでコードを整理し、改善し、テストを書いていってください。

5. 幸せで生産的なエンジニアチームを作ること

エンジニアチームに厳しくあたってしまうのは本当に簡単なことです。多くのスタートアップはすぐにそうしてしまいます。

スタートアップは混乱の中に生きますが、ソフトウェアを開発する上で混乱したアプローチでは成功しません。全力疾走でマラソンをするのと同じ - 不可能なのです。

ソフトウェアを書くということは、非常にクリエイティブで、知的に求められる作業です。澄んだ脳、そして特定のテンポを必要とします。ソフトウェア開発は非常に有意義に成り得るし、非常にストレス深いものにも成り得ます。

スプリントをセットアップしてはっきりとした優先順位を持つことが、幸せで生産的なエンジニアチームを作る第一歩です。

テンポを作り出すことでストレスを減らします。頻繁に製品を出荷させることによってエンジニアを幸せにすることができます。なんと言っても、自分の作り出したコードが世界で変化を生み出している様子を見ることほど嬉しいことはありませんから。

あなたのソフトェアでソフトウェアを開発する上で使っている戦略やテクニックがあれば是非共有してください。

原文 : https://alexiskold.net/2016/07/03/5-tips-for-startup-engineering-teams/
Heap | Mobile and Web Analytics