変更ごとのバージョン管理とバグ追跡のオーバーヘッドが多すぎますか?


50

私はCVS-crazyとBugzilla-nutsのある場所で働いています。

  1. 各リリースには非常に多くのブランチがあるため、それらをカウントすることはできません。誰もが絶えず自動マージされています。

  2. この仕事には流動性がありません。すべてがロックステップを感じます。簡単なことでも25ステップかかります。工場の生産ラインにいるようなものではありません。毎日自分で工場を立ち上げるようなものです。

状況の例:

単一のバグを修正するには、最初にクリーンで新しい仮想マシンを入手します。次に、Bugzillaレポートで説明されている別のブランチに基づいて、その単一のバグ修正用のブランチを作成します。マシンにブランチをインストールし、セットアップします。バグを修正します。私はそれをチェックインし、他の人がテストするためにマシンとマシンを残します。次に、バグ管理ソフトウェアにアクセスして、自分が何をしたかを説明し、すべての手順でテストケースを作成する必要があります。最終的に他の誰かがそれをリリースとマージします。

どんなに小さなバグであっても、これらすべてのことをしなければなりません。時々、人々は複数のバグの作業を結合しますが、私が言ったように、これはほとんど不可能であるほど多くのブランチがあります。

他の仕事では、バグを修正するだけです。私が持っていたすべてのジョブがそれを使用していますが、私はかろうじてさえ、SCMを使用して覚えている:他のすべての仕事で、彼らは何とかそれを守っているからです邪魔になりません

プロセスが邪魔をして、それ自体で終わりになるポイントはありますか?それもエンジニアリングですか?


8
あなたのために悪いを感じる:(あなたが働いているん会社はCMMI 3持ち、高い?
artjom

6
組織は以前よりひどく噛まれており、防御を強化しているように思えます。おそらくあなたはこれの歴史について尋ねるべきですか?

1
そして、監督当局が一定の気晴らしを奨励するので、あなたの仕事は本当の地獄である必要があります...
VINES

57
これは質問ですか、ブログ投稿ですか?
宮坂

31
ソフトウェアが原子力発電所の制御システムであった場合、これは不合理に思えません。Facebookのファンページの場合、それは非常に過剰に思えます。文脈がなければ、これが不合理であるかどうかを判断するのは困難です。確かにそうでないプロジェクトもあれば、確かにそうであるプロジェクトもあります。
edA-qa mort-ora-y

回答:


89

プロセスが邪魔をして、それ自体で終わりになるポイントはありますか?

残念ながら、重いプロセスが一般的です。一部の人々、特に経営陣は、プロセスが製品を生産すると信じています。そのため、彼らはプロセスをやりすぎて、実際に製品を作成するのは本当に一握りの勤勉で賢い人たちであることを忘れています。上級管理職にとって、彼らのビジネスは少数のオタクの手にあると考えることさえ恐ろしいので、現実から目を閉じ、代わりに彼らの親愛なる「プロセス」を考えて、彼らにコントロールの幻想を与えます。

そのため、少数の優秀なエンジニアを抱えるアジャイルスタートアップは、従業員がエネルギーの95%をプロセスとレポートに費やしている大規模な既存企業に勝つことができます。かつて競合他社を打ち負かした、および/またはまったく新しい市場を作った、かつて小規模の新興企業の例:

  • Apple(Apple Iは1人のエンジニアによって作成されました。当時、会社には3人の男性がいました)。
  • Google(元々2人のプログラマーが作成)。
  • Facebook(元々は1人の努力)。
  • マイクロソフト(1975年に2人の会社)。

これらは単なる外れ値であり、極端な例外であると簡単に言うことができます。何か深刻なことをするためには、大規模で確立された企業である必要があります。しかし、リストは続きます。そして。恥ずかしいほど長いです。今日のほとんどすべての大企業はガレージショップとしてスタートしましたが、これは異常なことをしました。奇妙な何か。彼らはそれを間違っていました。彼らはプロセスに従ってそれをやっていたと思いますか?


19
私はあなたがここで提示する主張のいずれかの証拠があるのだろうか?あなたは主な情報源(経営幹部など)ですか?彼らとのインタビューを行ったり読んだりしましたか?「YES!RIGHT ON!」と言って、あらゆる種類の返信がどのように行われるかは非常に興味深いです。贈与目的に一度も行ったことがないため、正確性を保証できない人から来ているようです。開発者(悪名高い反経営者)が単に信じたいと思う答えと実際に正しい答えを区別することが重要だと思います。
アーロン

6
私は、このような答えを批判するとき、「より良い裏付けられた情報」を提供するために自分自身や他の誰かに責任があるべきではないと本当に思います。あなたはそれを裏付けるために、非常に強力で、広く、全面的な主張をして、事例証拠でさえないゼロの証拠を提示しました。おそらくプロのコミュニティがこの種のポピュリストのナンセンスに簡単に揺れ動くのは残念です。
アーロンノート

11
実際に、人々に聞きたいことを伝えることで簡単に票を得ることはできないと思いますか?はい、率直に言って、これらの不当な答えを支持する暴徒をあまり尊敬していません。コミュニティがその振る舞いに報いるとき、あなたのような人々が絶対的な最低限のことをしたことを責めることはできないと思いますが、それにもかかわらず、人々は少なくとも、正当化として支持者を頑固に指すのではなく、批判されたときに答えを改善しようとすることを望みます。
アーロンノート

8
全部?「いくつかの人々」-どの人々?「特に管理」-なぜ彼らはこれを信じる可能性が高いと仮定しますか?「宗教的に想像する」-彼らの信念が事実や論理に基づいていないことをどのように確信していますか?「プロセスは製品を生産しますか?」-その具体的な主張を正確に誰がどのような文脈で行ったのか?「プロセスをやり過ぎ」-それは正確に何を意味するのでしょうか?「ビジネスは数人のオタクの手に委ねられている」-どの程度、どのように?「目を閉じて/コントロールの錯覚」-説明?「アジャイルスタートアップは、大規模で確立された企業に勝つことができます」-これらは外れ値ではないと断言しますか?
アーロンノート

7
@Aaronaught:このフォーラムは科学論文ではありません。あなたも私も、だれも、彼が書いたすべての文章について説明をするつもりはありません。あなたはそれが好きではないので、この答えを求めているだけです。どうやらそれは神経を打つが、文明的な方法で意見が合わないのはどうだろうか?:大企業を破っスタートアップについては、ここから製品の説明のちょうど2つの最初の文章を読ん例えばamazon.com/Radical-Innovation-Companies-Outsmart-Upstarts/dp/...
Joonas Pulakka

21

企業は一般的に、私が制御柔軟性のジレンマと呼んでいるものに苦しんでいます。ルール、構造、および官僚的なオーバーヘッドが少ないほど、物事を達成するのが簡単かつ迅速になります(より楽しい)。ただし、「悪い」ことを「良い」ことと同じくらい簡単に行うことができます。つまり、重要な間違いをほとんど犯さない熟練した従業員がいる場合にのみ、元気です。

一方、低から中程度のスキルを持つ従業員が多数いる場合、および/またはミスを犯すコストが高すぎる場合(北半球でのスペースシャトルの破片のリスクなど)、企業はますます「ルール」を積み重ねる傾向がありますそれらを最小化するための「および」プロセス。

唯一の問題は、これらのプロセスの累積的なオーバーヘッドにより、より優秀な従業員が会社を辞めるような結果を達成することが難しくなることです。これにより、平均スキルがさらに低下し、さらに多くのプロセスと官僚が必要になります。したがって、急進的な何かが起こるか、会社が腹を立てるまで、死のスパイラルは続きます。

この面で無意味なポイントを過ぎたと思われる会社にいる場合は、自分の仕事を「気にかけない」ように解決することができます(これはほとんどの人がやったことです)。あなたの魂がそのままの状態の:)

会社が行き過ぎていなくて、あなたが純粋な決意と意志力によってコースを逆にすることを試みることができる手段を持っているならば。ただし、成功を保証することなく、膨大な量の仕事と個人的なエネルギーを必要とする可能性があることに注意してください。損失を減らして、より豊かな経験を自分で数えるほうがよい場合もあります。


17

このような開発スタイルには、正当な理由が1つしかありません。開発されたソフトウェアは絶対にミッションクリティカルであり、いかなる状況でもバグを含んではいけません。旅客機のジェットエンジン燃料噴射ファームウェア、または心臓ペースメーカーファームウェア、または核ミサイル発射システムを考えてください。

他のすべての状況では、コストのオーバーヘッドがビジネスを殺します。先に進む時間。


2
彼らはそれがミッションクリティカルであると主張していますが、ソフトウェアのあらゆる部分についてこれを言うことができます。顧客がグリッチをどれだけ受け入れているかという問題です。そして、それがミッションクリティカルである場合、たとえば、なぜ彼らはプロジェクトの所有権を誰にでも与えるという考えを本当に嫌っているように思えます。最近、私は3か月前に書いた複雑なソフトウェアについて尋ねられましたが、手掛かりを提供できませんでした。これらの人々はばかです。彼らは誰もが使い捨てであると考えており、彼ら以外の誰の意見も価値がない。
ポンク

1
@Ponk、しかし誰もが使い捨てです。プロセスが作業を定義し、顧客がすでにソフトウェアを受け入れ、お金が投入されると、すべてがミッションクリティカルになります。この時点でイノベーションに関心があるのはなぜですか?おそらく顧客は、すぐに気がつくと、ベンダーが1年以内に新しい機能を使用できるように訓練された、すぐに使えるソフトウェア開発チームを持っていることを気にしているだけでしょう。それまでの間、あなたとチームがあなたが働いているという幻想以外の実質的な何かを達成することは重要ではありません。
maple_shaft

1
@maple:一つのことは冗長化されていることです。もう1つは、あなたの小さなタイプミスのために人々が死亡した場合、そして失業に加えて、数年の刑務所で過失致死罪に直面します。これは私がミッションクリティカルと呼ぶものであり、そのようなリスクに直面するソフトウェアはそれほど多くありません。
SF。

3
それが彼らが彼らのやり方でそれをしている理由の1つだけではありません。そして、ある開発プロセスが他のプロセスよりも優れていると言うことは、オレンジがバナナよりも優れていると言うことと同じです。収益性が高く、給与を支払うことができる場合、このプロセスはアジャイル志向の企業よりもうまく機能します。書かれた内容から、この人が間違った仕事に就いていることがわかります。開発者により多くの自由を提供する多くの会社があります。
デイニウス

このレベルの制御が必要な状況(ソフトウェアでも)があることを指摘して+1。
リウォーク

15

この質問には実際に2つの質問が含まれており、個別に対処する必要があります。

一部のチームには厳格な開発プロセスがあるのはなぜですか?

簡単な答えは、そうしないと間違いが起こるからです。費用のかかる間違い。これは開発にも当てはまり、残りのIT分野(sysadmin、DBAなど)にも当てはまります。

多くの開発者やITワーカーにとって、これは理解するのが非常に困難です。なぜなら、私たちのほとんどは「極限」の1つでしか働いたことがないからです。小型のマイクロISVやフリーランスの仕事でさえ、人々がひどくめちゃくちゃにならない場合や、めちゃくちゃのコストが低い場合です。

しかし、これらの段階の間にある会社を見たことがあれば(優秀で才能のあるITスタッフがいる会社でさえ)、プロセスを持たない、または半ばプロセスを行うことの危険性を理解できます。スタッフ間のコミュニケーションは、組み合わせ爆発の問題に悩まされています。単一のチームで約6〜10人の開発者のレベルに達すると、重大または重大な欠陥の主な原因は、才能やノウハウの不足ではなく、コミュニケーションの不足です。

アリスは月曜日の朝に尋ねて、誰もその部分に取り組んでいないので、トランクで再建手術をしても大丈夫だと判断します。ボブは1時間後、休暇から元気に戻って到着し、まったく同じエリアに新しい主要な機能を実装することを決定しました。そこでアリスはその「技術的負債」を返済し、ボブは6か月間バックバーナーにあった彼のキラー機能を実装し、最終的に両方がコードをチェックインすると(もちろん金曜日の締め切り直前に!)、全体がチームは遅れをとり続け、数週間の間バグやリグレッションとして存続し続ける悪夢のような紛争を乗り越えなければなりません。

アリスとボブは両方ともコーディングタスクで素晴らしい仕事をしましたが、どちらも悪い決断から始まりました(「起こりうる最悪の事態は何ですか?」)。チームリーダーまたはプロジェクトマネージャーは、それらを事後分析し、これが再び発生しないようにチェックリストを作成します。

  • 衝突の影響を最小限に抑えるため、チェックインは毎日行う必要があります。
  • ブランチでは1日以上かかる変更を行う必要があります。
  • すべての重要なタスク(リファクタリングなどの機能以外の作業を含む)は、バグトラッカーで適切に追跡して割り当てる必要があります。

多くの人にとって、この「プロセス」は常識のように思えます。古い帽子です。しかし、多くの小規模なチームがこれを行わないことを知っていましたか?2人のチームは、ソース管理をまったく気にしません。誰も気にしない?正直なところ必要ありません。問題はチームが成長したときにのみ発生し始めますが、プロセスはそうではありません。

もちろん、プロセスの最適化はパフォーマンスの最適化に似ています。逆指数曲線に従います。上記のチェックリストは欠陥の80%を除去するかもしれませんが、それを実装した後、他の何かが欠陥の残りの 80%を占めることがわかります。架空の例ですが、ビルド環境が異なるためにビルドエラーが発生する可能性があります。これは、標準ハードウェアがなく、開発者が2週間ごとに更新されるオープンソースライブラリを使用しているためです。

したがって、次の3つの選択肢があります。(a)ハードウェアを標準化して、コストが高く生産性を大幅に低下させる可能性があるサードパーティライブラリの使用を厳しく制限するか、(b)ビルドサーバーをセットアップし、sysadminグループとフルタイムの開発者がそれを維持するか、(c)標準の仮想マシンを配布し、開発者にその上に構築するように指示することにより、開発者自身でこれを行うことができます。明らかに、(b)は最良の長期ソリューションですが、(c)信頼性と利便性の短期バランスが優れています。

サイクルは延々と続きます。表示されるすべての「ポリシー」は、通常、実際の問題を解決するために制定されています。ジョエル・スポルスキーが2000年にずっと書いたように(まったく別のトピックを念頭に置いていますが、それでも関連性があります):

レストランに行くと、「No Dogs Allowed」というサインが表示されている場合、そのサインは純粋に説明的なものだと思うかもしれません。

それが進行中のすべてである場合、「ヘビなし」の標識もあります。結局のところ、誰もヘビが好きではありません。そして、彼らが座るときに椅子を割るので、「象なし」のサイン。

本当の兆候があることがその理由は歴史ある:それは、人々がレストランに彼らの犬を持参しようとする使用ことを示している歴史的なマーカーです。

ほとんど(すべてとは言いません)のソフトウェアチームでも同じです。「バグ修正ごとにテストケースを追加する必要があります」などのポリシーは、ほぼ常に、チームが過去に回帰の問題を抱えていることを示します 回帰は、これらの問題の別の1つであり、ほとんどの場合、無能ではなくコミュニケーションの崩壊によるものです。ポリシーを理解している限り、正当なショートカットを使用できる場合があります(たとえば、6つの小さなバグを修正する必要がありましたが、それらはすべて同じ機能であったため、実際には9つすべてに対して1つのテストケースを書くことができます)。

これがプロセスが存在する理由を説明していますが、それがすべてではありません。残りの半分は:

プロセスを追跡するのが難しいのはなぜですか?

これは実際には答えるのがより簡単な質問です:チーム(またはその管理者)は繰り返し可能な結果に焦点を合わせ、欠陥最小限に抑えます(上記のとおり)が、そのプロセスの最適化自動化に十分な注意を払っていないためです。

たとえば、元の質問には、いくつかの問題があります。

  • リビジョン管理システム(CVS)は、今日の標準ではレガシーです。ための新しいプロジェクト、それはすぐにそのようなMercurialの水銀(Hg)のような分散システムによってケラレつつある自体のSubversion(SVN)によってほぼ完全に置き換えられました。Hgに切り替えると、分岐とマージがはるかに簡単になり、上記の仮想的な例でさえ、毎日のコミット要件が非常に簡単になります。リポジトリはローカルであるため、コードをコンパイルする必要さえありません。-実際、怠lazな開発者は、必要に応じてこのステップを自動化することもできます。ログオフスクリプトを設定して、変更をローカルリポジトリに自動的にコミットします。

  • 仮想マシンプロセスの自動化に費やした時間はありません。ソース/ライブラリの取得、構成、および仮想マシンへのダウンロードのプロセス全体を100%自動化できます。ローカルマシンのバグ修正作業中にどこかで中央サーバーで実行する無人プロセスである可能性があります(クリーンビルドを保証するためにのみVMを使用します)。

  • 一方、特定の規模では、開発者ごとのVMソリューションは愚かになり始め、継続的インテグレーションサーバーが必要になります。これは、個々の開発者がビルドをまったく心配する必要がないため、実際の生産性のメリットが得られる場所です。ビルドサーバーは常にクリーンであるため、クリーンな仮想マシンのセットアップについて心配する必要はありません。

  • 質問の文言(「すべてのステップを含むテストケース」)は、いくつかの手動テストが行​​われていることを意味します。繰り返しますが、これは作業負荷が比較的小さい小規模なチームには有効かもしれませんが、大規模ではまったく意味がありません。回帰テストは自動化することができ、自動化する必要があります。「ステップ」はなく、クラス/メソッドがユニット/統合テストスイートに追加されます。

  • 言うまでもなく、Bugzillaから新しい(より優れた)バグ追跡システムに移行すると、その部分の経験がはるかに簡単になります。

これらの問題を解決していないからといって、企業は必ずしも安く愚かでもない。彼らが知っているのは、現在のプロセスが機能していることだけであり、場合によってはリスク回避的であり、それについて何も変更することに消極的です。しかし、本当に彼らはただ利益を確信する必要があります

開発者がすべての非コーディングタスクの時間を追跡するのに1週間を費やした場合、簡単に足し合わせて、管理者に(たとえば)資本金がゼロで、100時間の投資でMercurialにアップグレードできることを示すことができますマージの競合を解決するために週に最大10人時間を削減すれば、それは10週間の見返りであり、ほぼ確実にそれに同意します。ビルドサーバー(CI)またはより優れたバグ追跡と同じアイデア。

要約すると、チームは、これらのことをまだ行っていません。なぜなら、今日行うのに十分重要であると経営者に確信していないからです。だからイニシアチブを取り、それを費用便益の方程式に変えてください。最小限のリスクで簡素化/自動化できるタスクに費やされる時間を調べ、新しいツールまたはテクニックの損益分岐点と最終的なペイオフを計算します。彼らがまだ聞いいない場合は、残りのオプションが何であるかを既に知っています。


開発者がすべての非コーディングタスクに時間を追跡するのに1週間を費やした場合、簡単にそれを追加し、管理を表示して...費用対効果の方程式などに変換できます...

上記の部分はさらに拡大する価値があります。

動作することを確認できます。プログラマーは、私が取り組んでいるプロジェクトの1つでそれを数回使用し、そのたびに必要な変更が行われました。

私の全体的な印象は、正しく行われた場合、このトリックはかなりの量の管理の無知と慣性を覆すことができるということでした。

私たち(開発者)がこの種のDIYアプローチに頼らざるを得なかった会社は、ITに関しては非常に未熟でした。よりベテランのソフトウェアベンダーでは、そのようなことは主にマネージャー自身によって行われています。そして、原則として、彼らは私たちのプログラマーよりも生産的でした。はるかに生産的。


9

厳しく規制された業界で働いている場合、その面倒なプロセスには何らかの理由があります:いつかあなたは監査を受けることができ、そのバグを修正した人、方法、レビューした人、テストした人を説明するためにすべての記録を表示する必要がありますそれなど...

したがって、それは必要な悪かもしれません。

一方、経営陣からの信頼の欠如以外に、そのプロセスに正当性がない場合は、上司に相談して、会社の時間(つまりお金)を節約できる方法を彼に伝えてみるべきです。

それが正しく説明されている場合、より迅速でより良いプロセスを拒否するその正しい心の誰も。

しかし、変更を正当化するためにあなたの議論を擁護する準備ができています。


4
私はそのような仕事のために一度面接しました、それはヘルスケア関連であり、彼らはそのプロセスを生き地獄として描写しました。正直に言って、彼らのいいところです。
ポンク

2
ただし、このようなプロセスでは、現在の実装には手付かずで欠陥がないことが前提となります。このようなプロセスが壊れた製品を本質的にロックインすることは、本当の危険です。
edA-qa mort-ora-y

1
「それが正しく説明されればより速く、よりよいプロセスを拒否するその右心のだれも」。---この声明が当てはまらない場合、意思決定者が従うことができる多くの議題を考えることができます。

@kekekela、これは「より良い」プロセスをどのように定義するかに依存します。ソフトウェアエンジニアとして、私はそれをより効率的であると定義するかもしれませんが、プロジェクトマネージャーはそれをより制御可能なものとして定義します。
maple_shaft

それに依存する可能性があります。しかし、誰もが自分の善意のあるメトリックに従って「最良の」プロセスを本当に望んでいると考えることに限定すると、現状の非常に広い範囲の根本原因を逃すことになります。

8

問題の半分は、使用されていないツールをプロセスで使用していることです。あなたが説明することは、バグごとにブランチを作成するという面倒な作業をせずに、最新のDVCSで非常に簡単です。

もう1つの問題は、あなたが明らかにあなたが楽しんでいる仕事のラインにいないということです。開発を希望している間は、メンテナンスを行います。仕事を変える以外にできることはほとんどありません。


8

ソフトウェアエンジニアリングの分野は本質的に「すべてがプロセス」であるため、そのように「なった」のではないかと考えると、ポイントが失われます。

ほとんどのプログラマーはプロセスの絶対的な最小値に悩まされますが、組織が直面している問題を解決しなくてもアジャイル手法を擁護する人がいる限り、企業が「 「顧客が要求する」などの健全なビジネス上の理由から、「重い」プロセス。これは、顧客がフォーチュン500企業、大学、または政府機関である場合に一般的です。これらの顧客に販売することの見返りは、追加プロセスのオーバーヘッドを正当化するほど十分に大きい場合があります。

会社は1つのデータポイントであり、経験を一般化して、より重いプロセスに向かう、またはそれから遠ざかる業界全体のトレンドにまとめることは不可能です。本当の問題は、あなたの会社、あなたの製品、あなたの顧客、そして個人としてプログラマーとしてあなたにとって最適なバランスはどれですか?その会社で働きたくない場合は、変更を促すか、別の仕事に就いてください。


1
「ソフトウェアエンジニアリングの分野」の+1。それ言葉のあらゆる意味での規律です。
ダン・レイ・

6

今日あなたから見た他の質問から、あなたはあなたの仕事にかなり不満を感じているようです。あなたは長い間そこにいませんでした、あなたはあなたが間違いを犯したと思うことを監督者に伝えることができます、そしてそれはあなたが予想よりも早く方法を分ける時です。

仕事が得意であれば、本当に新しい仕事を見つけるのに苦労することはありません。正直、このプロセスが存在する正当な理由がなければ、私も移動を検討するでしょう。CVSを使用することは、本当に私にとっては契約違反になりますが、インタビューでは常にソース管理の質問をします。明らかに、私はあなたの状況を知ることができず、あなたが他の義務がある場合、仕事を辞めることは不可能かもしれません。


慎重な観察:)私はインタビューしています。
ポンク

私が一緒に暮らすことができるCVS、私はシルバーとWCF / RIA Webサービスをやって、その代わりに、古代のPowerBuilderアプリケーションに私を入れて、まだVSS 6.使用していたことだろうと私はインタビューにLIED TO MEのために働いているいくつかの企業
maple_shaft

1
ああああああ@maple_shaft、それは厳しいです。それでもあなたは壮大なキディーを伝えることができるものを考える...私は... PowerBuilderのアプリに働いた:D番号の人生は、失敗する
匿名型

3

私は、ソフトウェアエンジニアリングが非常に悪いプログラマーで溢れていることについて発言するつもりでしたが、あなたが説明する状況はひどいものです。

私の個人的な経験では、あなたが説明するこの「プロセス」の一部には、プログラマーに課しているシステムの非効率性を完全に意識していない管理とシステム管理が伴います。例には、オペレーティングシステムの選択の制限、使用するソフトウェアの制限、インターネットアクセス、パーソナルデスクトップ管理権限が含まれます。これらはすべて、優れた開発に不可欠です。

さらに、企業のさまざまな支店で採用されている「マジックソリューション」間の互換性要件。例には、一元化されたソース管理を課している本社、オフサイトのOutlookサーバー、すべての問題に適切ではないコーディングガイドラインまたは言語が含まれます。

企業の大物の車輪を動かし続けるのはそれほど楽しいことではありませんが、一部の企業にはイノベーション、創造性、および輝きの小さな泡が存在することがわかりました。


ひどいシナリオで輝きを見つけようとするために+1。
匿名タイプ

3

あなたはおそらくプロセス指向の会社で働いています。代わりに、結果重視の会社を見つけようとします。それは、あなたがどうするかではなく、どうするかが重要です。

私の会社にも「プロセス」があります(しかし、それは非常に単純です)。私は結果を得るので近道を取って何も壊さない限り、誰も私に何も言わないでしょう。


2

プロセスが邪魔をして、それ自体で終わりになるポイントはありますか?それもエンジニアリングですか?

文字通り、ほとんどのエンジニアリングは、特定の問題に対応して、定評のあるピースを一定の順序でまとめることです。これは、一日中何をするのかをMEに尋ねた場合に最も明白です。エンジニアリングとアーキテクチャまたは初期段階の製品開発(あらゆる分野)を混同しています。あなたの質問について2つの意見があります。

  1. アーキテクチャや設計作業ではなく、バグ修正作業に割り当てられているようです。
  2. 同僚は、より効率的にするために、限定された回避策(バグ修正VMを組み合わせたもの)を考え出したようです。賢明な例に従っていないようです。

多くの人を必要とする建設的な取り組みでは、一部の人が設計を行い、より大きなグループが実装を「取得」するという事実です。申し訳ありませんが、あなたはその2番目のグループにいます。

他のコメンテーターが指摘しているように、CVSは高度に分岐した開発モデルの仕事に最適なツールではありませんが、マージの責任は負わないことにも注意してください。

あなたの苦情のほとんどは、本質的に「開発前、開発中、開発後にテストしたくない!」と思われます。あなたのステップをポイントごとに分解しましょう。

  • 単一のバグを修正するには、最初にクリーンで新しい仮想マシンを入手します。テスト環境
  • 次に、Bugzillaレポートで説明されている別のブランチに基づいて、その単一のバグ修正用のブランチを作成します。-バグが発見された環境を複製します...これはどうですか?
  • マシンにブランチをインストールし、セットアップします。バグを修正します。チェックイン -基本的な開発プロセス
  • ...他の人がテストできるように、マシンとマシンを残します。-マージチームは、マージが南に行く場合に修正を検証できるようにしたいと考えています。
  • 次に、バグ管理ソフトウェアにアクセスして、自分が何をしたかを説明する必要があります。これを行わないショップにいる場合...バグを追跡する理由は何ですか?
  • すべてのステップを含むテストケースを作成します。-私は間違っている可能性がありますが、それはすべての「クールな子供たち」がとにかく行っている方向のようです
  • 最終的に他の誰かがそれをリリースとマージします。-そして、上記の手順のいくつかは、仕事を簡単にするためのものです

目の前にいる誰かが明らかにバグのトリアージを行い、見つかったバグが別のリリースで修正されたり、後のリリースで壊れたりしないようにします(テストケースの目的です)。

このプロセスに関しては、リモートでも珍しい、または熱心すぎるのは、VMのことだけです。作業しているドメインがわかっていれば、合理的と見なされる可能性がかなりあります。


2

面白い。テスターはいますか?彼らはそのいくつかをしているはずです。私は1人であり、私が働いている場所には適切な解決策があります。

あなたが説明しているような機能的な欠陥については、私たちのプロセスは次のようになります。

  1. VMの欠陥をテストします(顧客から報告されるか、探索的テスト中に、またはw / e)
  2. バグが見つかりました/再現されました。
  3. バグを作成します。バグは次のとおりです。
    • インストールからバグを見るまでの完全な再現。
    • VMのスナップショットへのリンク(開発者が必要と思う場合...とにかく、スナップショットが必要な場合に備えてスナップショットを作成します)。
    • システム情報、必要な特別な設定。
  4. そのバグは開発者に割り当てられます。彼らが修正に取り組んでいる間、私は:
    • テストケースを作成する
    • 手動テストを自動テストに書き込む(または変換する)

その後、解決を待ち、開発者が必要とする方法で開発者を支援します。解決済みとして戻ってきたとき、私は:

  1. 自動テストケースと手動バージョンを(場合によっては)実行して、修正を確認します。
  2. バグを閉じます。

TL; DR:テスターがいない場合は、いくつか必要です。あなたがいくつか持っている場合、彼らは「彼らの役割を果たしている」わけではありません。


2

トム・デマルコ:

...私の初期のメトリクスブック ...最も引用されている行は、最初の文です:"測定できないものを制御することはできません。" この行には本当の真実が含まれていますが、それを使用することでますます不快になりました。引用(および実際に本のタイトル)に暗示されているのは、コントロールがソフトウェアプロジェクトの重要な側面であり、おそらく最も重要であることです。しかし、そうではありません。

...コントロールに集中すればするほど、比較的価値の低いものを提供するために努力しているプロジェクトに取り組んでいる可能性が高くなります。

私の考えでは、ソフトウェアプロジェクトを制御する方法よりもはるかに重要な質問は、なぜこのような限界的な価値をもたらす多くのプロジェクトを実行しているのかということです。

ソフトウェアエンジニアリング:時が過ぎ去ったアイデア


それは明らかではありませんか?お金を稼ぐために。汚いセクシーなお金。
maple_shaft

1

「その後、その単一のバグ修正のためにブランチを作成します」

単一のバグ修正のためにブランチを作成する必要はありません。まず、bugzillaでバグを作成します。リリースブランチをチェックしてください。修正してください。バグ番号を含むコミットメッセージでコミットを実行します。コミットメッセージに記述されたテキストキーワードに応じて、バグを更新し、「修正、テストが必要」または「修正、テスト、マージが必要」とマークします。バグデータベースは、行われたすべての変更とそれらが行われた理由の完璧な追跡メカニズムです。この情報を抽出するために、バグデータベースからレポートを実行できます。


1

ほとんどのプロセスは自動化できると思うので、バグの作業を開始する前に、仮想マシンとブランチの作成(コードのコンパイル、デバッガーのセットアップなどを含む)がすべて行われました。

何をしたか、どのようにテストすべきかを説明することは、すべてのバグ修正にとって価値があります。テキストを書くだけで問題をキャッチできることがわかったので、リスクなどについて考えるようになります。

そのため、このプロセスは少し「過剰」であると思いますが、本当の問題は、プロセスをサポートするためのカスタム自動化ツールが不足していることです。


0

そうだね、あなたの説明したプロセスは、あなたが説明したことがまったく安っぽいものであり、ソフトウェアでどのように間違っていることができるのかを真に示す点で正しい。しかし、ここに朗報があります。アジャイルを真の精神で実践している企業は非常に多くあります。私が働いている会社はそのような会社です。最近はたくさんありますが、本当に良いニュースです。

職場で物事が本当に正しくないと感じるとき、できることは2つあります。ポジティブな変化に影響を与えるか、その場を離れてより良いものに参加するかです。

CVSまたは構成管理システムは悪くありません。残念ながら、その使用方法は、その目的を実際には知らないため、組織全体の!@#$にこのような痛みをもたらします。

アジャイルとは何かを簡単に理解するには、Venkata Subramaniamの「Practices of an Agile developer」という本を熟読してください。わかりやすい言語でうまく書かれています。

幸運を願っています!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.