Hintergrund
Ich arbeite als Entwickler in einer Softwareentwicklungsabteilung mit drei anderen Entwicklern und einem Manager. Wir haben eine Desktop-Anwendung, die ständig an die Bedürfnisse der Kunden angepasst wird.
Problem
Kürzlich bat einer unserer Kunden um eine Änderung an einer Funktion, die bereits im Produkt vorhanden ist. Es erfordert noch ein paar Mausklicks, um die Arbeit zu erledigen.
Mein Vorgesetzter möchte, dass diese Änderung auf Wunsch des Kunden implementiert wird.
Ich habe ein paar Mal deutlich erklärt, dass wir diese Funktion bereits haben und sie gut funktioniert. Außerdem habe ich die technischen Auswirkungen der Änderung der Funktionalität erläutert. Mein Vorgesetzter möchte, dass ich mit der Änderung gemäß den Anforderungen des Kunden fortfahre.
Frage
Wie soll ich vorgehen?
Soll ich die Situation nochmal erklären? Oder vielleicht einen anderen Job suchen? Oder sollte ich meinem Vorgesetzten sagen, dass er helfen soll, wenn es so einfach ist?
AKTUALISIEREN
Jede Antwort auf diese Frage hat mir eines klar gemacht: Ich muss meine Einstellung ändern.
Wie fast alle betonten: Ich bin nicht der Manager, solange ich meinem Manager die technischen Nachteile einer Anfrage mitteile, sollte ich nicht urteilen. Außerdem wäre eine Kündigung eine vorübergehende Lösung, da das Problem in meiner Einstellung zum Job und zum Vorgesetzten liegt.
Mein Vorgesetzter möchte, dass ich mit der Änderung gemäß den Anforderungen des Kunden fortfahre.
Frage
Wie soll ich vorgehen?
Sie sollten mit der Änderung gemäß den Anforderungen des Kunden fortfahren.
Anscheinend will der Kunde diese Modifikation. Und anscheinend stimmt Ihr Manager zu. Es scheint, dass er bereit ist, die technischen Auswirkungen zu absorbieren, um den Kunden glücklich zu machen.
Es hat keinen Sinn, es noch einmal zu erklären, es sei denn, Sie glauben, dass Ihr Vorgesetzter Sie nicht verstanden hat, obwohl Sie es klar erklärt haben (es scheint, als hätte er es verstanden, stimmt aber nicht zu).
Natürlich entscheidet Ihr Vorgesetzter, was hier unnötig ist, nicht Sie.
Sobald die Anfrage des Kunden erfüllt ist, möchten Sie vielleicht eine ruhige Zeit für ein Gespräch mit Ihrem Vorgesetzten finden. Ihr Ziel für ein solches Gespräch sollte nicht sein, Ihren Vorgesetzten davon zu überzeugen, dass Sie Recht hatten. Stattdessen sollte es Ihr Ziel sein, Ihren Vorgesetzten nach der Entscheidung zu fragen, damit Sie den Kundenanfrageprozess in Ihrem Unternehmen besser verstehen. Offensichtlich gibt es Dinge über die Kunden, die Sie nicht verstehen.
Oder vielleicht einen anderen Job suchen?
Wenn Sie einen Job brauchen, bei dem Sie entscheiden können, was der Kunde bekommt oder nicht bekommt, obwohl Ihr Kunde und Ihr Vorgesetzter bereits entschieden haben, dann sollten Sie sich nach einem neuen Job umsehen.
Vielleicht sollten Sie sich eine Führungsposition suchen, wo Sie mehr Einfluss darauf haben, welche Features geliefert werden und welche nicht. Oder vielleicht sollten Sie sich nach einer Rolle im Kundenservice oder Produktmanagement umsehen, in der Sie enger mit Kunden interagieren, die Zeitachse der Produktfunktionen beeinflussen und bei der Entscheidung helfen könnten, welche Kundenanfragen erfüllt oder abgelehnt werden sollen.
Oder, wie @IsmaelMiguel zu Recht betont, für ein Produktunternehmen arbeiten, bei dem individuelle Kundenwünsche selten erbeten oder erfüllt werden. (Natürlich haben Sie immer noch die Anweisungen Ihres Vorgesetzten, mit denen Sie fertig werden müssen.)
Oder sollte ich meinem Vorgesetzten sagen, dass er helfen soll, wenn es so einfach ist?
Du solltest deinem Chef gegenüber nur dann höhnisch werden, wenn du deinen Job nicht wirklich schätzt.
Ihre Frage basiert auf der Frage, ob die Anfrage des Benutzers gültig und richtig ist, und auf der Entscheidung Ihres Vorgesetzten, sie anzunehmen und zu bearbeiten. Die Anfrage des Benutzers ist gültig, und die Entscheidung Ihres Vorgesetzten ist gültig.
Das ist die Arbeit, für die Sie angestellt sind .
Worum Sie gebeten werden, ist die Implementierung einer nicht funktionalen Anforderung.
Sie werden nach einer Verbesserung der Benutzerfreundlichkeit gefragt, nicht nach einer Erweiterung der Funktionalität.
Nichtfunktionale Anforderungen an ein System sind immer noch Anforderungen .
In diesem Fall sollen diese Usability-Fixes die Produktivität des Benutzers steigern und seine Fehlerquote senken.
Usability-Korrekturen können nicht trivial zu implementieren sein. Dies bedeutet nicht, dass sie als Anliegen zweiter Klasse behandelt werden sollten. Als Entwickler sind Sie da, um das zu erschaffen, was wichtig ist , nicht das, was einfach ist .
Ein ausgezeichnetes Buch, das dabei hilft, die Benutzerfreundlichkeit als ein zentrales technisches Anliegen zu verstehen, ist
„The Design of Everyday Things“ von Donald Norman (Link) .
Ein gutes Beispiel für ein System mit vollständigen Funktionen, das eine Weiterentwicklung der Benutzersteuerung erfordert, ist das Modell T von Ford. Als Auto geht es. Es lenkt. Es hört auf. Es befördert Passagiere.
Werfen Sie nun einen Blick auf die Benutzersteuerung (Link) . Niemand macht sie mehr so - aus guten Gründen.
Sie sind schwer (und fehleranfällig, dh verletzungsanfällig) zu starten.
Der Gashebel besteht aus zwei Steuerknüppeln auf gegenüberliegenden Seiten der Lenksäule, die unabhängig und manchmal gleichzeitig betätigt werden müssen.
Versuchen Sie, sich eine Lösung auszudenken, bei der beide Situationen funktionieren können.
Wenn diese Funktionalität bereits vorhanden ist, ist sie anscheinend nicht richtig in Bezug auf die Benutzeroberfläche ausgeführt. Vielleicht die Steuerung oder Navigation neu gestalten? Versuchen Sie, die Anzahl der Klicks auf clevere Weise auf das zu reduzieren, was sie möchten.
Kündigen Sie auch, wenn Ihr Vorgesetzter Ihnen sagt, etwas zu tun, womit Sie nicht ganz einverstanden sind?! Sie müssen wirklich gerne nach Jobs suchen, denn das ist durchaus üblich.
Ihre Frage ist ein Durcheinander; es ist ein großer Widerspruch. Entweder ist es schon im Produkt, dann ist nichts zu machen. Oder ist es nicht, und es gibt technische Probleme, die Sie überwinden müssen. Aber nicht beide. Es ist unmöglich, dass Sie auf technische Schwierigkeiten stoßen, wenn Sie das Rad neu erfinden.
Wenn das Feature noch nicht im Produkt enthalten ist, gehen Sie wie folgt vor:
Falls Sie dies noch nicht getan haben, erklären Sie Ihrem Vorgesetzten alle Ihre Bedenken schriftlich. Eine E-Mail sollte genügen. Es sollte die Bedenken und die technischen Schwierigkeiten enthalten, die Sie überwinden müssen, um sie zu lösen, und wenn möglich eine grobe Zeitschätzung. Markieren Sie eindeutig diejenigen, bei denen Sie wirklich keine Ahnung haben, wie Sie sie lösen sollen, und bitten Sie um seine Hilfe.
Fragen Sie ihn auch, ob sich das Feature lohnt, und zeigen Sie ihm weitere wichtige Features , die im Backlog warten. Nachdem Sie ihm nun einen Zeitrahmen ("5 Wochen für alles Gelöste und 4 völlig ungelöste Probleme") und mögliche alternative Einsatzmöglichkeiten Ihrer Arbeitskraft mitgeteilt haben, sollte er in der Lage sein, eine fundierte Entscheidung zu treffen.
Wenn er antwortet „Ja, weitermachen“, setzen Sie alles um, was Sie können, und kommunizieren Sie alles, was Sie nicht lösen können. Er hat nach der Funktion gefragt und Ihnen einen Zeitrahmen zur Lösung der Probleme genannt. Alles andere liegt über Ihrer Gehaltsklasse.
Zunächst sollte dem Kunden die Existenz des Features mitgeteilt werden, falls dies nicht der Fall ist. Nur weil es implementiert ist, bedeutet das nicht, dass sie sich dessen bewusst sind oder dass sie wissen, wie die Funktion verwendet wird. Dies sollte von demjenigen durchgeführt werden, der der Hauptkontakt mit dem Kunden ist, was Ihr Vorgesetzter sein könnte. Das Wissen um diese Funktion könnte alles sein, was sie brauchen. Wenn sie jedoch feststellen, dass die Implementierung nicht nützlich ist, muss die Art und Weise, wie die Funktion implementiert wird, noch geändert werden.
Wenn der Ansprechpartner Ihr Vorgesetzter ist und Ihr Vorgesetzter es entweder angesprochen hat und der Kunde immer noch die Änderung wünscht oder Ihr Vorgesetzter es nicht für notwendig hält, es anzusprechen, dann haben Sie alles getan, was Sie tun konnten. Sie haben das Argument vorgebracht, und die für solche Entscheidungen verantwortliche Person hat eine Entscheidung getroffen. Jetzt gilt es, die Entscheidung umzusetzen.
Es hört sich jedoch so an, als ob es Probleme in Ihrer Organisation gibt. Es ist nicht ungewöhnlich, dass sich Code im Laufe der Zeit verschlechtert. Technische Schulden bauen sich auf und Änderungen an einem System führen nur zu einer Verschlechterung der Designintegrität ( Software-Entropie ). Irgendwann müssen diese Probleme behoben werden, oder die Kosten für die Softwarewartung können bis zu dem Punkt steigen, an dem es extrem kostspielig wird, Änderungen an einem System vorzunehmen. Ein Mangel an Zeit zum Testen und zum Einbau von Qualität in den Prozess ist ebenfalls ein Problem.
Diese organisatorischen Probleme sind längerfristige Probleme. Es ist ein Fall von „Ändern Sie Ihre Organisation“ . Sie können diese Probleme entweder beheben oder sich nach einer neuen Organisation umsehen, die besser geeignet ist.
Stellen Sie eine Überprüfung dessen bereit, was für den Kunden getan werden muss. Zeichnen Sie ein Bild, geben Sie Schritt-für-Schritt-Anleitungen usw., um sicherzustellen, dass Sie die Anfrage verstehen. Dies erklärt dem Kunden nicht, wie die Dinge jetzt gemacht werden, sondern um sicherzustellen, dass Sie Ihre Arbeit richtig machen. Sie können es sogar damit vergleichen, wie die Funktion jetzt funktioniert, um zu überprüfen, ob ihre Änderung so einfach ist, wie es Ihnen erscheint.
BEARBEITEN:
Sie können diese Änderung vom Kunden oder Manager genehmigen lassen. Sie können Ihrem Vorgesetzten gegenüber erwähnen, dass es hilfreich sein könnte, wenn es dem Kunden zur „Abzeichnung“ vorgelegt wird, falls er bei der Lieferung feststellt, wie geringfügig die Änderung ist. Hier geht es jedoch um Kommunikation, und wenn Ihr Vorgesetzter dies absegnet, dann ist zumindest die Aufgabe für Sie klar und Sie haben die Dokumentation, dass Sie das bereitgestellt haben, wonach gefragt wurde, und die Lösung nicht betrogen oder manipuliert haben.
ENDE BEARBEITEN
Es ist möglich, dass Ihr Kunde nach einer „vorhandenen“ Funktion fragt und sie nicht erkennt. Es kann auch sein, dass Ihr Kunde dies in weniger Schritten / mit weniger Klicks benötigt. Ich kenne viele Systeme, die für Benutzer wegen „mehr Klicks“ nicht „akzeptabel“ waren.
Es ist gut, wenn Sie versuchen, sich davor zu schützen, unnötige Änderungen vorzunehmen oder Kunden bereits vorhandene Funktionen in Rechnung zu stellen. Es ist nicht gut für Sie, einen Kunden aufgrund seiner Anfrage zu beurteilen oder wie ein überfürsorglicher Elternteil zu sein und zu versuchen, Kunden dabei zu helfen, Geld zu sparen oder Dinge auf „Ihre Weise“ zu erledigen, wenn sie es anders machen möchten.
Wenn Sie den Job nicht ausführen wollen oder können, dann sollte Ihr Vorgesetzter das wissen. Aber dann solltest du dir wahrscheinlich einen anderen Job suchen.
Ich fühle mit dir. Ich bekomme ständig detailliertes Design ohne funktionale Anforderungen. Sie haben keine Wertschätzung für das aktuelle Datendesign und die Serveraufrufe. Zwei Klicks können sauber und erweiterbar sein und ein Klick bewirkt eine Änderung des Datenmodells. Sie sagen, dass es ihnen egal ist, aber wenn es kaputt geht oder Daten beschädigt werden, ist es Ihr Problem. Selbst wenn Sie es schaffen, haben Sie eine spröde Codebasis und die nächste Änderung ist noch schwieriger. Es ist so frustrierend, wenn ein Programmierer nur als Programmierer und nicht als Designer betrachtet wird.
Was Sie tun können. 1) Erklären Sie das Problem. 2) Legen Sie dann Widerspruch ein und erklären Sie Ihren Widerspruch sowohl schriftlich als auch mündlich. Skizzieren Sie den Zeitpunkt für diese Änderung und die längerfristigen Auswirkungen. 3) Und dann mach es einfach. Wenn es 3 Wochen zum Programmieren und 2 Wochen zum Testen dauert, dann sei es so.
Rücktritt ist immer die letzte Option, aber wenn das so weitergeht, wird der Job nur noch schlimmer. Der Code wird spröder und der Chef wird nicht mehr verstehen. Es ist erniedrigend, als Code-Affe behandelt zu werden. Das heißt, geben Sie einfach Ihr Bestes und bauen Sie Ihre Fähigkeiten aus. Wenn Sie bei Ihrer nächsten Leistungsbeurteilung immer noch frustriert sind, legen Sie es offen. Wenn Sie den Prozess ansprechen, der nicht mit einer bestimmten Änderung verbunden ist, wird der Chef Ihre Position hoffentlich ernsthafter prüfen. Wenn der Chef sagt, dass sich der Prozess nicht ändern wird, dann wissen Sie, woran Sie sind. Hör nicht einfach auf. Entscheide, ob du damit leben kannst. Wenn Sie damit nicht leben können, machen Sie einen Plan, wie Sie zu Ihrem nächsten Job wechseln können. Sobald Sie aufhören, sich um den aktuellen Job zu kümmern, wird es erträglicher.
Die Antwort hier ist "klären lassen!"
Erkennt der Kunde, dass das Feature bereits in einer optimierten Form vorhanden ist, oder nicht?
Wenn nicht ... dann wären sie wahrscheinlich ziemlich verärgert, wenn sie nichts davon erfahren würden, und würden anschließend mehr Stunden bezahlen, um die Funktionalität einer bereits vorhandenen Funktion zu verschlechtern. Ich weiß, dass mich das ärgern würde ... wenn ich dem Projektmanager sage: "Ich will Feature X", ist es ihre verdammte Aufgabe, zu wissen, ob es schon da ist, und mich das wissen zu lassen, damit ich meine Entscheidung über das Projekt treffen kann Ich beauftragte ist ein informierter.
Wenn ja ... dann ist das, was der Kunde für das Projekt will, das, was er will. Die Anforderungen sind die Anforderungen, sie haben ihren Grund und müssen sie Ihnen nicht erklären. Zum Beispiel haben sie vielleicht harte Daten, dass dieser zusätzliche Klick etwas seltsam Positives für ihr Geschäft bewirkt und sie wollen das. Oder selbst wenn es nur so ist, weil sie dumm sind ... sie haben das Recht, Sie für ihre Dummheit extra zu bezahlen, wenn sie es wünschen. Solange sie diese Entscheidung vollständig informiert treffen und für die Stunden bezahlen, die sie von Ihrer Seite nehmen, ist das in Ordnung.
Fazit: Wenn dies nur daran liegt, dass Ihr Projektmanager den Kunden nicht richtig informiert, dann ist das ein Problem. Wenn es der Client ist, der wirklich eine dumme Anforderung wünscht, obwohl er weiß, dass eine bessere Version der Funktion bereits existiert, dann ... dann ist es immer noch eine Client-Anforderung, selbst wenn es eine dumme ist.
Sie können keine angemessenen Maßnahmen ergreifen, bis Sie herausgefunden haben, was der Fall ist ... oder sich zumindest etwas Mühe geben, um herauszufinden, was der Fall ist, damit Ihr Hintern bedeckt ist, falls sich herausstellt, dass der Manager seinen nicht getan hat Arbeit.
Ich finde es toll, wie jeder im Workplace-Stack über Ethik und Professionalität spricht, wo vieles von dem, was wir tun, das Ergebnis von Interessen und politischen Spielereien ist. Die Situation hier ist ziemlich offensichtlich und die Antwort ist ziemlich kurz: Der
Kunde möchte Geld spenden (ich meine, seine Unwissenheit lässt ihn Geld für Dinge verschwenden, die er bereits hat), der Manager hat kein Problem damit. Dieses Geld zahlt für Ihr Gehalt. Seien Sie froh, dass Sie dieses Geld nehmen, und seien Sie froh, dass Sie klüger sind als Ihr Kunde. Profitieren.
Mast