Die allgemeinen Techniken sind einigermaßen vernünftig. Wichtig zu wissen ist, dass sie nicht viel technisches Fachwissen erfordern.
Der Ausgangspunkt bei der Planung besteht darin, das genaue Problem zu identifizieren, das gelöst werden muss, und einen klaren und eindeutigen Bedarf zu haben. Wenn Sie das nicht haben, werden Ihre Schätzungen falsch sein. Wenn dies in einer Art Funktionsspezifikation dokumentiert ist, bevor jemand mit dem Schreiben von Code beginnt, bedeutet dies, dass alle Fragen, die gestellt werden müssen, gestellt wurden, bevor mit dem Codieren begonnen wird. Dies ist eine überraschend effektive Zeitersparnis. Das Zurückgehen und Klären von Anforderungen unterbricht den eigenen Ablauf als Programmierer und das Warten auf Antworten kann den Fortschritt blockieren.
Sobald Sie die Anforderung identifiziert haben, müssen Sie die Arbeitsaufgaben identifizieren, die mit deren Lösung verbunden sind. Dies ist eine klassische Übung zum Teilen und Erobern - jede Aufgabe, die weiter aufgeschlüsselt werden kann, muss weiter aufgeschlüsselt werden.
In einem größeren Team können Sie mithilfe von Estimation Poker eine Schätzung erhalten, die auf den Erfahrungen aller Beteiligten basiert. Das funktioniert in einem kleineren Team nicht so gut, aber es ist trotzdem nützlich, von beiden Entwicklern einen unabhängigen Kostenvoranschlag zu erhalten und vielleicht auch einen von Ihnen einzubeziehen. Ihr Mangel an spezifischem Fachwissen kann hier hilfreich sein, um Ihnen zu erklären, was passiert Die Aufgabe beinhaltet aus ihrer Sicht, das Entwicklerteam wird das Problem wahrscheinlich besser verstehen.
Mit einem kleineren Team kann es hilfreich sein, für jede Aufgabe eine Schätzung für den besten / erwarteten / schlechtesten Fall zu erhalten, die Ihnen einen Bereich von Werten bietet. Wenn Sie jedoch viele Überschreitungsschätzungen erhalten, können Sie bis zu Ihren Entwicklern zum schlechtesten Fall tendieren lernen, genauer zu schätzen.
In einem kleinen Laden fungieren Entwickler häufig als Systemadministratoren, Supportteams und sogar als Tester (obwohl sie unter allen Umständen versuchen sollten, Tests zu vermeiden), sodass Sie dies berücksichtigen müssen. Finden Sie heraus, wie viel Zeit Ihre Entwickler tatsächlich damit verbringen, an neuen Funktionen zu arbeiten, und berücksichtigen Sie dies in Ihren Schätzungen. Wenn eine Aufgabe auf 2 Tage geschätzt wird, Ihre Entwickler jedoch in 60% der Fälle nur an der Neuentwicklung arbeiten können, benötigen Sie 4 Tage, um sie fertig zu stellen. Möglicherweise können Sie auch hier Abhilfe schaffen, indem Sie die Pipeline der anderen Aufgaben steuern, die von ihnen ausgeführt werden müssen, damit nicht dringende Administrations- oder Support-Aufgaben nicht nur ad-hoc, sondern auch stapelweise ausgeführt werden können. Viele Programmierer (sicherlich auch ich) sind keine großartigen Zeitmanager. Alles, was Sie tun können, um dabei zu helfen, wird helfen. Single-Tasking ist für Programmierer immer einfacher als Multitasking. Auch das Sperren der Zeit während des Tages kann hier Abhilfe schaffen.
Führen Sie eine Aufzeichnung durch . Notieren Sie bei jeder Planungssitzung die Schätzungen und Ist-Werte. Sie können dies dann a) als Richtlinie verwenden, um zu ermitteln, um wie viel die Schätzungen während der Planung aufgeblasen werden sollen, und b) um sie bei der Verfeinerung ihrer Schätzfähigkeiten zu unterstützen. Am Ende jeder Iteration (oder was auch immer für ein Äquivalent Sie haben) sollte das gesamte Team die geleistete Arbeit überprüfen und herausfinden, warum sie länger als erwartet gedauert hat, damit dies in zukünftige Schätzungen einbezogen werden kann. Dies muss eine tadellose Aufgabe sein - Sie scheinen hier die richtige Einstellung zu haben, aber diese Antwort kann eine Weile dauern, also werde ich die Beobachtung machen. Wenn jemand sagt "Ich habe hier einen Fehler gemacht", können Sie das in "Was hätten Sie besser machen können" umwandeln, aber wenn Sie den Leuten sagen, dass sie zu langsam sind oder etwas falsch gemacht haben, wird das alles nur noch schlimmer.
Mir ist kein Patentrezept für diese Art von Problem bekannt, aber der größte Faktor ist die Kommunikation - die mit einem kleineren Team tatsächlich einfacher ist - und das Verwenden von Feedback, um Ihre kollektiven Fähigkeiten zu verfeinern.