Ich habe mich einer kleinen CSS-Herausforderung gestellt, um sie für einen Kunden zu lösen, und werde zum Stundensatz bezahlt. Ich habe es schließlich gelöst, es hat 5 Stunden gedauert, aber ich habe ungefähr 25% der Zeit auf der falschen Spur verbracht, eine CSS3-Lösung ausprobiert, die nur in neueren Browsern funktioniert, und schließlich festgestellt, dass über JS kein Fallback möglich ist (wie ich ursprünglich dachte). Soll ich dem Kunden diese 25% in Rechnung stellen?
Weitere Details: Ich habe keinen Kostenvoranschlag angegeben, die Herausforderung an sich hat mir gefallen, und ich habe begonnen, daran zu arbeiten, bevor ich einen Kostenvoranschlag abgegeben habe (aber ich habe bereits mit ihm zusammengearbeitet, damit ich weiß, dass er nicht zu den Leuten gehört, die unrealistische Erwartungen haben ). Im schlimmsten Fall habe ich 5 unbezahlte Stunden mit einer faszinierenden CSS-Herausforderung verbracht. Und ich werde für uns beide die bestmögliche Schätzung abgeben, da ich die Arbeit bereits erledigt habe. :)
Edit: Vielen Dank an alle, ich wünschte, ich könnte mehr als eine Antwort akzeptieren! Ich habe ihm die zusätzlichen Stunden nicht in Rechnung gestellt (ich habe ihm dreieinhalb in Rechnung gestellt), aber ich habe sie erwähnt, damit er weiß, dass ich mehr daran gearbeitet habe, als ich ihm in Rechnung gestellt habe. Vielleicht akzeptierte er deshalb sofort die "Schätzung" (die in diesem Fall keine Schätzung war, daher die Zitate).
quelle
Antworten:
Ich habe oft solche Situationen, wenn ich ein paar Stunden damit verbringe, etwas zu tun, und dann bemerke, dass es eine einfachere einzeilige Lösung gibt, oder dass meine erste Idee zu schlecht war usw.
Im Allgemeinen unterscheide ich in diesen Fällen drei Situationen:
Die neu entdeckte Lösung war nicht offensichtlich und / oder ein durchschnittlicher Entwickler würde wahrscheinlich auch auf dem falschen Weg sein und / oder der falsche Weg war eine Voraussetzung, um die endgültige Lösung zu finden. In diesem Fall verrechne ich dem Kunden die Zeit, die er auf der falschen Spur verbracht hat.
Die neu entdeckte Lösung war nicht so offensichtlich, aber wahrscheinlich würden viele durchschnittliche Entwickler diesen Weg direkt gehen. Mit anderen Worten, wenn ich es mir vor dem Schreiben von Code überlegt hätte, könnte ich die endgültige Lösung wahrscheinlich direkt finden oder vielleicht auch nicht. In diesem Fall berechne ich dem Kunden, reduziere aber den Preis um die Hälfte oder einen Prozentsatz, der am angemessensten erscheint.
Offensichtlich war ich zu dumm, zu schläfrig oder dachte gar nicht daran, bevor ich anfing, Code zu schreiben, da die endgültige Lösung extrem einfach zu finden war. In diesem Fall liegt es in meiner eigenen Verantwortung, auch wenn ich zwei Tage auf dem falschen Weg verbracht habe, und der Kunde muss dafür nicht bezahlen.
quelle
Ich glaube nicht, dass Sie auf dem falschen Weg waren. Sie haben eine Lösung codiert, die Lösung getestet (Kudos) und festgestellt, dass sie nicht wie erwartet funktioniert hat. Sie haben die Lösung getestet und dann eine andere Richtung eingeschlagen.
IMHO, das ist nicht der falsche Weg. Das ist regelmäßige Softwareentwicklung.
Wenn ich Sie wäre, würde ich die vollen 4 Stunden berechnen.
quelle
Die meisten Programme, die wir schreiben, schreiben wir, weil eine Lösung nicht sofort verfügbar ist. Bei fast allem, was wir tun, müssen wir etwas Neues lernen. Der Kunde hat Sie nicht für das Produkt bezahlt. Er hat Sie dafür bezahlt, dass Sie gelernt haben, wie man das Produkt baut und welche Ergebnisse Sie erzielen (und wenn er es selbst als "Herausforderung" bezeichnete, erwartete er, dass Sie etwas lernen würden). Siehe "Waltzing with Bears" von Tom de Marco und Timothy Lister - "Wenn ein Projekt keine Risiken birgt, tun Sie es nicht".
Wenn Sie dem Kunden eine ordnungsgemäße Rückzahlung ermöglichen möchten, senden Sie ihm Ihre Lösung zusammen mit Details zu den nicht funktionierenden Lösungen, damit er diese an andere von ihm eingestellte Mitarbeiter weitergeben und ihnen dabei helfen kann, sich auch weniger Zeit zu nehmen.
Es liegt an Ihnen, zu verhandeln, ob er denkt, er zahle zu viel. Natürlich würde ich von ihm erwarten, dass er für jedes Lernen bezahlt, das anderswo nicht leicht zu gebrauchen ist.
quelle
Manchmal besteht das Lösen eines Problems darin, die suboptimalen Lösungen aus einer Reihe vernünftiger Optionen zu entfernen. Der Prozess der Beseitigung ist eines Ihrer Tools zur Problemlösung. Der Kunde bezahlt Sie für eine Lösung und sollte erwarten, dass Sie alle Werkzeuge verwenden, die Ihnen zur Verfügung stehen.
Es wäre ein unvernünftiger Kunde, der von Ihnen erwartet, dass Sie sich sofort die beste Lösung vorstellen - direkt von der Projektbesprechung auf Ihre Tastatur zu gehen, wo Sie einen schnellen und optimalen, rückraumfreien Code-Stream ausgeben. Das heißt nicht, dass es solche Kunden nicht gibt. Ich hatte den Kunden, der mitten im Projekt anrief, um zu überprüfen, ob er tatsächlich nur für "Programmieren, nicht für Debuggen" bezahlt hat. Und natürlich gibt es Kunden (oder Chefs), für die das Programmieren der physische Akt des Tippens ist.
Ihre Sackgasse könnte das am besten ausgegebene Geld des Kunden darstellen: Ein anderer Entwickler war möglicherweise nicht so gründlich wie Sie und lieferte eine billigere, aber weniger kompatible Lösung, die sich in Zukunft bewähren würde.
quelle
Diese Fragen machen mich verrückt ...
Wenn ein Mechaniker oder Anwalt Zeit damit verbracht hat, sich mit Ihrem Fall / Problem zu befassen, wetten Sie, dass Sie mit @ $$ belastet werden, selbst wenn er Zeit auf dem falschen Weg verbracht hat
Programmierer müssen anfangen, ihre Zeit mehr zu schätzen
quelle
Was du getan hast, war völlig normal. Fred Brooks diskutiert dieses Phänomen im Kapitel "Plan to Throw One Away" seines wegweisenden Buches über Softwareentwicklung "The Mythical Man-Month".
Sie haben an einem Zeit- und Materialvertrag gearbeitet. Daher sollten Sie Ihrem Kunden die gesamte Zeit in Rechnung stellen, die Sie für das Projekt aufgewendet haben. Es ist Sache des Kunden, festzustellen, ob er für seine Investition einen ausreichenden Gegenwert erhalten hat.
quelle
Ich sehe das so: Am Ende des Tages ist es Ihr Anruf, den Sie in Rechnung stellen. Es gibt viele Variablen, z. B. wie zufrieden Sie mit dem Kunden sein möchten, die bestehende Beziehung, Ihre Vertriebsfähigkeiten usw. Wir alle kennen sie. Was Sie dem Kunden letztendlich bieten und was er wirklich will, ist Wert. Welchen Wert haben Sie dem Kunden beigemessen und welche Lösung / Leistung bieten Sie ihm?
Es kann 10 Minuten dauern, bis Sie ein Problem gelöst haben, aber es dauerte 10 Jahre, bis Sie gelernt haben, wie Sie dieses Problem lösen können. Das ist zu bedenken. Zur gleichen Zeit betrachten einige von uns die Fähigkeit, "on the job" Vergütung zu lernen. Ich lerne oft Dinge, die wirklich auf dem Spiel stehen. Ich halte das für eine Form der nicht monetären Entschädigung.
Sie können es auch der Rechnung hinzufügen und dann als "bevorzugter Kundenrabatt" auf der Rechnung markieren, keine Gebühren erheben und einen guten Willen aufbauen. Ich mache das ab und zu, was dem Kunden ein gutes Gefühl gibt.
Auch Ihre Frage, ob es Entwickler gibt, die Tausende von Dollar pro Tag verdienen, ist die Antwort ja. Sie sollten mit Ihren Fähigkeiten auch einer von ihnen sein. Ich bin praktisch da und ich bin bei weitem nicht in der gleichen Liga wie Sie in CSS.
quelle
Das hängt von der ursprünglichen Vereinbarung ab.
Haben Sie gesagt, dass Sie es fertig und einsatzbereit liefern werden? Dann berechnen Sie besser die gesamte Zeit, die Sie für die Entwicklung aufgewendet haben. Alles davon!
quelle
Wenn Sie einen Anwalt beauftragen, einen Fall für Sie zu argumentieren, und der Anwalt ihn verpfuscht und für Sie verliert, bezahlen Sie trotzdem seine Rechnung.
So machen es alle anderen Berufe. Es gibt keinen Grund, warum Programmierer anders vorgehen sollten.
Wenn der Kunde denkt, dass er zu viel bezahlt hat, wird er nicht zu Ihnen zurückkehren. Sie als Stammkunden zu behalten, ist der einzige vernünftige Grund, warum nicht alle geleisteten Arbeitsstunden in Rechnung gestellt werden.
quelle
Wenn es sich um ein Projekt handelt, das ich eigens angefertigt habe, damit mich jemand bezahlt, während ich mir neue Technologien beibrachte, tue ich dies in der Regel für weniger, als ich normalerweise die Zeit in Rechnung stellen würde. Auf der anderen Seite können Sie nicht zu niedrig bieten, oder es wird die Dinge mit diesem Kunden für immer seltsam machen. t Rechnung für Zeit, wo ich vermasselt und es endete zu lange.
Meine Ausnahme von dieser Regel: Wenn das Problem stundenlang behoben werden musste, weil der Kunde mich über etwas beschimpft hat, das er kaputt gemacht hat, berechne ich das Ganze.
quelle
Normalerweise würde ich keine Gebühren erheben, wenn es offensichtlich meine Schuld wäre, und ich habe nur herumgeschnippt, aber ich bin überhaupt nicht geschäftstüchtig. Ich habe festgestellt, dass die meisten Geschäftsleute diese Philosophie anwenden, dass Kunden für ihre Zeit zahlen und nicht nur als Endergebnis. Es gab viele Male in meiner Karriere, in denen ich es im Nachhinein bereut habe, nicht so gedacht zu haben. Alles, was ich dachte, war, dass das Endergebnis etwas wert war. Meine Zeit war bedeutungslos, es sei denn, es verbesserte das Endergebnis. Es kann jedoch vorkommen, dass Kunden ihre Meinung ändern und Mitarbeiter Fehler verursachen, die Ihnen zugewiesen werden und Ihre Arbeit verzögern, und dies nicht nur, weil Sie ein wenig mehr Nachforschungen benötigen im Voraus, um wirklich zu wissen, was Sie getan haben.
Wenn Sie anfangen, die Regeln zu biegen und Ausnahmen zu machen, für welche Art von Arbeitszeit bezahlt werden soll und welche kostenlos sein soll, kann es leicht sein, irgendwann einen Vorteil daraus zu ziehen. Zeit ist die am einfachsten zu verwendende Metrik für die Zahlung. Es befreit Sie von einer Menge komplexer Verantwortlichkeiten, die unverantwortlich erscheinen mögen, schützt Sie jedoch davor, dass Sie herumgeschleppt werden und die Verantwortungslosigkeit des Kunden zu einer gewissen Lohnkürzung führt.
In meinem Fall wäre es hoffnungslos, wenn ich nicht dafür bezahlen könnte, dass ich den falschen Weg eingeschlagen habe, da ich oft an Dingen wie dem Folgenden arbeite:
... versuchen, einen fast 40 Jahre alten Catmull-Clark-Unterteilungsalgorithmus zu schlagen, der von Unternehmen wie Microsoft und Pixar immer wieder verbessert wurde, indem versucht wurde, intuitivere Ergebnisse zu erzielen und dabei genauso wettbewerbsfähig zu bleiben wie diese großen Unternehmen geschwindigkeitsmäßig.
In solchen Fällen gehe ich in 95% der Fälle den falschen Weg und kehre ständig nach einem Misserfolg nach dem anderen zum Whiteboard zurück. Wenn ich meine Fehler nicht in Rechnung stellen könnte, wäre ich bereits obdachlos. Ich betrachte mehr als die Hälfte meiner Arbeit als Forschung, wenn noch nie jemand diese Dinge ausprobiert hat, und es gibt keine Möglichkeit, einfach den perfekten Ansatz zu finden, um eine Lösung beim ersten Versuch (vielleicht beim 20. Versuch) in Angriff zu nehmen. Für mich war es nie das Ziel, beim ersten Versuch erfolgreich zu sein, sondern so schnell wie möglich zu scheitern, wobei jedes Scheitern nach dem Scheitern einen Hinweis darauf gibt, wie diese richtige Lösung aussehen könnte, die tatsächlich die Welt verändern könnte.
Nicht jeder arbeitet in einem so f & E-intensiven Bereich, in dem die Kunden möchten und erwarten, dass Sie die etabliertesten Techniken schlagen, nur weil Sie ein neues Projekt starten, aber für mich ist das Programmieren nie ganz alltäglich, egal wie einfach und etabliert ist eine lösung. Die Art und Weise, wie Sie Teile entwerfen und integrieren, ist immer noch einzigartig. Es handelt sich immer um eine Kunstform, die einzigartige Vor- und Nachteile bietet, nicht mechanische, nicht perfekt wissenschaftliche, sonst könnten es Roboter tun. Ich denke also, wir müssen immer dafür aufkommen, dass wir hier und da einen falschen Weg eingeschlagen haben, oder wir könnten nur von der Routinearbeit profitieren, die wir bereits hundert Mal geleistet haben und für die wir genau dasselbe anwenden In diesem Fall berechnen wir die Kosten für das Klicken auf die Schaltfläche "Kopieren und Einfügen".
Unberechenbarkeit
Eine andere Sache ist, dass das Programmieren immer schwierig, unvorhersehbar und nie ganz routinemäßig ist. Es ist nicht wie eine Pizza-Lieferung, die Routine ist, bei der alles andere als ein Autounfall erklärt werden kann (ich habe leider einmal unter einem Chef gearbeitet, der die Schätzungen des Programmierers mit den Schätzungen der Pizza-Lieferung gleichsetzte und dachte, dass die einzige Arbeit, die wir tatsächlich machten, das Tippen war). . Es lernt immer auf der Site - ich kann mir nicht vorstellen, dass es jemals zur Routine wird, wenn mich nicht jemand wiederholt dafür bezahlt hat, es immer wieder wie eine Quicksorte zu implementieren. Dort wird immer experimentiert und gelernt, und solange es nicht übertrieben ist, müssen Sie sich nicht schuldig fühlen.
Ich habe oft davon geträumt, Bauer zu werden oder so, nur damit ich in meiner Arbeit viel mehr Routinemaßnahmen finden und nicht immer die Grenzen meines vorhandenen Wissens überschreiten kann. Stattdessen versuche ich zu kompensieren, indem ich mein Leben außerhalb der Arbeit so routinemäßig und alltäglich wie möglich mache, um der Vernunft willen Vorhersehbarkeit und Routinemaßnahmen hinzuzufügen, was mich zu einer Langeweile bei Menschen macht, die in ihrem Leben außerhalb Aufregung finden möchten der Arbeit - ich finde genug bei der Arbeit.
An der falschen Lösung zu arbeiten bedeutet, neue Dinge zu lernen, nicht wahr? Wussten Sie, dass es eine falsche Lösung war, als Sie begannen, oder haben Sie beharrlich daran gearbeitet, selbst nachdem Sie gewusst hatten, dass es hoffnungslos falsch war? Hoffentlich nicht Letzteres. Oft ist der Lernprozess durch Fehler. Es ist der beste Lehrer. Die effektivste Strategie, die ich gefunden habe, besteht darin, Fehler so schnell wie möglich zu machen und herauszufinden, dass es sich tatsächlich um Konstruktionsfehler handelt, bevor wir alles daran setzen und solche Lösungen heiraten, da die einzige Konstante, die ich zählen kann on und sagen mit nahezu 100% iger Sicherheit voraus, dass Fehler gemacht werden. Sie sind nur teuer, wenn sie wirklich spät entdeckt werden.
quelle
Es hängt wirklich davon ab, wie Sie das Projekt vorgeschlagen haben und wie das Projekt abgerechnet werden kann.
Wenn es sich zum Beispiel um einen auf Leistungen basierenden Vertrag handelt, sollten alle Stunden unabhängig davon für das Projekt nachverfolgt werden, auch wenn es für das Erlernen von etwas Neuem gedacht war.
Wenn es sich um einen zeit- und materialbasierten Vertrag handelt, müssen Sie viel sensibler dafür sein. Wenn Sie sich beispielsweise im Kontext des Problems befinden und Probleme haben, sollte dies in Rechnung gestellt werden. Ein Beispiel hierfür ist, wenn Sie eine ältere API oder ein Stück Code erlernen und versuchen, dies mit Ihrem Code in Einklang zu bringen.
Wenn Sie jedoch von der Seite verfolgt werden und versuchen, etwas zu tun, oder einfach nur lernen möchten, wie man es auf neue Weise macht, würde ich nur die Zeit in Rechnung stellen, die für die Implementierung der eigentlichen Lösung erforderlich war, nicht die Zeit, die ich für das Lernen benötigte.
Ich bin mit Lunivore nicht einverstanden, dass sie uns dafür bezahlen, Dinge zu lernen. Sie bezahlen uns für unser Fachwissen und die meiste Zeit sollen wir wissen, wie es schon geht. Sie bezahlen uns für die Umsetzung.
Kurz gesagt, wenn Ihre anfängliche Schätzung nicht die Zeit enthielt, die zum Erlernen des Problems benötigt wurde, sollten Sie es wahrscheinlich nicht in Rechnung stellen. Machen Sie eine Lernerfahrung daraus und wissen Sie, dass Sie diese Verzögerung beim nächsten Mal nicht haben werden.
Bearbeiten: Da Sie später angegeben haben, dass es keine Schätzung gibt, würde ich diese Zeit sicherlich nicht einschließen, wenn Sie glauben, dass dies ein Wiederholungs-Client sein wird. Ich würde auch in Zukunft immer einen Kostenvoranschlag machen.
quelle
Um dies zu umgehen, überlege ich mir, was ein schlechter Fall sein könnte, und zitiere stündlich, was meiner Meinung nach mit einem durch den "schlechten" Fall festgelegten Zitatmaximum erreicht werden sollte. Auf diese Weise sind wir beide Gewinner.
quelle