Timezio
Επιστροφή στο Blog

Πώς να Διεκπεραιώνετε Ασύγχρονη Εργασία σε Διαφορετικές Ζώνες Ώρας

9 λεπτά ανάγνωσηςΑπό την ομάδα του Timezio

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

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

Ξεκινήστε με τα μαθηματικά των ζωνών ώρας, και μετά χτίστε πέρα από αυτά

Πριν επανασχεδιάσετε οτιδήποτε, καταγράψτε την πραγματική επικάλυψη της ομάδας σας. Για κάθε ζεύγος τοποθεσιών, μετρήστε τις ώρες κατά τις οποίες και τα δύο άτομα βρίσκονται εντός κανονικού ωραρίου εργασίας — ας πούμε από τις 09:00 έως τις 18:00 τοπική ώρα. Χρησιμοποιήστε ένα ρολόι πολλαπλών ζωνών ώστε να δουλεύετε με πραγματικούς αριθμούς, όχι με εικασίες. Το παγκόσμιο ρολόι και ο μετατροπέας του Timezio δείχνουν αρκετές ζώνες δίπλα-δίπλα, και ο έλεγχος της ζώνης [IANA](https://www.iana.org/time-zones) κάθε πόλης λαμβάνει υπόψη οποιαδήποτε τρέχουσα αλλαγή θερινής ώρας.

Ένα επεξεργασμένο παράδειγμα, με τρεις συναδέλφους στα μέσα Ιουλίου:

  • Σαν Φρανσίσκο — `America/Los_Angeles`, UTC-7 κατά την PDT
  • Βερολίνο — `Europe/Berlin`, UTC+2 κατά την CEST
  • Μπενγκαλούρου — `Asia/Kolkata`, UTC+5:30, χωρίς DST

Οι 09:00 στο Σαν Φρανσίσκο είναι 18:00 στο Βερολίνο και 21:30 στο Μπενγκαλούρου. Το Βερολίνο και το Μπενγκαλούρου μοιράζονται ένα αξιοποιήσιμο παράθυρο από το πρωί ως το απόγευμα. Το Σαν Φρανσίσκο μόλις που προλαβαίνει το Βερολίνο στο τέλος της ημέρας και δεν φτάνει ποτέ το Μπενγκαλούρου σε λογικές ώρες. Σημειώστε τα κινούμενα μέρη: τον Ιανουάριο, το Σαν Φρανσίσκο μετατοπίζεται σε UTC-8 (PST) και το Βερολίνο σε UTC+1 (CET), οπότε η ίδια κλήση των 09:00 ώρα SF πέφτει ξανά στις 18:00 στο Βερολίνο — αλλά οι σύντομες εβδομάδες της άνοιξης και του φθινοπώρου, όταν οι ΗΠΑ και η ΕΕ αλλάζουν ώρα σε διαφορετικές ημερομηνίες, μετακινούν αθόρυβα κάθε παράθυρο επικάλυψης. Το Μπενγκαλούρου δεν μετακινείται ποτέ.

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

Γράφετε έτσι ώστε οι άνθρωποι να μπορούν να δράσουν χωρίς εσάς

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

Τρεις συνήθειες κάνουν το γράψιμο αξιοποιήσιμο:

  • Ξεκινήστε με το αίτημα και την προθεσμία. Οι πρώτες δύο γραμμές θα πρέπει να δηλώνουν τι χρειάζεστε και μέχρι πότε, σε ένα σταθερό σημείο αναφοράς. Το «Χρειάζομαι επιθεώρηση σχεδίασης για τη ροή ολοκλήρωσης αγοράς μέχρι την Πέμπτη 17:00 UTC» υπερτερεί του «Πέμπτη τέλος της ημέρας», που είναι διφορούμενο σε τρεις ηπείρους. Αγκυρώστε κάθε προθεσμία στο UTC ή σε μια κατονομασμένη ζώνη — ποτέ σε ένα κυμαινόμενο «EOD» ή «αύριο».
  • Συμπεριλάβετε το πλαίσιο που θα δίνατε προφορικά. Όταν κανείς δεν μπορεί να σας χτυπήσει στον ώμο, το έγγραφο μεταφέρει το υπόβαθρο, τους περιορισμούς και τις επιλογές που έχετε ήδη αποκλείσει. Ένα καλό ασύγχρονο μήνυμα απαντά στην προφανή επόμενη ερώτηση πριν αυτή τεθεί.
  • Κάντε την επόμενη ενέργεια ξεκάθαρη. Ολοκληρώστε με το ποιος κάνει τι. Το «Η Μαρία εγκρίνει ή ζητά αλλαγές· αν εγκριθεί, ο Dev κάνει merge» δεν αφήνει τίποτα μετέωρο μέσα στη νύχτα.

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

Σχεδιάστε με μηχανική ακρίβεια την παράδοση, μην την αφήνετε στην τύχη

Η παράδοση είναι η στιγμή με τη μεγαλύτερη μόχλευση σε μια κατανεμημένη ομάδα. Όταν το Μπενγκαλούρου αποσυνδέεται και το Σαν Φρανσίσκο συνδέεται, η εργασία είτε συνεχίζει να κινείται είτε κολλάει για έναν ολόκληρο κύκλο. Μια κολλημένη παράδοση κοστίζει μια μέρα· μια καθαρή παράδοση σημαίνει ότι το έργο προχώρησε ενώ όλοι κοιμόντουσαν.

Αντιμετωπίστε τις παραδόσεις ως μια σκόπιμη τελετουργία. Μια σημείωση παράδοσης — αναρτημένη σε ένα κοινό κανάλι ή συνημμένη στο ticket — θα πρέπει να καλύπτει:

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

Ένα επεξεργασμένο παράδειγμα παράδοσης

> Παράδοση — Αναδιάρθρωση ολοκλήρωσης αγοράς — Μπενγκαλούρου EOD (15:30 UTC) > - Ολοκληρώθηκε: μετεγκατάσταση της υπηρεσίας πληρωμών στο νέο API· τα tests είναι πράσινα. > - Σε εξέλιξη: διαχείριση σφαλμάτων για απορριφθείσες κάρτες (κλάδος `decline-handling`, ~60%). > - Μπλοκαρισμένο: χρειάζεται το staging Stripe key από την ομάδα infra του SF. > - Απόφαση: διατηρούμε προς το παρόν την παλιά λογική επανάληψης — η επανεγγραφή της είναι εκτός πεδίου για αυτό το ticket. > - Επόμενη ενέργεια για Βερολίνο/SF: ολοκληρώστε τον κλάδο decline-handling· η περίπτωση που αποτυγχάνει είναι η διαδρομή timeout (δείτε το σχόλιο στη γραμμή 88).

Το Σαν Φρανσίσκο το διαβάζει στην αρχή της μέρας του και γίνεται παραγωγικό μέσα σε λίγα λεπτά, χωρίς αναμονή δώδεκα ωρών για μια απάντηση. Το «follow the sun» λειτουργεί μόνο όταν οι παραδόσεις είναι τόσο ρητές. Χωρίς τη σημείωση, το επόμενο άτομο ξοδεύει την πρώτη του ώρα κάνοντας αντίστροφη μηχανική για να καταλάβει τι έγινε — και συχνά απλώς περιμένει τον συντάκτη να ξυπνήσει.

Κρατήστε ένα αρχείο αποφάσεων

Η πιο ακριβή ασύγχρονη αποτυχία είναι η απόφαση που λαμβάνεται ξανά. Κάποιος επιλύει ένα ζήτημα σε ένα νήμα στις 02:00 ώρα σας· τρεις μέρες αργότερα ένας συνάδελφος που δεν το είδε ποτέ ανοίγει ξανά το ίδιο ζήτημα. Τώρα κατασπαταλάτε σπάνιο σύγχρονο χρόνο διαφωνώντας για κάτι που έχει ήδη επιλυθεί.

Ένα αρχείο αποφάσεων λύνει αυτό το πρόβλημα. Είναι ένα ενιαίο έγγραφο μόνο για προσθήκες — μια σελίδα wiki, ένα καρφιτσωμένο έγγραφο ή ένα ειδικό κανάλι — όπου κάθε ουσιαστική απόφαση καταγράφεται σε μια σταθερή μορφή:

  • Ημερομηνία (με ζώνη ή UTC) και ποιος αποφάσισε.
  • Η απόφαση, σε μία πρόταση.
  • Γιατί, σε δύο ή τρεις.
  • Τι απορρίφθηκε ρητά, ώστε οι εναλλακτικές να μην ξαναπροτείνονται.

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

Θέστε ρητές προσδοκίες χρόνου απόκρισης

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

  • Βαθμίδα 0 — Τώρα (page ή κλήση): η παραγωγή είναι εκτός λειτουργίας, ένας πελάτης είναι μπλοκαρισμένος. Κρατήστε ένα γνήσιο κανάλι πραγματικού χρόνου για αυτό και τίποτα άλλο.
  • Βαθμίδα 1 — Την ίδια εργάσιμη ημέρα: άμεσες ερωτήσεις για ενεργή εργασία. «Εργάσιμη ημέρα» σημαίνει η ημέρα του παραλήπτη, όχι η δική σας — ένα μήνυμα που στέλνεται κατά τη διάρκεια της νύχτας του απαντάται το επόμενο πρωί, και αυτό είναι εγκαίρως, όχι καθυστερημένα.
  • Βαθμίδα 2 — Εντός 24 ωρών: επιθεωρήσεις, εγκρίσεις, οτιδήποτε δεν μπλοκάρει.
  • Βαθμίδα 3 — Όποτε προλάβετε: ενημερωτικά (FYI), ιδέες, μη επείγουσα ανατροφοδότηση.

Καταγράψτε τις βαθμίδες και βάλτε την ομάδα να συμφωνήσει σε αυτές. Το κλειδί είναι ότι ένα κενό 14 ωρών μεταξύ ερώτησης και απάντησης σταματά να μοιάζει με παραμέληση μόλις όλοι καταλάβουν ότι είναι ένας ολόκληρος κύκλος ζώνης ώρας. Ο αποστολέας ξέρει τι να περιμένει· ο παραλήπτης δεν ενοχοποιείται που πρέπει να απαντήσει τα μεσάνυχτα. Συνδυάστε το με ορατές ώρες εργασίας — δημοσιεύστε τις τοπικές ώρες κάθε ατόμου, στη ζώνη IANA του, κάπου κοινόχρηστα, ώστε ο καθένας να μπορεί να δει με μια ματιά αν είστε online και πότε είναι ρεαλιστικά αναμενόμενη μια απάντηση.

Αποφασίστε τι δεν πρέπει ποτέ να είναι σύσκεψη

Το ασύγχρονο μοντέλο δεν είναι «καμία σύσκεψη». Είναι το να ξοδεύετε τη μικροσκοπική σας δεξαμενή επικάλυψης στα λίγα πράγματα που πραγματικά τη χρειάζονται και να αρνείστε να τη σπαταλάτε σε όλα τα υπόλοιπα. Χρησιμοποιήστε έναν απλό διαχωρισμό.

Κάντε το σύσκεψη όταν

  • Διαχειρίζεστε σύγκρουση ή ευαίσθητη ανατροφοδότηση, όπου ο τόνος και η ανάγνωση του κλίματος έχουν σημασία.
  • Το πρόβλημα είναι γνήσια διφορούμενο και χρειάζεται γρήγορη, διακλαδωτή ανταλλαγή απόψεων — πρώιμος καταιγισμός ιδεών, ξεμπέρδεμα μιας μπερδεμένης σχεδίασης.
  • Χρειάζεστε οικοδόμηση σχέσεων και εμπιστοσύνης· οι ομάδες που δεν μιλούν ποτέ ζωντανά γίνονται εύθραυστες.
  • Μια απόφαση είναι κολλημένη μετά από έναν γραπτό γύρο και το νήμα κινείται κυκλικά.

Κρατήστε το ασύγχρονο όταν

  • Είναι μια ενημέρωση κατάστασης. Μια σύσκεψη για να διαβαστούν ενημερώσεις φωναχτά είναι η πιο σπάταλη χρήση της επικάλυψης που υπάρχει.
  • Είναι διαμοιρασμός πληροφοριών χωρίς πραγματική συζήτηση — ανακοινώσεις, ενημερωτικά (FYI), παρουσιάσεις βήμα προς βήμα (καταγράψτε ένα σύντομο βίντεο αντ' αυτού).
  • Είναι μια απόφαση με σαφείς επιλογές που χρειάζεται απλώς έναν υπεύθυνο για να επιλέξει. Χρησιμοποιήστε Πλαίσιο / Επιλογές / Σύσταση και αφήστε τους να αποφασίσουν με το δικό τους ωράριο.
  • Είναι εργασία βαθιάς συγκέντρωσης, όπως λεπτομερής επιθεώρηση κώδικα ή εγγράφου, που γίνεται καλύτερα προσεκτικά σε γραπτή μορφή παρά διαβασμένη βιαστικά ζωντανά.

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

Μια αρχική λίστα ελέγχου

Αν μετακινείτε μια ομάδα προς αυτό το μοντέλο, ξεκινήστε από εδώ:

1. Χαρτογραφήστε την πραγματική σας επικάλυψη για κάθε ζεύγος τοποθεσιών, σε UTC, λαμβάνοντας υπόψη την τρέχουσα DST. Ο μετατροπέας του Timezio το κάνει δουλειά δύο λεπτών. 2. Υιοθετήστε μία μορφή γραφής (Πλαίσιο, Επιλογές, Σύσταση, Απόφαση που απαιτείται) για όλα τα μη ασήμαντα αιτήματα. 3. Καθιερώστε σημειώσεις παράδοσης στο τέλος της ημέρας κάθε περιοχής. 4. Στήστε ένα αρχείο αποφάσεων και απαιτήστε την καταγραφή των απορριφθεισών επιλογών. 5. Δημοσιεύστε βαθμίδες χρόνου απόκρισης και τις ώρες εργασίας του καθενός στην κατονομασμένη ζώνη του. 6. Ελέγξτε τις επαναλαμβανόμενες συσκέψεις και μετατρέψτε κάθε σύσκεψη ενημέρωσης κατάστασης και διαμοιρασμού πληροφοριών σε ασύγχρονη.

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

Επιστροφή στο Blog