Nachdem ich über ein Jahr lang mit WordPress und BuddyPress an einem sozialen Netzwerkprojekt für mich gearbeitet habe , ist mein Programmierer verschwunden, obwohl er jede Woche für den gesamten Zeitraum bezahlt wurde. Ja, er ist nicht tot, da ich einen E-Mail-Tracker verwendet habe, um zu bestätigen, dass er meine E-Mails öffnet, aber er antwortet nicht. Es scheint, als hätte er einen anderen Job. Ich frage mich, warum er es einfach nicht sagen konnte. Und ich habe ihm sogar ein Vorschussgehalt für die Arbeit gezahlt, die er nicht getan hat.
Das Problem ist, dass ich nie nach vollständiger Dokumentation für die meisten Funktionen gefragt habe, in denen er programmiert hat. Und es gab VIELE Funktionen für diesen Zeitraum von mehr als einem Jahr, und einige von ihnen haben Fehler, die er immer noch nicht behoben hat. Jetzt scheint alles verwirrend.
Was soll ich jetzt als erstes tun? Wie gehe ich vor?
Ich denke, das erste, was zu tun ist, ist, einen anderen Programmierer zu finden, aber ich möchte auf dem richtigen Fuß beginnen, indem ich den gesamten aktuellen Code dokumentiere, so dass jeder Programmierer problemlos an allen Funktionen arbeiten kann.
Ist das das erste was ich tun soll? Wenn ja, wie gehe ich vor?
Was ist die Standarddokumentation, die für so etwas benötigt wird? Kann ich einen Programmierer bekommen, der nur die Dokumentation für alle Codes erstellt und die Fehler behebt, oder ist die Dokumentation nicht wirklich wichtig?
Denken Sie auch, dass es besser ist, einen anderen "individuellen" Programmierer zu finden, oder ein Unternehmen, in dem Programmierer arbeiten, damit ein anderer Programmierer ihn ersetzen kann, wenn der meinem Projekt zugewiesene Programmierer verschwindet? Ich denke, das ist der Ansatz, den ich am Anfang hätte verfolgen sollen.
Antworten:
Aufgrund der Interaktion, die wir in den Kommentaren hatten, gehe ich davon aus, dass Sie Ihren einzigen Entwickler nicht aus persönlichen Gründen vertrieben haben. Anhand dieses Gesprächs werde ich jedoch eine andere Vermutung anstellen, dass dieser Rückschlag nach wie vor hauptsächlich in Ihrer Verantwortung als Personalchef liegt. Wie Sie bereits sagten, haben Sie keinerlei Erfahrung mit Entwicklern, aber wie treffen Sie dann eine Entscheidung darüber, wie Sie einen einstellen?
Es hört sich so an, als hättest du dein Bestes gegeben, aber du hast jemanden eingestellt, der einfach nicht mit dem Ausmaß dieses Projekts fertig wurde. Er hat ein wackeliges Fundament gebaut, das unter ihm zusammengebrochen ist, und dann ist er einfach gegangen. Leider besteht der Unterschied zwischen Entwicklern und Unternehmern darin, dass die ersteren stündlich / als Gehalt bezahlt werden. Er wurde für die Stunden, die er arbeitete, bezahlt und ging, als er beschloss, nicht mehr bezahlt zu werden. Daran können Sie nichts ändern.
So was nun? Anscheinend sind Sie den Weg gegangen, Menschen durch Prozesse zu ersetzen. Wenn Sie nur genügend Unterlagen hätten, könnten die Leute gehen und andere könnten dort weitermachen, wo sie aufgehört haben. IMO, das nicht funktioniert, und wenn es funktioniert, ist es immer noch viel teurer als ein zuverlässiges Team fest angestellter Mitarbeiter. Das Management verschiedener Unternehmen hat in den letzten 30 Jahren versucht, die Mitarbeiter durch ausreichende Unterlagen (einschließlich meines letzten Jobs) zu ersetzen, was jedes Mal fehlgeschlagen ist. Aus diesem Grund habe ich beschlossen, den Job zu wechseln, und jetzt sind sie mit ihren veralteten und nie korrekten Dokumenten festgefahren, während ich in einem neuen Startup die Zeit meines Lebens habe.
Wenn Sie es wären, würde ich versuchen, die richtige Person zu finden, die über die erforderlichen Fähigkeiten und Erfahrungen verfügt, um dieses Projekt aufzugreifen und zum Abschluss zu bringen. Dies beinhaltet nicht nur Programmierkenntnisse, sondern auch Design, Architektur sowie grundlegendes Projektmanagement. Versuchen Sie nicht zu definieren, wie er seine Arbeit erledigt oder wie viele Dokumente er vorlegen muss. Konzentrieren Sie sich einfach darauf, die richtige Person zu finden und seien Sie bereit, entsprechend zu zahlen. Wenn Sie ihn finden, stellen Sie sicher, dass Ihre Rolle darin besteht, ihn zu unterstützen und Hindernisse aus seinem Weg zu entfernen, nicht Überwachung / Mikromanagement. Ich behaupte nicht, dass Sie das schon einmal gemacht haben, aber ich weiß, dass viele Manager dazu neigen, und das ist einfach kontraproduktiv.
Sprechen Sie mit anderen Unternehmern, möglicherweise solchen mit mehr Software-Engineering-Hintergrund. Lesen Sie diese Foren und stellen Sie eine Reihe von Fragen, um Ihren potenziellen Nachwuchs zu befragen. Präsentieren Sie das Problem und fragen Sie, wie der Ansatz aussehen würde. Wenn er der Richtige ist (und davon ausgeht, dass er diese Seite nicht gesehen hat), sollte er in der Lage sein, viele Dinge vorzuschlagen, die andere bereits vorgeschlagen haben, was in Ihrem Unternehmen zu tun ist, wenn Sie anfangen, sich zu erholen. Bitten Sie ihn, einen Plan zu definieren, der vom Zeitpunkt seiner Einstellung bis zur Auslieferung Ihrer Version 1.0 reicht. Wie wird er dich dorthin bringen? Bitten Sie um Hilfe, wenn Sie eine solche Person interviewen.
Nur ein paar meiner eigenen Gedanken: Bug Tracking ist ein Muss (Jira kostet 10 US-Dollar für ein Team von bis zu 10 Personen). Quellcodeverwaltung ist ein Muss (Git ist kostenlos. Percussion kostet Erdnüsse für ein Team von bis zu 5 Personen). Ihr Code ist Ihre Dokumentation. Nicht Ihre geschriebenen Wortdokumente. Er sollte den Code überprüfen und das, was noch zu retten ist, aufbewahren. Wirf den Rest weg und konzentriere dich darauf, wartbaren und lesbaren Code zu schreiben. Speichern Sie die Dokumentation für einige hochrangige, nur wenige Seiten umfassende Designdokumente. Er muss die Technologie kennen, an der Sie arbeiten. Stellen Sie niemanden ein, der nur gute Absichten hat. Sie können es sich nicht leisten, dass sie in Ihrer Zeit lernen. Fragen Sie sie, welche anderen Projekte sie durchgeführt haben (leider müssen Sie oder jemand, den Sie finden, mit den technischen Aspekten der Dinge Schritt halten). Sie suchen jemanden mit genügend Erfahrung, aber nicht zu viel, als dass dieser Funke der Aufregung bereits ausgebrannt ist. Finden Sie jemanden, der hungrig ist, etwas zu bewirken. Die Methode, die er vorschlägt oder befolgt, sollte es Ihnen ermöglichen, die Arbeit in regelmäßigen Abständen (ein oder zwei Wochen) zu sehen und sofort Feedback zu geben. Stellen Sie niemanden ein, der sagt, dass es in genau 7,4 Monaten fertig sein wird. Ich werde Sie informieren, wenn es fertig ist.
Viel Glück
quelle
Dies ist eine seltsame Situation, und ich bin mir ziemlich sicher, dass Sie nicht die ganze Geschichte erzählen. Ich habe mit vielen Leuten zusammengearbeitet, von denen einige aus verschiedenen Gründen abgereist sind (ich bin ihr Kollege), aber versuche nicht, uns zu sagen, dass alles super gut war und eines Tages einfach kein Kontakt bestand.
Aber das ist kein Problem. Zumindest nicht mehr; Sie sollten aus Ihrem Fehler lernen und versuchen, ihn in Zukunft nicht zu wiederholen. Und ja, ich schlage nachdrücklich vor, dass Sie zu 50% daran schuld sind, dass er / sie gegangen ist.
Nun zum Lösen des aktuellen Problems:
Versuchen Sie, Ihren Programmierer zu kontaktieren. Er liest Ihre E-Mail - bieten Sie ihm Geld für die Dokumentation / Behebung der wichtigsten Fehler. Niemand sonst kann diese schneller reparieren als er. Funktioniert es nicht Versuche herauszufinden, wo er arbeitet, kontaktiere das Unternehmen und erzähle deine Geschichte. Eine gute Firma wird keine Person einstellen, die dasselbe für sie tun könnte. Zumindest werden sie ihm sagen, dass er die Dokumentation für Sie fertigstellen soll.
HINWEIS: Sie möchten diese Person nicht zurückhaben, sondern benötigen lediglich eine fertige Dokumentation
Seien Sie darauf vorbereitet, dass Ihre einjährige Arbeit ungültig wird. Er könnte geflohen sein, als Sie nach Ergebnissen fragten, und er wusste, dass er nicht liefern konnte. Es ist möglich, dass der Code voller Hacks, unsauberer Implementierung und insgesamt schlechter Qualität ist. Selbst wenn er zurückkommt, wird er wahrscheinlich nicht die Fähigkeiten oder die Zeit haben, es richtig zu machen.
Suchen Sie nach einer anderen Person. Er muss die gleichen Technologien (Programmiersprache, Frameworks usw.) kennen. Wenn die Codequalität gut ist, kann er weitermachen, wenn nicht, kann er sie umgestalten. Ja, Refactoring nimmt Zeit in Anspruch, ohne dass neue Funktionen implementiert werden müssen, aber es macht den Code wartbar und das ist es, was Sie brauchen. Plus, eine Person, die schlechten Code umgestalten kann, ist ein wirklich guter Programmierer, halten Sie an ihm / ihr fest.
HINWEIS: Es ist dumm, im Voraus Geld zu zahlen. Die ganze Idee des Gehalts ist es, für die geleistete Arbeit zu bezahlen. Nicht für ein Versprechen gemacht :)
Mache Listen. Es ist in Ihrem besten Interesse, einen Plan zu haben. Eine einmal gelesene technische Spezifikation ermöglicht es dem neuen Programmierer, den Job und die Meilensteine zu verstehen. Haben Sie mindestens drei wichtige Dokumente:
Gesamtbeschreibung des Projekts - ein Dokument, mit dem auch Nicht-Programmierer wissen, worum es im Projekt geht.
Timeline - welcher Teil und wann erwarten Sie, fertig zu sein? Was ist schon erledigt?
Technische Spezifikation - das ist eine lange. Es ist DAS Dokument, das ein Programmierer lesen möchte. Teilen Sie es in logische Teile auf und beschreiben Sie so detailliert wie möglich die Funktionen und den Workflow dieses bestimmten Teils.
Die Zusammenarbeit mit Unternehmen ist nicht so gut. Ihre Chancen werden nicht besser. Und Sie zahlen 10 Mal zu viel, wenn Sie nur einen Programmierer einstellen. Wenn Sie ein kleines Team haben, sagen wir 3-5 Personen, stellen Sie einfach einen Programmierer ein, der bereit ist, ein Teamleiter zu sein. Er wird das Team viel besser führen.
quelle
Code danach von einem anderen Programmierer dokumentieren? Es ist nur meine eigene Erfahrung und Meinung, Ihnen zu sagen, dass Sie diesen Weg nicht einschlagen sollten.
Ohne detailliertere Kenntnisse über die Qualität dieser Codebasis ist es meiner Meinung nach am besten, einen neuen Programmierer einzustellen, um die Fehler zu beheben, die erforderlichen Änderungen vorzunehmen und diese zu warten.
Diese Stellungnahme enthält den wesentlichen Punkt möglicher Änderungen (Änderung oder Hinzufügung), da eine Anforderung erfüllt werden muss. Dies bedeutet, dass eine Art Anforderungsspezifikation geschrieben werden muss. Dies ist ein Dokument.
Das führt dazu, dass das gesamte Projekt beibehalten wird. Sie haben in Ihrer Frage nicht gesagt, ob aktuelle Programmanforderungen oder eine grobe Funktionsdokumentation vorhanden sind, aber darauf sollten Sie sich jetzt konzentrieren.
Falls Sie zu diesem Zeitpunkt überhaupt keine Dokumentation haben, liegt es an Ihnen, diese Lücke zu füllen. Sie können keinen Programmierer beauftragen, Ihre Anwendung zurückzuentwickeln und auf wundersame Weise die Dokumentation daraus zu formen . Sie müssen "erklären", was das Programm tun soll (auch wenn es bedeutet, das bereits Programmierte neu zu erklären.)
Wenn Sie dieses Dokument geschrieben haben (sei es in Form einer Anforderungs- oder Funktionsspezifikation), erhalten Sie viel bessere Ergebnisse, wenn Sie einen neuen Programmierer einstellen, da Sie die Dokumentation übergeben und von dort aus mit der Arbeit beginnen können.
Es gibt auch viele Programme, die Dokumente aus dem Quellcode erstellen. Dies ist eine gute Möglichkeit, ein Grundgerüst zur Erläuterung des tatsächlichen Quellcodes (dies liegt im Bereich der technischen Spezifikation) zu erstellen, mit dem Sie nur im Zusammenhang mit der Erläuterung der technischen Aspekte von arbeiten können die in der Funktionsspezifikation angegebene Funktionalität, die die Funktionalität der in der Anforderungsspezifikation angegebenen Anforderungen angibt.
Also ja, meine Meinung ist es, einen Programmierer zu engagieren, um die Fehler zu beheben. Nachdem er die von Ihnen vereinbarten Fehler behoben hat, können Sie den Dokumentationsaspekt als weiteren Vertrag besprechen. Mit etwas Glück haben Sie einen erfahrenen Programmierer eingestellt, der Sie bei den nächsten Schritten unterstützen kann.
quelle
So nähere ich mich dem Problem:
Sie haben das Domänenwissen. Sie wissen, welche Funktionen jetzt auf der Website verfügbar sind, welche Sie in Zukunft hinzufügen möchten, und können wahrscheinlich auch einige Fehler auflisten, die von Benutzern gemeldet wurden.
Da sitzt dieser Haufen Code, der sich selbst überlassen ist. Es ist möglicherweise fehlerhaft, bietet aber dennoch einen Mehrwert, da die Site aktive Benutzer hat. Ein vollständiges Umschreiben wäre daher ein Fehler IMO.
Die Brücke zwischen Ihrer Domain-Expertise und dem Code wurde unterbrochen, als der Programmierer ging. Sie müssen es neu erstellen, damit die Codebasis wieder mit Ihren Anforderungen synchronisiert und zukünftige Updates entwickelt werden können.
Die Sache ist, dass die Brücke nicht vollständig aus Dokumentation bestehen kann. Software ist sowohl eine menschliche als auch eine technische Angelegenheit. Wenn Sie dem neuen Programmierer nicht genau erklären, was Sie erwarten, fällt es ihm schwer, das allein aus dem Code abzuleiten - umso mehr, wenn der vorherige Programmierer kryptischen, schlecht dokumentierten, schlecht getesteten Code geschrieben hat. Und wenn Sie nicht eng mit dem neuen Programmierer zusammenarbeiten, um einen automatisierten, kontinuierlichen Weg zu finden, um zu überprüfen, ob der Code Ihren Anforderungen entspricht, dh um die Bridge robuster zu machen, ist das Problem dazu verurteilt, sich zu wiederholen.
Setzen Sie sich regelmäßig (sogar virtuell) mit dem neuen Programmierer für Sitzungen zur Verarbeitung von Domänenwissen zusammen. Schreiben Sie während jeder dieser Sitzungen die Spezifikationen für einen kleinen Teil Ihres Produkts zusammen. Es kann sich um eine einzelne Webseite handeln, es kann sich um eine Funktion handeln. Wenn Sie ausführbare Spezifikationen (a la Behavior-Driven Development ) festlegen, können Sie sicher sein, dass die Bridge funktioniert, da Sie sie kontinuierlich ausführen und gewarnt werden können, wenn etwas nicht stimmt. Es wird auch das Leben des Entwicklers erleichtern.
Nach einer Sitzung kann der Entwickler zu seiner Arbeit zurückkehren und Tests auf niedrigerer Ebene schreiben, die bestätigen, dass der aktuelle Code der Spezifikation entspricht. Wenn dies nicht der Fall ist, hat der Programmierer alles, was er zur Behebung benötigt. Es ist auch wichtig, für alle Fragen zur Verfügung zu stehen, die er haben könnte.
quelle
Nur hinzufügen, was jeder gesagt hat,
Wenn Sie den alten Programmierer nicht dazu bringen können, seinen Code selbst zu einem Preis zu dokumentieren, dann erwarten Sie nicht, dass jemand anderes in der Lage ist, ihn besser zu dokumentieren. Hier sind einige Optionen, wie Sie den neuen Programmierer am ersten Tag produktiv machen können.
Nun, da dies nicht mehr möglich ist, können Sie nach einem Programmierer suchen. Und wie Creative Magic bereits sagte, kann das Auslagern des Auftrags an Unternehmen zu einer Katastrophe führen oder den Preis bis in die Unendlichkeit und darüber hinaus sprengen.
Planen Sie diesmal den Busfaktor richtig , wenn Sie Programmierer einstellen. Die Leute kommen und gehen und es gibt nichts, was Sie dagegen tun können. Bereiten Sie sich dieses Mal auf das Schlimmste vor, indem Sie zwei Programmierer oder, wie Uooo sagte, einen Programmierer und einen Tester bestellen.
Sobald die Programmierer mit Ihnen im Geschäft sind, können Sie sie bitten, ihren Code in Zukunft zu dokumentieren, anstatt sie zu bitten, alten Code zu dokumentieren. Vergessen Sie das wirklich.
Andere Dinge, die bei der Anschaffung eines neuen Programmierers zu beachten sind, stellen Sie sicher, dass Sie mit der Quellcodeverwaltung und automatisierten Tests vertraut sind. Versuchen Sie auch, mit ihrer Hilfe so viele Prüfungen wie möglich für den Joel-Test durchzuführen. Sie können nur so viel davon auf eigene Faust tun.
quelle
Ihr einziger Programmierer wurde also von einem Bus angefahren , und Sie müssen jetzt ersetzt werden.
Sie könnten versuchen, Ihren ehemaligen Programmierer auf der Grundlage Ihres Vertrages zu verklagen oder herauszufinden, was mit ihm los ist. Vorausgesetzt, er kommt nicht zurück, hilft Ihnen das nicht weiter.
Denken Sie auch darüber nach, einen zweiten Entwickler einzustellen, um diese schwierigen Situationen in Zukunft zu vereinfachen. Ein Tester wäre auch für die Qualitätssicherung hilfreich.
quelle