開発プロセス50か月の進化

圓瀟はすでに6歳です。 アゞャむルの原則に基づいおおり、それらに基づいお成長したした。 初日から゚クストリヌムプログラミングを䜿甚し、埌でスクラムを少し远加し、最終的にかんばんに切り替えたした。 貎重な経隓を共有し、過去4幎間の開発プロセスの倉化に぀いおお話したいず思いたす。











コンテキスト



コンテキストは非垞に重芁です。なぜなら、それはあなたにずっお䜕がうたくいき、䜕がうたくいかないのかを理解するのに圹立぀からです。 かなり倧きなWebアプリケヌションであるTargetProcessを䜜成しおいたす。 私たちのチヌムは同じオフィスビルの同じフロアにいたす-配垃はたったくなく、近くにありたす。



2008幎 2009 2011 2012
䌚瀟の芏暡人
15 22 30 40
チヌム構成
機胜暪断型チヌム 2぀のチヌム

カヌネル 5人の開発者、スクラムマスタヌ、3人のテスタヌ

統合 3人の開発者、チヌムリヌダヌ、テスタヌ
いく぀かのミニチヌム。 倧きな機胜ごずにミニチヌムを線成したす。 ミニチヌムは、この機胜の実装を完党に担圓したす。 いく぀かのただし、さらに倚くのミニチヌム
テクノロゞヌ
C、ASP.NET、ASP.NET Ajax、 NHibernate C、ASP.NET、 ExtJS 、NHibernate C、 jQuery 、NHibernate、 NServiceBus C、NHibernate、NServiceBus、100Javascriptフロント゚ンド、 REST 、 Python




芳察



1チヌム→ミニチヌム。 䌚瀟の成長に䌎い、1぀のチヌムが耇数のミニチヌムに眮き換えられたした。 ミニチヌムは、倧きな機胜の蚭蚈ず実装を完党に担圓し、通垞、デザむナヌ、1〜3人のプログラマ、プロダクトオヌナヌ、1〜2人のテスタヌずラむタヌで構成されたす。 ミニチヌムはすべおの技術的な決定を䞋し、アむデアをブレむンストヌミングし、問題の解決策を芋぀けたす。 圌女は非垞に自埋的で集䞭しおいたす。 珟圚、6぀のミニチヌムがありたす。







テクノロゞヌ 。 サヌバヌ偎は非垞に安定しおいたす。 これはすべお同じ.NETスタックです。 この間、.NET 2.0から.NET 4に移行したしたが、昚幎プラグむン甚にESBを远加し、システムの拡匵性ずスケヌラビリティを改善したした。 私たちは、NHibernateがどのように機胜するかにあたり満足しおおらず、CQRSに向かっおいたす 。 フロント゚ンドを安定ず呌ぶこずはできたせん。 珟圚のUIは、ASP.NET Ajax、ExtJS、および独自のフレヌムワヌクからの悲しいカクテルです。 進行䞭の努力は、このすべおの幞犏を統合するこずを目的ずしおいるため、非垞に近い将来、叀いUIは完党に新しいUIに眮き換えられたす。 嬉しいこずに、システムは叀いむンタヌフェむスず新しいむンタヌフェむスの䞡方で䜿甚できたす。これにより、既存のナヌザヌの移行が倧幅に簡玠化されたす。 ここ数幎、テクノロゞヌぞのフォヌカスがどのように倉わっおきたしたか。







プロセス



2008幎 2009 2011 2012
繰り返し
1週間 繰り返しはありたせん、 カンバンに切り替えたした
進捗管理ツヌル
タスクボヌド 、反埩バヌンダりン、リリヌスバヌンダりン かんばん 、サむクルタむム かんばんボヌド、サむクルタむム、 ビルドボヌド かんばんボヌド、チヌムボヌド、サむクルタむム、ビルドボヌド、 キッチンのロヌドマップ
2008幎 2009 2011 2012
回顧
2週間ごず 必芁に応じお䌚議を開催したす。期間はありたせん。 圌らは、3぀の問題を制限したIssue Boardを思い぀きたした。 3぀の問題が蓄積されるずすぐに、䌚議を開いお解決したす。 誰でも問題を曞くこずができたす。 私たちは、関係者のみず立ち䌚うこずができたす。 これは頻繁には起こりたせん。
職務評䟡
ポヌカヌを蚈画しおいたす 。 ナヌザヌストヌリヌをポむントで評䟡する しかし、仕事を評䟡しないでください
費やした時間の䌚蚈凊理
すべおのタスクずバグの明確な䌚蚈。 蚘録を残したせん。 疲れた。
2008幎 2009 2011 2012
議論の芁件
反埩蚈画䌚議 ナヌザヌストヌリヌの「䌚議の開始」。 各ナヌザヌストヌリヌは、開始する前に説明したす。 䌚議には、プロダクトオヌナヌ+テスタヌ+開発者+デザむナヌがいたす。
仕掛品の制限
繰り返し 3ナヌザヌストヌリヌで制限。 䜜業の進行状況をもっずすべきではありたせん。 制限のスコア 開発者あたり2ナヌザヌストヌリヌ1掚奚。 䞀般的に、ミニチヌムは自ら決定したす。
リリヌス蚈画
公匏䌚議。 通垞、リリヌスは2か月続きたす 蚈画はありたせん 私たちは、今埌数ヶ月の高レベルのロヌドマップを䜜成しおいたす。 3か月ごずにレビュヌされたす。
2008幎 2009 2011 2012
ナヌザヌストヌリヌの粉砕
ナヌザヌストヌリヌは毎週の繰り返しに分割する必芁がありたす 私たちは分割しようずしたすが、どういうわけかうたくいきたせん それでもただ... 少し良くなりたしたが、緎習するのはただ難しいです
ナヌザヌストヌリヌの完了 DoD の定矩
仕様は最新です

合栌したテストケヌスのセット

単䜓テスト

キックオフミヌティング

仕様は最新です

合栌したテストケヌスのセット

ナヌザヌドキュメント

デモチヌム

キックオフミヌティング

仕様は最新です

合栌したテストケヌスのセット

自動ケヌスのセット

ナヌザヌドキュメント

デモチヌム

キックオフミヌティング

仕様は最新です

合栌したテストケヌスのセット

自動ケヌスのセット

ナヌザヌドキュメント

デモチヌム

グリヌンビルド

人間のテキスト

性胜詊隓
2008幎 2009 2011 2012
ミヌティング
リリヌス蚈画 チヌム

反埩蚈画 コマンド

反埩デモコマンド

レトロスペクティブ チヌム

毎日 チヌム
ナヌザヌストヌリヌの起動3〜4人

ナヌザヌストヌリヌデモ4人以䞊

レトロスペクティブチヌム

毎日
ナヌザヌストヌリヌの起動

ナヌザヌストヌリヌデモ

ストップザラむンチヌム

毎日
ナヌザヌストヌリヌの起動

ナヌザヌストヌリヌデモテスト前

ストップ・ザ・ラむン適切な人々

毎日
毎日の䌚議
朝10時に食べるず玄10分かかりたす 午前11時の食事には玄15分かかりたす
Ux
なに ワむダヌフレヌム スケッチ 倚くのアむデアず高速、ラむブプロトタむプ、 生きおいる人々のナヌザビリティテスト 、 デザむンスタゞオ スケッチ、ラむブプロトタむプ、動䜜䞭のシステムでのナヌザビリティテスト
職人技
なに ワヌクショップ 絊䞎はトレヌニングに䟝存

ミニカンファレンス

クヌルな䌚議に参加しお有料

ワヌクショップ

金曜日のショヌ

週に5時間の独孊
絊䞎はトレヌニングに䟝存

ミニカンファレンス

クヌルな䌚議に参加しお有料

独孊たたは個人プロゞェクトの堎合、週5時間




芳察



反埩→カンバン。 反埩を3幎間䜿甚しおから、かんばんに切り替えたした。 党䜓ずしお、それは良いむベントでした。 䞻な目暙は、各機胜ず各修正を個別に、できるだけ早くリリヌスする機胜です。 倚くの定期的な䌚議は廃止され、オンデマンド䌚議に眮き換えられたした。 時間が経぀に぀れお、時間の远跡ずパフォヌマンスの評䟡を攟棄したした。 反埩を攟棄するこずのマむナスの効果の1぀は、フィヌチャが倧きくなるこずぞの欲求でした。 繰り返しがない堎合、䜜業を小さなものに分割する必芁は特にありたせん。 私たちはさたざたな成功を収めお3幎間これず戊いたした。 䞀般的に、倧きな機胜が勝っおいたすが、今幎は状況が良くなりたした。



ポむント→評䟡の拒吊。 反埩開発では、芋積もりが必芁です。 かんばんに切り替えたずき、評䟡のメリットがあたりないこずが明らかになりたした。 ここで、「数日」、「暫定的に1週間」、「1か月以内」、「非垞に長い」レベルで䜜業を評䟡したす。 プロダクトオヌナヌが芋積もりを逃すこずもありたすが、ロヌドマップの䜜成を開始したずき、このような倧きな機胜の䞀般的な芋積もりはかなり正確であるこずが刀明したした。



タむムトラッキング→䌚蚈の拒吊 。 倕方ず週末に4人しか働いおいない堎合でも、プロゞェクトの最初の日から費やした時間を蚘録したした。 そのため、時間の远跡は私たちの血の䞭にあり、絊料さえも費やされた時間数に結び぀いおいたした。 時間の远跡をキャンセルする決定は容易ではなく、チヌムの倚くがそれに反察したした。 驚くべきこずに、数ヶ月埌、すべおが萜ち着き、震えのある倧倚数の人々はその日の時間を埋めるこずを芚えおいたした。 実際、䜜業を評䟡しおいない堎合、時間を考慮するこずは意味がありたせん。



リリヌス蚈画→なし→ロヌドマップ。 このような巊右のリヌルは、偎面から奇劙に芋える堎合がありたす。 最初は、正匏なリリヌス蚈画䌚議を開催したした。 そしお、かんばんを玹介し、䌚議はどういうわけか死にたした。 リリヌス蚈画がなければ悪化するこずがわかりたした。 私たちは垞に焊点を倱いたした。 明確なフォヌカスリリヌスは非垞に䟿利で䟿利です。 あなたは重芁なこずに集䞭し、残りは無芖したす。 焊点が合っおいない堎合は、疎結合された倚くの小さくおあたり機胜のないものを䜜成するずいう倧きな誘惑がありたす。 これにより劎力が消耗し、最終的には機胜のリストのみがリリヌスされたす。 少し前たで、リリヌスを蚈画する代わりにロヌドマップを䜜成するこずにしたした。 開発では、3〜4個の倧きな機胜を䜿甚できたす。 各機胜には特定の目的があり、3〜12か月かかりたす。 ロヌドマップには、珟圚のすべおの機胜ず将来の機胜がすべお衚瀺されおいたす。



ナヌザヌストヌリヌの砎壊 。 おかしいが、それをうたくやる方法がただわからない。 砎砕䜜業は困難です。 はい、特定の改善がありたすが、時折、倧芏暡なナヌザヌストヌリヌが断片化せずに開発に挏れるこずがありたす。 粉砕には䜕らかの内郚的な耇雑さがあるようです。



完了の定矩 。 傟向は明確です。DoDは幎々飜和状態になり、より倚くのものが含たれおいたす。 プロセスは開発䞭であり、すべおの機胜を完党にリリヌスする準備ができおいるこずを確認したいず思いたす。 最近、テキスト怜蚌ずパフォヌマンステストをDoDに远加したした。



毎日の䌚議。 私たちのレビュヌの昔の人は、ほずんど倉わらずに4幎間生き延びたした。 人数の増加に䌎い、私たちはあらゆる方法で䌚議を短く具䜓的にしようずしたした。 䞀般に、これは可胜でした-15人の堎合、䌚議は玄15分間続きたす。



組み立お。 今では、特定の問題に焊点を圓おた本圓に有甚な䌚議だけが生き延びおいたす。 唯䞀の定期的な䌚議は、毎日の朝の瀌拝です。 スクラムには非垞に倚くの䌚議がありたす。 これは、通垞の開発プロセスを実装し始めたばかりの堎合には良いかもしれたせんが、時間が経぀に぀れお退屈で迷惑になりたす。 オンデマンド䌚議の方がはるかに優れおいたす。人数が枛り、焊点が絞られ、結果が向䞊したす。



ナヌザヌ゚クスペリ゚ンス。 それはすごかった。 4幎前、私たちはUXに぀いお䜕も聞いおいたせんでした。 珟圚、UXは䌚瀟のDNAにほが統合されおいたす。 チヌムの倚くの人々は、゚ンドナヌザヌによる補品の䜿いやすさ、デザむン、認識に倚倧な泚意を払っおいたす。 UXの怍え付けプロセスは十分に長く、補品のビゞョンの倉曎から始たりたした。 私たちは人々を蚓緎し、䌚議に出垭し、セミナヌを実斜し、本を読み、非垞に異なる実践を詊みたした。 いく぀かの良い結果は2幎埌に珟れたした。 そしお今、私たちは新しい倧きなリリヌスに取り組んでおり、䞭間結果はめちゃくちゃクヌルです衚瀺するたでは、陰謀を䜜成したす。



職人技。 4幎前、プロのスキルのトレヌニングず開発は䌚瀟の文化の䞀郚ではありたせんでした。 すべおは2010幎に開始され、開発戊略党䜓が完党に改蚂および倉曎されたした。 今、私たちは完党な知識の粟神を持っおいたす。 真剣に。



ここに、䌚瀟の発展の焊点が長幎にわたっおどのように倉わったかを瀺したす。







技術的慣行



2008幎 2009 2011 2012
゜ヌス管理ずブランチ
転芆 1぀のブランチ。 Git 各機胜たたはバグ修正は、別々のブランチで行われたす。 りィザヌドは垞にリリヌスの準備ができおいたす。 ギット。 1぀のブランチに戻り、継続的デリバリヌに移行
ペアプログラミング
ペアプログラミングが厳密に必芁です。 開発者は毎日ペアを倉曎しお、問題を新鮮な倖芳で確認し、経隓を亀換し、真の集合的なコヌド所有暩を達成したす すべおのナヌザヌストヌリヌず耇雑なバグには必須です。 時には人々はより単玔なタスクで䞀人で䜜業したす。 ペアの倉曎がキャンセルされたした。 フォヌカスを劚げ、迷惑になるこずが刀明したした 耇雑なタスクにのみ䜿甚されたす。 完党にオプションです。 ミニチヌムは自分で仕事の仕方を決めたす。
TDD / BDD
TDDを匷くお勧めしたす。 ナニットテストは、ナヌザヌストヌリヌごずに厳密に必芁です。 すべおの新しいコヌドはテストでカバヌされおいたす。 JavaScript偎では、事態はさらに悪化しおいたす。 たた、 BDDを䜿甚しようずしおいたす JavaScript偎では、すべおが順調です。QUnitを䜿甚したす。 BDDは拡倧および成長しおいたす BDDに明確に焊点を圓おたす。 NBehaveを自分のニヌズにわずかに倉曎し、VSアドむンを䜜成しおテストスクリプトをすばやく䜜成したした
自動機胜テスト
Seleniumのいく぀かのテスト Seleniumの倚くのテスト。 テストを䜜成およびサポヌトするために、独自のCフレヌムワヌクを䜜成したした。 20台の仮想サヌバヌで機胜テストを䞊行しお実行 Selenium WebDriverぞの移行。 ほが40の仮想サヌバヌがありたす
継続的むンテグレヌション
ずおも簡単です。 ゜ヌスコヌドがコンパむルされ、 Cruise Controlの単䜓テストが開始されたす。 いく぀かの異なるセットアップでCruise Controlを䜿甚したす。 ゞェンキンスに切り替え ただJenkinsを䜿甚しおいたす。 新しい目暙は、時間の経過ずずもに継続的デリバリヌに切り替えるこずです。
機胜の切り替え
いや 機胜の切り替えを䜿甚しお、継続的な配信に移行したす。
テストカバレッゞ
神は知っおいる 単䜓テストで50、機胜テストで30 単䜓テストで70、機胜別で40




芳察



1぀のブランチ→ブランチの機胜→1぀のブランチ。 奜奇心が匷いルヌプ。 機胜ブランチは、かんばんの導入埌に可胜になりたした。 2幎間䜿甚したした。 ただし、継続的な配達を望む堎合は、数か月前に1぀のブランチに戻る必芁がありたす。 移行は簡単ではなく、機胜ごずにブランチを維持するのがはるかに簡単で安党だったため、3〜4週間のトランクは80の確率で赀くなりたした。



ペアプログラミング。 このプラクティスは、必然的に完党にオプションになりたした。 必須のペアプログラミングは非垞に難しいものです。 あなたは䞀日䞭カップルずしお働き、コミュニケヌションし、議論し、あなたの芖点を守るこずを䜙儀なくされおいたす。 ゚ネルギヌを消費したす。 はい、あなたは倚くのこずをしたず感じおいたすが、少なくずも数ヶ月連続で働くこずは容易ではありたせん。 珟圚、ペアプログラミングは䞻に非垞に難しいタスクに䜿甚されおいたす。



TDD→BDD。 テストによる開発は、コヌドの最初の行たあ、ほがから適甚され、垞に䜿甚されおいたした。 BDDは、プロダクトオヌナヌにずっおより事䟋指向であり、理解しやすいものです。 圌は珟圚、Given / When / Thenフォヌマットでふざけお仕様を曞いおいたす。 䞀般に、私たちは芖芚的な仕様に移行しおいたす。芖芚的な仕様では、倚くの写真がありたすが、蚀葉はほずんどありたせん。



そしお、珟時点でのいく぀かの統蚈









結論ずしお



それが私たちが過去4幎間でやっおきたこずです







PS誰かがHabrにテヌブルを普通にフォヌマットさせる方法を知っおいたら-教えおください。



All Articles