Ανάπτυξη ενός ομαδικού έργου εναντίον του Flying Solo

Αυτή την εβδομάδα ξεκινώ το δεύτερο έργο απομακρυσμένης ομάδας μου ως μέρος των Chingu Cohorts. Με αυτόν τον τρόπο, θα ήθελα να αφιερώσω ένα λεπτό για να αναλογιστώ τι έμαθα στην πρώτη μου κολεκτίνα «Voyage».

Φωτογραφία από τον Andrew Neel στο Unsplash

Η εργασία ως μέλος μιας ομάδας δεν είναι κάτι νέο για μένα. Έχω περάσει τα τελευταία 20 χρόνια στην έρευνα στον τομέα της φαρμακευτικής βιομηχανίας, τα οποία πέρασαν σε ομάδες διαφόρων μεγεθών και επιπέδων αλληλεπίδρασης. Ήταν, ωστόσο, η πρώτη μου εμπειρία ως μέρος μιας ομάδας ανάπτυξης και έδωσε κάποιες νέες προκλήσεις σε σχέση με την ανάπτυξη ενός έργου από μόνος μου.

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

Φυσικά, με την κατεύθυνση του έργου, είχα τις συνηθισμένες ανησυχίες και νευρικότητα σχετικά με την κωδικοποίηση ως μέρος μιας ομάδας, όπως "Τι γίνεται αν ο κωδικός μου δεν είναι ίσος με τους άλλους στην ομάδα;" και "Τι γίνεται αν κάνω μια λάθος και να καταστρέψει εντελώς την κωδική βάση της ομάδας; "και ούτω καθεξής ...

Ως συνήθως, τέτοιου είδους ανησυχίες δούλεψαν όταν ξεκινούσαμε να σκάψουμε το έργο και θα ήθελα να σκεφτώ ότι αποχώρησα από έναν πολύ καλύτερο προγραμματιστή για να είμαι μέρος αυτού. Έμαθα πολλά από τα άλλα δύο μέλη της ομάδας και θα ήθελα να πιστεύω ότι μπορούσαν να μάθουν κάτι από μένα σε αντάλλαγμα.

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

Επικοινωνία

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

Ως μέρος ενός ομαδικού έργου, ωστόσο, εξαρτάτε τους συμπαίκτες σας να σας παράσχουν όλες τις αλλαγές που έχουν κάνει (και εξαρτώνται από εσάς για το ίδιο).

Φωτογραφία από τον James Sutton στο Unsplash

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

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

Στην επιφάνεια, αυτό μπορεί να ακούγεται σαν μια προφανής έννοια και δεν αξίζει ακριβώς να γράψετε (ή να διαβάσετε) ένα ολόκληρο άρθρο. Αλλά αν είστε συνηθισμένοι να εργάζεστε μόνοι σας, καθώς όλη η επικοινωνία συμβαίνει ασυνείδητα στο δικό σας κεφάλι, αυτό αντιπροσωπεύει μια κρίσιμη αλλαγή στην κανονική σας διαδικασία.

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

Σε περίπτωση αμφιβολίας, σφάλμα από την πλευρά της μεγαλύτερης επικοινωνίας.

Σημαίνει, αν δεν είστε σίγουροι αν κάτι σχετίζεται με την ομάδα, απλά ρίξτε ένα γρήγορο FYI εκεί έξω σε οποιοδήποτε κανάλι χρησιμοποιεί η ομάδα και προχωρήστε.

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

Ροή εργασιών

Αυτό μας φέρνει στη ροή εργασίας.

Με τη ροή εργασίας, εννοώ πώς η ομάδα σας διαχειρίζεται τη διαδικασία git και αν χρησιμοποιεί αποτελεσματικά υποκαταστήματα, δεσμεύσεις, αιτήσεις έλξης κλπ.

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

Ευτυχώς, ο Francesco Agnoletto έχει γράψει μια σειρά οδηγών που περιγράφουν με σαφήνεια πώς πρέπει να χρησιμοποιηθεί το git σε μια ομαδική ρύθμιση. Συνιστώ ανεπιφύλακτα την ανάγνωση (και τη δημιουργία σελιδοδεικτών για μελλοντική αναφορά) και των τριών άρθρων. Μπορούν να βρεθούν εδώ - μέρος 1, μέρος 2 και μέρος 3.

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

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

Πρώτον, όταν γίνεται αποτελεσματικά, η καλή ροή εργασίας ενισχύει την ομαδική επικοινωνία. Όπως ανέφερα νωρίτερα, η επικοινωνία και η ροή εργασίας είναι πολύ αλληλένδετες και το καθένα μπορεί να ενισχύσει το άλλο.

Φωτογραφία από τον Pavan Trikutam στο Unsplash

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

Οι προαναφερόμενοι οδηγοί έχουν συμβουλές σχετικά με τις συμβάσεις ονομασίας για τους δύο κλάδους και τις δεσμεύσεις. Διάβασε τα!

Τώρα που έχουμε διαβάσει όλα τα άρθρα του Francesco και όλα βρίσκονται στην ίδια σελίδα όσον αφορά τη ροή εργασιών, υπάρχει ένα τελευταίο σημείο που θα ήθελα να κάνω. Να είστε πολύ επιμελής για να μην κάνετε αλλαγές εκτός του πεδίου του υποκαταστήματός σας.

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

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

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

Η πραγματοποίηση αλλαγής στον κώδικα στον οποίο ένας από τους συμπαίκτες σας εργάζεται ενεργά (εκτός από το να τους πειράζει) έχει τη δυνατότητα να προκαλέσει κάθε είδους συγκρούσεις όταν προσπαθούν να συγχωνεύσουν τις αλλαγές τους. Θα μπορούσαν να ξοδέψουν τον ίδιο χρόνο για την επίλυση συγχωνεύσεων συγχώνευσης, καθώς έκαναν αλλαγές στον κλάδο.

Δεν είναι καλό για τη δυναμική της ομάδας ...

Περίληψη

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

Δεν χρειάζεται όμως να είναι δύσκολο, αλλά χρειάζεται κάποια συνειδητή προσπάθεια. Μην ξεχνάτε ότι είστε μέλος μιας ομάδας και ενεργείτε ως τέτοιος. Η ισχυρή επικοινωνία και η ροή εργασίας θα κάνουν την ομάδα σας μεγαλύτερη από το άθροισμα των τμημάτων της, αλλά το αντίθετο θα απομακρύνει απόλυτα την πρόοδο της ομάδας σας.

Και αν εργάζεστε για να γίνετε προγραμματιστής, κάντε τον εαυτό σας μια χάρη και κοιτάξτε τους Chingu Cohorts. Είναι μια εκπληκτική παγκόσμια κοινότητα προγραμματιστών και επίδοξων προγραμματιστών που εργάζονται μαζί για να κάνουν σπουδαία πράγματα.