Sind das Anzeichen für einen schlechten Entwickler? [geschlossen]


36

Früher habe ich die sich ändernden Spezifikationen von Kunden für Code Rot verantwortlich gemacht, ohne zu bemerken, dass sich Geschäftsmodelle ändern, und es ist meine Aufgabe, mich anpassungsfähig zu entwickeln. Ich sehe das jetzt als Zeichen eines schlechten Entwicklers (ich habe mich verändert!).

Aber jetzt sehe ich andere "Peitschen" in mir. Vor kurzem habe ich ein paar Mal gesagt: "Es ist, als würde man versuchen, einen Vierkantstift in ein rundes Loch zu stecken."

Gibt es Anzeichen, auf die ich achten sollte, um meine Einstellung zu ändern? Hat der Kunde immer Recht, oder kann ich manchmal frustriert sein?


20
Ein guter Anfang ist die Selbsteinschätzung, genau das, was Sie tun.
Chris

2
DER KUNDE hat immer recht. Selbst wenn DER KUNDE behauptet, der Himmel sei grün, ist es Ihre Aufgabe, die Naturgesetze im Alleingang (oder für erfahrene Menschen mit einem Finger) zu biegen. Wie können Sie Ihre Existenz rechtfertigen, wenn Sie den KUNDEN nicht zufrieden stellen ?
ThomasX

26
Ich habe einmal für ein Unternehmen gearbeitet, dessen CEO gelegentlich zu Problemkunden ging und ihnen sagte: "Der Kunde hat immer Recht und Sie liegen falsch, deshalb sind Sie offensichtlich nicht unser Kunde." (Und ja, er gab auch ihr Geld zurück.)
Dave Sherohman

4
@ThomasX: Stimmt der Kunde immer? Ich habe festgestellt, dass es oft eine Lücke zwischen den Wünschen des Kunden und den Wünschen des Kunden gibt. Dem Kunden sind möglicherweise keine besseren, angemesseneren Lösungen bekannt.
Skizz

3
Dieselben Argumente können je nach Kontext sowohl gültig als auch ungültig sein. Zum Beispiel ändern sich Anforderungen - aber manchmal ändern sie sich völlig außer Kontrolle. Es ist Teil Ihrer Aufgabe, mit Veränderungen umzugehen, aber nur in angemessenen Grenzen. Sie sollten mögliche Änderungen vorwegnehmen, aber es ist nicht zu erwarten, dass Sie über psychische Kräfte verfügen ...
Steve314

Antworten:


55

Ich würde nicht sagen, dass Sie ein schlechter Entwickler sind. Sich der Probleme bewusst zu sein, bewegt Sie bereits über diese Definition hinaus.

Anforderungen ändern sich. Das ist selbstverständlich. Ein guter Entwickler muss dies berücksichtigen. Viele moderne Programmiertechniken helfen dabei.

Die Einhaltung der ursprünglichen Spezifikation ist nicht realistisch. Ebenfalls nicht realistisch ist die ständige Veränderung der Anforderungen.

Der Kunde hat definitiv nicht immer Recht. Es ist jedoch öfter „richtig“, als wir es uns wünschen (wie in, versuchen Sie, ihm entgegenzukommen, wenn er nicht völlig krank ist). Aber wenn Sie sehen, dass er das Projekt in die falsche Richtung treibt, versuchen Sie, für die Dinge einzutreten, die Sie für richtig halten.

Es gibt keine strengen Regeln für diese Dinge, und selbst gute und erfahrene Entwickler haben nicht das perfekte Zen erreicht. Der einzig falsche Ansatz ist, diese nicht zu verbessern.


16
+1, für "Wenn Sie sich der Probleme bewusst sind, können Sie diese Definition bereits überschreiten."
maple_shaft

38

Es gibt Fälle, in denen es der Client ist. Aber das ist auch dein Problem

Es gibt Fälle, in denen es der Entwickler ist, und es gibt Fälle, in denen es der Kunde ist. Aber in der Regel sind sie beide Ihr Problem, daher ist es in der Regel erfolgreicher, sich selbst Vorwürfe zu machen, weil es nicht hilflos ist, mit dem Finger darauf zu zeigen, sondern Probleme zu lösen. Daher finden Sie es häufig bei erfahreneren Entwicklern.

Eine noch bessere Einstellung ist es meiner Meinung nach, es ohne Schuld anzusehen: "Es ist die Schuld des Kunden, dass ich miesen Code habe, weil er immer die Anforderungen ändert." wichtig als Vollständigkeit, Robustheit und Geschwindigkeit ".

Eine Art Zen-Geist: Beurteile es nicht, sondern sieh es einfach so wie es ist.


Ich freue mich zu hören, dass es immer noch Interessenvertretung für gute alte gibt. "Der Kunde hat immer Recht", +1.
Wayne Koorts

1
Eigentlich ist es eher so: "Der Kunde hat immer Recht ... es sei denn, Sie sind der Kunde."
Luke Van In

@WayneKoorts - Solange sie zur Zahlung bereit sind, können sie als Kunden bezeichnet werden.
JeffO

2
Tatsächlich denke ich, dass TCIAR erfolgreicher ist als "alle anderen irren sich", aber nicht so gut wie "Wer sich darum kümmert, wer Recht hat, identifiziere einfach das Problem", sodass die +1 möglicherweise unverdient sind.
Keppla

1
TCIAR ist zum Teil das Gegenmittel für zu leugnen , dass es ist ein Problem.
Steve314

13

Erstens weiß ein Kunde nicht, was er will, bis er es sieht. Dies ist Teil der Attraktivität der kleinen Iterationen des Agile-Paradigmas mit starker Kundenbeteiligung. Zweitens: Erwarten Sie nicht, dass ein Produkt "vollständig" ist, wenn Sie den Code vollständig haben.

Microsoft verwendet ein Produkt namens "Watson" (die Nachricht, die beim Hochfahren von Windows angezeigt wird), um Probleme direkt an einen Client zurückzuverfolgen. Die Rückverfolgbarkeit ist eine gute Möglichkeit, Probleme zu den Benutzern zurückzuverfolgen, bei denen sie auftreten. Sie können die Rückverfolgbarkeit erhalten, indem Sie fragen. Oder, wenn Sie über die Ressourcen verfügen, integrieren Sie die Funktionalität in die Produkte. Der Schlüssel ist die Verfolgung der Probleme / Verbesserungen, damit sie behoben werden können.

Schließlich können sicher Kunden launisch sein. In solchen Fällen versuche ich mich auf das Eisberggeheimnis zu konzentrieren .


+1 für das Eisberggeheimnis.
Daniel Pryden

5

Sich ändernde Anforderungen sind eine harte Tatsache. Aber Code Rot wird dadurch nicht verursacht.

Codefäule tritt auf, wenn es einige Teile Ihres Codes gibt, die Sie nicht häufig trainieren. Wenn Sie also einige Änderungen vornehmen, die "nichts anderes betreffen sollten", können Fehler auftreten. Mit anderen Worten, Code, der kein Tageslicht sieht, zerfällt langsam und Sie können nicht sagen, wann er nicht mehr funktioniert.

Ja, es ist deine Schuld und nicht die deines Benutzers.

Die echte Lösung? Testen Sie Ihren gesamten Code regelmäßig. Der beste Weg ist natürlich, automatisierte Tests mit guter Abdeckung durchzuführen.


+1 für automatisierte Tests! TDD - Test Driven Development - Das Schreiben der Tests zuerst auf der Grundlage der Anforderungen, sodass der Großteil oder fast der gesamte Code getestet wird, ist eine Möglichkeit, das Verrotten des Codes auch bei ständiger Verschiebung des Ziels nach dem Verschieben zu verhindern. Abdeckungswerkzeuge können auch verwendet werden, um Bereiche aufzunehmen, in denen die Tests nichts berühren, Bereiche, in denen Fäulnis wahrscheinlich ist.
Danny Staple

4

Die Unentschlossenheit der Kunden kann ein großes Problem sein, und wenn Sie nicht für die Verwaltung der Kundenbeziehung verantwortlich sind, kann es sehr schwierig sein, damit umzugehen. Sie können mit der Person sprechen, die sich mit dem Kunden befasst, und ruhig erklären, dass der Fortschritt erst dann eintreten kann, wenn der Kunde eine Entscheidung trifft. Wenn Sie sind verantwortlich für die Kundenbeziehung, müssen Sie den Client sagen , dass sie eine Entscheidung treffen müssen , bevor das Projekt fortgesetzt werden kann. Es kann nicht sein, dass Ihre Haltung eine Überarbeitung braucht, nur eine Minute der Meditation, um sich zu beruhigen. ;)


4

Javier weist darauf hin, dass sich ändernde Anforderungen eine harte Tatsache des Lebens sind. Diese Situationen frustrieren auch mich, da ich zu oft an einem Produkt arbeite, bei dem der Entwickler Entscheidungen treffen muss. Meine Meinung war früher: "Warum kann das Management das nicht mit dem Kunden herausfinden?", Oder "Warum haben wir dieses Projekt begonnen, wenn der Kunde nicht weiß, was er wollte?", "Es sind so viele Kopfschmerzen, wenn sie sich so ändern spät in der Entwicklung ".

Einfache Tatsache: Dies wird immer passieren, nicht nur in der Programmierung / Softwareentwicklung, sondern in jedem Lebensbereich. Die Welt wäre einfach ein sehr langweiliger und ganz anderer Ort, wenn die Menschen niemals ihre Meinung ändern, sich niemals anpassen, niemals Veränderungen ansprechen würden. Die Menschen neigen dazu, sich anzusehen, was ihnen gegeben wurde, und es zu verbessern. Tun Sie nicht dasselbe mit Ihrem Code? Wenn ich einen Codeblock habe, mit dem ich nicht zufrieden bin (ineffizient, chaotisch), werde ich ihn verbessern. (Beschwert sich das Betriebssystem über mich? ... manchmal, wenn ich ein bestimmtes Betriebssystem ohne Namen verwende, aber im Allgemeinen nicht)

Als Programmierer müssen wir Möglichkeiten ergreifen, um Dinge zu verbessern, und uns nicht von ihnen deprimieren oder ärgern lassen. Nutzen Sie die Gelegenheit, mit Menschen zu sprechen, Ihren Stil zu verbessern, Ihre Arbeitsmoral zu verbessern, offen mit Dingen umzugehen, sich zu verbessern, als Sie gestern waren. Bewegen Sie sich in Ihrer Karriere vorwärts und beruhigen Sie sich nicht zu leicht.

Ich verstehe, dass nicht alle mit dieser Antwort einverstanden sind, aber ich halte es für wichtig, dass die Antworten auf diese Frage eine breitere Perspektive abdecken.


2

Wenn Sie mit einem Client interagieren, programmieren Sie nicht. du lernst und lehrst.

Halten Sie die Kunden auf dem Laufenden und informieren Sie sie über den Prozess. Veränderung wird passieren. Lassen Sie sie wissen, dass Sie versuchen werden, sie umzusetzen, aber es wird mehr kosten. Lass sie entscheiden.

Gehen Sie nicht auf technische Details ein, auch wenn die gestellte Frage technischer Natur ist. Sie werden versucht, weil Sie sich ein wenig defensiv fühlen und sich einer Herausforderung stellen wollen. Tu es nicht. sie kümmern sich nicht um die Details und hören nach 45 Sekunden auf zu hören.

Wenn Sie sie nicht im Voraus informiert haben, sollten Sie nicht erwarten, dass sie über Branchenstandards und bewährte Methoden oder andere Gründe für das, was Sie tun, Bescheid wissen. Ich hasse es, wenn ich erst ganz am Ende eine Gebühr sehe, nur damit der Verkäufer mir sagt, dass es in der Branche Standard ist. Es ist nicht zu erwarten, dass ich das weiß. Meine Antwort lautet: "Fühle ich mich auch wie ein Idiot?"

Wenn Sie mit einem Kunden zusammen sind, schenken Sie ihm mehr Aufmerksamkeit als allen anderen im Raum. Gezähmte Hunde sind dabei Genies; vor allem, wenn du etwas zu essen hast.


1

Es ist schlechtes Anforderungsmanagement oder schlechte Analyse. Ihr Business Analyst (falls vorhanden) oder jeder, der die Anforderungen erhält, muss sich an den Kunden wenden und versuchen, alle Anforderungen zu erfüllen, auch die, an die der Kunde möglicherweise nicht denkt. Kunden wissen in der Regel nicht alles, was sie wollen. Ein hervorragender Business Analyst wird ihnen dabei helfen, alles herauszufinden.


1

Aus diesem Grund sollten Sie immer ein Business Requirement Document einrichten und abmelden, bevor eine Anwendung über die Prototyping- / Forschungsphase hinausgeht.

Nun, die Vorstellung, dass dieses Dokument tatsächlich endgültig ist, ist fehlerhaft, aber dies sollte Ihnen helfen, eine bessere Vorstellung davon zu bekommen, was der Kunde tatsächlich will. Und solange Sie Ihren Code unter Berücksichtigung der Wartbarkeit schreiben, können Sie Ihre Probleme auf ein Minimum beschränken.

Und wenn Sie jemals eine Ausrede brauchen, auf die Sie zurückgreifen können, können Sie der BRD Verzögerungen vorwerfen, die der Kunde abgemeldet hat, ohne solche und solche Funktionen usw.

(Natürlich ist dies nur eine Ausrede, falls Sie sie brauchen. Sie sollten immer vorhaben, dass sie etwas ändern. )


1

In Emersons Zitat: "Eine törichte Konsequenz ist der Hobgoblin kleiner Geister ..." ist das am häufigsten übersehene Wort töricht . Konsistenz ist in bestimmten Situationen nicht verhandelbar, ersetzt jedoch häufig kritisches Denken und Analysieren.

Einerseits sind viele Entwicklungsmodelle speziell darauf ausgelegt, in der von Ihnen beschriebenen Umgebung zu helfen. Wenn Sie also feststellen, dass Sie gegen Ihr Modell verstoßen müssen, implementieren Sie es entweder gar nicht richtig oder Sie haben das falsche Modell.

Auf der anderen Seite sollten Sie keine Angst haben, den vernünftigen Weg zu gehen, wenn Sie eine gut begründete und stützbare Rechtfertigung für die Verletzung Ihrer Regeln haben und nachweisen können, dass Ihre Schurkenmethode saubereren, besser wartbaren Code erzeugt.

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.