Genel teknikler biraz sağduyudur, bilinmesi gereken önemli şey, çok fazla teknik uzmanlık gerektirmemesidir.
Planlamanın başlangıç noktası, çözülmesi gereken kesin sorunu tanımlamak ve net ve açık bir gereksinime sahip olmaktır. Buna sahip değilseniz tahminleriniz yanlış olur. Herhangi birinin kod yazmaya başlamadan önce bunun bir tür özellik spesifikasyonunda belgelenmesi, kodlama başlamadan önce sorulması gereken soruların sorulacağı anlamına gelecektir. Bu şaşırtıcı derecede etkili bir zaman kazandırıcıdır. Geri dönmek ve gereksinimleri açıklığa kavuşturmak, bir programcı olarak akışını keser ve yanıt beklemek ilerlemeyi engelleyebilir.
Gereksinimi belirledikten sonra, çözüme dahil olan iş görevlerini tanımlamanız gerekir. Bu klasik bir bölünme ve fethetme egzersizidir - daha fazla parçalanabilecek herhangi bir görevin daha fazla parçalanması gerekir.
Daha büyük bir ekipte, ilgili herkesin deneyimine dayalı bir tahmin almak için tahmin pokerini kullanabilirsiniz. Bu, daha küçük bir ekipte işe yaramaz, ancak hem geliştiricilerinizden bağımsız bir tahmin almak hem de belki de kendinizden bir tane eklemek de yararlıdır - özel uzmanlık eksikliği burada yardımcı olabilir, çünkü size ne olduğunu açıklarken görev onların bakış açısından, geliştirme ekibi muhtemelen sorunu daha iyi kavrayacaktır.
Daha küçük bir ekiple, her görev için en iyi / beklenen / en kötü durum tahminini elde etmenize yardımcı olabilir, bu size bir dizi değer verir, ancak çok fazla taşma tahmini alıyorsanız, geliştiricilerinize kadar en kötü duruma doğru eğilebilirsiniz. daha doğru tahmin etmeyi öğrenir.
Küçük bir dükkanda, geliştiriciler genellikle sistem yöneticileri, destek ekibi ve hatta test uzmanları olarak ikiye katlanır (her ne pahasına olursa olsun, testler her ne pahasına olursa olsun kaçınmaya çalışmanız gerekir) bu yüzden bunu hesaba katmanız gerekir. Geliştiricilerinizin gerçekte ne kadar zaman harcadıklarını tahminlerinize dahil olan yeni özellikler ve faktörler üzerinde çalışarak anlayın. Bir görev 2 günde tahmin ediliyorsa, ancak geliştiricileriniz yalnızca% 60 oranında yeni geliştirme üzerinde çalışabiliyorsa, tamamlanması için 4 güne ihtiyacınız olacak. Acil olmayan yönetici veya destek görevlerinin geçici olarak ele alınmak yerine bir araya getirilebileceği şekilde, işlemek için ihtiyaç duydukları diğer görevlerin boru hattını kontrol ederek de bu konuda yardımcı olabilirsiniz. Bir çok programcı (kesinlikle buna kendim dahil) büyük zaman yöneticileri değil, bu nedenle bu konuda yardım etmek için yapabileceğiniz her şey yardımcı olacaktır. Tek görev, programcılar için her zaman çoklu görevden daha kolaydır. Gün içinde zamanın engellenmesi de bu konuda yardımcı olabilir.
Kayıt tutun - her planlama oturumunuzda tahminleri ve gerçekleri kaydedin. Daha sonra bunu a) planlama sırasında tahminlerini ne kadar şişirmek için bir rehber olarak ve b) tahmin becerilerini geliştirmelerine yardımcı olmak için kullanabilirsiniz. Her bir yinelemenin sonunda (ya da eşdeğeri ne olursa olsun) tüm ekip yapılan işi gözden geçirmeli ve gelecekteki tahminlere dahil edilebilmesi için neden beklenenden daha uzun sürdüğünü bulmalıdır. Bunun suçsuz bir görev olması gerekiyor - burada doğru tutuma sahipsin ama bu cevap biraz zaman alabilir, bu yüzden gözlem yapacağım. Birisi "Burada bir hata yaptım" derse, bunu "daha iyi ne yapabilirdiniz?" Haline dönüştürebilirsiniz, ancak insanlara çok yavaş olduklarını veya yanlış şeyler yaptıklarını söylemek sadece işleri daha da kötüleştirecektir.
Bu tür bir sorun için gümüş mermi olmadığının farkındayım, ancak en büyük faktör, daha küçük bir ekiple aslında daha kolay olan iletişim ve kolektif becerilerinizi geliştirmek için geri bildirim kullanmaktır.