Πως υπολογίζουμε τον χρόνο παράδοσης ενός έργου

Εκφράστε την επιχειρηματική σας πλευρά. Μοιραστείτε την εμπειρία σας ή/και τα σχόλιά σας σχετικά με την οργάνωση μιας on-line επιχείρησης. Παρακαλώ όχι διαφημίσεις εδώ!

Συντονιστής: Super-Moderators

Απάντηση
Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

Πως υπολογίζουμε τον χρόνο παράδοσης ενός έργου

Δημοσίευση από cpulse » 10 Μαρ 2010 11:03

Πριν λίγο καιρό διάβασα μια πολύ ενδιαφέρουσα συζήτηση στο slashdot σχετικά με το πως υπολογίζουμε τον χρόνο παράδοσης ενός έργου.

Όταν ξεκίναγα να κάνω την δουλειά του προγραμματιστή ένας σοφός συνάδελφος μου πρότεινε όσο ακόμα δεν ξέρω τη δουλειά να πολλαπλασιάζω τον χρόνο που υπολογίζω οτι θέλω επι 4. Και όταν αποκτήσω εμπειρία να τον πολλαπλασιάζω επι 2.

Διαβάζοντας αυτό το άρθρο βρίκα οτι υπάρχει μια άλλη πάρα πολύ απλή και πρακτική προσέγγιση. Βάζεις στον υπολογισμό σου μια αισιόδοξη περίοδο, μια μέση και μια απαισιόδοξη και βρίσκεις ένα μέσο όρο. Το μυστικό είναι να βάλεις την μέση τιμή περισσότερες φορές στους υπολογισμούς, 4 προτείνει αυτός που λέει αυτή τη μέθοδο. Δηλαδή αν έχουμε ένα έργο και νομίζουμε οτι θέλουμε από 10 έως 60 μέρες με μέση τιμή τις 25 μέρες θα πρέπει να δεσμευτούμε για το μέσο όρο των 10 + 25 + 25 + 25 + 25 + 60.

Μέσα στην συζήτηση του slashdot υπάρχει και μια λίγο αστεία προσέγγιση η οποία δυστυχώς συμβαίνει και στην πραγματικότητα. Διπλασιάζουμε τον χρόνο που σκεφτόμαστε και μετά αυξάνουμε την μονάδα μέτρησης. Δηλαδή πιστεύουμε οτι θέλουμε 1 εβδομάδα, το κάνουμε 2 μήνες. Αν θέλουμε 3 μήνες το κάνουμε 6 χρόνια :)

Εσείς πως υπολογίζετε τους χρόνους σας;

Hik
Δημοσιεύσεις: 162
Εγγραφή: 23 Σεπ 2005 10:34

Πως υπολογίζουμε τον χρόνο παράδοσης ενός έργου

Δημοσίευση από Hik » 12 Μαρ 2010 02:04

Μεγάλη υπόθεση το θέμα που άνοιξες.

Ο σοφός συνάδελφος σου, είχε απόλυτο δίκιο! Οι περισσότεροι πέφτουμε τουλάχιστον 100% έξω σε οποιοδήποτε estimation ενός task οποιουδήποτε project, πόσο μάλλον για estimation του τελικού χρόνου παράδοσης ολόκληρου του έργου.

Και ακόμα πιο δύσκολο είναι όταν εμπλέκεται ομάδα. Το σημαντικό για αρχή είναι φυσικά το οποιοδήποτε project να κοπεί σε αρκετά features/tasks. Προσωπικά έχω διαπιστώσει ότι οι ώρες που λέει ο κάθε developer είναι σχεδόν αυθαίρετες μιας και έχουν διακύμανση ανάλογα με το πόσο θεωρεί ο καθένας μας εύκολο κάτι ή όχι (το οποίο σε μια ομάδα developers δεν μπορείς να φανταστείς τελικά πόσο σχετικό είναι).

Ο γνωστός Joel έχει δημιουργήσει το λεγόμενο Evidence Based Scheduling, το οποίο παραδόξως είναι αρκετά αποτελεσματικό, μιας και λαμβάνει υπόψη του αυτή την αβεβαιότητα του κάθε developer και μετά από αρκετό καιρό μπορεί να υπολογίσει με αρκετή σαφήνεια το πραγματικό delivery date. Οπότε π.χ. ένα υποθετικό παράδειγμα αν σε μία ομάδα ο Κώστας θέτει 1h και πάντα τελειώνει σε x4 ώρες, ο Γιάννης θέτει 1h και τελειώνει πάντα στα 50m, τότε ο Γιάννης είναι πολύ πιο ακριβής άρα και αξιόπιστος στις εκτιμήσεις του κ.τ.λ. Αλλά δυστυχώς το FogBugz είναι πανάκριβο!

Προσωπικά έχω καταλήξει ότι ο υπολογισμός με βάση τις ώρες είναι καταδικασμένος εξ' αρχής. Το ανθρώπινο μυαλό απλά δεν είναι φτιαγμένο στο να υπολογίζει σωστά το χρόνο!

Πολύ καλή τεχνική είναι το λεγόμενο Planning Poker. Προϋποθέτει την ύπαρξη μιας ομάδας τουλάχιστον 4 ατόμων, και το βασικό είναι ότι αφαιρεί εντελώς την έννοια των ωρών. Ουσιαστικά το κάθε μέλος της ομάδας έχει τη δική του τράπουλα η οποία έχει τη κλίμακα Fibonacci (ή σχεδόν αυτή γιατί διαφέρουν κάποια νούμερα) και ψηφίζει κρυφά από τους άλλους το βαθμό δυσκολίας κάθε task. Μετά ανοίγουν όλοι μαζί τα χαρτιά τους και βλέπουν τις αποκλίσεις. Αυτός που έχει το μεγαλύτερο αριθμό συζητάει με αυτόν που έχει το μικρότερο αριθμό για τους λόγους που το διάλεξαν. Έτσι ξανά επαναλαμβάνεται η ψηφοφορία μέχρι όλη η ομάδα να καταλήξει σε ένα κοινό αποτέλεσμα. Το τελικό αποτέλεσμα δείχνει πάντα τη πολυπλοκότητα ενός task.

Με βάση αυτό το νούμερο, και μετά από ένα βάθος χρόνου, όπου μπορεί να βγει ένα ασφαλές συμπέρασμα για το μέσο όρο των "μονάδων" που η ομάδα αποδίδει σε ένα συγκεκριμένο χρονικό διάστημα είναι πολύ πιο εύκολο να καθοριστεί η τελική ημερομηνία (επίσης σε αυτό βοηθάνε και μέθοδοι όπως το Scrum, αλλά είναι άλλη συζήτηση).

Άβαταρ μέλους
mechpanos
Honorary Member
Δημοσιεύσεις: 1709
Εγγραφή: 20 Μαρ 2003 00:59
Τοποθεσία: Athens - Pyrgos
Επικοινωνία:

Πως υπολογίζουμε τον χρόνο παράδοσης ενός έργου

Δημοσίευση από mechpanos » 12 Μαρ 2010 11:31

Στην διαχείριση έργων, υπάρχει και η τεχνική PERT ή CPM (ουσιαστικά η Αμερικάνικη και η Ευρωπαϊκή παραλλαγή του ίδιου πράγματος).
Χωρίζεις το project στα υπο-έργα που πρέπει να γίνουν.
Ορίζεις εξαρτήσεις κάθε υπο-έργου, δηλαδή αν κάποιο υπο-έργο απαιτεί την ολοκλήρωση κάποιου άλλου για να ξεκινήσει (πχ τα μπετά θεμελίωσης απαιτούν την ολοκλήρωση του καλουπώματος, το οποίο απαιτεί την ολοκλήρωση της τοποθέτησης σιδήρων, κ.ο.κ..)
Τοποθετώντας τις διάρκειες ολοκλήρωσης κάθε υπο-έργου, καθώς και το πότε μπορεί να αρχίσει, συνδέοντας τα έργα μεταξύ τους, δημιουργείται το "κρίσιμο μονοπάτι", το οποίο είναι η αλληλουχία υποέργων που είναι η πιο κρίσιμη για τον χρόνο παράδοσης του τελικού έργου, ενώ από αυτό προκύπτει και ο τελικός χρόνος εκτέλεσης του έργου.
http://www.netmba.com/operations/project/cpm/
Εικόνα

Πάνω σε αυτή την φιλοσοφία, βασίζεται και το MS Project, το λογισμικό διαχείρισης έργων της Microsoft, όπου βάζεις και resources.
Πύργος θεός Πανηλειακός!!

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

Πως υπολογίζουμε τον χρόνο παράδοσης ενός έργου

Δημοσίευση από cpulse » 14 Μαρ 2010 22:32

Hik:
Πολύ ενδιαφέροντα αυτά που λές. Καλά έκανα τελικά και άνοιξα τέτοια συζήτηση.

mechpanos:
Στο πανεπιστήμιο μας τα μαθαίναν αυτά. Η μέθοδος αυτή λέγεται critical path analysis. Αλλά δυστυχώς τέτοιες μέθοδοι εφαρμόζονται σε δουλειές που ξέρεις εκ των προτέρων πια είναι τα μέρη του έργου και πόσος χρόνος χρειάζεται για το κάθε κομμάτι. Στην δικιά μας περίπτωση συνήθως αντιμετωπίζουμε είτε site κονσέρβες (πχ σελίδα με about us, contact page και μερικές φωτογραφίες), είτε δουλειές που ξεφεύγουν εντελώς από τα γνωστά πλαίσια. Οπότε το πρόβλημα είναι πως μπορείς να συμβιβάζεις την εντύπωση που έχεις για τις ικανότητες σου με την πραγματικότητα.

Άβαταρ μέλους
GeoStuff
Honorary Member
Δημοσιεύσεις: 7496
Εγγραφή: 16 Νοέμ 2005 03:12
Τοποθεσία: Στα αλατορυχεία της Ζουαζιλάνδης...

Πως υπολογίζουμε τον χρόνο παράδοσης ενός έργου

Δημοσίευση από GeoStuff » 15 Μαρ 2010 11:18

Cpulse, δεν συμφωνώ απόλυτα με το "ξέρεις εκ των προτέρων"...

Σε κάθε project ξέρεις, θεωρητικά πάντα, όλα τα βήματα πριν αρχίσεις κοστολογίσεις και δεσμευτείς σε χρόνους...

Αν αυτό δεν ισχύει τότε μπορείς να βάλεις μια παράμετρο μέσα που θα σου υποστηρίζει το συγκεκριμένο άγνωστο κομμάτι...

Αν έχεις να φτιάξεις ένα site κονσέρβα το οποίο έχει και ένα κομμάτι εντελώς άγνωστο, τότε υπολογίζεις τον απαιτούμενο χρόνο για την κονσέρβα και ένα επιπλέον παράθυρο για το άγνωστο...

Ότι και να είναι δεν είναι δυνατόν να μην ξέρεις ή να μπορείς να εκτιμήσεις πόσο θα πάρει...

Και σε όλο αυτό βάζεις και ένα 10% κάλυψη :D
Κούκλα Μου Φρεγάτα Σκίζεις Τον Ωκεανό... Μοιάζεις Στον Τιτανικό!!!

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

Πως υπολογίζουμε τον χρόνο παράδοσης ενός έργου

Δημοσίευση από cpulse » 15 Μαρ 2010 14:31

Σίγουρα πάντα θα χεις μια ιδέα. Αλλά συγκεκριμένα αυτό το critical path analysis προσπαθεί να σου δείξει πότε και ποιες δουλειές μπορείς να κάνεις παράλληλα με άλλες για να μην χάνεις χρόνο. Είναι μια προσέγγιση που έχει νόημα για γραμμές παραγωγής σε εργοστάσια, για λογιστήρια πολύ μεγάλων εταιριών. Στην δικιά μας δουλειά νομίζω δύσκολα εφαρμόζεται.

Hik
Δημοσιεύσεις: 162
Εγγραφή: 23 Σεπ 2005 10:34

Πως υπολογίζουμε τον χρόνο παράδοσης ενός έργου

Δημοσίευση από Hik » 21 Μαρ 2010 19:37

GeoStuff έγραψε:Cpulse, δεν συμφωνώ απόλυτα με το "ξέρεις εκ των προτέρων"...

Σε κάθε project ξέρεις, θεωρητικά πάντα, όλα τα βήματα πριν αρχίσεις κοστολογίσεις και δεσμευτείς σε χρόνους...

Αν αυτό δεν ισχύει τότε μπορείς να βάλεις μια παράμετρο μέσα που θα σου υποστηρίζει το συγκεκριμένο άγνωστο κομμάτι...

Αν έχεις να φτιάξεις ένα site κονσέρβα το οποίο έχει και ένα κομμάτι εντελώς άγνωστο, τότε υπολογίζεις τον απαιτούμενο χρόνο για την κονσέρβα και ένα επιπλέον παράθυρο για το άγνωστο...

Ότι και να είναι δεν είναι δυνατόν να μην ξέρεις ή να μπορείς να εκτιμήσεις πόσο θα πάρει...

Και σε όλο αυτό βάζεις και ένα 10% κάλυψη :D
Αυτό ισχύει μόνο, όπως αναφέρεις και εσύ, αν έχεις να φτιάξεις ένα site κονσέρβα. Σε μεγαλύτερα projects, ειδικά αυτά που ξεφεύγουν από τη δημιουργία ενός απλού site, και περιλαμβάνουν ομάδα προγραμματιστών τότε δεν είναι καθόλου γνωστό και η εκτίμηση μπορεί πανεύκολα να είναι 100% λάθος.

Η μέθοδος του critical path δεν θα έλεγα ότι είναι κατάλληλη για τέτοιου είδους projects.

theochry
Δημοσιεύσεις: 2
Εγγραφή: 18 Απρ 2011 17:42

Πως υπολογίζουμε τον χρόνο παράδοσης ενός έργου

Δημοσίευση από theochry » 18 Απρ 2011 17:47

Παιδιά καλησπέρα..Έτυχε να πέσω πάνω στη συζήτησή σας..Σχετικά με το αν γνωρίζεις τα deadlines ή όχι ενός project, ουσιαστικά μιλάς με πιθανότητες, και αυτό πρέπει να δώσεις στον πελάτη σου να καταλάβει. Αν έχεις δώσει deadline παράδοσης στις χ του μήνα τάδε, ουσιαστικά του λες ξέρεις, κατά πάσα πιθανότητα θα σου το παραδώσω, τίποτα άλλο δεν του λες. Όσο βέβαια αποκτάς εμπειρία ξέρεις καλύτερα αυτή την πιθανότητα ;)

Παιδιά ο λόγος που έγινα μέλος είναι γιατί εδώ και 3 μέρες έχω φάει όλο το net και δεν έχω βρει έναν αξιόλογο αλγόριθμο για το CPM σε γλώσσα C/C++. Αν μπορεί κανένας σας να με βοηθήσει με το να μου πει που να ψάξω αλλού θα με βοηθούσε πάρα πολυ :cry:

Άβαταρ μέλους
mechpanos
Honorary Member
Δημοσιεύσεις: 1709
Εγγραφή: 20 Μαρ 2003 00:59
Τοποθεσία: Athens - Pyrgos
Επικοινωνία:

Πως υπολογίζουμε τον χρόνο παράδοσης ενός έργου

Δημοσίευση από mechpanos » 18 Απρ 2011 19:02

Εξαρτάται τί λές αξιόλογο αλγόριθμο...

γιατί εγώ βρήκα αυτό,
http://www.codeproject.com/KB/recipes/C ... ethod.aspx

αυτό
http://www.docstoc.com/docs/30824319/Cr ... -C-Program

κ.α.

Έλα εύκολος αλγόριθμος είναι, άμα κάτσεις κάτω και ξέρεις προγραμματισμό τον βγάζεις σε πολύ λίγη ώρα...

Απλά δεν ξέρω κατά πόσο θα είναι εύκολο να χτίζεις το μοντέλο δυναμικά, και να μην γράφεις καινούργιο πρόγραμμα για κάθε έργο ξεχωριστά.
Πύργος θεός Πανηλειακός!!

theochry
Δημοσιεύσεις: 2
Εγγραφή: 18 Απρ 2011 17:42

Πως υπολογίζουμε τον χρόνο παράδοσης ενός έργου

Δημοσίευση από theochry » 18 Απρ 2011 20:06

Ο αλγόριθμος του στο site codeproject.com είναι σε C#, στο άλλο site πρέπει να κάνεις εγγραφή με χρήματα για να μπορέσεις να τον κατεβάσεις :( έχω κολλήσει πολύ άσχημα ρε παιδιά, είναι το άμεσως μεγαλύτερο μετά τα hash tables της C, εκεί ευτυχώς το βρήκα..αι να δούμε εδω :hammer:

Απάντηση

Επιστροφή στο “Η Επιχείρηση”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης