web-dev-qa-db-ja.com

プログラマは自給自足しているはずですか?

私の現在の職場では、テスターはいません。その理由は、「テスターがいたら、自分のコードをまったくテストしない」ということです。自分のコードをテストしている間、システムを完全に知っており、使用方法がわからないために見逃してしまうことがたくさんあるので、このような考え方は製品の品​​質に悪影響を及ぼしているようです。それは「間違っている」。専用のテスターが陥る落とし穴を無意識のうちに回避しているため、ブラックボックステストは実際には機能しません。私の時間の多くは、量産コードに組み込まれ、エンドユーザーが見つけたバグの修正に費やされています。

問題のシステムは大きいですが、私だけが開発しています。これにより、スケジュールの定義や仕様の作成など、一部の管理作業が私の膝にかかることにもなりました。

この種の仕事は私の責任でしょうか?私は厳密にはプログラマーであり、他の何者でもない。そして、これらが私の責任であれば、どの程度ですか。プロジェクトが大きすぎてテスターが必要になるのはいつですか?プログラマーは仕様を改良する必要があるのか​​、プロジェクトの管理について心配する必要があるのか​​、あるいは顧客サポートを提供する必要があるのか​​?

注意

責任の拡大に反対の印象を持っている人もいるかもしれません。それは事実ではありません。より多くの管理職を含む役割を取得したいと思っていますが、現在のところ、それは私の職務内容には含まれていません。私がそのように正式に雇用されるか、給与に追加の義務が現れるまで、私は自分を「単なる」プログラマーだと考えます。残念ながら、ジュニア開発者として、管理職へのシフトはすぐには起こりません。

これまでのところ素晴らしい答えです。何か追加したいことや共有する個人的な経験がある場合は、ぜひお寄せください。

28
Tatu Ulmanen

君は 行う テスターがいます。ただ、それらを「エンドユーザー」と呼びます。これは、あなたが説明するすべての理由で有害です。コーダーがどれほど良心的であっても、コードがどのように「想定」されているかについてのあなた自身の先入観を克服して、それが失敗する可能性のあるすべての方法を見つけるために十分な仕事をすることは決してできません。 。

この問題を管理者に再度報告する必要があります。この時点で、ケースを裏付けるハードデータがあるようです。品質保証に対する現在のハンズオフアプローチは両方ともあなたの時間を浪費します そして ユーザーのエクスペリエンスを危険にさらします。これをどのように提示するかには注意が必要です。これにより、これが構造的な問題であることが明確になり ない 「あなたはただテストをしているだけ」のケースですが、それは起こる必要がある議論のように思えます。

この雇用主との交差点に来ているようです。プログラマーであり続けることに専念している場合、プッシュバックを開始し、誰かを新しい人にするか、または他の方法で管理タスクの一部を取り除くために必要な支援を得ることを要求する必要があるかもしれません。既存の同僚の責任を拡大する。 (「これはあなたが私を雇ったものではありません、そしてこれらのタスクは消えません。私がこれをひどく費やすのに費やす時間は私がいる時間です ない 私が得意なことに費やします。」)しかし、それは現実的かもしれませんし、そうでないかもしれません。仕事を遂行するために必要なリソースと権限を与えられれば、より管理的な役割への移行を処理できると思いますか。正しい?

テスターが必要になる前にプロジェクトがどれほど大きくなければならないかについては、その行を正確に定義する方法がわかりませんが、間違いなくそれを超えていると思います。実際のユーザーから届くバグレポートを修正するよりも多くの時間を費やしています。私にとって、そもそもバグがユーザーに到達するのを阻止するためにより多くの努力を払う時がきたと言います。

19
BlairHippo

はい。もしあなたがhaveするなら、あなたはあなたのコードをテストすることができるはずです。 (私は単体テストではなく、受け入れテストなどを話している。)

いいえ。テスターはあなたよりもテストが得意です。そして、あなたが指摘するように、校正のように、自分の間違いを見つけるのは非常に困難です。目玉を追加すると、プログラムの品質に大きな(良い)影響を与えます。

他にもたくさん質問があります。 1つだけお答えします。

プログラマーが仕様を調整する必要がありますか?

はい!仕様を実装する必要があるため、仕様が実際に実装可能であることを確認する必要があります。また、プログラマーとして-明確な思考、精度などの訓練を受けた-あなたは人々が実際に何をする必要があるかを発見し、曖昧なまたは論理的に欠陥のある要件を取り除くのを助けることができます。

13
Frank Shearar

彼らが言っていることと現実はおそらく2つの異なるものです。おそらくその理由は次のとおりです。
「プログラマーに二重の義務を課させることができるのに、なぜテスターの給与を支払わなければならないのですか?」

もちろん、彼らはそれを言うつもりはなく、合理的であると考えるあらゆる種類の言い訳を構成します。私は彼らの要点に応じていくつかの反論を考えることができますが、正直に言って彼らは助けにはなりません。私はこの戦いを何度も見てきましたが、彼らは現在の推論を暴くたびに彼らのアプローチを変えるでしょう。結局、彼らはあきらめて、とにかくそれをするようにあなたに指示し、あなたは不平を言う人として分類されます。

私が考えることができる最良のアプローチは、問題が発生するまで経営陣が評価することのない品質の観点からではなく、コストの観点から取り組むことです。テスターは、プログラマーよりも安価です。あなたに二重の義務を果たすことによって、彼らはより高価なリソース(プログラマー)に支払って、より安価なリソース(テスター)で達成できる作業を行うことを彼らに思い出させます。したがって、彼らはあなたのプログラミングスキルから抽出している価値を最大化していません。

このアプローチには、給与を得ている場合にバラバラになってしまうというマイナス面があり、無給の残業を増やすだけの責任はありませんが、一見の価値はあります。

5
JohnFx

テスターがいます。私は彼らなしでは働きたくありません。私は(TDDを使用して)単体テスト、およびすべてのコードの自動統合テストを作成していますが、テスターに​​は非常に貴重な機能があります。

  1. 彼らは非常に熟練しており、プログラマーとは異なるスキルを持っています。
    1. 彼らは、QAテストを行う方法、および生成されたコードがユーザーの期待とユーザーの実際の動作の両方に本当に一致することを確認する方法について、多くの経験と知識を持っています。
    2. 彼らは多くのバグを経験しており、ソフトウェアを破壊する可能性のある状況を非常によく考えています。
    3. 彼らはシニカルで体系的である傾向があります。多くの場合、プログラマーの方がはるかに楽観的です。
  2. それらは、ユーザビリティに関する貴重な初期フィードバックを提供します。たとえば、最近REST APIを作成する場合、QAテスターが簡単に理解できない領域は、ユーザーが不満を抱くであろう領域の良い指標でした。
  3. 実際の環境、実際のハードウェア、OSなどの多くの構成でテストします。
  4. 大規模で現実的なテストベッドを構築し、パフォーマンス、負荷、ストレステストを行う方法を知っている
  5. 彼らは悪いリリースが出ることを防ぐことに焦点を当てています。プログラマーは、コードをリリースすることに集中する傾向があります。プログラマーがコードをデフォルトでリリースするのとほぼ同じですが、QAテスターはコードをリリースする理由が必要になります(動作することが示されています!)
3
flamingpenguin

問題のシステムは大きいですが、私だけが開発しています。これにより、スケジュールの定義や仕様の作成など、一部の管理職が私の膝にかかることにもなりました。

けっこうだ。

この種の仕事は私の責任でしょうか?

それは最終的にあなたの管理次第です。

私は厳密にはプログラマーであり、他の何者でもない。

おそらくあなたは間違った仕事をしているでしょう。多くの人が特別な責任を与えられることを好みます。

そして、これらが私の責任であれば、どの程度ですか。

経営者がそう言うなら、そうです。

プロジェクトが大きすぎてテスターが必要になるのはいつですか?

開発者がしなければならない他の作業が多すぎる場合。その時点で、経営者は、専用のテスターを採用するか、またはテストで失敗するリスクを取るかを決定する必要があります。 (結局のところ、開発者ができることはそれだけです。)

専用のテスターを配置することには明確な利点がありますが、余分なスタッフを雇うコストに加えて、欠点もあります。

プログラマーが仕様を調整する必要がある場合、

必要に応じて、はい。実際、仕様に改良が必要で、他に誰も作業していない場合、これを実行できないと、プロジェクトが失敗する可能性があります。

プロジェクトの管理について心配する

必要に応じて、はい。

またはカスタマーサポートを提供しますか?

必要に応じて、はい。

働きすぎでプレッシャーに反応しているように聞こえます。これは問題です。しかし、「X、Y、Zを行うのはあなたの仕事ではない」という立場をとっても、役に立たないでしょう。より良い計画は、できることは限られていることを明確にし、これが期限の遅れ、品質の低下、カスタマーサポートの低下などを引き起こす可能性があることを指摘することです。しかし、とにかく最善を尽くしてください...その過程であなたの健康、人間関係などを損なうことなく。

3
Stephen C

「テスターがいたとしても、独自のコードをテストすることはありません」

"車にシートベルトが付いていると、常にクラッシュします!"

この種の仕事は私の責任でしょうか? [...]そして、これらが私の責任であれば、どの程度ですか?

それへの答えは「それは依存する」です。私の理解から、雇用主はあなたを「IT部門」と見なしています。そうであれば、はい、そうです(あなたの責任です)。絶対に嫌いで避けたい責任がある場合は、より大きなIT部門を持つ企業内のポジションを探します。

プロジェクトが大きすぎてテスターが必要になるのはいつですか?

これは(かなり)正しい質問ではありません。 「会社の製品/イメージの品質がテスターを必要とするほど重要なのはいつですか?」

プログラマーが仕様を改良する必要がある場合、[...]

はい、間違いなく。ほとんどの場合、開発者/実装者が必要とするものとクライアントが[仕様として]提供するものとの間には大きな不一致があります。

多くの場合、グレー/不特定の領域を見つけて適切な質問をし、技術的に不可能または矛盾する要件などに気づいて指摘する(特に、開発者が唯一の場合)。

[...]プロジェクトの管理について心配しますか、それとも顧客サポートを提供しますか?

それは、あなたがその地位に就いたときにあなたが受け入れた責任に依存します。たとえば、一部の役職では、顧客に直接対応する必要があります。他のすべての条件が同じであれば、私はそのような立場を避けようとします(しかし、それはあなた次第であり、あなたには多くの仕事の選択肢がないかもしれません)。

0
utnapistim