どうして何もできないの?


9

私は中規模の会社の小さなチームで働いています。そのほとんどはソフトウェア開発に関与していません。私は最新かつ最も経験の浅い開発者であり、開始する前にソフトウェアの専門的または学問的なバックグラウンドを持っていませんでしたが、私の入力がどれほど尊重されたかに非常に満足しており、私のキャリアの早い段階で真剣に受け止められたことに感謝しています。

それでも、私はこの寛大な量の放送時間でもっと多くのことをすべきだと感じています。チームとして、物事を成し遂げるのに苦労しているようです。状況を改善するために何か提案できるようになりたいと思います。それが良いアイデアだったら聞いてもらえると思いますが、何を提案すべきか途方に暮れています。

問題として特定できるものは次のとおりです。

  • 手元のタスクの仕様はまばらです。これは、管理がボトルネックであり、私たちが望むほど詳細な要件を解決するために費やすお金や人がいないためです。また、開発中のソフトウェアは調査対象であり、その有効性を判断するために実証および使用されるまで正確な方法が明確ではないためです。
  • Lead Devは、彼が最近すべてを「プロトタイピング」していると主張し始めたところまで彼が「プロトタイピング」と呼んでいるものを非常に気に入っています。多くの場合、彼がこの演習から何を期待しているのかは明確ではありません。「実際の」実装は、プロトタイピングに時間がかかりすぎるという彼の主張のために、苦しみます。私はこのねじれた論理を解くことができるようになり始めていないので、試してみたいと思いませんか。
  • モデラーは望ましい方法論についてすべてを正確に詳細に教えてくれることが期待されており、彼らが生み出すものは理論的に完璧であるという絶対的な信頼に基づいています。これはほとんど真実ではありませんが、この状況を修正するためのアクションは取られません。モデリングの側の誰も、行動を起こそうな構造化された方法で懸念を提起したり、ベストプラクティスを適用する際のガイダンスを求めたりすることはありません。彼らの受動性についても何も行われません。
  • 私は以前にチームでTDDをプッシュしようとしましたが、それは私にとって新しいものであり、私の仕事を監督している人はそれを許容する用意がある一方で難しいと感じましたが、他の誰からも熱意はありませんでした。機能を詰め込んで仕上げるのではなく費やす時間を正当化することはできないため、このアイデアは(現時点では)放棄されています。私はそれが再び取り上げられないのではないかと心配しています。
  • 現在、継続的インテグレーションサーバーがありますが、ほとんどの場合、数時間の回帰テストを実行するためにのみ使用されています。フルカバレッジの単体テストと統合テストも実行する必要があることはオープンなままですが、現時点では誰も作成していません。
  • リード開発者と一緒に品質の問題を提起するたびに、「機能Aのテストは簡単です。機能Bはユーザーにとって非常に重要ですが、テストが難しいため、機能をテストするべきではありません。 A '。もう一度、私はこの論理を解き明かそうとして進んでいません。

....ふw。そんなふうに言うと、思っていたよりもずっと悪く見えます。結局のところ、これは助けを求める叫びだと思います。


5
顧客が使用し、好きなソフトウェアを押し出すのに、会社はどの程度優れていますか?つまり、プロセスが優れているとは思わないにもかかわらず、チームは良い結果を得ていますか?
Robert Harvey

@Robert Harvey-私が判断するのは難しいです。製品は非常にニッチであり、私たち(開発者)はさまざまなメッセージを受け取ります。一方で、画期的な市場の新しい顧客は、当初想定していた以上に製品を押しつぶし、その結果として欠陥を発見しています。一方で、一部の大手機関投資家は不信感を抱いており、モデルの修正を繰り返し行っているとの批判が出始めています。ソフトウェアチームは現在、社内でも数少ないブレークの1つであるため、現時点では見栄えが良いです。
トムW

1
基本的な作業「モデル」に同意する方法について顧客からできるだけ多くのフィードバックを求め、それを少し固めます。実際にモデルを変更することは顧客にとって苛立たしいことですが、これが新しい最先端のソフトウェアである場合、それはその領域に適合します。
Robert Harvey

良い質問。受容的な聴衆がいても、実際に機能しているのを見ることができない限り、本当の変化は難しいことに気づきました。私のアドバイスは、最初にあなたの生産性を高めるためのアプローチを試し、それからチームのためにこれらを実証することです。練習することで、書き込み/デバッグ/繰り返しよりもTDD開発の方が速くなります。
Mike B

回答:


19

ちょっと悪魔の擁護者を演じましょう:

手元のタスクの仕様はまばらです...リード開発者は、彼が「プロトタイピング」と呼んでいるものをとても気に入っています

仕様がまばらであるので、リード開発者はプロトタイピングが好きです。これはおそらく良いことです。これが反復的なショップの仕組みです。

モデラーは、望ましい方法論についてすべてを正確に私たちに伝えることが期待されています

これは、反復的なショップでは機能しません。反復的な開発の本質は、要件がしばしば不完全であることです。反復は、要件を具体化するために必要なものです。

私は以前にチームでTDDをプッシュしようとしましたが、それは私にとって初めてなので難しいと感じました

これも機能しません。伝道する前に、テクノロジーを理解する必要があります。さらに、要件が不十分な反復的なショップでは、TDDのオーバーヘッドが大きすぎる可能性があります。適切な単体テストカバレッジを推奨することをお勧めします。

現在、継続的インテグレーションサーバーがありますが、ほとんどの場合、数時間の回帰テストを実行するためにのみ使用されています。

これは、小さな反復的なショップでは適切な場合があります。

リード開発者と一緒に品質の問題を提起するたびに、「機能Aのテストは簡単です。機能Bはユーザーにとって非常に重要ですが、テストが難しいため、機能をテストするべきではありません。 A '

ショップにはかなり厳しい時間制限があるようです。好むと好まざるとにかかわらず、これらの制約に拘束されます。

また、最初に物事を市場に出すことよりも「正しい方法」で物事を行うことを重視するソフトウェア業界の出身者のようにも聞こえます。バグのあるソフトウェアで最初に市場に出た人が勝者となることが多いことを除いて、これには何の問題もありません(実際には立派です)。それは公平ではありませんが、それはそうです。


「技術的負債」の観点からアプローチする必要があると思います。すべての会社が時間の見積もりを行います。あなたがすでにかなり良いと仮定して、リファクタリングとトレーニングのためのあなたの時間見積もりに10%から20%の余剰を構築し始めて、それを固執させてください。
Robert Harvey

続ける; 反復的な開発はゲームの名前であり、あなたはその権利を持っています。問題は、コード化したものが本当に正しいかどうかについてモデラーから漠然とした寛容さを得るので、反復が実際に完了する前に繰り返しが徐々に進行することです。誰もエラーを特定できないため、私たちが行ったものを出荷します。6ヶ月後、それは間違っていることが判明しました。私は思います好きモデラーはに対してテストをより強固な基準を与えられる必要があることを指摘することができるように、しかし、その後、再び、それはない彼らのように言って仕事?
トムW

2
@トム:モデラーからのテスト可能な仕様を主張しない限り、彼らはいつでもチームに間違いがあることを伝えることができます。彼らがモデルから結果を生成する責任を負う場合は、成功を宣言できるように、テスト可能な仕様提供する責任を負わなければなりません。すべての仕様には何らかの「ゴー、ノーゴー」テストが組み込まれている必要があります。これにより、ユーザーと顧客(またはモデラー)は、テストの解釈に影響されることなく、テストに合格したことに相互に同意できます。
Robert Harvey

正解です。残念ながら、あなたは私がしたくないことを認めるように私に義務づけているかもしれません-私たちは能力が不足していることを。それは一般的に明らかですが、特にモデラーで顕著です。確かな仕様を主張する側面もありますが、それでもまだ間違っています。彼らは科学者であり、経験から言えば、科学者はコードを実験のように扱う傾向があります。ビジネスにとってこれは単に十分ではなく、これを認めることが期待されるのはプロ意識の問題です。
トムW

コードを実験のように扱うことには何の問題もありません。これは反復プロセスの一部です。しかし、最終的には「このコードはこれらの入力を受け入れ、この出力を生成することが期待されています」に到達する必要があります。それがユニットテストの目的です。それらは仕様の一部を形成します。TDDを実行する理由がわかります。それは仕様をコードに強制します...しかし、それを機能させるには企業文化のサポートが必要であり、TDDはそれについて「宗教」の空気を持っています。すべてがこの方法でテストできるわけではないので、結局、ある程度の不快感を持って生活する必要があるかもしれません。
Robert Harvey

2

ここでプロトタイピングに焦点を当てます

プロトタイプの主な問題は、プロトタイプが概念実証であることです。

ただし、プロトタイプをさらに構築することができず、最終製品をゼロから再構築する必要がある場合は、プロトタイプを構築しておらず、構築に時間を浪費している可能性があります。

あなたのチームへの私のアドバイスは、これらのプロトタイプにある程度の品質と柔軟性を持たせることです。完璧なものを最初に作成することは不可能ですが、将来の要件に合わせて拡張性を維持するようにしてください


それは私がしばらくの間コミュニケーションしようとしてきたものです。たまたま、プロトタイプは貴重であることが多く、問題の本質に関する重要な教訓を教えてくれます。ただし、それらの教訓が学ばれるかどうかは偶然に任されており、実装の品質は、プロトタイプを使用して仕様を作成するのではなく、開発者が得た知識を脳から再構成することに依存しています。リード開発者は、後者が発生するはずであると述べ、それが発生することを確認するためにフォロースルーしません。
トムW

彼がプロトタイプを望んでいると言ったとき、彼が意味することは、彼は最小限の実用バージョンを望んでおり、可能な限り高速です。これが最終版の基礎となります。このアプローチの問題は、ジュニア開発者が(一般的に)優れたコードを書くことができるか、コードを速く書くことができるが、両方を同時に行えることはまれであるということです。
Kevin

2
フレッド・ブルックスは「捨てる人を書いてください、とにかくあなたはそうします」と言った、それは今日それが40年前と同じくらい本当です。
mattnz

1

これらは良い答えです。「コミュニケーションしようとする」ことはせいぜい不確かな命題であると付け加えることができるだけです。組織の仕組みの変化はすぐには起こりません。それが起こるとき、それは潮のようであり、勢いは下からそして上から構築されます。ですから、期待を低く抑え、物事がどのように行われるかを話すチャンスを待つか、別の組織との協力を楽しみにしておくと、より幸せになります。


1

もしそうなら、それを「手に入れる」会社の誰かを特定しましたか?そうでない場合は、時間をかけて、自分で学習と成長を始め(オープンソースプロジェクトに参加するか、独自のプロジェクトを開始して)、成長を促進できる場所を探します。

起こり得る最悪のことは、あなたがそこに留まり、間違った方法で物事を行う方法を学ぶことです。はい、実用性を取り入れるべきですが、真に熟練したチームは正しい方法で物事を行うことができ、それでも高品質の製品に遅れることはありません。現在のチームには必要な能力がないため、新しいチームを探す必要があります。


「あなたは会社で「それを手に入れる」人を特定しましたか」笑
ケンゾー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.