Soll ein Programmierer autark sein?


28

An meinem jetzigen Arbeitsplatz haben wir keine Tester, was vom Management so begründet wurde: "Wenn wir Tester hätten, würden Sie Ihren eigenen Code überhaupt nicht testen". Diese Art des Denkens wirkt sich nachteilig auf die Produktqualität aus, da ich zwar meinen eigenen Code teste, aber viele Dinge vermisse, nur weil ich das System in- und auswendig kenne und nicht weiß, wie man es verwendet es "falsch". Black-Box-Tests funktionieren nicht wirklich, da ich unbewusst die Fallstricke vermeide, in die ein engagierter Tester geraten würde. Ein großer Teil meiner Zeit fließt in die Behebung von Fehlern, die vom Endbenutzer im Produktionscode gefunden wurden.

Das fragliche System ist groß, wird aber nur von mir entwickelt. Dies hat auch dazu geführt, dass einige Managementaufgaben auf meinen Schoß fielen, wie das Definieren von Zeitplänen und das Arbeiten an Spezifikationen.

Sollte diese Art von Aufgaben in meiner Verantwortung liegen? Ich sehe mich streng als Programmierer und nichts anderes. Und wenn dies in meiner Verantwortung liegt, in welchem ​​Umfang? Wann ist ein Projekt so groß, dass es Tester benötigt? Sollte ein Programmierer die Spezifikation verfeinern, sich um das Projektmanagement kümmern oder sogar Kundenunterstützung leisten müssen?

Hinweis

Einige haben vielleicht den Eindruck, dass ich gegen eine Ausweitung meiner Zuständigkeiten bin - das ist nicht der Fall, ich bin bestrebt, eine Rolle zu bekommen, die mehr Managementaufgaben beinhaltet, aber derzeit nicht in meiner Stellenbeschreibung. Bis ich offiziell als solcher angestellt bin oder die zusätzlichen Pflichten in meinem Gehaltsscheck erscheinen, werde ich mich als "nur" einen Programmierer betrachten. Leider wird es als Junior-Entwickler nicht sehr bald zu einem Wechsel in die Geschäftsführung kommen.

Ausgezeichnete Antworten bisher, lassen Sie sie kommen, wenn Sie etwas hinzuzufügen oder persönliche Erfahrungen zu teilen haben!


4
Ah, das gute alte "User als Tester" -Szenario. Ich wusste es gut.
Matt Ellen

Es tut mir leid, dass ich Ihnen das sagen muss, aber Ihr Management ist voll von Idioten :(
Dr. Hannibal Lecter

1
Wie groß ist das Unternehmen, für das Sie arbeiten? Wenn sie einen Tester beschäftigen würden, gäbe es genug Arbeit, um sie voll beschäftigt zu halten? Wenn sie einen Projektmanager beschäftigen würden, gäbe es genug Arbeit, um sie voll beschäftigt zu halten? Die Jobs, bei denen ich solche Dinge selbst verwalten musste, waren Unternehmen, die nicht groß genug waren, um einen anderen Mitarbeiter für diese Rollen zu rechtfertigen.
Carson63000

@ Carson6300, zur Zeit haben wir 7 Programmierer, die alle überarbeitet sind und die gleiche Menge an Grafikdesignern. Wir auch tun Projektmanager haben, zumindest in einem gewissen Sinne des Wortes. Wie ich schon sagte, "... verursachte einige Managementaufgaben ..."; Der größte Teil des Managements wird immer noch von einem Projektmanager durchgeführt. Ich denke, wir sind groß genug, um engagierte Tester zu rechtfertigen.
Tatu Ulmanen

Möglicherweise müssen Sie Ihrem Management den folgenden Artikel
anzeigen

Antworten:


19

Sie tun Tester haben. Sie nennen sie nur "Endbenutzer". Dies ist aus allen von Ihnen beschriebenen Gründen nachteilig. Egal wie gewissenhaft Sie als Kodierer sind, Sie werden einfach nie in der Lage sein, Ihre eigenen Vorurteile darüber, wie der Code "verwendet" werden soll, um alle möglichen Fehler zu finden, zu überwinden .

Sie müssen dieses Problem erneut beim Management eröffnen. An diesem Punkt scheint es, als hätten Sie einige harte Daten, um Ihren Fall zu sichern. Der derzeitige Ansatz der praktischen Qualitätssicherung verschwendet sowohl Ihre Zeit als auch die Benutzererfahrung. Sie müssen vorsichtig sein, wie Sie dies präsentieren, damit klar ist, dass es sich um ein strukturelles Problem handelt und nicht um den Fall "Sie saugen nur am Testen", aber es klingt wie eine Diskussion, die stattfinden muss.

Es hört sich so an, als stünden Sie mit diesem Arbeitgeber am Scheideweg. Wenn Sie beabsichtigen, ein Programmierer zu bleiben, und sonst nichts, müssen Sie möglicherweise anfangen, zurückzudrängen und zu fordern, dass sie Ihnen die Hilfe geben, die Sie benötigen, um einige der Verwaltungsaufgaben von Ihrem Teller zu nehmen, entweder indem Sie jemanden neu holen oder indem Sie Erweiterung der Verantwortlichkeiten eines bestehenden Mitarbeiters. ("Dafür haben Sie mich nicht engagiert, und diese Aufgaben gehen nicht verloren. Zeit, in der ich dieses Zeug schlecht mache , verbringe ich nicht mit dem , in dem ich gut bin.") Aber das kann oder kann nicht realistisch sein. Glauben Sie, Sie könnten eine Führungsrolle übernehmen, wenn Sie die Ressourcen und Befugnisse erhalten, die Sie benötigen, um die Arbeit richtig zu erledigen?

Wie groß ein Projekt sein muss, bevor es Tester braucht, weiß ich nicht genau, wie ich diese Linie definieren soll, aber ich denke auf jeden Fall, dass Sie sie überschritten haben. Sie verbringen mehr Zeit damit, Fehlerberichte von tatsächlichen Benutzern zu beheben, als Sie möchten. Für mich ist es an der Zeit, mehr Anstrengungen zu unternehmen, um zu verhindern, dass die Bugs überhaupt zu den Nutzern gelangen.


Hervorzuheben ist, dass ich an so vielen Orten gearbeitet habe, an denen der Chef dachte, der Entwickler müsse die Software testen, und nicht an einem, an dem man gut arbeiten kann. Wenn das Unternehmen keine Tester hat, versteht er einfach nicht die Grundlagen der Softwareentwicklung oder ist ein billiger Bastard , so oder so sollten Sie einen anderen Job finden
Jonathan

13

Ja. Wenn Sie müssen , sollten Sie in der Lage sein, Ihren Code zu testen. (Ich spreche nicht von Unit Tests, sondern von Abnahmetests und dergleichen.)

Nein . Tester können besser testen als Sie. Und wie Sie bereits betont haben, ist es sehr schwer, Ihre eigenen Fehler zu erkennen, genau wie beim Korrekturlesen. Zusätzliche Augäpfel haben einen großen (guten) Einfluss auf Ihre Programmqualität.

Sie haben viele andere Fragen. Ich werde nur eine Antwort geben:

Sollte ein Programmierer die Spezifikation verfeinern müssen?

Ja! Sie müssen die Spezifikation implementieren, damit sichergestellt ist, dass die Spezifikation tatsächlich implementierbar ist. Außerdem können Sie als Programmierer - geschult in klarem Denken, Präzision und Ähnlichem - Menschen dabei helfen, herauszufinden, was tatsächlich getan werden muss, und unklare oder logisch fehlerhafte Anforderungen beseitigen.


5

Was sie sagen und Realität sind wahrscheinlich zwei verschiedene Dinge. Höchstwahrscheinlich lautet die Begründung:
"Warum muss ich ein Testergehalt bezahlen, wenn ich den Programmierer nur dazu bringen kann, doppelte Pflicht zu tun?"

Natürlich werden sie das nicht sagen und alle möglichen Ausreden finden, die sie für vernünftig halten. Ich kann mir mehrere Widerlegungen vorstellen, aber ehrlich gesagt werden sie nicht helfen. Ich habe diesen Kampf immer wieder gesehen und sie werden ihre Herangehensweise immer dann ändern, wenn Sie ihre derzeitige Argumentation entlarven. Irgendwann geben sie auf und weisen Sie einfach an, es trotzdem zu tun, und Sie werden als Beschwerdeführer bezeichnet.

Der beste Ansatz, den ich mir vorstellen kann, besteht darin, ihn nicht unter dem Gesichtspunkt der Qualität anzugehen, den das Management zu schätzen scheint, bis es Probleme gibt, sondern unter dem Gesichtspunkt der Kosten. Tester sind oder werden zumindest als billiger als Programmierer angesehen. Erinnern Sie sie daran, dass sie durch Ihre doppelte Pflicht eine höher bezahlte Ressource (Programmierer) bezahlen, um die Arbeit zu erledigen, die von einer kostengünstigeren Ressource (Tester) ausgeführt werden könnte. Daher maximieren sie nicht den Wert, den sie aus Ihrer Programmierkenntnis ziehen.

Dieser Ansatz hat den Nachteil, dass Sie auseinanderfallen, wenn Sie als Angestellter arbeiten, und sie können Sie nicht dazu bringen, mehr unbezahlte Überstunden zu machen, aber es ist einen Versuch wert.


Wenn Sie bezahlt werden und sie keine Entschädigung dafür haben, dass Sie mehr unbezahlte Überstunden machen, ist es Zeit zu kündigen.
Glenatron

Gott sei Dank, dass obligatorische unbezahlte Überstunden nicht überall gesetzlich geregelt sind.
Steven Evers

3

Das fragliche System ist groß, wird aber nur von mir entwickelt. Dies hat auch dazu geführt, dass einige Managementaufgaben auf meinen Schoß fielen, wie das Definieren von Zeitplänen und das Arbeiten an Spezifikationen.

Meinetwegen.

Sollte diese Art von Aufgaben in meiner Verantwortung liegen?

Die Entscheidung liegt letztendlich bei Ihrem Management.

Ich sehe mich streng als Programmierer und nichts anderes.

Vielleicht hast du dann den falschen Job. Vielen Menschen gefällt es, die zusätzliche Verantwortung zu übernehmen.

Und wenn dies in meiner Verantwortung liegt, in welchem ​​Umfang?

Wenn das Management das sagt, ja.

Wann ist ein Projekt so groß, dass es Tester benötigt?

Wenn es zu viel andere Arbeit gibt, die die Entwickler erledigen müssen. An diesem Punkt muss das Management entscheiden, ob es einen dedizierten Tester einsetzen möchte oder das Risiko eingeht, beim Testen zu sparen. (Letztendlich können Entwickler nur so viel tun.)

Es hat definitiv Vorteile, engagierte Tester zu haben, aber es gibt auch Nachteile ... zusätzlich zu den Kosten für die Einstellung von zusätzlichem Personal.

Sollte ein Programmierer die Spezifikation verfeinern müssen,

Wenn nötig ja Wenn die Spezifikation überarbeitet werden muss und niemand anderes daran arbeitet, schlägt das Projekt wahrscheinlich fehl, wenn dies nicht getan wird.

Sorgen um die Verwaltung des Projekts

Wenn nötig ja

oder sogar Kundenbetreuung leisten?

Wenn nötig ja

Es klingt für mich, als ob Sie überarbeitet sind und auf den Druck reagieren. Das ist ein Problem. Aber die Position einzunehmen, dass es nicht Ihre Aufgabe ist, X, Y, Z zu tun, wird nicht helfen. Ein besserer Plan ist es, klar zu machen, dass Sie nur so viel tun können, und darauf hinzuweisen, dass dies wahrscheinlich dazu führt, dass Fristen versäumt werden, die Qualität sinkt, die Kundenbetreuung schlecht ist und so weiter. Aber tun Sie trotzdem Ihr Bestes, ohne dabei Ihre Gesundheit, Beziehungen usw. zu schädigen.


Es geht nicht nur um das Management, sondern auch um seine Einstellung und angemessene Vergütung. Wenn das OP mit seiner Verantwortung im Vergleich zur Entschädigung unzufrieden ist, ist es völlig vernünftig zu versuchen, eine Basislinie zu ermitteln, deren Erwartungen der Realität näher kommen.
Jmoreno

3

Wir haben Tester. Ich würde nicht ohne sie arbeiten wollen. Obwohl ich Unit-Tests (mit TDD) und automatische Integrationstests für meinen gesamten Code schreibe, haben Tester immer noch eine sehr wertvolle Funktion.

  1. Sie sind hochqualifiziert und haben andere Fähigkeiten als Programmierer.
    1. Sie verfügen über umfangreiche Erfahrungen und Kenntnisse in der Durchführung von QS-Tests und in der Überprüfung, ob der erstellte Code sowohl den Erwartungen des Benutzers als auch dem tatsächlichen Verhalten der Benutzer entspricht.
    2. Sie haben viele Fehler erlebt und können sehr gut an Situationen denken, die die Software beschädigen könnten.
    3. Sie neigen dazu, zynisch und systematisch zu sein. Ich habe beobachtet, dass Programmierer oft viel optimistischer sind.
  2. Sie liefern wertvolle frühzeitige Rückmeldungen zur Benutzerfreundlichkeit. Beispielsweise waren beim Erstellen einer REST-API in letzter Zeit Bereiche, die die QA-Tester nicht leicht verstehen konnten, ein guter Hinweis auf Bereiche, mit denen der Benutzer auch unzufrieden wäre.
  3. Sie testen die tatsächliche Umgebung, in der Tat viele Konfigurationen der realen Hardware, des Betriebssystems usw.
  4. Sie wissen, wie man große realistische Prüfstände baut und Leistungstests sowie Last- und Stresstests durchführt
  5. Sie konzentrieren sich darauf, zu verhindern, dass schlechte Veröffentlichungen herauskommen. Programmierer konzentrieren sich in der Regel darauf, den Code zu veröffentlichen. Es ist fast so, als würde ein Programmierer den Code standardmäßig freigeben, aber ein QA-Tester benötigt einen Grund, um ihn freizugeben (es hat sich gezeigt, dass er funktioniert!).

0

"Wenn wir Tester hätten, würden Sie Ihren eigenen Code überhaupt nicht testen."

" Wenn Ihr Auto einen Sicherheitsgurt hätte, würden Sie es die ganze Zeit zerschmettern! "

Sollte diese Art von Aufgaben in meiner Verantwortung liegen? [...] Und wenn dies in meiner Verantwortung liegt, in welchem ​​Umfang?

Die Antwort darauf lautet "es kommt darauf an". Soweit ich weiß, sehen Ihre Arbeitgeber Sie als "Ein-Mann-IT-Abteilung". Wenn dies der Fall ist, sind sie (in Ihrer Verantwortung). Wenn Sie Aufgaben haben, die Sie absolut hassen und vermeiden möchten, suchen Sie eine Stelle in einem Unternehmen mit einer größeren IT-Abteilung.

Wann ist ein Projekt so groß, dass es Tester benötigt?

Das ist keine (ganz) richtige Frage. Sie sollten besser fragen: "Wann ist die Qualität des Produkts / das Image des Unternehmens so wichtig, dass Tester erforderlich sind?"

Sollte ein Programmierer die Spezifikation verfeinern müssen, [...]

Ja definitiv. In den meisten Fällen besteht eine große Diskrepanz zwischen dem, was ein Entwickler / Implementierer benötigt, und dem, was die Clients [als Spezifikationen] bereitstellen.

Oftmals liegt es an Ihnen, graue / nicht spezifizierte Bereiche zu finden und die richtigen Fragen zu stellen, technisch unmögliche oder widersprüchliche Anforderungen zu bemerken und darauf hinzuweisen usw. (insbesondere, wenn Sie der einzige Entwickler sind).

[...] Sorgen Sie sich um das Projektmanagement oder bieten Sie sogar Kundensupport an?

Dies hängt von der Verantwortung ab, die Sie bei der Übernahme der Position übernommen haben. Bei einigen Positionen müssen Sie beispielsweise Kunden direkt ansprechen. Wenn alle anderen Dinge gleich sind, würde ich versuchen, solche Positionen zu vermeiden (aber es liegt an Ihnen, und Sie haben möglicherweise nicht viele Berufswahlen).


0

Beim Testen oder besser gesagt bei der Qualitätssicherung geht es nicht nur darum, die Funktionalität durch Klicken durch die Anwendung zu testen. Bei der Qualitätssicherung geht es um Prozesse . Sie müssen nicht nur die Anwendung testen, um die Fehler zu finden, sondern auch Entwickler daran hindern, diese zu beheben.

  1. Produktspezifikation + Anwendungsfälle
    Auch wenn jeder weiß (oder glaubt, dass er es tut), was die Produktfunktionalität ist, muss dies notiert werden. Sie können eine Anwendung nicht ohne eine klare Spezifikation testen. Eine Spezifikation definiert, was korrektes Verhalten und was ein Fehler ist.
  2. Unit-Tests, Integrationstests
    Tests der Interna, die über die Benutzeroberfläche nur schwer zu testen sind, außergewöhnliche Anwendungszustände. Dies ist ein Muss für jedes größere System. Beide Arten von Tests haben eine weitere interessante Eigenschaft: Sie zwingen Sie, jeden Teil des Codes erneut durchzugehen, und Sie werden Fehler / Architekturprobleme feststellen, die Sie noch nie gesehen haben.
  3. Codequalität und Codierungsstandards
    Eine der Aufgaben, die die Qualitätssicherung erfüllen sollte, ist die Messung der Codekomplexität. Code mit geringer Komplexität verringert die Möglichkeit von Fehlern (Verhinderung von Fehlern).
  4. Codeüberprüfungen
    Wenn ein Projekt eine bestimmte Größe erreicht oder von vielen Benutzern verwendet wird, sind Codeüberprüfungen ein Muss. Ein anderer Programmierer findet immer Code-Probleme / Fehler, die Sie übersehen hatten. Programmierer sind manchmal blind für offensichtliche Fehler in ihrem eigenen Code.
  5. Dokumentation
    Dokumentieren Sie Ihren Code und seine Architektur, damit Sie mögliche Fehler erkennen können (meine eigene Erfahrung).
  6. Tester
    Tester ist kein Affe, der nur durch die Benutzeroberfläche klickt. Ein Tester übernimmt die Spezifikation und die Anwendungsfälle und erstellt Testfälle. Dann testet er sie einzeln. Wenn ein Fehler von Endbenutzern gemeldet wird, muss ein Testfall hinzugefügt werden.

Ein Programmierer sollte niemals die Spezifikation (1) erstellen. Sie sind nicht da, um die Funktionalität zu bestimmen. Normalerweise müssen sie mit den Endbenutzern sprechen, Grafikdesigns erstellen usw. Es ist eine zeitaufwändige Aufgabe. Wenn ein Programmierer die Funktionalität entscheidet, endet dies normalerweise mit "Es ist in Ordnung, aber können Sie bis morgen alles in diesem Fenster ändern?" "das ist nicht was ich wollte" "es funktioniert, aber es ist schwer zu benutzen" "es fehlt die einzige Funktionalität, die wir wirklich brauchten".

Was ein Programmierer erreichen kann, ist 2, 3 und 5.

Sie benötigen einen anderen Programmierer für 4. Jedes Unternehmen mit einem großen IT-Projekt und nur einem Entwickler, der das System kennt, betritt einen sehr gefährlichen Bereich.

Wenn Sie nicht genug Zeit haben, sollten Sie sich nie die Mühe machen, Testfälle zu erstellen (5). Eine engagierte Person wird normalerweise benötigt, da dies viel Zeit in Anspruch nimmt. Ohne Testfälle ist Testen nur ein Scherz.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.