タスクの分解に察凊し、やりすぎないようにする方法

こんにちは



私の名前はビクタヌです。Sportmasterのシステムアナリストです。そしお今日は、タスクを分解しお開発に移すこずに぀いおお話したいず思いたす。車であれ゜フトりェア補品であれ、あらゆるオブゞェクトはパヌツで構成されたす。たた、これらのオブゞェクトを構成郚品から1぀の党䜓に組み立おるには時間がかかりたす。時にはそれは非垞に時間がかかるこずさえありたす。特にその前に、䞻芁郚分を分解するだけでなく、原子レベルでその䞋郚に到達するこずにした堎合は特にそうです。





タスクの適切な蚭定ず完党な混乱の間の境界線はどこにありたすかSportmasterで私たちが定期的にビゞネスから開発タスクを受け取る方法の䟋を共有したす。















䞊蚘の䟋からわかるように、各タスクの説明は、顧客の想像力ず垞識に倧きく䟝存したす。どこかそれが倚いずころ、どこか少ないずころですが、アナリストはどうにかしおそれを扱う必芁がありたす。機胜の境界を瀺す堎合もあれば、トピックを送信する堎合もありたす。このようなタスクを盎接開発に移すず、出力で理解できないものが埗られたす。あなたは䜕をしなければなりたせんか



足で顧客のずころたで歩いお行き、すべおの芁件を尋ね、出口で正確に䜕をすべきかを明確にしたす。確かに、ゎヌルドの顧客もいたすが、実際には倧倚数です。圌らはすべおの芁件をConfluenceに曞き蟌んでいるので、い぀でも読んで質問するこずができたす。そしお、機胜のフレヌムワヌクですべおが明確になったら、タスクの削枛を開始できたす。



なぜ分解するのか



分解の䞻な目暙は、ビゞネスがすべおの芁望を迅速に実装できるようにするこずず、ナヌザヌがアむデア自䜓から機胜の倖芳に至るたでの時間をできるだけ短くするこずです。これを行うには、小さいながらも小さいタスクを実行できたすが、それでも機胜はナヌザヌに届きたす。



タスク分解を䜿甚するず、ナヌザヌずビゞネスのニヌズを満たすずいうグロヌバルな目暙を達成するだけでなく、開発が正しい方向に進んでいるか、顧客が想像したものずはたったく異なるこずが刀明したかにかかわらず、顧客からより迅速なフィヌドバックを埗るこずができたす。



最初はタスクが倧きく、䞀床にすべおを実行した堎合、倚くの時間を費やし、顧客のコメントの埌、すべおを砎棄する必芁がありたす。ええず、タスクが小さい堎合、せいぜい1日か2日の䜜業で、倧䞈倫です。リワヌクはほが同じ量かかりたす。 2番目のアプロヌチも安䟡です。䞡偎の救われた神経は蚀うたでもありたせん。



1぀の機胜が耇数の郚分に分割されおいる堎合、開発者はそれらに䞊行しお取り組むこずができたす。したがっお、フロヌを䞊列化し、prodの機胜の出力を高速化したす。重芁なこずは、タスクが互いにできるだけ䟝存しないようにするこずです。



さらに、迅速なテストずバグ修正。繰り返しになりたすが、小さな機胜は、巚倧な巚像よりもはるかに簡単か぀迅速にテストできたす。そしお、䜕かがうたくいかない堎合、開発者は「修正」にほずんど費やさず、すべおがより速く動䜜したす。



タスクを分解する段階で、顧客ず䞀緒に、利益を䞊げ始めるために今ここでどの機胜が重芁であるか、埌で䜕を残すこずができるか、そしおおそらく䞍芁ずしお䜕が萜ちるかをすぐに理解できたす。



ビゞネスにずっお、機胜する機胜がどれだけ早く珟れるかを知るこずは重芁です。たた、タスクに分割するず、倧きな前線が1぀ある堎合よりも、タスクを完了するのにかかる時間を予枬し、より正確に芋積もるこずができたす。しかし、小さなタスクは、それらを実行する時間の芳点から評䟡するのが簡単であるずいう事実に加えお、開発者がプロ​​セスで発生する可胜性のあるリスクを評䟡するのも簡単です。



たずえば、フレヌムワヌクが曎新されたり、䞀郚のメ゜ッドが䜿甚できなくなったり、コヌドに問題が発生したりしたす。小さなタスクを実行するこずで、これらすべおのリスクを最小限に抑えたす。そのようなタスクがスレッド内の䜕かをブロックしたずしおも、それが倧きなピヌスであるかのように重芁ではありたせんすべおをブロックしたす。必芁に応じお、実甚的な解決策を䜜成し、技術的な負債をバックログに入れるこずができたす。これは、問題が解決されたずきに少し埌で凊理できたす。



基本的なアプロヌチず分解のルヌル



タスク分解には、氎平ず垂盎の2぀の䞻芁なアプロヌチがありたす。氎平の堎合、タスクは䜜業の皮類、レベル、たたはコンポヌネントごずに分割されたす。たずえば、各タスクは、フロント゚ンド、バック゚ンド、デヌタベヌスなど、いく぀かの段階を経おいたす。たた、氎平方向のアプロヌチでは、1぀のタスクが埌ろに、2番目が前に、3番目がデヌタベヌスの倉曎に぀ながりたす。



このアプロヌチが悪いのはなぜですか個々のタスクを完了した埌、機胜する機胜は埗られたせん。 3぀の゜ヌスから結果を収集するこずによっおのみ、ある皮の結果ずフィヌドバックを埗るこずができたす。このため、氎平分解はほずんどの堎合䜿甚されたせん。





はるかに䟿利なのは、各タスクで芖芚的な機胜を䜜成できる垂盎アプロヌチです。タスクはすべおの段階を経お、出力には分析、テスト、顧客ぞの衚瀺、必芁に応じた修正が可胜な結果が含たれたす。そしお、すぐに起動しお䜿甚したす。



ルヌルに぀いお蚀えば、ここでは3぀だけ特定したした。たず、タスクは論理的に完了しおいる必芁がありたす。぀たり、タスク自䜓が独立しおいる必芁がありたす。それはその呚りの論理を壊しおはならず、必然的にナヌザヌが結果ずしお受け取るであろう少なくずもある皋床のビゞネス感芚を持っおいなければなりたせん。同時に、ビゞネスセンスを持たないタスクを郚分に分割しないでください理想的には、それらはたったく存圚しないはずです。



第二に、1぀の小さなタスクを完了した結果は、小さな倉化をもたらすはずです。倉曎が小さいほど、䞀般的なコヌドぞの移行が速くなるため、コヌドが陳腐化するこずはありたせん。さらに、小さなタスクは、マヌゞ時に開発者間の競合を回避するのに圹立ちたす。



第䞉に、タスクを非垞に现かい郚分に分割するべきではありたせん。现かく分類しすぎるず、これらのタスクの管理に非垞に長い時間がかかりたす。各段階で、それらの優先順䜍を付け盎し、䟝存関係の接続を再確立する必芁がある堎合がありたす。それだけです。したがっお、開発速床は向䞊したせんが、逆に急激に䜎䞋したす。したがっお、劥協点を探す必芁がありたす。



分解方法



゜ヌスに応じお、分解方法の数は倧きく異なりたす。どこかで8぀、どこかで10、どこかで20で瀺されたす。私が仕事で毎日䜿わなければならない方法を匷調したいず思いたす。



耇数のニヌズ



この方法は、ストヌリヌに「and」、「or」の組み合わせがある堎合に最も䟿利です。たずえば、消費者が泚文しおカヌドやボヌナスで支払いたいずしたす。このタスクは、ナヌザヌが泚文する1぀目、カヌドで支払う2぀目、ボヌナスを䜿甚する3぀目のタスクに分けるこずができたす。



䜿甚シナリオ



もう1぀の䞀般的な方法は、ナヌスケヌスに応じおタスクを分割するこずです。この堎合、1぀のストヌリヌが1぀のメむンパスずいく぀かの代替パスです。ナヌザヌがアむテムを賌入したいずしたす。それがメむンシナリオになりたす。しかし、ただ別の方法がありたす。圌はすぐに補品をバスケットに入れお支払うか、賌入する前にこの補品を他の補品ず比范したいず思うかもしれたせん。次に、補品の比范を別のタスクにしたす。



おそらく圌は今は買いたくないのですが、どこかで延期し、お気に入りに远加しお、埌で戻っおくるこずができるようにしたす。たたは、ナヌザヌがその補品を気に入っお賌入する準備ができおいるが、圚庫がない。だから、あなたは圌に商品がい぀珟れるかを知らせる必芁がありたす。そしお、これが4぀のシナリオの結果です。



単玔なものから耇雑なものたで



「Sportmaster」サむトのメむンペヌゞはバナヌで構成されおいたす。そしお、私たちができる最も簡単なこずは、1枚の写真を撮っおそれをナヌザヌに芋せるこずです。これは、適切な情報を䌝えるための最も簡単で最速の方法です。次に、機胜を増やしお、1぀の画像ではなく、3぀たたは4぀の画像を远加しお、グリッドに結合するこずができたす。これは別のタスクです。





このアプロヌチでは、埌続の各タスクで、機胜が拡匵されるはずです。たずえば、グリッドからカルヌセルを䜜成し、リンク、テキスト、ボタンなどを远加できたす。䞀般に、最初に最も単玔で最もパフォヌマンスの高いバヌゞョンを実装しおから、より耇雑なバヌゞョンに移りたす。



぀い最近、私はバナヌを実装するずいう同様のタスクに埓事したした。バナヌはメむンバナヌにぶら䞋がっおいお、CMSから制埡されるはずでした。顧客に正確に䜕を管理したいかを尋ねるず、圌は瞬きするこずなく、誰もが喜んで答えたす。したがっお、ここでは、トピックを少し掘り䞋げお、今管理する必芁があるもの、頻繁に䜿甚されるもの、ほずんど䜿甚されないものを匷調するこずが重芁でした。したがっお、実装に優先順䜍を付け、タスクに分割したす。



オペレヌションCRUD



これはおそらく最も䞀般的な分解方法です。ここでは、タスクは䜜成、読み取り、曎新、および削陀の各操䜜に分けられたす。䜕かを管理したり、䜕かを構成したりする必芁があるタスクに適しおいたす。たずえば、泚文のタスクは、泚文の䜜成、衚瀺、線集、削陀の4぀の小さなタスクに分けられたす。



むンタヌフェむスオプション



耇数のむンタヌフェむスオプションをサポヌトする必芁がある堎合に䜿甚されたす。たずえば、サむトは耇数の蚀語をサポヌトする必芁がありたす。たず、ロシア語版を䜜りたす。その埌、他の囜で発売する堎合は、英語を远加したす。囜が英語以倖の蚀語を䜿甚しおいる堎合は、それを远加するこずもできたす。この堎合、最初に1぀の蚀語ですべおを実行しおから、埐々に翻蚳を远加する方が簡単です。





最近では、倚蚀語のサポヌトが必芁な法的゚ンティティの個人アカりントのプロゞェクトを完了したした。締め切りが厳しかったので、最初はすべおを1぀の蚀語で行いたしたが、さらなる翻蚳の基瀎を築きたした。珟圚、新しい蚀語のサポヌトを远加するには、1぀の小さなタスクが必芁です。䞀床に耇数の蚀語を远加する必芁がある堎合は、蚀語ごずに個別のタスクが䜜成されたす。



圹割別の分離



機胜が耇数の圹割ずナヌザヌグルヌプの操䜜を意味する状況に適しおいたす。Sportmasterサむトでは、ナヌザヌはさたざたな圹割を持぀こずができたす。たずえば、ナヌザヌは圹割ごずに、蚱可されたナヌザヌ、匿名のナヌザヌ、およびたずえばコヌルセンタヌのナヌザヌに分けられたす。埌者の圹割は2぀に分けるこずもできたす-それは通垞のナヌザヌたたは管理者のいずれかです。



圹割ごずに、個別のタスクを䜜成できたす。匿名ナヌザヌ向けに衚瀺するこずから始め、次に、蚱可されたナヌザヌ向けのタスクの䞀郚ずしおいく぀かの高床な機胜を远加したす。たた、コヌルセンタヌオペレヌタヌの技術的圹割ずその機胜を忘れないでください。



゚ラヌ凊理



締め切りが厳しく、最小限の機胜ができるだけ早く必芁な堎合は、゚ラヌ凊理を別のタスクに取り入れるこずができたす。ここでは、テストの䜜成に぀いおではなく、サむトが統合されおいるナヌザヌずシステムの゚ラヌの凊理に぀いお説明したす。補品タむルを含むカタログペヌゞを凊理しおいるず想像しおください。各カヌドには、説明、写真、远加情報がありたす。



たたたた、䞀郚の情報がデヌタベヌスからのものではありたせん。

おそらく、私たちがブランドや玠材に぀いお話しおいる堎合、これは無芖され、単に情報が衚瀺されない可胜性がありたす。しかし、䟡栌や名前が出おこない堎合は、このカヌドを提瀺する䟡倀がありたすか



そのような状況で䜕をしたすかこの質問は、個別のタスクで取り出しお、各個別のフィヌルドを凊理するこずができたす。぀たり、䟡栌が来なかった堎合、1぀のアクションを実行するず、補品の説明が倱われたす-別のアクション。ナヌザヌ゚ラヌに぀いおも同じです。圌が䜕かを間違っお入力し、「ペヌゞが芋぀かりたせん」や゚ラヌ500などの゚ラヌが衚瀺された堎合は、䜕が起こったかに関する具䜓的な情報を瀺し、次にできるこずをスクリプトで提䟛する必芁がありたす。



この方法は、機胜を維持するかどうかを決定するために、機胜に関するフィヌドバックをすばやく取埗する必芁がある状況にも適しおいたす。



静的、次に動的



これは私のお気に入りの方法の1぀です。 「スタブ䞊」で機胜を実装できる状況、぀たり倖郚システムがその機胜をサポヌトする準備ができおいない状況に適しおいたす。たずえば、メむンペヌゞの䞀郚のブロックはCMSから制埡できたせん。たたは、コヌドで䜜成しおナヌザヌに衚瀺するメニュヌですが、同時にビゞネスで制埡するこずはできたせん。そしお、倉曎を加えるために、ビゞネスは絶えず開発に行き、それをするように頌む必芁がありたす。



ここでは、ナヌザヌのニヌズず利益を優先したす。内郚に䞍䟿を感じる堎合でも、ナヌザヌはすぐに既補の機胜を利甚できたす。したがっお、タスクをいく぀かに分割し、最初に新しいブロックをナヌザヌが利甚できるようにしたすが、ビゞネスはただそれを盎接管理できたせん。しかし、その埌、ビゞネス自䜓がアむテムを亀換したり、新しいアむテムを独自に远加したりできるシステムやデヌタベヌスず統合するこずができ、開発に参加せずにそれらを描画したす。



この方法をよく䜿甚したす。たず、倖郚から制埡できない独自のデヌタに機胜を䜜成し、次にダむナミクスを远加しお、サヌドパヌティシステムからのデヌタの受信を開始したす。



パフォヌマンス



タスク党䜓が耇雑で膚倧な堎合、どちらの端から取り組むべきかが明確でない堎合、パフォヌマンスは無芖できたす。最初のタスクは、既補の機胜を匕き出すこずです。これは、ゆっくりではありたすが、機胜したした。そしお次のタスクは䜜業をスピヌドアップするこずです。たずえば、商品の怜玢、フィルタヌの適甚、情報の取埗などの時間



がかかる堎合がありたす。ほずんどの䜜業は、関数をすばやく䜜成するこずに費やされる堎合がありたす。最初の実装はそれほど難しくありたせん。しかし、遅い実装から倚くのこずを孊ぶこずができたす。さらに、そうでなければ重芁なアクションを実行できないナヌザヌにずっおも䟡倀がありたす。これらすべおの堎合においお、タスクは「機胜させる」ず「高速化する」に分けられたす。



考えられる問題



プロゞェクトでタスク分解を䜿甚するこずにした堎合、最初に遭遇する問題は、タスクが盞互に䟝存しおいるこずです。私の経隓では、これは最も䞀般的なスレッドブロッキングの問題です。これを回避するには、責任を持っお分解に取り組み、十分な時間を䞎える必芁がありたす。





もう1぀の問題は、タスクをどれだけ现かく分解する必芁があるかを刀断するこずです。そしお、ここでは垞識だけが境界ずしお機胜したす。たずえば、郜垂遞択コンポヌネントを取り䞊げたす。ボタン、テキスト、入力フィヌルドがありたす。このタスクをどのくらい小さくする必芁がありたすか



タスクはフロヌ党䜓に沿っお1週間以内玄40時間で実行する必芁があるずいうルヌルを自分たちで掚枬したした。分析、開発、テストのすべおの段階に぀いお話したす。さらに、バック゚ンドずフロント゚ンドの開発の2぀の段階が考慮され、それぞれでのレビュヌずテストが含たれたす。



たた、叙事詩の境界が必ずしも明確ではないずいう事実にも問題がありたした。最近、泚文するタスクが䞎えられたした。圌女の囜境はどこですか出力はどうあるべきですかすべおの機胜を最埌たで実行する必芁があるのか​​、それずも䞀郚を遞択する必芁があるのか​​は、私たちには明確ではありたせんでした。この叙事詩には支払いが含たれおいたすか、それずもすでに別の叙事詩ですか。



分解する方法ず時期を理解するのが難しいタスクがありたす。゚ピックを受け取った段階でほずんどのタスクを分解したすが、分析の段階など、これを実行する必芁がある堎合もありたす。私たちは仕事を匕き受け、必芁なすべおのデヌタがすでに統合システムにあるず信じおいたすが、分析䞭に、デヌタ圢匏に満足しおいないか、デヌタ自䜓の品質に問題があるか、たたは他のシステムからの改善が必芁であるこずが刀明したした私たちは぀ながっおいたす。次に、「スタブで」タスクを実行し、バックログに別のアむテムを远加する必芁がありたす。これは、䞻な問題を解決した埌に開始したす。



それがすべおのようです。タスク分解ぞのどのアプロヌチを䜿甚し、その理由に぀いおのコメントでストヌリヌを共有するず玠晎らしいでしょう。



読んでくれおありがずう



All Articles