Quantifizierung des Preises für Quellcode und Softwareprodukt

9

Ich bin dabei, ein Projekt durchzuführen. Dafür muss ich Code schreiben und jede Menge davon. Der Kunde muss den gesamten Quellcode am Ende des Projekts einreichen.

Meine Frage ist: Wie quantifiziere ich den Preis für den Quellcode und das Softwareprodukt? Gibt es eine Metrik, der man folgt, um die Preisgestaltung zu bestimmen? Wie würde ich das Softwareprodukt quantifizieren?

Zusätzliche Informationen: Die Anwendung muss überall und in jedem Betriebssystem ausgeführt werden können, einschließlich Tablets (iPad, Galaxy-Registerkarten usw.), Smartphones (iPhone, Android-Telefone usw.) und auch im Internet. (Stellen Sie sich nun vor, wie viel Code dies sein wird) .

Buhake Sindi
quelle
2
Wenn jemand herausfindet, wie magisch der Preis eines Softwareprodukts anhand sich ständig ändernder, unklarer und oft unvollständiger Benutzeranforderungen quantifiziert werden kann, wird die Welt besser. Aber immer noch +1 auf die Frage.
Arseni Mourzenko
Die einzige zuverlässige Methode zur Preisgestaltung von Software: (1) Schreiben und Testen des Programms; (2) messen Sie Ihre Anstrengung; (3) Verkaufen Sie die Software basierend auf dem Aufwand, den Sie tatsächlich hatten.
Doc Brown
Sie sollten sich Appcelerator , Air und Haxe ansehen (die beide anvisieren oder NME verwenden können ).
back2dos
Dies ist nicht spezifisch für Programmierung oder Software. Es handelt sich um eine allgemeine Frage zur Preisgestaltung, die als programmierbezogene Frage getarnt ist.
I am about to undertake a project. This requires me to write code.... Programmierer + Projekt = Code (normalerweise). Warum das Offensichtliche sagen?
Dynamisch

Antworten:

12

Sie können nie einen genauen oder nahezu genauen Preis kennen, da dies von vielen Faktoren abhängt. Beispiel:

Fallstudie

Sie haben eine Anfrage für eine kleine Website erhalten, die auf WordPress basiert. Das einzige, was Sie tun müssen: Arbeiten Sie mit Ihrem Designer zusammen, um attraktive Grafiken zu erstellen, erstellen Sie dann die Website selbst (nichts hochtechnisches, nur eine Reihe von Plugins, die Sie zu WordPress hinzufügen können) und stellen Sie sie dann bereit. Da die Arbeit wirklich einfach ist, haben Sie 600 Dollar angegeben.

Ihr Designer hat den ersten Entwurf erstellt. Der Kunde erklärte, dass er es überhaupt nicht attraktiv finde. Gleiches galt für den zweiten, dritten und vierten Entwurf. Nach zwei Wochen harter Arbeit erhielt der Designer schließlich den Entwurf, der vom Kunden angenommen wurde.

Leider wurde der Designer von einem Bus angefahren und das einzige, was Sie bekamen, waren die JPEGs, die er Ihnen geschickt hatte, aber nicht die Original-PSDs. Sie mussten also mit einem neuen Designer von vorne beginnen. Schließlich haben Sie die Grafiken erhalten und Ihren Job begonnen.

Überraschung: Sie haben festgestellt, dass das Plugin A nicht mit dem Plugin B kompatibel ist, dass das Plugin C nicht wie erwartet funktioniert und dass das Plugin D nicht auf der neuesten Version von WordPress installiert werden kann, während das Plugin A nur installiert werden kann auf dieser neuesten Version. Jetzt müssen Sie viel PHP-Codierung von Hand ausführen. Da Sie ein Python-Entwickler sind und nie eine einzige Codezeile in PHP geschrieben haben, ist dies nicht die einfachste Aufgabe.

In der Zwischenzeit beginnt der Kunde, Ihnen beängstigende E-Mails zu senden und zu fragen, warum die Arbeit noch nicht erledigt ist, während die Frist vor einer Woche lag. Sie beenden endlich die PHP-Codierung und alles funktioniert perfekt auf Ihrem Computer. Der Kunde ist glücklich.

Anschließend beginnen Sie mit der Bereitstellung der Website auf dem Hosting-Server und stellen fest, dass nicht nur die Website mit einem kryptischen Fehler ausfällt, sondern auch das Hosting-Unternehmen eine PHP-Funktion, die Sie häufig in Ihrem Code verwendet haben, nicht unterstützt.

Nachdem Sie mehr als 3.000 US-Dollar für dieses Projekt ausgegeben haben, ist die Website endlich betriebsbereit. Der Kunde ist wütend wegen der Fristen und weil "bei Ihnen nichts wie erwartet funktioniert". Würden Sie 600 Dollar fragen? 3.000 US-Dollar?

Warum passiert das?

Was ich in diesem Beispiel dargestellt habe, passiert viel häufiger, als Sie vielleicht glauben. Warum? Weil es zu viele Variablen gibt, die Sie nicht vorhersagen können und die das Risiko erhöhen. Hier wurde das Risiko erhöht durch:

  • Die unklaren Spezifikationen in Bezug auf visuelles Design,
  • Der Tod des Designers,
  • Die Inkompatibilität der von Ihnen ausgewählten Plugins,
  • Die schlechte Unterstützung der von Ihnen ausgewählten Plugins,
  • Die Tatsache, dass Sie PHP noch nicht verwendet haben,
  • Der Unterschied zwischen der Entwicklungsumgebung und der Produktionsumgebung und das Fehlen von Staging.

Man könnte diese Probleme mit spezifischen Ansätzen lösen:

  • Klare und präzise funktionale und nicht funktionale Anforderungen,
  • Hit-by-a-Bus-Szenariomanagement (dh der Designer musste jedes Dokument mit Ihnen teilen, damit er jederzeit tot sein konnte, ohne das Projekt zu gefährden),
  • Vorkenntnisse in Tools und Sprachen, die Sie verwenden müssen (was viel Arbeit erfordert ),
  • Inszenierung, intensive Tests usw.

Das einzige Problem ist, dass Sie Ihrem Kunden bei diesem Ansatz mitteilen müssen, dass er in erster Linie mindestens 5.000 US-Dollar zahlen würde, da dies tatsächlich der Preis für Anforderungen, Spezifikationen, Design, Tests usw. ist. Chancen, die dieser Kunde akzeptiert Ihr Angebot ist extrem niedrig.

Es gibt also nichts zu tun?

Wenn Sie keinen sehr genauen Preis angeben können, können Sie dennoch eine Annäherung angeben, die jeden Teil der Arbeit separat berücksichtigt, wobei für jeden Teil ein Risikoindex betroffen ist. Je höher das vorhersehbare Risiko ist, desto höher ist der Preis.

Sie haben zwei Möglichkeiten, dies zu tun:

1. Watefally Weg

Wenn Sie an Projekten arbeiten, die zum Wasserfall / V-Modell passen, funktioniert dies möglicherweise:

  1. Listen Sie die funktionalen und nicht funktionalen Anforderungen eines Projekts auf. Lassen Sie das Dokument vom Kunden genauso unterschreiben, wie er den Vertrag unterschreibt.

  2. Sobald Sie dieses Dokument erhalten haben, haben Sie bereits:

    • Der Preis, den Sie bereits für das Sammeln der Anforderungen und das Erstellen dieses Dokuments ausgegeben haben. Dies kann einen wichtigen Geldbetrag darstellen, da diese Dokumente für ein gewöhnliches Projekt zwischen zwanzig und hundert Seiten variieren können und für große Projekte Hunderte oder Tausende von Seiten umfassen können.

    • Das klare, präzise und vollständige Verständnis des Produkts, zu dem Sie aufgefordert werden.

  3. Gehen Sie Schritt für Schritt mit Ihrem Team, analysieren Sie jede Anforderung und bewerten Sie:

    • Ein Durchschnittspreis für diesen Teil des Projekts,

    • Ein Höchstpreis ohne Berücksichtigung des Risikos,

    • Ein Risikoindex.

    Alle drei werden berücksichtigt, um den Preis zu bestimmen, den Sie dem Kunden geben.

  4. Nutzen Sie das Risiko, das nicht von einer bestimmten Anforderung abhängt, sondern von der Kompatibilität zwischen den Anforderungen oder vom System im Allgemeinen.

Vorteile des Waterfally-Ansatzes: Der Kunde erhält einen Preis, der ziemlich genau ist, wenn man bedenkt, dass Sie eine sehr klare Vorstellung von der zu erledigenden Arbeit und den möglicherweise auftretenden Risiken haben.

Nachteile des Waterfally-Ansatzes: Sie müssen ein 200-seitiges Dokument schreiben, bevor Sie den Preis angeben. Was ist, wenn der Kunde das Projekt in der Zwischenzeit abbricht oder gleichzeitig zu Ihnen geht? Der gesamte Prozess ist auch extrem schwer und die Anforderungen können sich später nicht ändern.

2. Agiler Weg

Wenn Sie an Projekten arbeiten, die zu Scrum oder anderen agilen Modellen passen:

  • Geben Sie entweder nicht den Gesamtpreis des Projekts an, sondern die Preise für jede Komponente.
  • oder Sie geben zu Beginn einen sehr ungefähren Gesamtpreis an und geben dann den immer genaueren an.

In beiden Fällen sollten Sie entweder ein starkes Vertrauen zwischen Ihnen und dem Kunden haben oder hervorragende Mitarbeiter in der Verkaufsabteilung haben. Andernfalls,

  • Im ersten Fall würde die Person glauben, dass Sie nur ihr Geld stehlen und immer wieder nach kleinen Beträgen fragen, und dies wird niemals enden.

  • Im zweiten Fall würde die Person nicht verstehen, warum Sie Ihren Preis ständig ändern, insbesondere wenn der Preis die meiste Zeit steigt.

Vorteile des agilen Ansatzes: Der Kunde kann jederzeit kündigen. Wenn sie frühzeitig abbricht, hat sie immer noch einen Quellcode, der funktioniert.

Nachteile des agilen Ansatzes: Der Preis ist zu ungenau oder nicht einmal angegeben. Die meisten Kunden wären nicht bereit, mit Ihnen Geschäfte zu machen, wenn Sie ihnen nicht sagen, wie viel sie bezahlen müssen.

Arseni Mourzenko
quelle
3

Akzeptieren Sie ein Projekt nicht, wenn nicht klar ist, welches Ergebnis und welches Geld der Kunde zahlen muss. Ich mache einfach folgendes:

  • Überlegen Sie sich Schritte und Zahlungen, die der Kunde ausführen muss.
  • Wenn der vorherige Schritt abgeschlossen und vollständig bezahlt ist und der Kunde glücklich ist, zum nächsten überzugehen.

Wählen Sie für die Zahlungsmethode die Zahlung basierend auf den Funktionen aus. Wenn der Kunde also die Möglichkeit hat, die Funktionen zu löschen, wenn er nicht das gesamte Projekt bezahlen kann.

Es ist eine dumme Sache, basierend auf Codezeilen (LOC) bezahlt zu werden. Weil LOC nichts bedeutet!. Seien Sie schlau, schreiben Sie einen guten Code und berechnen Sie basierend auf der Funktion!.

Viel Glück,

Asghar Ashgari
quelle
1
+1 für den Hinweis auf LOC ist die falsche Metrik. Und Meilensteine ​​sind der kluge Weg, um bezahlt zu werden
jqa
0

Akzeptieren Sie keinen festen Preis für eine unbefristete Verpflichtung. Sie werden jedes Mal geschraubt, wenn Sie dies tun.

ddyer
quelle
+1 'Festpreisentwicklung' war die Strategie vieler gescheiterter Unternehmen
jqa