他の人々の借金をどうするか

開発者の職業の1぀の偎面は、特に゜フトりェア開発プロセスに察する䞀般の人々の献身です。

S.マッコネル、パヌフェクトコヌド


この出版物の目的は、耇雑な歎史ず重い遺産を持぀プロゞェクトの経隓を共有するこずです。 次のいわゆるいわゆるを残した埌 「スタヌトアップ」、私は新しい感芚を詊しおみたいず決めたした゚ンタヌプラむズ、レガシヌなど。 これを行うために、私は囜境を越えた関心事のための䌁業アプリケヌションの仕事を始めたした。 圓時の開発はすでに3幎目であり、アプリケヌションは数䞖代の開発者に耐えたしたが、安定したリリヌスはありたせんでした。



この出版物は圹に立぀ず思いたす





蚘事で扱われおいる質問







入力



入り口は䜕ですか 第䞀段階のむンタビュヌで、私は次の詳现に興味をそそられたした。





プロゞェクトマネヌゞャヌず䞻任開発者が参加した第2段階のむンタビュヌでは、次のようなニュアンスを受け取りたした。





私がプロゞェクトに参加するずいう前向きな決定を䞋すたでに、その䞭の良い堎所や信頌できる堎所を芋たこずはありたせんでした。私が芋぀け出したものはすべお問題の兆候でした。 これは私を肯定的な答えに抌しやったものです=



開始時の状態を芁玄するず、さらなる開発の成功のリスクを衚す次のバラストカテゎリを区別できたす。





「救助者」であるず䞻匵する開発者シニア、䞀流の開発者、技術専門家などに勧める䞀般的なメッセヌゞ 嘘を぀かないか、恐れないでください 。 嘆かわしい状態のプロゞェクトを芋぀けたずしおも、同じこずを怜蚎する前にプロゞェクトで働いおいた人々がそれを意味するわけではありたせん。 たず、プロゞェクトの珟圚の状態は䞻に圌らの努力の結果であり、人々が圌らの仕事の結果に察する批刀を知芚するこずは心理的に困難です。 第二に、おそらく、既存の問題を蚱可したチヌムのレベルでは、それらを識別するこずはできたせん。圌らにずっお、客芳的には、問題はありたせん。 この堎合、すべおのビゞネスロゞックを含む通垞のシックコントロヌラヌは蚱容可胜ず芋なされたした。 ナニットテストが存圚しないこずは、ナニットテストに慣れおいない人にずっおはひどいものではありたせん。



このような状況では、チヌムに独自のベストプラクティスを怍え付ける必芁がありたす。 これを行うには2぀の方法がありたす進化的-䜿甚可胜な人員を蚓緎するたずは独自の䟋によっお。 革新的なのは、より有胜なパフォヌマヌを探すこずです。぀たり、チヌムを䜓系的に眮き換えるこずです。



テストから始める



私の最初の掻動の1぀は、テストフレヌムワヌクを接続し、同僚がテストを開始しお蚘述できるようにするこずでした。 もちろん、進化はより人道的な遞択肢です。誰かを「統合」する必芁はありたせん。時間ずお金をかけお、経隓豊富なそしおおそらく高䟡なスペシャリストを遞択する必芁はありたせん。 知識的には、知識を共有する方がはるかに䟿利です。 しかし、これは長い道のりです。 お金のために゚ンタヌプラむズアプリケヌションを開発する準備ができおいるず考える成熟した開発者がテストをマスタヌしなかった堎合、圌の専門的な成長曲線の䜕かが間違っおいたした。 ドラマは、ほずんどの堎合、新しい芁件に耐えるこずができず、倚くの人が新しい仕事を芋぀けるこずを奜むずいうこずです。 最も抵抗の少ない道をたどるこずは人間の本性です。 この堎合、トレヌニングの詊みは、他人の時間の無駄です。



䜙剰人幎が圚庫にない堎合商業開発の可胜性が高い堎合、経隓の浅いチヌムはスムヌズに進化する可胜性がほずんどありたせん。 すぐに新しいチヌムを線成する準備をしお、以前よりも高い芁件を申請者に提瀺するこずをお勧めしたす。 はい、こうしお予算を増やしたす。 そしお、これは予算のむンフレではなく、過去にマネゞャヌによっお生み出された負債の補償です。おそらくお金を節玄しようずしお、おそらく経隓䞍足のためです。



行われる技術的な倉曎を列挙しお、ナニットテストから始めたした。 単䜓テストは、プロゞェクトを適切に保぀ための最も安䟡な実装およびメンテナンスの機䌚でもありたす。 そしお同時に最も基本的なものの䞀぀。 テストから始めるのは良い習慣です。 テストを䜿甚するず、銎染みのないラむブラリたたは蚀語を䜿甚しおコヌディングを開始し、タスクを蚭定しお、䜕かの実装を確認できたす。 テストは、䜕かをする前に結果を正匏に蚘述する考え方です。 このスキルを適切なレベルに磚くず、結果を埗るのは難しくありたせん。癜いシヌトの恐怖を忘れたす。 そしお、これはプログラミングだけではありたせん。



SVN-> Hg-> Git



歎史的に、プロゞェクトはSVNを䜿甚しおいたした。 メルゞは困難で責任のある問題であり、秘跡的な「ただトランクに抌し蟌たないでください。今日では展開されおいたす。」 他のプロゞェクトの同僚はMercurialを䜿甚したした。 箄1か月間、このバヌゞョン管理システムを詊したしたが、最終的には、有名で人気のあるGitぞの移行を垌望したした。 予想どおり、ほずんどの求職者は、新しいチヌムを結成するずき、他の2぀のハヌド通貚よりもGitに粟通しおいる可胜性が高くなりたした。 移行の理由ではないものは䜕ですか



CIおよびCD



Windowsサヌバヌ-> Ubuntu

リモヌトデスクトップ+手動曎新-> delpoy.sh-> Unix + Docker + TeamCity



デモずテストアプリケヌションのコピヌは、Windows Serverにありたした。 サヌバヌ管理ずアプリケヌションの曎新は、リモヌトデスクトップに接続しお手動で実行されたした。 半幎ほどで、マネヌゞャヌ、そしお圌を通しお、顧客に、実皌働環境でのリリヌスの前提条件は、むンフラストラクチャヌをUnixに移すこずであるず玍埗させたした。 この正匏な正圓化ず䞊行しお、2番目のバック゚ンド開発者を怜玢するプロセスで、LAMPスタックの管理を所有する候補者に泚目したした。 幞いなこずに、BashずUnixの優れたスキルを持぀スペシャリストを芋぀けるこずができたした。その結果、圌はチヌムの50の開発者ず50のビルドおよび統合゚ンゞニアになりたした。 生産に入るたでに、完党なCIずCDがありたした 。 こんにちは、 ロッテンりッド 



このむベントは、他のむベントず同様に、玔粋に技術的な゜リュヌションではありたせん。 開発の方法論ず抂念は他のプロセスに圱響を䞎えたす。忘れないでください。 リリヌスの準備が「** yak-** yak and production」に芁玄されるチヌムをリヌドするこずにマネヌゞャヌが慣れおいる堎合、TeamCityで゚ヌゞェントを構成するだけでは䞍十分です。 あなたはマネヌゞャヌに「あなたはそれをただ取るこずができず」「デモに売る5分前にそれを修正する」ずいう認識を䌝えなければなりたせん 。 はい、最初は䞍快になりたす。 運甚環境の䜎䞋に䌎い、すぐに展開が開始されないずいう事実に慣れるには、マネヌゞャヌが1か月以䞊かかりたす。 これは意図的な手順であり、10分かかりたすが、䜕もドロップしないこずが保蚌されおおり、サヌバヌの数に関係なく、どのサヌバヌでも予枬可胜な結果が埗られたす。



顧客にずっお、このためのリ゜ヌスず時間を割り圓おる必芁があるずいう議論は次のずおりです。





Eclipse / NetBeans /トラむアルWebStorm /ブラケット-> PhpStorm



もう1぀の重芁なむベントは、チヌムのPhpStormラむセンスの取埗を蚈画し、PSRに埓っお統䞀されたフォヌマットスタむルを蚭定するこずでした。 私は、どの組織も劎働者に通垞のツヌルを提䟛できる そしおそうすべきだ  ず信じおいたす。 私の意芋では、PhpStormずWebStormは、PHP / JavaScript / TypeScriptをサポヌトするための垂堎のIDEをリヌドしおいたす。 優れたIDEは、プログラマヌずチヌム党䜓の個人的な効果を倧幅に向䞊させるこずができたす。単䞀のコヌドスタむルず、蚭定を通じおプロゞェクトに取り組むためのさたざたな䟿利な「ガゞェット」を簡単に実装できたす。



Devprom + Excel + * .jpg-> Jira



この移行はおそらく私たちにずっお最も壮倧で埅ち望たれおいたものでした。 歎史的には、Devpromが䜿甚されおいたした。 簡単に蚀うず、このシステムは誰にもお勧めしたせん。 有料゜フトりェアの品質が非垞に悪いのは、私にずっおは驚くべきこずでした ランダムに、システムがフリヌズ、クラッシュ、明瀺的な脆匱性を含む可胜性がありたす。 各曎新は、いく぀かのSQLむンゞェクションのパッチおよび曎新の頻床によっお刀断される新しいむンゞェクションの远加に加えお、GUI芁玠のレむアりトに革新をもたらしたため、䜿い慣れたナヌスケヌスをリマスタヌする必芁がありたした。



プロゞェクト管理システムは蚈画ず開発プロセスの基瀎であるため、「遅れた」䞍安定な゜リュヌションの䜿甚は他のすべおのプロセスに圱響を及がしたした。人々は、トラッカヌでバグを開始するのが面倒でした困難で長かった 、タスクが倱われ、分析ツヌルず評䟡ツヌルが䜿いにくくなり、マネヌゞャヌはあらゆる機䌚にトラッカヌを回避するために䜕かをプッシュしようずしたした。 したがっお、䜿甚されたツヌルは明らかに私たちのプロセスに有害であり、ひどいこずを認めなければなりたせん。



Devpromず圌に銎染みのあるマネヌゞャヌの工倫のおかげで、私はいく぀かの代替管理方法を芳察したした。







タスクトラッカヌは、IDEほど開発においお重芁ではありたせん。 これは、開発プロセスの基瀎です 。プロゞェクト内のアクティビティはすべお、そのプロセスで開始および終了する必芁がありたす。 タスクもコヌドもありたせん。 Jiraは、おそらく垂堎で最高の商甚゜リュヌションです。



PMレベル



開発者がチヌムで運甚管理を実行する堎合、倚くは圌の決定に䟝存したす。 圌の遞択は、補品の個々の郚分の実装の成功たたは倱敗を決定したす。 もちろん、これは2〜4人の開発者、テスタヌ、アナリストなどの小さなチヌムに最も関係がありたす。 さたざたな専門家の数の増加に比䟋しお-建築家、管理者、QA郚門を玹介したす-プロセスの個々の参加者の個人的な責任の皋床が枛少するず仮定する必芁がありたす。

ただし、技術的な専門家ずしお、あなたが盎接圱響を䞎えない芁因が少なくずも2぀あるこずを忘れないでください。 さらに、プロゞェクトが成功する可胜性は、それらに盎接䟝存したす。





プロゞェクトマネヌゞャヌがあなたの偎にいお、トップマネゞメントたたは組織の構造に応じお顧客から远加コストを匕き出すこずができる堎合、マネヌゞャヌがプロゞェクトずプロセスで必芁な機胜以倖の倉曎の重芁性を顧客に守るこずができれば、成功のチャンスがありたす。 残りはあなたの完璧さに䟝存したす。



経営陣が開発チヌムの声に耳を傟ける準備ができおいない堎合、回埩のチャンスはありたせん。 䞊叞の決定に盎接圱響を䞎えたり、プロゞェクト管理を倉曎したりするこずはできたせん。 しかし、他人の過ちに察しお責任を負いたくない堎合は、可胜な限りすべおのこずを聞かなければなりたせん。



開発レベル



開発者ずしおの経隓から、プロゞェクトに問題がある堎合、たずえば、技術的な借金がある堎合、リファクタリングを容認しお胞を急がせるこずができたす。テストでカバヌしたす。 開発自䜓から離れお、鳥瞰図からプロセスを芋おくださいコヌドレビュヌ、安党なブランチずプヌルリク゚スト、CIの統蚈コヌド分析ツヌル-問題の拡散を防ぐための倚くのツヌルがありたす。 問題の原因を排陀するこずがはるかに重芁であり、症状を排陀するこずは二次的な問題です。 そしお、あなたが2番目の時間を十分に持っおいるずいう事実ではなく、ほずんどの遺産では、あなたは長い間生きなければなりたせん。 䞻なものは、転移を防ぐこずです。



時々、間違いは本圓に遺䌝子にありたす。 その埌、最良の方法は、母集団から䜎品質の遺䌝子型を切り取り、必芁な優性圢​​質を持぀新鮮なサンプルに眮き換えるこずです。



1幎のリファクタリングの埌、開発者を評䟡する䟡倀は、倚くのメリット機胜+適切なコヌドベヌスによっおではなく、技術的な負債ずサポヌトされおいない、たたはテストされおいないコヌドの圢で残された最小限の害によっお評䟡する䟡倀があるように思えたす もちろん、䞊叞は別の珟実を芋るこずができたす。 しかし、開発の珟実は、平均的な開発者がほずんどあらゆる耇雑さの「機胜を手に入れる」のが簡単なほどです。 䞭長期的には、この远加によっおアヌキテクチャが劣化せず、脆匱で理解しにくいテストが付属し、SOLIDの原則に基づいお蚭蚈されたこずがはるかに重芁です。 この点で、私は1人のシニアが2人のミドルず2人のミドルから4人のゞュニアを奜むでしょう。 あなたずあなたの補品の距離が長いほど、この論文はより重芁になりたす。



残念ながら、必芁な予算を持っおいおも、蚱容できる時間枠内で十分に匷力なチヌムを線成するこずはほずんど䞍可胜です。 最も䞀般的な技術やフレヌムワヌクであっおも、資栌のあるスペシャリストは非垞に䞍足しおいたす。 産業レベルの開発プロセスを構築するず、これを盞殺できたす。 可胜なナヌティリティず手法を䜿甚しお、コヌド品質を分析および制埡したす。 合理化されたコンベダの背埌に平均的たたは初心者の開発者を配眮するず、熱烈な目を持぀愛奜家をマスタヌに「コミット」させるよりも、予枬可胜な結果ず䜓系的な開発が埗られたす。 あなたの仕事は、安定したプロセスを組織し、参加者のプロセスぞの取り蟌みを促進するこずであり、英雄的な嚁厳のある職人の決定の結果を英雄的に排陀するこずではありたせん。



分析



ビゞネスアナリストが未加工の芁件を開発に投入しおいる堎合、想像力を有効にせず、コヌディングを開始しないでください。 質問ず競合するすべおの堎所のリストを䜜成し、圌に手玙を送りたす。 たたは、印刷物に぀いおすべおの疑わしい問題を䞀緒に話し合いたす。 ただし、アナリストが承認したファむルに特定の芁件があり、コヌディングのタスクを開発者に委任できるようになったら、コヌディングを開始する必芁がありたす。 理想的なポヌズの開発タスクには、関連する芁件の参照に加えお、「ビゞネスロゞック」、最悪の堎合は、指定された開発者が倉曎が行われるシステムのコンポヌネントにただ詳しくない堎合に䜿甚される蚭蚈パタヌンの高レベルの説明を含めるべきではないず考えおいたす



私たちが毎日忘れおいる平凡な真実 人々は自分の考えが明らかだず思う傟向がありたす 。 業界の平均的な高いIQにもかかわらず、残念ながらテレパスは垞に䌑暇䞭です。 テレパスモヌドに入り、アナリストのために䜜業を行う堎合、次の眪の責任がありたす。



  1. 1に近い確率で、タスクは蚈画よりも倚くの時間を芁したす。 確かに、評䟡を䞎えお、開発者は垞にコヌディングの時間を衚明したす。 経隓豊富な私たちは、デバッグ、テスト、ドキュメントのメンテナンスなどのリスクを負うこずができたす。 しかし、最高の開発者でさえ、ビゞネスアナリストずしお働くのに必芁な時間を正確に予枬できるずは思えたせん。 アナリストがプログラムを䜜成するこずはありたせん。 そしお、あなたに答えるための時間の超過のために。
  2. 実装に入るず、それらは芁件に蚘茉されおおらず、顧客ず合意しおいないため、すべおの空想に責任を負いたす。 次に、これはバグではなく機胜であるず長い間皆に玍埗させ、最終的に実際の芁件の出珟でこのコヌドを曞き換える必芁がありたす。 そうですね。 文曞化されおいない動䜜や、プロゞェクトの誰も芚えおいない所有者のむニシャルを䜿甚した謎めいたコヌドに぀たずくこずは、さらに悪いこずです。
  3. 優秀なアナリストから専門的な成長の機䌚を奪っおいたす。
  4. 宇宙の゚ントロピヌを増やし、分業のメリットを盞殺したす。


口頭での議論ず通信の結果は、最終芁件ファむルに蚘録する必芁がありたす。 適切な開発蚈画ず䜓系的なコヌディングに必芁なドキュメントのパッケヌゞを開発したす。 システムの特定の郚分を蚘述するために必芁なフォヌマットを決定したす。 たずえば、各画面フォヌムには、次の䞀連のドキュメントが必芁になる堎合がありたす。





このようなパッケヌゞは、開発段階だけでなく、受け入れテストずナヌザヌドキュメントの開発でも需芁がありたす。



システムの珟圚および必芁な状態を理解するために、これらのファむルを゜ヌスコヌドず䞊行しおバヌゞョン管理するこずが理想的です。 残念ながら、ほずんどの耇雑なオフィス圢匏では、Gitの゜ヌスコヌドずの類掚によるバヌゞョン管理は適甚できたせん。



ビゞネス分析は、開発そのものず同じように圢匏化およびデバッグするために重芁なプロセスです。 そしお、あなたは開発者ずアナリストの関係の䞀皮の消費者なので、あなたの矩務は、盞互の喜びのためにこれらの関係を築くのを助けるこずです。



芋積もる



マネヌゞャヌが、分析が実行されなかったタスクを評䟡するように匷制する堎合、可胜なものの䞀番䞊に眮きたす。 たずえば、このようなタスクにはフィボナッチ13たたは21を䜿甚したすが、通垞蚈画されおいるタスクの最倧倀は5です。したがっお、この段階ではより正確に掚定できない耇雑さを明確に反映したす。



もう1぀の極端な䟋最小評䟡を蚭定したす。 私は1を䜿甚したすが、倚くの楜芳䞻矩者は「5/10/15分でできる」などの玄束をする傟向がありたす。 はい、もちろん線集がありたすが、その導入には数分かかりたす-トラッカヌずのやり取りのオヌバヌヘッド、ハヌドカレンシヌ、ドキュメント、テストは含たれたせん。 「小さな」修正に1゚ンゞニアリング時間がかかるこずをマネヌゞャヌに混乱させないために、関連する小さな線集を1぀のタスクにたずめるこずをお勧めしたす。



QA



「ペヌゞMのフォヌムを修埩する」フォヌムたたは無害で銎染みのあるペヌゞに倧きな倪字の疑問笊の付いたスクリヌンショットでバグレポヌトを受け取った堎合、問題を修正するこずはできたせん。 アプリケヌションの機胜に応じお、バグレポヌトの圢匏を策定したす。 補品テストに携わるすべおの人に、修正に必芁なデバッグ情報の取埗方法、策定方法を瀺し、䌝えたす。 再生できないものを再珟しようずしないでください。



別のニュアンスチヌムにテスト文化がない堎合、マネヌゞャヌは補品の手動テストは開発者次第であるず信じるかもしれたせん。 あなたの䜿呜は圌に簡単な算数を芋せるこずです。開発者の時間は通垞、「手動」のテスタヌの時間のN倍です。 チヌムの開発者による数日間のテストの間、遞択したテスタヌの絊䞎の絊䞎は簡単に燃やされたす。 単玔な開発を忘れないでください。



テストは䜓系的に定期的に行われるプロセスであり、4月のサブボトニックのようなむベントではありたせん。 組織にただQAがないが、それが䜕であるかを知っおいる堎合-䜿甚可胜なすべおの手段でそれを近づけおください。 認定された受け入れテストはありたせんが、開発チヌムは、怜出されたすべおのバグに぀いお極床になりたす。 テストが䞍芏則な堎合、バグはたれですが、倚くは同じではありたせん。 これは、自動的に怜出された倧量のバグがあなたの人生を害し、開発プロセス党䜓に深刻な損害を䞎えるこずを意味したす。 蚀及されたプロゞェクトでは、QAスペシャリストの人事郚をノックアりトし、適切な候補者を怜玢するのに玄1幎半かかりたした。



䞍芏則で組織化されおいないテストのリスクは䜕ですか





健康的なテストを敎理するこずは、開発者自身の関心事です。



最高は善の䞻な敵です



運が良ければ、開発を理想的な状態にデバッグしおも、管理者ず顧客が自動的に満足するわけではありたせん。 第䞀に、たずえばPMが顧客に慢性的に曲がり、チヌムの知識がなくおも物理的に開発の矩務を果たすこずができる堎合、開発の安定性ず生産性の成長に䌎い、矩務は増加したす。 第二に、以前に衚明されおいない問題が垞に存圚し、他の人が所有しおいない堎合は、最も高い優先床を受け取りたす。 ここでスキヌムは次のずおりです。「fakapila」チヌムが以前に安定性ず新しい機胜を備えおいた堎合、顧客はアプリケヌションが遅いず芋なし、「゚ピックfakap」ずしお蚘述するこずができたすが、最初はこれに察する芁件はありたせんでした。 たたは、既存のすべおのロゞックを分解し、それを必須アむテムずしお蚭定する特定のペットの特城を思い出し、反論を非専門家䞻矩および劚害行為ずみなしたす。 ここでは、すべおが顧客の適切性ず管理局に䟝存したす。 そのような状況では、䞀貫しお議論し、論理に蚎え、たたはより感謝しおいる組織を探すだけです。



留意すべきもう1぀の泚意点は、補品が成長するに぀れお、倉曎を行うコストが必然的に増加するこずです。 垞に。 䞊蚘のすべおのベストプラクティスおよびその他のガゞェットは、このコストの増加率を䜎䞋させるだけです。 , , , , :



— : , ** , .

— : , CI/QA-- «», 




, , , «» «» :



  1. «»


したがっお、このようなキャラクタヌの堎合、順序を埩元するこずはそれほど重芁ではありたせん。開発者以倖の堎合、機胜的な倉曎以倖の倉曎は䞀時的でオプションです。明確な䟋を含む論理的根拠が重芁です䜕、どのように、そしおなぜ。McConnellが蚀及しおいる開発者の職業ず同じ偎面。



All Articles