Was würden Sie dieser Checkliste für Softwareentwicklungsprojekte hinzufügen? [geschlossen]

14

Ich bin ein großer Fan von Checklisten. Es gibt eine Reise-Checkliste , eine Umzugs-Checkliste und sogar eine Scrum-Checkliste .

Kontext : Sie wurden von einem großen Unternehmen eingestellt und haben die Aufgabe, die gesamte Softwareentwicklungsumgebung, die Prozesse, das Team usw. einzurichten. Sie haben "Carte Blanche". Sie sind für die Erstellung der Arbeitsschritte der Software verantwortlich. Projektgröße: 2000 Mann / Tage.

Welche Elemente würden Sie der folgenden (absichtlich kleinen und unvollständigen) Checkliste hinzufügen:

  • Installieren Sie einen Continuous Integration Server
  • Schreiben Sie eine DoD
  • Schreiben Sie eine Codierungsrichtlinie für eine Seite
  • Erstellen Sie ein Produkt-Backlog
  • Installieren Sie ein Bug Tracking System
  • Planen Sie die reguläre Gesichtszeit
Thomas Owens
quelle

Antworten:

10

* 1.) Sprechen Sie mit den Entwicklern, um zu sehen, was sie wirklich brauchen! *

2.) Untersuchen Sie eine Lösung, um mehrere Umgebungen sehr schnell aufzurufen (denken Sie an öffentliche oder private Cloud-Instanzen oder altmodische virtuelle Maschinen, wenn Sie nicht mit dem Schlagwort kompatibel sind).

3.) Versionskontrolle

4.) Code Review System (Crucbile / Fisheye als Beispiel)

5.) Kanbanwand (oder ähnliches)

6.) Kommunikationsprotokolle (Echtzeit-Chat ist ein großes Plus), Wikis fördern auch die Zusammenarbeit. Dies gilt auch für die interne Öffentlichkeitsarbeit. Wie werden Sie mit Ihren Geschäftsinhabern, Mitarbeitern des technischen Supports und anderen Gruppen in Kontakt treten?

7.) Elektronische Whiteboards

8.) Komfortable Umgebung für Entwickler (Sofas, Tische, Chillout-Bereiche, gutes WiFi usw.)

9.) Toller Kaffee !!!

Martijn Verburg
quelle
Kaffee macht den Unterschied :) + 1
RBA
Was sind die elektronischen Whiteboards, die Sie verwenden?
@Pierre 303 - Ausdrucken der Ergebnisse einer Whiteboard-Sitzung a (hochauflösendes Foto funktioniert vermutlich genauso).
Martijn Verburg
8
  • Toolchain-Setup - IDEs, CI-Server, Code-Quality-Server, Quellcodeverwaltung, Webserver, Datenbanken, Issue-Tracker usw.
  • Backups - Welche Rolle hat jede Person im Team? Welche Prozesse / Module besitzt er und wer ist sein Backup?
  • (Benutzerakzeptanz) Testumgebung einrichten - Nicht nur kontinuierliche Integration w. Unit-Tests, aber Integrationstests, um die wirklich schlechten Dinge, mehrere Plattformen, Anwendungsserver, VMs usw. abzudecken.
  • Leistungstests einrichten - Je früher, desto besser, da Sie historische Daten benötigen, um zu antworten: "Mit welcher Funktion / welchem ​​Meilenstein ist die Leistung so stark gesunken?"
  • Gliederung der (Endbenutzer-) Dokumentation - Was wird in der Dokumentation enthalten sein? Welche Art von Dokumentation wird benötigt?
  • Marketingkanäle - Wie werden interne Meilensteine ​​und externe Releases angekündigt? Haben Sie einen coolen Namen für die Software, ein Logo, Farben, Text usw.?
  • Interne Kommunikation - Wie werden Kollegen aus anderen Teams über Änderungen informiert? Wie läuft die Zusammenarbeit ab? Wiki? Zugangsrechte?
  • Qualitätssicherung people & process - Wer testet was, wie oft und nach welchen Kriterien?
  • Freigabeprozess - Wann, wie oft, wie, wer macht das, wer bekommt die Freigabe usw.
  • Risikomanagement - Worst-Case-Szenario (aus einem Projekt-Management-POV und einem Laufzeit-POV, z. B. "Kunde verliert Geld, weil Software in Modul X fehlgeschlagen ist. Was ist der Backup-Plan?)
  • Sicherung der Kernentwicklungsumgebung, zB Virtualisierung für Escrow
  • Orte für formelle und informelle Treffen
  • Schulungen oder Einführungen für alle Personen, damit sie wissen, was das Setup ist, wozu die einzelnen Teile dienen und wie sie es verwenden.
  • Identifizieren Sie den Hausmeister und geben Sie ihm alle Dinge (z. B. Berechtigungen), um die er sich kümmern muss, wenn etwas schief geht
mhaller
quelle
+1 für Backups und Schulungen
Liviu T.
Backups, obwohl ich denke, dass einige davon extranational sind.
BlackICE
5

Postmortem-Reviews - Da Sie an blockweisen Vorgängen arbeiten, würde ich einen ein- bis zweistündigen Review einplanen (abhängig von der Teamgröße), um eine persönliche Besprechung abzuhalten (wenn möglich), in der alle herumgehen und sagen, was richtig gemacht wurde und was könnte besser gemacht werden, und was nicht gebraucht wurde. Wenn Sie frühzeitig aus Ihren Fehlern im Entwicklungsprozess lernen, können Sie diese später vermeiden, wenn Sie nicht so viel Zeit haben, um mit ihnen zu arbeiten.

rjzii
quelle
4

Beginnen wir mit der Einstellung eines guten Teams der richtigen Fachleute für Ihr Projekt. In einer typischen Geschäftsanwendung müssen Sie mindestens einen Datenbankentwickler und einen DBA, eine QA-Person, einen Systemadministrator, einen Geschäftsanalysten, Anwendungsentwickler, einen UI-Spezialisten und Teamleiter einstellen. DBA, Systemadministrator, Geschäftsanalysten und QS sollten sich in einer separaten Berichtskette vom Entwicklungsteam befinden. Der Spezialist für Entwicklungsdatenbanken sollte sich an denselben technischen Leiter wie der Anwendungsentwickler und der UI-Spezialist wenden.

Richten Sie die Büroräume ein. Private Büros sind großartig, wenn Sie sie bekommen können (ich wünsche Ihnen viel Glück dabei), aber für ein Minimum benötigen Sie Schreibtische, Telefone, Computer, Whiteboards und ein paar dedizierte Konferenzräume. Stellen Sie sicher, dass ein Platz für die Mittagspause, einen Kühlschrank, alkoholfreie Getränke, Snacks und Kaffee zur Verfügung steht. Kostenlose alkoholfreie Getränke und Kaffee noch besser.

Richten Sie dev / qa / staging- und prod-Server sowohl für die Anwendung als auch für die Datenbanken ein. Datenbanken sollten sich niemals auf demselben Server wie die Anwendungen befinden. Abhängig von der Größe und dem Umfang des Projekts benötigen Sie möglicherweise mehrere Server oder SANs usw. für jede Umgebung.

Sobald Server eingerichtet sind, planen Sie Sicherungen des Dateisystems, der Datenbank und der Datenbanktransaktionsprotokolle. Tun Sie dies gleich am ersten Tag, wenn die Dinge eingerichtet sind. Mieten Sie eine Firma wie Iron Mountain, um wöchentlich Backups außerhalb des Unternehmens zu erstellen.

Richten Sie ein Versionsverwaltungssystem ein und erstellen Sie ein Dokument, in dem die Verwendung beschrieben wird. Vergessen Sie nicht, darauf zu bestehen, dass ALLE Datenbankstrukturänderungen und Dateneinfügungen für Lookup-Typ-Tabellen in Skripten in der Quellcodeverwaltung enthalten sind. Dies erleichtert die Bereitstellung.

Kaufen Sie kommerzielle Software oder laden Sie Open Source-Software für das Toolset herunter, das Sie für alle relevanten Benutzer mit Lizenzen verwenden möchten.

Kaufen Sie Entwicklermaschinen, die schnell schreien und zwei Monitore haben. Kaufen Sie mindestens eine Testbenutzermaschine, die langsam stöhnt und typisch für das ist, was die Benutzer auf ihren Desktops haben.

Trainieren Sie Ihre neuen Entwickler darin, wie Sie Dinge erledigen möchten. Wenn Sie ein Team haben, das groß genug ist, um einige Nachwuchsentwickler zu beschäftigen, planen Sie zusätzliche Schulungen für diese und beziehen Sie die Zeit in Ihre Projektplanung ein. Überwachen Sie Junioren mindestens drei Monate lang sehr genau. Überwachen Sie im ersten Monat alle neuen Mitarbeiter genau. Beseitigen Sie so schnell wie möglich Totholz und Schurkenentwickler.

Bestimmen Sie, was in welcher Reihenfolge getan werden muss (der kritische Pfad). Weisen Sie Aufgaben erst am Ende des kritischen Pfads zu, wenn die Aufgaben, von denen sie abhängen, abgeschlossen sind.

Erstellen Sie Testpläne und Anforderungen.

Richten Sie regelmäßig geplante Fortschrittsbesprechungen mit den Kunden ein. Sie verdienen es zu wissen, was Sie tun und was die Straßensperren sind. Versäumen Sie nicht, ihnen zu sagen, wann die Dinge zu spät kommen werden. Wenn Sie drei Wochen von einer Frist entfernt sind und bereits wissen, dass Sie diese verpassen werden, verschwindet dieses Defizit nicht auf magische Weise, bevor Sie es dem Kunden mitteilen müssen. Stellen Sie sicher, dass der Kunde weiß, dass zusätzliche Anforderungen zusätzliche Kosten und Zeit bedeuten und dass für jede zusätzliche Anforderung entweder andere Aufgaben gelöscht werden müssen oder sich die Frist um die Anzahl der Stunden in den neuen Aufgaben ändert. Wenn Sie dies von Anfang an klarstellen, sparen Sie viele Schmerzen und Überstunden sowie Kostenüberschreitungen, die von Ihrer Gruppe und nicht vom Kunden in Kauf genommen werden.

Richten Sie eine Umgebung für den Leistungstest ein, und zwar nicht nur die Geschwindigkeit eines Benutzers, sondern eine Umgebung, in der Sie die erwartete Anzahl gleichzeitiger Benutzer testen können. Warten Sie nicht, bis Sie den Test am Tag vor dem Start durchgeführt haben.

Bei der Projektplanung wird davon ausgegangen, dass QA Fehler findet und die Behebung einige Zeit in Anspruch nimmt. Planen Sie die Qualitätssicherung am Ende nicht nur für einen Tag.

Erstellen Sie Testdaten, die ungefähr der Größe entsprechen, die Sie für die Datenbank halten. Lassen Sie alle Entwickler ihren Code anhand der Datenbank dieser Größe testen. Erlauben Sie Entwicklern nicht, nur gegen eine kleine Datenbank auf ihren PCs zu entwickeln. Dies ist eine häufige Ursache für Code, der einwandfrei funktioniert, bis er die Produktion erreicht.

Planen Sie Belohnungen in das Budget ein. Es demotiviert Leute, wenn sie monatelang ihren Hintern abarbeiten und nur Manager Boni bekommen. Sagen Sie auch häufig und schriftlich Danke.

Möglicherweise benötigen Sie ein Projektmanagementsystem oder richten zumindest Tabellenkalkulationen ein, um zu verfolgen, was Sie nachverfolgen müssen. Nehmen Sie bei der Projektplanung nicht mehr als sechs Stunden pro Tag als Person in Ihrem Plan an. Auf diese Weise wird die Zeit berücksichtigt, die nicht für das Projekt aufgewendet wird, z. B. Urlaub, Krankheit, Urlaub, Personalbesprechungen, Leistungsüberprüfungen usw. Wenn Sie wissen, dass sich das Projekt in einer Phase hoher Nichtverfügbarkeit befindet (z. B. in einem laufenden Projekt) vom 1. November bis 1. Januar in den USA) müssen Sie möglicherweise zusätzliche Urlaubs- und Urlaubszeiten berücksichtigen. Es ist nicht fair zu erwarten, dass Entwickler ihren Urlaub und ihre Ferien aufgeben und niemand kann vorhersagen, wann Dinge wie Krankheitszeiten, Geschworeneingriffe, Trauerzeiten usw. eintreten werden. Angenommen, sie werden Ihrem Team bei diesem Projekt passieren.

HLGEM
quelle
Ich denke, dass Testbenutzer Maschine sollte "langsam stöhnen", nicht "langsam schreien";) sehr schöne Liste.
BlackICE
@ David, ich mag deinen Vorschlag und habe ihn im Text geändert.
HLGEM
Tolle Antwort - Aufzählungszeichen oder Abschnittsnamen könnten hilfreich sein.
JBRWilkinson
3

Einige Dinge, die ich in der Frage und den nachfolgenden Antworten nicht sehe:

  • Disaster Recovery-Plan. Wie sichern Sie die Entwicklungsboxen, stellen sie auf, testen sie usw.? Hat jeder Entwickler das, was er braucht, um an einem gelegentlichen Schneetag von zu Hause aus zu arbeiten? Etc.

  • Trainingsplan. Wie viele Wochen Training im Jahr benötigen Ihre Entwickler, um auf dem Laufenden zu bleiben? Verfolgt es jemand? (Eine Tabelle kann für die meisten Teams ausreichen.) Sie müssen einen Mechanismus für die Berichterstellung einrichten (Sie müssen jemandem eine E-Mail senden, in der angegeben wird, dass sie 2 Stunden Webcasts zu "Was auch immer" gesehen haben) und das Management muss planen, z. B., wen wir an was senden sollen Konferenz in diesem Jahr.

  • eine Werkzeugposition. Handelt es sich um eine Art Ort, an dem Sie Ihren Code bearbeiten, kompilieren und testen möchten, aber es ist uns egal, was Sie verwenden, um ihn zu bearbeiten, zu kompilieren und zu testen "Art von Ort. Treffen und notieren Sie die Entscheidung.

  • So viel integriertes ALM, wie Sie sich leisten können. Normalerweise liegt der Grund für die "Impedanz-Fehlanpassung", die doppelte Eingabe, die Werkzeugüberlappung und die Integration der Drehstuhlanwendung darin, dass das System Stück für Stück gewachsen ist. Sie möchten zeigen, dass Ihre Mitarbeiter während des gesamten Zyklus in einem einzigen Tool arbeiten können. Code nicht in X eingeben, mit Y kompilieren, mit Z testen, den Status des Arbeitselements / der Aufgabe mit A ändern, die mit B verbrachte Zeit melden, der Person mitteilen, die darauf gewartet hat, dass sie jetzt mit C fortfahren kann, und versuchen, es herauszufinden herausfinden, was als nächstes mit D zu tun ist, den Gesamtfortschritt mit E messen usw.

Kate Gregory
quelle
2

Verhandle mehr Manntage.

Es ist ein seltenes Ereignis, wenn die Leute anfangs genug zuteilen.

[Später ... noch mehr neu verhandeln ...]

Orbling
quelle
Da ich der Ansicht bin, dass immer mehr Manntage ausgehandelt werden müssen, würde ich nicht empfehlen, genaue und verlässliche Schätzungen der Dauer eines Auftrags oder eines Projekts abzugeben.
NimChimpsky
@NimChimpsky Vor kurzem wurde hier diskutiert, ob die Fähigkeit zur zuverlässigen Schätzung in Computerprojekten ein Mythos ist. Wenn das Werk nicht sehr bekannt ist und keine Forschungsergebnisse enthält, ist es an sich schwierig, die Zeit vorherzusagen. Auch wenn Sie den Zeitplan Ihres eigenen Teams vorhersagen können, ist es nahezu unmöglich, die externen Faktoren und Verzögerungen vorherzusagen. "Genaue und verlässliche" Schätzungen gibt es meines Erachtens also nicht generell.
Orbling
@Orbling sie existieren, wo ich arbeite. Ein 250 ftse gelisteter nationaler Einzelhändler in Großbritannien. Einige Projekte sind spät, aber nicht so spät, und sie sind die Ausnahme.
NimChimpsky
@NimChimpsky Es ist möglich, eine relativ genaue Schätzung zu erhalten, wenn Sie die vollständige Kontrolle über alle Ergebnisse innerhalb eines Projekts haben, nicht von externen Personen blockiert werden und die vorliegende Aufgabe keine Nachforschungen erfordert. Die Bereitstellung Ihres Budgets erstreckt sich auf eine gründliche Analyse vor der Zeitschätzung. In den meisten Unternehmen ist das Budget einfach nicht vorhanden, um es vor Beginn vollständig zu untersuchen.
Orbling
@orbling Es ist möglich, dass es rein willkürlich ist, immer mehr Zeit anzufordern, und dass dies nicht auf Beweisen, Leistungen, Analysen oder dem Budget beruht.
NimChimpsky
2

Da ich das größte Problem mit Bibliotheken von Drittanbietern und deren Verwendung hatte:

  1. Bestimmen Sie die Bibliotheken und Versionen, die Sie verwenden möchten.
  2. Erstellen Sie den Prozess zum Integrieren von Bibliotheksaktualisierungen in Ihr Projekt.
  3. Stellen Sie sicher, dass die Entwickler alle an Bord der Bibliothek Entscheidungen sind.
  4. Schaffen Sie einen nützlichen Kanal für eine offene Diskussion über die verwendeten Technologien.

Warum? Ich kann Ihnen nicht sagen, wie oft Bibliotheken von Drittanbietern (proprietäre Bibliotheken) abscheuliche Fehler hatten, die uns wochenlange Entwicklungszeit erspart haben, da wir keinen Prozess hatten, um nach oben oder unten zu gelangen. Oder mit Entwicklern zu tun haben, die sagten: "Welche Version haben Sie verwendet? Warum haben Sie Funktionen verwendet, die als veraltet markiert sind?"

Wheaties
quelle
1

Ein großer Kostenfaktor für Unternehmen ist, dass während des gesamten Entwicklungslebenszyklus kein Budget für die Sicherheit bereitgestellt wird. Dies bedeutet, dass die Sicherheit in der Regel erst dann hergestellt wird, wenn ineffektive, teure Aktivitäten oder Kontrollen zu spät eingeführt wurden, um viel Gutes zu bewirken.

Nutzen Sie die integrierte Sicherheit des ursprünglichen Projektplans mit den wichtigsten Meilensteinen wie bei allen anderen Aspekten der Entwicklung und verwenden Sie einen iterativen Prozess, um die Sicherheitsrichtlinien auf dem neuesten Stand zu halten. Die endgültige Abmeldung von der Sicherheit sollte keine Überraschung sein. Überprüfen Sie, ob alle Sicherheitskontrollen gemäß Entwurf implementiert wurden.

Andernfalls wird die Sicherheit nach der Implementierung ausgeführt - wo sie das Acht- bis Zehnfache kosten kann (Angaben von Gartner, IBM und anderen). Dies wird die Mitarbeiter verärgern, da die Funktionalität wahrscheinlich beeinträchtigt wird und es möglicherweise zu spät ist, um eine Ausnutzung zu verhindern und Schaden.

Rory Alsop
quelle
Ich bin gespannt, ob dies Teil der Checkliste für die Projekteinrichtung sein sollte. Ich würde es als Teil der Softwareentwicklung einsetzen, aber ich weiß nichts über die Projekteinrichtung. Ich würde es mit Dev-Meilensteinen versehen, aber ich glaube nicht, dass das das ist, wonach das OP gefragt hat, ich könnte mich irren.
BlackICE
David - vielleicht haben Sie recht, dass diese Detailebene nicht vorhanden sein sollte, aber ich denke, es sollte zumindest eine Werbebuchung für die Sicherheit geben. Besser?
Rory Alsop
1

1. Bring es zum Team

Fragen Sie die Programmierer! Wirklich, das ist das Wichtigste. Sie werden auf viel Widerstand stoßen, wenn die Entwickler nicht direkt an dieser Änderung beteiligt sind. Immerhin geht es darum, wie sie funktionieren, nicht Sie. Es versteht sich von selbst, aber der Versuch, den Menschen Methoden und Werkzeuge aufzuzwingen, schlägt normalerweise furchtbar fehl.

2. Inspizieren und anpassen

Lassen Sie das Team herausfinden, wie es am besten arbeiten kann, und helfen Sie ihm dabei, auf der gewählten Strecke zügig voranzukommen. Schauen Sie dann regelmäßig und gemeinsam zurück, wie es Ihnen (ihnen) geht, und passen Sie den Prozess an, um ihn zu verbessern.

Martin Wickman
quelle