Forum: PC-Programmierung Programm für Kunden erstellen, was muss man beachten?


von Hans (Gast)


Lesenswert?

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

von Bartli (Gast)


Lesenswert?

>und man aufgrund des geringen Betrages nicht mal einen Vertrag darüber 
abschließt?

Ohne Vertrag ist Ärger ja wohl vorprogrammiert, oder nicht?

von Stock H. (winkelmesser)


Lesenswert?

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!

von Sabb (Gast)


Lesenswert?

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 ...

von Sabb (Gast)


Lesenswert?

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.

von arc (Gast)


Lesenswert?

> 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

von Karl H. (kbuchegg)


Lesenswert?

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.

von Hans (Gast)


Lesenswert?

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?

von Karl H. (kbuchegg)


Lesenswert?

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
Noch kein Account? Hier anmelden.