Bugfixing in Rechnung stellen oder nicht

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Bugfixing in Rechnung stellen oder nicht

    Ich hatte heute eine interessante Diskussion: kann man bei einem nach Stunden bezahlten Projekt das Bugfixing in Rechnung stellen.?

    - Wie seht Ihr das generell?

    - Wie ist das vor dem Hintergrund zu sehen, dass es ein Bestandsprojekt ist, und die Bugs zur Hälfte dem Bestandscode geschuldet sind bzw. Problemen, die mit der Änderung an diesem Code entstehen?

    - wie ist es mit User Errors (Kunde hat einen vermeintlichen Bug entdeckt, der sich am Ende aber auf sein Unverständnis zurückführen lasst?)

    - wie ist es mit Bugs auf Apples Seite, z.B. in Xcode oder in den Frameworks, die letztlich mein Arbeitszeit kosten?
  • Das kommt komplett auf deine Verträge an.

    Wenn du einen Werksvertrag hast und die Fehler vor der Abnahme gefunden werden -> du musst sie auf eigene Kosten beheben.
    Wenn du einen Werksvertrag hattest und das Werk bereits abgenommen ist -> der Auftraggeber hat dir mit der Abnahme seine Absolution erteilt und du bist nicht mehr verantwortlich (es sei denn es war eine Abnahme mit Mängeln). Nachfolgende Fehler können in Rechnung gestellt werden. Es sei denn du hast einen Wartungsvertrag. Mit diesem ist ja zukünftige Fehlerbehebung bereits abgegolten.
    Hast du einen Dienstleistungsvertag - super, dann muss der Auftraggeber eh jede Stunde bezahlen.

    Dein Fall klingt nach einem Dienstleistungsvertag. Demnach bist du kein Ergebnis schuldig sondern nur Arbeitszeit in der du dein bestes gibst (ähnlich wie bei Juristen). Wenn das Beste nun Fehler enthielt ist das egal, kannst du in Rechnung stellen. Die Frage ist halt, ob du da wieder beauftragt werden willst und daher eventuell darauf verzichtest.

    Auch den Punkt mit dem Bestandsprojekt hätte ich vertraglich geklärt. Dann müsstest du nur nachlesen wie es ist.
  • Es gibt ja eigentlich nur zwei Möglichkeiten:

    1) Wenn du für das Projekt einen Festpreis gemacht hast und dafür die Menge Stunden X angegeben hast, dann must du natürlich auch Bugfixes danach kostenlos machen. Dabei ist es egal ob die vor oder nach der Abnahme entdeckt werden. Mängel sind Mängel und gehören behoben. Du verkaufst ja schließlich keine magelhafte Ware.

    2) Ist das Projekt im Rahmen eine stundenweisen Anstellung erfolgt, dann ist ja nicht das fertige Projekt auch automatisch das Ergebnis der Anstellung. Also wird auch jede weitere Arbeit abgerechnet. Es sei denn Du hast vorher gesagt "In 3 Tagen schaffe ich das". Dann bist du aber wieder bei Punkt eins meiner Liste.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Eigentlich sind Deine Bugs nicht das Problem des Kunden.
    Dementsprechend hast Du sie unentgeltlich zu beheben.
    Auf 'die Anderen' zu zeigen ist neben kindisch auch noch unprofessionell und ändert nichts an Deiner Pflicht. Du hättest das beim Voranschlagen der Stunden einkalkulieren müssen. So etwas nennt man gemeinhin 'Lehrgeld'.

    Ich wäre nur mit der Definition eines Bugs vorsichtig. ;)
    Ein Bug ist erst einmal alles, was aufhängt oder abstürzt. Da wird nicht dran gerüttelt, das ist so.

    Wenn der Button die falsche Farbe hat, das Textlabel zu weit links ist oder beim Fehlkonfigurieren keine Funktion mehr gegeben ist, handelt es sch meiner Meinung nach nicht um Bugreports sondern um Featurerequests.
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • ioscampus schrieb:


    Dein Fall klingt nach einem Dienstleistungsvertag. Demnach bist du kein Ergebnis schuldig sondern nur Arbeitszeit in der du dein bestes gibst (ähnlich wie bei Juristen). Wenn das Beste nun Fehler enthielt ist das egal, kannst du in Rechnung stellen. Die Frage ist halt, ob du da wieder beauftragt werden willst und daher eventuell darauf verzichtest.

    Auch den Punkt mit dem Bestandsprojekt hätte ich vertraglich geklärt. Dann müsstest du nur nachlesen wie es ist.

    Das ist ja cool. Wenn ich also hinreichend unbegabt bin, kann ich den letzten Scheiß abliefern.

    Ob das wirklich Juristen auch so sehen? Vor allem, wenn es der Anwalt des Auftraggebers ist.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Wie die rechtliche Situation ist sollte Dir eher ein Anwalt sagen - da kommt es bestimmt, wie bereits gesagt, auf den Vertrag und die dort geklärten Bedingungen an, aber auch, ob im Falle eines Werkvertrags das Werk abgenommen wurde, ob es ein gewerblicher oder Privatkunde ist usw.

    Unabhängig davon würde ich mir ansehen:

    - Wie peinlich ist der Fehler? Wenn's definitiv ein übler Schnitzer im Code ist, nehme ich das auf meine Kappe, fixe das und entschuldige mich. Wenn es etwas ist, was bei der Entwicklung nicht voraussehbar war, sieht das anders aus. Der Kunde kann zwar nichts dafür, ich aber auch nicht.
    - Wie gerne möchte ich den Kunden behalten? Bei netten Menschen und spannenden Projekten mache ich schon mal Kompromisse
    - Was kann ich dem Kunden fair anbieten? Ein kurzes Gespräch kann da Wunder wirken. Oft ist es für den Kunden (entweder schon davor oder nach dem Gespräch) verständlich, dass das zusätzliche Arbeit ist, die bezahlt werden muss. Manchmal kann man sich einfach auf einen guten Preis einigen.

    Ich finde einvernehmliche Lösungen wesentlich angenehmer als auf Recht zu pochen. Manchmal geht es halt nicht anders, aber wenn sich das vermeiden lässt tue ich das und spare mir damit viel Zeit und Ärger.
    Multigrad - 360°-Produktfotografie für den Mac
  • ioscampus schrieb:

    Amin Negm-Awad schrieb:


    Das ist ja cool. Wenn ich also hinreichend unbegabt bin, kann ich den letzten Scheiß abliefern.

    Ob das wirklich Juristen auch so sehen? Vor allem, wenn es der Anwalt des Auftraggebers ist.


    Wenn du hinreichend unbegabt bist, hat der Auswahlprozess versagt ;)
    Ja, du kannst den letzten Scheiß abliefern, sofern du nicht vorsätzlich Scheiße ablieferst.
    Das stimmt nicht.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • ioscampus schrieb:

    Thallius schrieb:


    Dabei ist es egal ob die vor oder nach der Abnahme entdeckt werden.


    Ist es meines Wissens nach nicht. Mit der Abnahme sagt dir der Auftragsgeber in etwa "Jawohl, dass ist genau das was ich haben wollte." Danach bist du raus. Ich bin nicht sicher wie das juristisch korrkt heißt - da kann Amin bestimmt helfen.

    Es kommt darauf an, ob der Mangel bei Abnahme bekannt ist:

    (2) Nimmt der Besteller ein mangelhaftes Werk gemäß Absatz 1 Satz 1 [Abnahme, Abnahmefiktion] ab, obschon er den Mangel kennt, so stehen ihm die in § 634 Nr. 1 bis 3 [Gewährleistungsrechte] bezeichneten Rechte nur zu, wenn er sich seine Rechte wegen des Mangels bei der Abnahme vorbehält.

    Also, der Besteller muss 1. den Mangel kennen und 2. ohne Vorbehalt das Werk abnehmen.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Thallius schrieb:


    1) Wenn du für das Projekt einen Festpreis gemacht hast und dafür die Menge Stunden X angegeben hast, dann must du natürlich auch Bugfixes danach kostenlos machen. Dabei ist es egal ob die vor oder nach der Abnahme entdeckt werden. Mängel sind Mängel und gehören behoben. Du verkaufst ja schließlich keine magelhafte Ware.

    Ein Gebrauchtwagen muss also funktionieren wie ein Neuwagen?Ein Schrottauto muss also funktionieren wie ein fabrikneues?
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Amin Negm-Awad schrieb:

    ioscampus schrieb:

    Amin Negm-Awad schrieb:


    Das ist ja cool. Wenn ich also hinreichend unbegabt bin, kann ich den letzten Scheiß abliefern.

    Ob das wirklich Juristen auch so sehen? Vor allem, wenn es der Anwalt des Auftraggebers ist.


    Wenn du hinreichend unbegabt bist, hat der Auswahlprozess versagt ;)
    Ja, du kannst den letzten Scheiß abliefern, sofern du nicht vorsätzlich Scheiße ablieferst.
    Das stimmt nicht.


    Auch wenn mich dein stichhaltiges Argument noch nicht überzeugt, werde ich mich in Rechtsfragen nicht mit einem Juristen anlegen. Ich denke nach wie vor das man in einem Dienstleistungsvertrag nur die Leistung eines Dienstes schuldet.
  • Und der Dienst muss ordnungsgemäß erbracht werden. Das erklärt sich eigentlich von selbst.

    Die Unterscheidung Dienst/Werk ist nur relevant, wenn das Endergebnis nicht stimmt, obwohl der Dienst ordnungsgemäß erbracht wurde. Es dürfte ohne Weiteres auf der Hand liegen, dass aber häufig das Endergebnis nicht stimmt, weil der Dienst nicht ordnungsgemäß erbracht wurde. Und dann ist es gleichgültig.

    Übrigens habe ich mich an die Stichhaltigkeit deines Argumentes orientiert.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Amin Negm-Awad schrieb:

    Thallius schrieb:


    1) Wenn du für das Projekt einen Festpreis gemacht hast und dafür die Menge Stunden X angegeben hast, dann must du natürlich auch Bugfixes danach kostenlos machen. Dabei ist es egal ob die vor oder nach der Abnahme entdeckt werden. Mängel sind Mängel und gehören behoben. Du verkaufst ja schließlich keine magelhafte Ware.

    Ein Gebrauchtwagen muss also funktionieren wie ein Neuwagen?Ein Schrottauto muss also funktionieren wie ein fabrikneues?


    Reden wir hier von Gebrauchtsoftware? Wenn ja, dann spezifiere mir mal bitte was du darunter verstehst. Ich glaube nicht das man "gebrauchten" Code programmieren kann...

    Wenn ich einen Gebracuhtwagen kaufe, der zum Zeitpunkt des Kaufes einen Mangel hat, den der Verkäufer nicht angibt, dann habe ich ein Anrecht auf Behebung oder Wandlung oder etwa nicht. Das ist genau das was ich bei Software auch habe. Der Bug kommt ja nicht erst rein wenn die Software eine Weile benutzt wird. Von daher hinkt der Vergleich mit einem Auto schon ziemlich.

    Ausserdem war das mit dem "Ich verkaufe keine Mangelhafte Software" auch nicht rechtlich gemeint sondern moralisch. Ich persönlich würde mcih schämen für die Behebung eines Bugs Geld zu nehmen den ich definitiv verbockt habe. Allerdings muss man dabei eben auch die Definition Bug im Auge behalten. Mein augenblicklicher Auftraggeber stellt allle neuen Features die er gerne hätte auch als Bug in Bugzilla ein. Das hat aber mit Bugs natürlich nichts mehr zu tun.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Danke für den guten Input!

    Es hat sich in der Tat in diesem Fall um ein Dienstleistung gehandelt. Und die Grenze zwischen Bug und Feature Request sehe ich auch als kritisch an. Oft ist es ja einfach eine fehlende Definition in den Anforderungen, die beim Kunden bei Nichterfüllung "Bug" bedeutet und für mich "Feature Request".
    In der Praxis mache ich es etwa so, wie mattik das beschreibt: fair sein, wenn man Mist gemacht hat. Ich finde es allerdings gefährlich generell zu sagen, dass Fixes unbezahlt sind. Das werden Kunden kreativ und die Diskussionen fangen an.
  • Verkauf Ihnen einfach einen Wartungsvertrag für die Software. Das ist in der Industrie gang und gäbe. Die Wartungskosten richten sich meistens nach den Projektkosten und belaufen sich meiner Erfahrung nach auf 20% der Projektsumme jährlich. Der Wartungsvertrag beinhaltet meistens Bugfixes und Anpassungen an äußere Umstände - z.B. Sicherstellung dass die Anwendung auch mit der neuen OS Version läuft.
  • ioscampus schrieb:

    Verkauf Ihnen einfach einen Wartungsvertrag für die Software. Das ist in der Industrie gang und gäbe.

    Und der wohl größte Schwachsinn auf Gottes Erden.

    Wie wartest Du ein funktionierendes Auto? Öl wechseln, anfällige Teile wie den Keilriemen rechtzeitig wechseln, die Batterie in regelmäßigen Abständen erneuern.
    Wie wartest Du eine funktionierende Software? Mehrfach aufgerufene Funktionen neu schreiben? Oft benutze Instanzvariablen ersetzen? Hoch frequentierte Klassen gegen frische Klassen austauschen?
    Software lässt sich nicht warten.

    Wie reparierst Du ein defektes Auto? Defektes Teil ausbauen, neues Teil einbauen (und nebenbei fluchen, weil Du so viel unnötigen Mist davor kleben hast, den Du erst ab- und dann wieder anschrauben musst)
    Wie reparierst Du eine defekte Software? Klar, die Codeteile neu schreiben.
    Wann wird ein funktionierendes Auto defekt? Bei Verschleiß. Bei einem Unfall. Bei Vandalismus. Also bei inneren und äußeren Einwirkungen.
    Wann wird eine funktionierende Software defekt? Verschleißen Methoden? Kann ein genervter Nutzer Deine Objekte mutwillig zerstören? Können Bits in der CPU mit anderen Bits zusammenstoßen und Schaden nehmen?
    Software wird nicht defekt.

    Diese Verträge sind eigentlich Erweiterungsverträge. Man vereinbart, dass für eine bestimmte Zeit die gleiche Funktionalität bei sich ändernden Umgebungseinflüssen gewährleistet wird.
    Es werden neue Felder benötigt –> kein Bug, sondern ein Feature Request
    Es läuft nicht mit der aktuellen Mac OS X Developer Preview –> kein Bug, sondern ein Feature Request
    Beim Auswerfen des Sicherungslaufwerks kachelt die App ab (und es war im Pflichtenheft nicht aufgeführt, dass das Sicherungslaufwerk portabel sein kann) –> kein Bug, sondern ein Feature Request

    Um bei der KFZ Äquivalenz zu bleiben:
    Der Smart ist nicht geländetauglich –> Anwendungsfehler
    Mit meiner Strechtlimo finde ich keinen Parkplatz in der Innenstadt –> Problem des Fahrers
    Die versprochenen 320km/h schafft mein Porsche nicht in der Wüste Gobi –> Physik
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Du scheinst mir im ersten Satz zu wirdersprechen, nur um später genau das auszudrücken, dass ich auch gesagt habe.

    Der Wartungsvertrag beinhaltet meistens Bugfixes und Anpassungen an äußere Umstände

    Man vereinbart, dass für eine bestimmte Zeit die gleiche Funktionalität bei sich ändernden Umgebungseinflüssen gewährleistet wird.


    Wir unterscheiden uns lediglich im Bezug auf Bugfixes. Anscheinend schließt die IEEE Definition von "Softwarewartung" Fehlerbehebungen mit ein. Du darfst da gerne anderer Meinung sein. In meinem beruflichen Umfeld gestaltet es sich so, dass Fehlerbehebungen Bestandteil der Softwarewartung sind.
  • Ich widerspreche Dir nicht im ersten Satz sondern hänge mich an dem Wort 'Wartung' auf.
    Nicht die Wartungsverträge sind der größte Schwachsinn unter den Zwölfgöttlichen Deres, sondern ihr Name.
    Es lässt sich nicht warten, was nicht kaputt gehen kann. Und es ist mir scheißegal wie die IEEE oder Hänschen Klein das wohl sehen mögen.
    Fakten haben die Beiden eh noch nie interessiert.

    Wenn es nichts mit Wartung zu tun hat sollte es gefälligst auch nicht Wartung heißen.
    (Soweit ich informiert bin hat sich bei der IEEE die Bezeichnung 'Service Contract' durchgesetzt – das passt schon eher.)

    Wer gewöhnt ist, dass Dinge 'Zitronenlimonade' heißen, obwohl diese nichts mit Zitronen zu tun haben, der versteht das vermutlich nicht.
    Nichts desto trotz ist das Meiste Wasser mit Zitronenaroma, wenngleich 'Zitronenlimonade' drauf steht.
    Und deshalb sind die Verträge auch nur Erweiterungs- und Anpassungsverträge, wenngleich 'Wartungsvertrag' drauf steht.

    Alles Etikettenschwindel.
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Thallius schrieb:

    Amin Negm-Awad schrieb:

    Thallius schrieb:


    1) Wenn du für das Projekt einen Festpreis gemacht hast und dafür die Menge Stunden X angegeben hast, dann must du natürlich auch Bugfixes danach kostenlos machen. Dabei ist es egal ob die vor oder nach der Abnahme entdeckt werden. Mängel sind Mängel und gehören behoben. Du verkaufst ja schließlich keine magelhafte Ware.

    Ein Gebrauchtwagen muss also funktionieren wie ein Neuwagen?Ein Schrottauto muss also funktionieren wie ein fabrikneues?


    Reden wir hier von Gebrauchtsoftware? Wenn ja, dann spezifiere mir mal bitte was du darunter verstehst. Ich glaube nicht das man "gebrauchten" Code programmieren kann...

    Wenn ich einen Gebracuhtwagen kaufe, der zum Zeitpunkt des Kaufes einen Mangel hat, den der Verkäufer nicht angibt, dann habe ich ein Anrecht auf Behebung oder Wandlung oder etwa nicht. Das ist genau das was ich bei Software auch habe. Der Bug kommt ja nicht erst rein wenn die Software eine Weile benutzt wird. Von daher hinkt der Vergleich mit einem Auto schon ziemlich.

    Ausserdem war das mit dem "Ich verkaufe keine Mangelhafte Software" auch nicht rechtlich gemeint sondern moralisch. Ich persönlich würde mcih schämen für die Behebung eines Bugs Geld zu nehmen den ich definitiv verbockt habe. Allerdings muss man dabei eben auch die Definition Bug im Auge behalten. Mein augenblicklicher Auftraggeber stellt allle neuen Features die er gerne hätte auch als Bug in Bugzilla ein. Das hat aber mit Bugs natürlich nichts mehr zu tun.

    Gruß

    Claus

    Es ist gleichgültig. Das Gesetz unterscheidet nicht zwischen verschieben Dingen. Es nimmt einen Sollzustand und vergleicht den mit dem Istzustand. Ob es sich um Autos, Software oder Toilettenpapierrollen handelt, interessiert nicht.

    "Wenn ich einen Gebracuhtwagen kaufe, der zum Zeitpunkt des Kaufes einen Mangel hat, den der Verkäufer nicht angibt, dann habe ich ein Anrecht auf Behebung oder Wandlung oder etwa nicht."

    Der maßgebliche Zeitpunkt ist beim Werkvertrag die Abnahme. Und wenn ich da den Fehler als Besteller kenne, dann nehme ich eben mit Fehler ab und das war es. Es ist eben so wie beim Gebrauchtwagenkauf: Was du weißt und dennoch nimmst, hast du gewusst und dennoch genommen. es ist also nicht gleichgültig, ob der vor oder nach der Abnahme entdeckt wird.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?