Offshoring eines Softwareprojekts - Konfliktlösung [geschlossen]

11

Ich war beauftragt worden, ein Projekt zu verwalten, das an einige ukrainische Entwickler ausgelagert war.

Das Unternehmen stellte sie über Elance zu einem festen Preis ein . Zu diesem Zeitpunkt ließ mich mein Chef allein , um mich um sie zu kümmern und die Arbeit zu erledigen. Ich habe eine detaillierte Spezifikation des gesamten Vorgangs erstellt.

Das Projekt umfasste Dinge wie XMPP, RabbitMQ und Datenbank. Bei meinem ersten Treffen mit ihnen (immer IM) erklärte ich gründlich, was sie tun mussten. Sie schienen es zu verstehen - und sie waren sehr zuversichtlich, dass es leicht gehen würde.

So weit, ist es gut. Aber nach einer Woche, als wir uns wieder trafen, waren sie voller Missverständnisse darüber, was getan werden musste. Als ich einen der Entwickler fragte, ob er XMPP kenne, sagte er, er arbeite zum ersten Mal damit. Bei unserem ersten Treffen hatte ich ganz speziell die Komplexität des Projekts und die damit verbundenen Technologien erwähnt. Außerdem hatte ich sie wiederholt gebeten, eine Funktionsspezifikation zu schreiben, die genau beschreibt, wie sie dies tun würden. Aber sie sagten NEIN und bestanden darauf, dass sie lieber den Code schreiben würden. Ich sagte OK.

Das Projekt wurde nach 3 Wochen abgeschlossen und sie lieferten, was benötigt wurde. Zu diesem Zeitpunkt begann ich, den Code zu überprüfen. Es war größtenteils in Ordnung, aber es gab einige wichtige Probleme:

  • Sie haben einige Dinge, die getrennt werden mussten, in eine Konfigurationsdatei fest codiert
  • Es gab mehrere Konfigurationsdateien, die ich in einer konsolidieren musste
  • Sie haben absolut keine Dokumentation geschrieben
  • einige andere kleinere Änderungen

Ich habe sie gebeten, diese Änderungen vorzunehmen (außer Dokumentation) - und wir hatten einen Streit.

Sie sagten, da der Preis fest war, habe ich sie zu Unrecht gebeten, Änderungen vorzunehmen, sobald sie den Arbeitscode ausgefüllt haben. Dass sie unangemessen lange an dem Projekt gearbeitet hatten und es nun völlig falsch war, um irgendetwas zu bitten.

Endlich haben sie die Änderungen vorgenommen und das Projekt ist beendet. Aber es bleiben einige Fragen in meinem Kopf ...

  • Sie haben getan, was nötig war, aber ich musste es richtig machen , und daher die Änderungen. War ich wirklich unfair?

  • Warum habe ich zugestimmt, sie ohne Funktionsspezifikation codieren zu lassen?

  • Warum habe ich nicht sichergestellt, dass sie beim ersten Mal alles verstanden haben?

Befindet sich jemand in der gleichen Position? Denken Sie, dass es einen besseren Weg gibt, ausgelagerte Projekte zu verwalten?

- UPDATE -

Vielen Dank für alle Meinungen - nachdem ich über die gesamte Erfahrung nachgedacht habe, kann ich schließen ...

  • Obwohl ich in den Spezifikationen von meiner Seite nicht vage war, habe ich sie sicherlich nicht wie vorgeschlagen verkleidet . Das Mitnehmen lautet also: Seien Sie immer so genau wie möglich - lesen Sie Ihre Spezifikationen auch aus ihrer Perspektive und sehen Sie, ob Sie etwas verpasst haben. Wiederholen Sie es mindestens dreimal.

  • Nur anzugeben, was der Code tun soll, reicht nicht aus. Sie müssen angeben, wie der Code aussehen soll. Wie wird die Verzeichnisstruktur sein? wenn möglich sogar die Dateinamen. Dies erspart Ihnen später viel Ärger. Geben Sie die Codierungsrichtlinien, Namenskonventionen für Variablen, das interne Dokumentationsformat usw. genau an. Achten Sie darauf, dass diese Richtlinien eingehalten werden, und schreien Sie, wenn nicht.

  • Fordern Sie von ihrer Seite eine Funktionsspezifikation an - bestehen Sie darauf, dass diese vor jedem Code geschrieben wird. Dies wird viele Verwirrungen und Missverständnisse aus dem Weg räumen.

  • Überprüfen Sie den Code während der Entwicklung, damit Sie die Anomalien früher erkennen und korrigieren können. Sprechen Sie mindestens alle zwei Tage mit ihnen.

  • Versuchen Sie zum Schluss, ein gutes Verhältnis zu ihnen herzustellen. Geben Sie ihnen das Gefühl, dass Sie ihre Arbeit schätzen. Schieben Sie sie nicht übertrieben, um sie Ihren Richtlinien anzupassen - fordern Sie sie stattdessen auf, dies zu tun, und teilen Sie ihnen mit, dass dies die Pflege des Codes für Sie nach Abschluss des Projekts erheblich vereinfachen würde.

Baumkodierer
quelle
1
Ich habe noch nie ein Offshore-Projekt so gut laufen sehen. Ich dachte, ich hätte eine Kriegsgeschichte vor mir, als ich anfing, diese zu lesen.
smp7d

Antworten:

13

Zunächst einmal handelt es sich nicht um ein Off-Shoring-Problem, sondern um ein Problem der Lieferantenverwaltung

Ja, du hast VIELE Fehler gemacht ...

Sie haben getan, was nötig war, aber ich musste es richtig machen, und daher die Änderungen. War ich wirklich unfair?

Ja, es ist fair. Wenn Sie wollten, dass es auf eine bestimmte Weise gemacht wird, hätten Sie das sagen müssen, bevor der Preis vereinbart wurde, damit sie entsprechend bieten können.

Warum habe ich zugestimmt, sie ohne Funktionsspezifikation codieren zu lassen? Weil du nicht für die Spezifikation bezahlen wolltest! Die Dokumentation ist zeitaufwändig und teuer. Sollten sie dies nur kostenlos tun?

Warum habe ich nicht sichergestellt, dass sie beim ersten Mal alles verstanden haben?

Sie haben verstanden. Aber bei Ihrem ersten Treffen NACH der Unterzeichnung des Vertrags (und dem vereinbarten Festpreis) haben Sie ihn EXPARIERT! Also die Kosten (Stunden) zu senken, wo immer sie konnten. Grundsätzlich nur eine Sitzung pro Woche abhalten, keine Konfutationsoptionen geben.

So geht's beim nächsten Mal… In zwei Phasen…

Phase 1: Lassen Sie sie die Anforderungen sammeln, die Systemanalyse durchführen und das technische Design und / oder die Funktionsspezifikation schreiben (oder selbst schreiben). Vereinbaren Sie einen Preis für diese Phase. Stellen Sie sicher, dass Sie nicht verpflichtet sind, ihnen die Entwicklungsphase zu geben. Stellen Sie sicher, dass Sie die Zeit für das Treffen im Preis angeben.

Phase 2: Lassen Sie sie auf der Grundlage der Spezifikation bieten, die sie (und Sie) haben, und wissen Sie wirklich, dass der Aufwand damit verbunden ist. Achten Sie auch hier darauf, Zeit für Besprechungen in den Preis einzubeziehen. Weil ein kleines optionales Budget für Änderungen enthalten sein soll.


Bearbeiten: Ich möchte einen zusätzlichen Punkt hinzufügen. Der Anbieter ist auch hier schuld. Ein Teil seiner Arbeit ist zu hilfreich, um Sie beim Projektmanagement zu unterstützen und Sie wissen zu lassen, wo im Prozess Mängel auftreten.

Idioten
quelle
2
Du hast Phase 3 und Phase 4 vergessen: ??? und Gewinn :-)
Ramhound
3
Wie können Sie eine externe Entität bitten, Ihre Funktionsspezifikation zu schreiben? Die Funktionsspezifikation entspricht den Anforderungen des Projekts, an dem sie arbeiten sollen. Ansonsten gibst du ihnen Geld und sagst ihnen: "Löse ein Problem, ... ich weiß nicht, finde heraus, was die Software tun soll, ich kann mich nicht darum kümmern."
maple_shaft
1
@maple_Shaft Guter Punkt, das Sammeln von Anforderungen ist Teil der Phase 1. Ich werde meine Antwort aktualisieren.
Idioten
1
-1 für den veralteten Wasserfall Dogma Mist
3
@JarrodRoberson Ich bin kein Fanjunge einer bestimmten Methodik. Jeder hat seine Vorzüge, aber zu sagen, dass sie versagt haben, nur weil sie Agile nicht verwendet haben, ist falsch.
Idioten
17

Ich musste es richtig machen

Dann lagern Sie es nicht aus, oder stellen Sie in diesem Fall sicher, dass sie in Ihrem Projektteam funktionieren und dass Sie zu diesem Zeitpunkt an Codeüberprüfungen teilnehmen.

Das Projekt wurde nach 3 Wochen abgeschlossen und sie lieferten, was benötigt wurde. Zu diesem Zeitpunkt begann ich, den Code zu überprüfen.

Auch hier sollten Sie den Code während des Projekts überprüft haben, nicht danach.

Sie sagten, da der Preis fest war, habe ich sie zu Unrecht gebeten, Änderungen vorzunehmen, sobald sie den Arbeitscode ausgefüllt haben.

Sie haben ihnen einen festen Preis für den Arbeitscode gezahlt. Hoppla. Das ist nicht ihre Schuld, es ist deine. Zahlen Sie für ihre Zeit, um an Sprints teilzunehmen, die Sie kontrollieren, und Sie werden nicht auf dieses Problem stoßen. Sie sollten sie für die Zeit und akzeptierte User Stories bezahlen, nicht für Code.

Bei meinem ersten Treffen mit ihnen (immer IM) erklärte ich gründlich, was sie tun mussten. Sie schienen es zu verstehen - und sie waren sehr zuversichtlich, dass es leicht gehen würde.

Wenn Sie sich mit einem vollständig ausgelagerten Projekt befassen, müssen Sie sicherstellen, dass Ihre Spezifikationen nicht eingehalten werden. Wenn Sie etwas erklären müssen, das länger als ein paar Sätze dauert, ist Ihre Spezifikation nicht vollständig. Deshalb sind sie von der Spezifikation abgewichen.

Als ich einen der Entwickler fragte, ob er XMPP kenne, sagte er, er arbeite zum ersten Mal damit.

Beim Outsourcing in beliebte, kostengünstige Offshoring-Länder ist es üblich, dass Entwickler ihre Lebensläufe und Fähigkeiten überfüllen, um den Job zu bekommen. Sie machen sich oft keine Sorgen um ihre Fähigkeiten, bis sie es landen, weil viele von ihnen gerade wieder bauen, um den Gig zu landen, der tatsächlich einen komfortablen existenzsichernden Lohn zahlt.

Warum habe ich zugestimmt, sie ohne Funktionsspezifikation codieren zu lassen?

Nur Sie können dies selbst beantworten, aber nehmen Sie es als Lernerfahrung für das nächste Mal.

maple_shaft
quelle
2
Ich bin nicht einverstanden mit "Wenn Sie es richtig machen wollen, geben Sie es nicht heraus".
Idioten
1
@Morons Dein Recht natürlich, das war eine faule Sache zu sagen. Ich gehe nur standardmäßig auf diese Einstellung ein, weil die Unternehmen, die sich am meisten für die Aussicht auf Offshoring interessieren, diejenigen sind, denen die Disziplin am meisten fehlt, um dies richtig zu tun. Wenn sie ihre internen Probleme so lösen würden, dass sie es richtig machen könnten, müssten sie wahrscheinlich gar nicht erst vor der Küste sein.
maple_shaft
3
Es sollte heißen "Wenn Sie es richtig machen wollen, erwarten Sie keine Qualität vom niedrigsten Bieter" , sagt ein Freund, der ein freiberuflicher Fotograf ist, "Die billigsten Kunden haben die unrealistischsten Erwartungen"
1
Ich bin auch mit dieser Aussage nicht einverstanden, Sie können genau das gleiche Problem mit internen Teams oder lokalen Entwicklungsgeschäften haben.
7

Das Unternehmen stellte sie über Elance zu einem festen Preis ein. Zu diesem Zeitpunkt ließ mich mein Chef allein, um mich um sie zu kümmern und die Arbeit zu erledigen. Ich habe eine detaillierte Spezifikation des gesamten Vorgangs erstellt.

Also haben Sie beide zuerst einen Vertrag abgeschlossen und dann haben Sie eine Spezifikation geschrieben, und sie haben diese Spezifikation akzeptiert, um Teil Ihres Vertrags zu werden? Wenn es so war, dann ist es nicht deine Schuld, das ist eine Schuld deines Auftragnehmers. Sie hätten leicht eine Spezifikation schreiben können, die ihnen 3 Monate Arbeit statt 3 Wochen gibt - alles zum gleichen Preis.

Es war größtenteils in Ordnung, aber es gab einige wichtige Probleme:

  • Sie haben einige Dinge, die getrennt werden mussten, in eine Konfigurationsdatei fest codiert
  • Es gab mehrere Konfigurationsdateien, die ich in einer konsolidieren musste
  • Sie haben absolut keine Dokumentation geschrieben
  • einige andere kleinere Änderungen

Waren diese Dinge Teil Ihrer Spezifikation? Wenn sie es waren, ist es ihre Schuld. Wenn nicht, gehört es dir. Wenn nicht wirklich klar war, ob diese Dinge in der Spezifikation enthalten sind, dann ist es auch Ihre Schuld, da Sie das Dokument geschrieben haben. Versuchen Sie beim nächsten Mal, eine bessere Spezifikation zu schreiben.

Doc Brown
quelle
3

Ich habe vor einiger Zeit eine Präsentation über Offshoring gemacht. Es hieß "Global Outsourcing, 10 Tipps zur Stärkung Ihres Unternehmens". Hier ist eine Zusammenfassung der 10 Tipps (dies stammt aus bis zu 400 ausgelagerten Projekten):

Eine Wahl

  1. Vermeiden Sie die niedrigsten und höchsten Bieter . Dies ist nur offensichtlich, Sie möchten kein Risiko mit niedrigeren Bietern eingehen, und Höchstbietende sind in der Regel weniger wertvoll (Wert / Preis) als der Median.

  2. Überprüfen Sie die Bewertungen (oder Referenzen) . Ich überprüfe immer Referenzen und Bewertungen.

  3. Motivation priorisieren . Zum gleichen Preis wähle ich das motivierte Gebot aus. Zum Beispiel ist es ein sehr gutes Zeichen, wenn der Bieter über Ihr Projekt spricht.

B. Überwachung

  1. Schützen Sie Ihr geistiges Eigentum . Dies ist einer der größten Fehler. Wird normalerweise von der Plattform verwaltet, die Sie verwenden (z. B. vworker oder elance).

  2. Benutzerdefinierte Frameworks ablehnen . Oder Sie riskieren, daran gebunden zu sein, oder genauer gesagt an den Entwickler, der es geschrieben hat;)

  3. Standards auferlegen . Bezogen auf vorherigen Tipp. Die Verwendung von Standard erhöht den Wert Ihres Quellcodes, da dies für eine größere Anzahl von Entwicklern verständlich ist.

  4. Früh prüfen, häufig prüfen . Das meiste Problem kann "angepasst" werden, wenn Sie den Quellcode nach der ersten Woche oder Arbeit überprüfen.

C. Strategie

  1. Testanbieter mit kleinen Projekten . Bevor ich einem Anbieter ein großes Projekt gebe, teste ich es mit einem oder zwei kleineren Projekten.

  2. Akzeptieren Sie mehrere Bieter, um das Risiko zu verringern . Für ein kritisches Projekt wähle ich zwei oder drei Bieter aus und nehme dann die beste Implementierung. Arbeiten Sie am besten mit kleinen Projekten (unter 5000 US-Dollar).

  3. Komponenten zusammenbauen . Eine andere Strategie besteht darin, Komponenten auszulagern, die Sie später zusammenbauen. Ein Vorteil ist, dass Sie problemlos zwischen Anbietern wechseln können und keiner wirklich Zugriff auf das Ganze erhält (reduzieren Sie das Risiko von geistigem Eigentum).


quelle
1

Ich stimme der Antwort von maple_shaft voll und ganz zu.

Sie haben den Code akzeptiert und ich nehme an, Sie haben den Scheck geschrieben und dann den Code überprüft. Sie haben alles rückwärts gemacht.

Warum habe ich zugestimmt, sie ohne Funktionsspezifikation codieren zu lassen?

Weil du es nicht in den Vertrag geschrieben hast. Da Sie wollten, dass die Arbeit erledigt wird, haben Sie ihre Gründe akzeptiert, obwohl es genau das ist, was Sie in Schwierigkeiten gebracht hat.

Warum habe ich nicht sichergestellt, dass sie beim ersten Mal alles verstanden haben?

Sie hätten ihnen ein Design zur Verfügung stellen sollen, von dem Sie glaubten, dass es funktioniert hätte. Dann wäre es nicht wirklich wichtig, wenn sie nicht vollständig verstehen würden. Ich meine, du hast sie nicht dafür bezahlt, also wer wird es tun? Wie wird dieser Code ohne Dokumentation und Designspezifikationen gepflegt? Die Antwort wird es wahrscheinlich nicht sein .

Sie sagten, da der Preis fest war, habe ich sie zu Unrecht gebeten, Änderungen vorzunehmen, sobald sie den Arbeitscode ausgefüllt haben.

Sie haben Glück, dass sie die gewünschten Änderungen vorgenommen haben. Sie hätten sagen können: Pech

Befindet sich jemand in der gleichen Position? Denken Sie, dass es einen besseren Weg gibt, ausgelagerte Projekte zu verwalten?

Natürlich sind andere Leute in Ihrer Position, sonst würde die gesamte "Outsourcing" -Industrie nicht schaden, viele Unternehmen beginnen zu erkennen, dass es teurer ist, 3- und 4-mal dafür zu zahlen (oder zu warten), als es einmal richtig zu machen .

Zumindest können Sie den Status des Projekts täglich überprüfen, indem Sie es selbst tun. Wenn Sie im Rückstand sind, können Sie zumindest theoretisch Maßnahmen ergreifen, um den Schaden zu kontrollieren.

Ramhound
quelle
1
companies are starting to realize having to pay ... to do it 3 and 4 times is more expensive then doing it right once.Es ist mehr als das, ich denke nur, dass die Flitterwochenphase der Branche mit der Offshoring-Softwareentwicklung zu Ende geht und immer mehr Unternehmen erkennen, dass es nicht das goldene Kalb ist, von dem sie dachten, dass es es sein würde ( oder es ihnen gesagt wurde) von Beratern sein ). Die meisten Führungskräfte sind scheiße und haben keine Ahnung warum. Deshalb suchen sie nach der Silberkugel, um all ihre Probleme zu lösen. Offshoring ist großartig, wenn Sie es richtig machen, aber die meisten haben keine solche Disziplin.
maple_shaft