Hi, ich programmiere zwar schon ne Weile, bin aber bis jetzt noch nie in die Situation gekommen, meine Programme hinterher zu verkaufen...wie läuft das eigentlich? Muss man da aufpassen womit man programmiert, damit es hinterher keine rechtlichen Probleme gibt? Ich denke da an kleingedruckte Passagen in 500 Seiten EULA einer Open-Source-Software, die sich sowieso kein Mensch durchliest und die ein kommerzielles Vertreiben der Software untersagen oder so ähnlich... Und wie handhabt ihr das mit Programmierfehlern bzw. den Folgen? Ich meine, das Programm kann ja immer mal Fehler haben (und wenn es nur die Library selbst ist, die nen Bug hat, der erst nach Auslieferung und Inbetriebnahme der Software bekannt wird). Muss man, wenn man für ein Mittelständisches Unternehmen eine kleine Analyse-Software für die Live-Auswertung von seriell empfangenen Daten der Maschinen schreibt, gleich zum Anwalt rennen und alle möglichen Supergaus verklausulieren? Ich denke da an Regress-Forderungen oder ähnliches und frage mich, ob man als Programmierer auch dann Regress-Pflichtig ist, wenn die Software den Kunden z.B. nur € 500,- kostet und man aufgrund des geringen Betrages nicht mal einen Vertrag darüber abschließt? Und wie ist das mit der Kostenkalkulation und der Bezahlung üblich? Was nimmt ein Programmierer pro Stunde, oder gibt es da Unterschiede je nachdem was man programmiert? Schlägt man da besser vorher was drauf, um kleine Änderungen oder Ergänzungen dann "mal eben so" vorzunehmen, oder bittet man den Kunden, die GUI mit den Funktionen schon mal schriftlich festzuhalten, damit es hinterher keine Diskussionen gibt und man den Kunden dann im Falle von Nachbesserungen zur Kasse bitten kann? Lässt man sich einen Vorschuss geben oder wird alles am Ende gezahlt? Ist ja eine schwierige Situation, ich habe in anderen Bereichen da schon meine Erfahrungen machen müssen (Viel Vorarbeit investiert und Kunde ist dann trotzdem abgesprungen) und würde gerne wissen, wie es in diesem Bereich üblich ist, den Arbeitsaufwand vor dem eigentlichen Auftrag mit Bezug auf das finanzielle Risiko zu minimieren und ab welchem Zeitpunkt des Prozesses man sich bezahlen lässt? Gerade weil es sich um ein eher kleines Programm handelt, bei dem die Vorarbeit mit dem Kunden, um alle Informationen für die Erstellung des Programms zu erhalten, sicherlich ähnlich lange dauert wie die Programmierung an sich, bin ich mir nicht so sicher, wie ich das kalkulieren soll. Der Kunde könnte ja durchaus fragen wie lange ich daran sitze und was ich pro Stunde nehme... Vielen Dank, Hans
>und man aufgrund des geringen Betrages nicht mal einen Vertrag darüber
abschließt?
Ohne Vertrag ist Ärger ja wohl vorprogrammiert, oder nicht?
Vorher fest definieren, was gemacht werden soll. Dann über Abnahmekriterien sprechen (wie stellt der Kurde fest, dass das Programm funktioniert und die Anforderungen erfüllt) Später darfst du dann mit dem Kunden darüber streiten, ob die neue Funktion, die der Kunde jetzt will, in den ursprünglichen Anforderungen enthalten war (also von dir kostenlos geliefert werden soll), oder ob das eine Erweiterung des Programmes ist. Dann noch: Für 500€ bekommt kein Kunde ein Programm. Wenn man bei der Firma nicht angestellt ist, sind Stundensätze von 60 Euro die Regel. Das Programmieren verschlingt x Tage, die Dokumentation, Installation und Schulung noch 2*x Tage, also wirds deutlich mehr als 500 Euro. 500 Euro gibts lediglich für ein hingekotztes, nicht erweiterbares und wartbares Programm, das ein durchschnittlicher Student in einer Woche programmieren kann. Mach das der Firma klar, und verlange entsprechend mehr Geld!
Wenn sich Kunde und Programmierer nicht genau kennen sollte ein Pflichenheft erstellt werden. Da steht drin was gemacht wird, wielange es dauert und was es kostet. Falls das Pflichtenheft sehr umfangreich ist, kann schon dessen Erstellung eine Stange kosten. Wichtige Punkte sind : Wird die Software in Source uebergeben ? Wuerd ich als Kunde wollen. Soll Dokumentation dabei sein ? Ja sicher. Was ist Dokumentation ? Soviel, dass einer, der das Projekt und den Prozessor kennt daran was machen kann. Will der Kunde alle Rechte an der Software, dh Verveilfaeltigbarkeit, oder will er eine Lizenz pro Stueck zahlen. Das kommt auf die Ausgangsbasis an. Besteht vor dem Projekt nichts und nachher alles, kann er die Rechte kaufen. Besteht eine Vorarbeit und der Kunde will eine kleine Anpassung, gibt's die Rechte natuerlich nicht. Da gibt's noch einiges mehr ...
Daher gibts auch Software fuer weniger als 500 Euro. Ich nehm bestehende Software, mach'n button hin n'en anderen weg, ein paar Zeilen aendern, testen absenden. Natuerlich ohne die Source. Im anderen Fall, wenn der Kunde sparen will, klar wollen sie, ist eh alles viel zu teuer, dann ist auch keine Doku bei der Source.
> Muss man da aufpassen womit man programmiert, damit > es hinterher keine rechtlichen Probleme gibt? Ich denke da an > kleingedruckte Passagen in 500 Seiten EULA einer Open-Source-Software, > die sich sowieso kein Mensch durchliest und die ein kommerzielles > Vertreiben der Software untersagen oder so ähnlich... Hängt bei OSS stark von der verwendeten Lizenz ab. BSD-artige Lizenzen sind in der Regel weitaus weniger restriktiv, als die GPL. Bei den erzeugten Kompilaten müssen u.U. eventuelle Unterschiede bei statischer und dynamischer Linkung von Bibliotheken beachtet werden. Bei Closed-Source Compilern/IDEs gibt es u.U. Einschränkungen die die kommerzielle Verwendung untersagen (z.B. Borland C++Builder/Delphi Personal, VS Academic und div. VS CTPs) > Haftung, Bezahlung, Kalkulation, Verträge etc. Haftung: Selbst bei Werkverträgen lässt sich die Haftung nie vollständig ausschließen (BGB §639 und z.B. 1)). U.U. wäre hier auch eine passende Haftpflicht/Betriebshaftpflicht angebracht bzw. wird dies auch vertraglich vorausgesetzt. Bezahlung: Hängt vom Kunden, von der Projektart, der Projektdauer, dem Rahmenvertrag etc. ab (auch steuerliche Aspekte können eine Rolle spielen). Angemessene Abschläge sollten allerdings immer vereinbart werden (Teilabnahmen vereinbaren) Kalkulation/Risiko: Hängt stark vom Projekt ab. Wenn möglich/notwendig: Angebot bezahlen lassen (und ggf. bei Auftragserteilung verrechnen). - Stundensätze (nicht immer realistisch) z.B. bei GULP - Kann/darf die erstellte Software (oder Teile) daraus in anderen Projekten weiterverwendet werden? - Kann auf vorhandene Entwicklungen zurückgegriffen werden? - Folgeaufträge? - "Art" des Kunden? - etc. pp 1) Eine kleine Einführung zu Werkverträgen z.B. http://www.gulp.de/kb/lwo/vertrag/werkvertragueberblick_f.html
Hans wrote: > Und wie handhabt ihr das mit Programmierfehlern bzw. den Folgen? Ich > meine, das Programm kann ja immer mal Fehler haben Was heist 'kann'. Es wird Fehler haben. Am besten bereitest du deinen Kunden gleich darauf vor, dass da Fehler drinn sein werden. Vereinbare mit ihm einen Zeitraum nach Programmlieferung, in dem du Fehler korrigierst. Danach wirds kostenpflichtig. Das hat auch den Vorteil, dass das Programm nach Lieferung sofort auf Herz und Nieren getesten wird. Nichts ist schlimmer als wenn dein Kunde nach einem halben Jahr anruft und dir mitteilt, dass er jetzt endlich dazugekommen ist, dein Programm mal auszuprobieren. (und wenn es nur > die Library selbst ist, die nen Bug hat, der erst nach Auslieferung > und Inbetriebnahme der Software bekannt wird). Muss man, wenn man für > ein Mittelständisches Unternehmen eine kleine Analyse-Software für die > Live-Auswertung von seriell empfangenen Daten der Maschinen schreibt, > gleich zum Anwalt rennen und alle möglichen Supergaus verklausulieren? > Ich denke da an Regress-Forderungen oder ähnliches und frage mich, > ob man als Programmierer auch dann Regress-Pflichtig ist, Das wichtigste ist, dass du mit deinem Kunden exakt definierst, was die Software machen soll. Dazu gehören auch: Welche Methoden sollen benutzt werden und welche Formeln sollen benutzt werden. Dein Kunde muss dir bestätigen, dass mit diesen Formeln sein Problem gelöst wird. Wenn sich hinterher rausstellt, dass die Ergebnisse das Papier auf dem sie gedruckt sind nicht wert sind, dann hast du was in der Hand. Wenn es dein erstes Projekt ist: Nimm deine Zeitschätzung har und multiplizere sie mit mindestens einem Faktor von 2. Eher sogar mehr.
Hallo, sehr interessant was hier bisher angesprochen wurde, besonders der Link von Dir, Karl Heinz...wenn ich das richtig lese, hänge ich bei einem Vertrag letzten Endes immer in der Gewährleistung drin, selbst wenn etwas nicht genau ausformuliert ist. Besonders interessant finde ich den Punkt, der es dem Kunden bei einem vorausgesetzten und von mir nicht behebbaren Mangel ermöglicht, den Mangel Eigenmächtig beseitigen zu lassen und Ersatz der erforderlichen Aufwendungen zu verlangen (§637 BGB). Das könnte teuer für mich werden. Nicht das ich kein Vertrauen in meine Programmierfähigkeiten habe, aber ich möchte Streitigkeiten zur Freude von Winkeladvokaten am liebsten von vorneherein ausschließen. Soviel zur Gewährleistung, aber was sicherlich noch interessanter ist, ist die Frage der Haftung für den Fall, dass durch den Einsatz der Software irgendwelche Folgechäden verursacht werden? Kann man sich da wenigstens vernünftig absichern, ohne gleich ein Jura-Studium absolviert zu haben? Ich frage mich, ob es überhaupt noch möglich ist, Software ohne eine Maschinerie der rechtlichen Absicherung und Prüfung zu vertreiben? Normalerweise nickt doch der Nutzer bei der Installation zig Seiten Standard-Kleingedrucktes ab, die den Hersteller der Software absichern sollen...ist es nicht möglich, in Deutschland ein Programm auf ähnlicher Basis zu vertreiben? Natürlich ist mir klar, dass ich dann schlecht Pflichtenhefte und Vorverträge machen kann und somit auch nichts machen kann, wenn der Kunde mittendrin in der Entwicklung abspringt, aber theoretisch müsste es doch möglich sein, dass mir der Kunde nur die Software abkauft und sämtliche Risiken, die sich aus dem Einsatz dieser Software ergeben, selbst trägt und ich ihm im schlimmsten Fall - wenn ich merke, dass meine Umsetzung des Algorithmus fehlerhaft ist und auch nicht wie gewünscht umsetzbar ist, lediglich den Kaufpreis zurückerstatten muss... Mir geht es momentan mehr darum, dass ich nicht plötzlich wegen irgendwelcher Folgeschäden vor den Kadi gezerrt werde und ich mich mit dem Kunden darüber streite, ob jetzt die Formeln oder meine Umsetzung derselben schuld sind. Von daher trifft es der Begriff "hingekotzte" Software ohne Gewährleistung, Support und Dokumentation das Projekt wohl ganz gut, der Kunde kommt ja gerade deshalb zu mir, weil er NICHT den üblichen Stundensatz einer IT-Firma mit den vielen Anwälten, Versicherungen und Angestellten zahlen möchte. Obwohl ich langsam merke, dass der Übergang da fließend zu sein scheint und das Pflichtenheft wohl auch in meinem eigenen Interesse ist, da streng genommen ja auch die Gespräche mit dem Kunden einen mündlichen Vertrag darstellen können und der Gesetzgeber bei der Gewährleistung ohne entsprechend detailierte Vereinbarungen von einem nicht näher spezifizierten üblichen Standard von Programmen mit ähnlicher Funktion ausgeht und ich somit in jedem Fall Sorge tragen muss, dass mein Programm die gewünschte Funktion erfüllt. Bleibt zudem die Frage der Haftung und wenn es da einen Weg gibt, mit dem beide Parteien einverstanden sind und bei dem sich als maximales Risiko für mich ergibt, dass ich bei einer drohenden juristischen Auseinandersetzung den Kaufpreis zurückerstatten muss, würde ich das sehr begrüßen. Wie macht ihr das denn? Habt ihr alle Anwälte und Versicherungen bis der Arzt kommt und genügend finanzielle Reserve für Prozesse oder erledigt ihr das bisweilen auch mit einer eher "hingekotzten" Software und gesundem Menschenverstand? Wie schützt ihr euch vor Haftung, wenn ihr z.B. irgendwelche Prozesse automatisiert Steuern bzw. Regeln sollt und eine Fehlfunktion im Programm zu hohen finanziellen Schäden führen könnte? Auftrag gar nicht erst annehmen? Was kostet denn eine Haftpflicht, die solche Fälle eines selbständigen Programmierer abdecken? Gibts die auch für einen kurzen Zeitraum oder hänge ich dann über Jahre in einem Vertrag, den ich vielleicht nur für ein einziges Projekt abschließe?
Im Grunde gehts, wenns wirklich hart auf hart kommt, nur mit Winkeladvokaten. Allerdings sah zumindest meine praktische Erfahrung so aus, dass das 'im guten Einvernehmen' gelöst wird. Dein Kunde hat ja auch Interesse daran, dass du ihm für Wartungszwecke erhalten bleibst, also wird er nicht gleich zum Kadi laufen. > irgendwelche Prozesse automatisiert Steuern > bzw. Regeln sollt und eine Fehlfunktion im Programm zu hohen > finanziellen Schäden führen könnte? Sowas darf einfach nicht passieren. Das muss im Debugger, in einer Simulation, an der realen Hardware (zuerst wenn möglich mit verminderter Prozess-Geschwindigkeit) bis zum Umfallen getestet werden. Mit dem Kunden auch Fehlerszenarien ausmachen und festlegen, was im welchem Fehlerfall passieren muss. Da sind wir wieder beim Pflichtenheft. Eine Aussage ala 'das kommt bei uns nicht vor' ist nicht akzeptabel. Wenn ein Fehler theoretisch möglich ist, muss er auch behandelt werden. Denn irgendwann kommt er eben doch vor. Sag deinem Kunden einfach: "OK, in dem Fall formatiere ich dann die Festplatte. Wenns eh nie vorkommt...". Was glaubst du wie schnell er bei den Technikern nachfrägt, was man dann machen könnte. Ich erinner mich an die Steuerung einer Stranggussanlage die in Taiwan aufgebaut weren sollte. Da haben wir die PDP11 an eine Modellbahnalage angeschlossen, die die Förderstrecken darstellte. Da wurde dann wochenlang simuliert und getestet (auch Fehler und die Reaktion darauf!) bis die Steuerung einwandfrei funktionierte. Nach der Installation und Inbetriebnahme beim Kunden schlief dann ein Team im Rechnerraum auf Matratzen um im Falle des Falles sofort vor Ort sein zu können. OK. Da gings um andere Beträge aber wenn dein Kunde die Zahlung verweigert, weil die geforderte Uptime um ein paar Minuten nicht erreicht wird, dann lohnt sich das.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.