Monday, January 29, 2007

Επιλογή νέων τεχνολογιών και ρίσκο - Technical management

Όταν ξεκινάει ένα project, υπάρχει κάποια στιγμή που θα πρέπει να παρείς among others και πολλές αποφάσεις οι οποίες έχουν να κανουν με τις τεχνολογίες οι οποίες θα χρησιμοποιηθούν. Η απόφαση αυτή μπορεί να φαντάζει εξαιρετικά εύκολη, ιδιαίτερα αν εισαι ενθουσιώδης, νέος ή φιλόδοξος ή νομίζεις ότι μπορεις να τα κάνεις ολα και να συμφέρεις παρόλα αυτά η ρεαλιστικη άποψη και θέση είναι εξαιρετικά διαφορετική.

Υπάρχουν αρκετοί παράγοντες τους οποίους θα πρέπει να ρίξεις στο mixer της απόφασης μέχρι να καταλήξεις να φτιάξεις τον τελικό χυμό.Ας δούμε μερικούς και ας προβληματιστούμε.

  1. Ωριμότητα τεχνολογίας- ηλικία: Κάθε νέα τεχνολογία framework (που σέβεται τον εαυτό της) έρχεται για να λύσει ή να δώσει απάντηση σε τεχνολογικά αδιέξοδα παλιότερης. Παρόλα αυτά. οι αλλαγές που μπορεί να φέρνει με το καλημέρα μπορεί πραγματικά να μην ειναι αυτές που χρειάζεσαι ή να μην τις χρειάζεσαι ολες. Πολλές φορές εταιρίες ή ομάδες οι οποίες προωθουν μια νέα λύση χαρακτηρίζοντε απο υπερβολικό ζήλο να πίσουν του πάντες για την ορθότητα της υλοποίήσης τους, και αυτό ειναι δεκτό. Εσυ ως το άτομο που θα πρέπει να πάρει την απόφαση θα πρέπει να ζυγίσεις κατα πόσο τα νέα χαρακτηριστικά είνα πραγματικα καλά υλοποιημένα για την ηλικία της προσπάθειας ή αν ειναι ανώριμα ακόμα και θέλει καποιο καιρό. (Φαντασου σαν τα άγουρα φρουτα, μην κάνεις το λάθος και τα κόψεις νωρίς απο το δένδρο μπορεί να εχεις την χαρά να είσαι ο πρώτος που θα τα φάς αλλα είναι αρκετα πιθανό να απογοητευτείς γιατι εσωτερικά τα πράγματα ειναι ξινά). Τώρα το ερώτημα καλά πως να καταλάβω αν πραγματικά ειναι ΟΚ έστω και νωρίς, η απάντηση μου είναι ότι αυτό ειναι θέμα καθαρά της εμπειρίας σου και των ικανοτήτων σου πάνω στο άθλημα.
  2. Community Support : Πολλές νέες τεχνολογίες έρχοντε ξαφνικά στο προσκύνιο δηλαδή ειναι νέες προσπάθειες άλλες ειναι απλά συνέχεια παλιότερων εκδόσεων. Είναι σημαντικό να ξέρουμε και να μπορουμε να αντιληφθουμε κατα πόσο αυτες οι τεχνολογίες έχουν κάποιο ποσοστό αποδοχής απο την υπόλοιπη κοινότητα. Και καλά θα ρωτήσει κάποιος τι με νοιάζει εμένα αν το έχει χρησιμοποιήσει η Soula Soft , h Nitsa Soft και η WeekendGeeks Soft... σε νοιάζει γιατί σημαίνει ότι κάποια ομάδα ανθρώπων εκεί έξω και ίσως και στο internet έχει ηδη λυσει παρόμοια προβληματα με τα δικα σου , η έχει αντιμετωπίσει ηδη τα πρώτα αδιέξοδα της νέας τεχνολογίας. Προσωοπικα πιστευω οτι το wide adoption μιας τεχνολογίας η ενός standard δεν θα πρέπει να το πετάμε στο σκουπήδια ως ένα ακόμα λόγο για να κρίνουμε μία τεχνολογία. Το community support και η διαθεσιμότητα resources ειναι αρκετά σημαντικό και έχει να κάνει με σένα τον ιδιο και τους συνεργάτες σου, δες παρακάτω.
  3. How confident you are : ας το δουμε ρεαλιστικά εκτός και είσαι σε κάποιο σαφε ερευνητικό περιβάλλον οπου τελικά δεν υπάρχει τεράστιο άγχος αν τα πειράματα σου με τη τεχνολογία Α πάνε στράφη, το πόσο έτοιμος είσαι να την χρησιμοποιήσεις και να φέρεις αποτελέσματα είναι αρκετά σημαντικό. Θα μου πεις καλά αν ειναι εξαιρετικά καινουργιο πως θα μπορέσω να πάρω κεφάλι, eventually αυτό είναι το δυσκολο για σένα, να κάνεις ότι μπορείς για να βρεθείς μπροστα. Οσο πιο στενά τα χρονικά όρια για σένα τόσο χειρότερα. Αν νομίζεις ότι εχεις την εμπειρία (να τη πάλι εμφανίστηκε) να το παλέψεις go for it , παίρνοντας μαζί σου και το ρίσκο να συναντήσεις άγνωστες καταστάσεις στις οποίες θα χρειαστεί να δώσεις λύση..φαντάσου ότι εισαι το enterprise to go where no one has gone before.... Warp 9 Mr Soulou. Αν όμως δεν εισαι το enterprise και εισαι κανένα βοηθητικό σκαφάκι, τοτε ισως θα ηταν σωστό να μην το τολμήσεις. Μην ξεχνάς και το εξης...μια νέα τεχνολογία θέλει τον χρόνο της για να την υλοποιήσεις σωστα.Είναι καλύτερα λοιπόν να βασιστείς σε ένα παλιότερο εργαλείο για να κάνεις την δουλειά σου αν νομίζεις οτι δεν έχεις τα skill ή τον χρόνο για να εφαρμόσεις σωστα τα νεα σου εργαλεία. Μια κακο - χρησιμοποιημένη τεχνολογία ειναι 2 φορές χειρότερη απο μια παλιά - παλιομοδιτικη λυση. Βέβαια πρέπει να τονίσουμε οτι το παραπάνω επιχείρημα δεν μπορεί να σε συνοδευει για ολη σου την καριέρα γιατι τότε τεχνικά δεν θα εξελιχθείς ποτέ και δεν θα φροντίσεις να μάθεις νέα πράγματα.
  4. Πόσα resources υπαρχουν (documentation) : Μιλήσα στο σημείο 2 για την ύπαρχει community adoption και resources, mailing list, forums, ενεργές ομάδες κοινότητες. Αλλά ας δούμε και κάτι πιο απλό αλλά σημαντικό . Documentation , υπάρχει είναι καλό; Πρέπει να το εξετάσεις. Οι δημιουργοί έχουν κάνει tutorial, τα έχουν διαθέσιμα και αν λένε τίποτα εννοω είναι χρήσιμα; Υπάρχουν βιβλία διαθέσιμα τα οποία βγήκαν ή θα βγουν σύντομα για την νέα τεχνολογία;
  5. Ποσο confident ειναι οι συνεργάτες σου: Κατα την ταπεινή μου άποψη η υιοθέτηση μιας νέας τεχνολογίας πρέπει να γίνεται τοσο έντονα οσο και η εμπειρία ή οι ικανότητες των συνεργατών σου- συναδέλφων σου. Αν περιβάλλεσαι απο έμπειρους συνεργάτες οι οποίοι εχουν την εμπειρία (να το πάλι) να μπορέσουν να λύσουν τεχνικά προβλήματα οταν βγουν τα δυσκολα τότε έχεις έναν καλό σύμμαχο μαζί σου, αν όμως οι συνεργάτες σου ειναι νέεοι και άπειροι (και αυτο φυσιολογικό είναι ολοι μας ειμασταν και είμαστε νέοι και χωρίς εμπειρία σε σχέση με κάποιους άλλους.
  6. Πόσες νέες τεχνολογίες θα χρησιμοποιήσεις παράλληλα.: Πολλές φορές σε ένα project κάνουμε πλάνα να χρησιμοποιήσουμε 2 ή 3 διαφορετικες , νέες τεχνολογίες μαζί. Αυτό μας οδηγεί όπως αρκετοί λένε σωστά - σε κοντινό φλερτ με την αποτυχία . Ένας ρεαλιστικός κανόνας λεει ότι επέλεξε να χρησιμοποιήσεις τις τεχνολογίες που ειναι απαραίτητες ως νέες για την νέα σου προσπάθεια, και συνδύασε τες με μερικες παλιότερες για να μειώσεις τις πιθανότητες του φλερτ με την αποτυχία και ίσως να πέσεις στο κρεβάτι μαζί της.

Η απόφαση οπως φαίνεται δεν είναι πάντα απλή και εύκολη. Τα αποτελέσματα της απόφαση θα φανουν σύντομα μετα απο 1-2 μηνες δουλειάς η μετα απο 6 μήνες δουλειάς.Καλη τύχη σε κάθε έναν που πάιρνει τέτοιες αποφάσεις...
may the source be with you

1 comment:

  1. Όντως το πρόβλημα είναι συνήθως πολυδιάστατο και βασίζεται σε παράγοντες που δεν έχουν να κάνουν άμεσα μ'εσένα ή την ομάδα σου (βλ. επιλογές για Struts 2). Ένας καλός οδηγός για το θέμα είναι το Κεφ. 2 (J2EE Projects: Choices and Risks) του "Expert one-on-one J2EE Design and Development" που έχει γράψει ο beer-buddy σου ο Rod ;-)

    ReplyDelete