Τι είναι τα internal tools
Τα internal tools, είναι εργαλεία τα οποία χρησιμοποιεί μία επιχείρηση για εσωτερική χρήση, δηλαδή κάτι το οποίο δεν βλέπει ο τελικός πελάτης. Αυτά μπορεί να αφορούν μία πληθώρα τομών, όπως:
- Documentation εργασιών για τη γρηγορότερη ενημέρωση και εκτέλεση αυτής,
- Τη διαχείριση των εργασιών (task management),
- Τον πλήρη αυτοματισμό εργασιών.
Ο στόχος είναι να διατυπωθεί με σαφήνεια ο τρόπος, χρόνος υλοποίησης μιας εργασίας ή και η εργασία η ίδια (αναλόγως το tool). Επιπρόσθετα, η αυτοματοποίηση βοηθάει στο να ολοκληρώσουμε την τελική εργασία γρήγορα, χωρίς να πρέπει να επαναλαμβάνονται συνεχώς πράγματα, από διαφορετικούς εργαζομένους, τα οποία μπορούν να γίνουν μόνα τους.
Για μία εταιρία, οι επιλογές είναι δύο:
- Είτε να κατασκευάσει η ίδια τα internal tools που θέλει να χρησιμοποιήσει
- Είτε να αγοράσει έτοιμα, με συνδρομή ή one pay.
Και τα δύο έχουν τα δικά τους πλεονεκτήματα και μειονεκτήματα.
Όπως έχει διατυπώσει και ο David Singleton, CTO της Stripe:
“Build, depending on the scale of the task at hand. For example, we use Github, because the engineering effort to build a tool like Github is not worth our time and engineering effort.”
Ένας γενικός κανόνας, θα ήταν:
“Αν ένα εργαλείο που καλύπτει τις ανάγκες μιας εταιρείας, υπάρχει ήδη στην αγορά τότε αξίζει περισσότερο η αγορά ή συνδρομή σε αυτό.
Αν όμως δεν υπάρχει κάτι τέτοιο, τότε θα ήταν καλύτερο να δημιουργηθεί, ειδικά αν η τελική αξία που θα προσφέρει σε χρόνο είναι μεγαλύτερη από το αρχικό κόστος δημιουργίας του.”
Η περίπτωση των Auvril Narrators
Η Auvril Education είναι μία πλατφόρμα που προσφέρει εκπαιδευτικά βιβλία σε ακουστική μορφή. Η παραγωγή των audiobooks γίνεται από την εταιρεία. Παρότι οι αφηγητές μας είναι εξωτερικοί συνεργάτες, έχουμε αναπτύξει μία πολύ στενή σχέση μαζί τους.
Για να έχουμε μια πληθώρα τίτλων audiobooks καλής ποιότητας για τους τελικούς πελάτες, πρέπει να ολοκληρωθούν συγκεκριμένες διαδικασίες. Μεταξύ αυτών είναι να:
- Επιλέγουμε τους κατάλληλους narrators,
- Τους αναθέτουμε τα βιβλία που τους ταιριάζουν,
- Τους βοηθάμε όσο το δυνατόν περισσότερο κατά τη διάρκεια της ηχογράφησης
- Ελέγχουμε και επεξεργαζόμαστε το τελικό αποτέλεσμα πριν δημοσιευθεί στο site μας.
Όλο αυτό είναι μία πολυσύνθετη διαδικασία, η οποία μπορούσε να αυτοματοποιηθεί. Τα βήματα που ακολουθήσαμε ήταν τα εξής:
Αρχικά, έγινε μία προεργασία για να καταλήξουμε σε σαφή βήματα. Έπειτα από έρευνα, έγινε η επιλογή του Airtable. Σύμφωνα με τις παροχές του εργαλείου αυτού, υπάρχει και πρόσβαση στο API, πράγμα εξαιρετικά σημαντικό για την περίπτωσή όπου θα επιθυμούσαμε να κάνουμε extend τις υπάρχουσες δυνατότητες.
Στη συνέχεια, μεταφέραμε όλη την πληροφορία σε ένα table για να μπορούμε να προσθέτουμε και να ενημερώνουμε τις πληροφορίες από εκείνο το κοινό διαχειριστικό.
Έμενε η πλήρης αυτοματοποίηση από μεριάς εισαγωγής narrators. Έτσι, δημιουργήσαμε μία φόρμα, με τη μορφή ερωτηματολογίου, για να συμπληρώνει όποιος ενδιαφέρεται να γίνει narrator στην Auvril.
Μέσα από τις απαντήσεις, καταλαβαίνουμε με τον συντομότερο και ευκολότερο τρόπο ποια είναι η κατηγορία βιβλίων που θα μπορούσε να μας αφηγηθεί.
Ο αυτοματισμός για εμάς έγκειται στη δημιουργία μια φόρμας και στη διασύνδεση της με το API του Airtable. Οι τεχνολογίες που επιλέχθηκαν είναι React.js για το front-end κομμάτι της φόρμας και Node.js για το back-end κομμάτι για τη διασύνδεση με το API.
Hands on παράδειγμα
Φτάνει όμως με όλα αυτά τα θεωρητικά. Ας δούμε ένα real life παράδειγμα το οποίο θα προσομοιάζει όλη αυτή τη διαδικασία.
Για τη φόρμα επιλέχθηκε να χρησιμοποιηθεί η βιβλιοθήκη Formik, όπου αφορά τη δημιουργία και διαχείριση της φόρμα και των στοιχείων της, σε συνδυασμό με το Material UI, για το styling της.
Αρχικά, δημιουργούμε τη φόρμα σύμφωνα με τις πληροφορίες που επιθυμούμε να έχουμε και στα αντίστοιχα πεδία στο table μας στο AIrtable:
Το μόνο που μένει είναι να μπορούμε να στείλουμε στο backend τα στοιχεία που θα πάρουμε. Αυτό θα πραγματοποιηθεί από μία άλλη συνάρτηση, η οποία θα ήταν καλό να βρίσκεται σε κάποιον διαφορετικό φάκελο, εκτός της φόρμας, συνηθίζεται να είναι κάτω από αυτό το directory /helpers. Θα χρησιμοποιήσουμε τη βιβλιοθήκη axios, με σκοπό να επιτευχθεί η επικοινωνία του front-end με το back-end.
Αυτό που επιθυμούμε να κάνει αυτή η συνάρτηση είναι ένα POST request στο API μας, όπου στο body του request θα περιέχει τα στοιχεία της φόρμας μας. Το μόνο κομμάτι που έχει γίνει προστεθεί είναι να μην δίνεται με στατικό τρόπο το API URL, αλλά να μεταβιβάζεται από το .env αρχείο. Έτσι, δε χρειάζεται να αλλάζουμε σε πολλά σημεία αν πρέπει να το αλλάξουμε. Επίσης, μπορούμε εύκολα και γρήγορα να αλλάξουμε από testing url σε local, σε live url. Όλα αυτά χάρης στη βιβλιοθήκη dotenv.
Το αρχείο μας θα έχει αυτή τη μορφή:
Τέλος, το κομμάτι στο οποίο θα συνδεθούν όλα είναι η συνάρτηση στο onSubmit της φόρμας το οποίο και θα είναι:
Έχοντας ολοκληρώσει τις απαραίτητες διαδικασίες στο front-end θα χρειαστεί να βεβαιωθούμε πως έχουμε τις κατάλληλες πληροφορίες από το Airtable. Αρκεί να κατευθυνθούμε σε αυτόν το σύνδεσμο και να επιλέξουμε το table μας. Εκεί θα είναι εμφανείς οι 3 βασικές πληροφορίες που μας είναι απαραίτητες. Μένει μόνο να τις μεταφέρουμε και στο .env file για να μπορέσουμε να τα χρησιμοποιήσουμε στο back-end.
Το τελευταίο κομμάτι δεν είναι άλλο από το back-end. Το Airtable έχει δικιά του βιβλιοθήκη κάνοντας τρομερά εύκολη την επικοινωνία με το API τους. Έχουν υλοποιηθεί όλα τα CRUD operations και δίνεται η δυνατότητα χρήσης τους μέσω συναρτήσεων. Όλα αυτά εξηγούνται στη σελίδα του Airtable API,
Πιο συγκεκριμένα, θα δούμε την χρήση του createRecord. Αρχικά, θα χρησιμοποιήσουμε τη βιβλιοθήκη του Airtable. Θα κάνουμε τη σύνδεση παρέχοντας τα στοιχεία που είχαμε αποθηκεύσει προηγουμένως.
Ακόμα, θα δώσουμε στη συνάρτηση createRecord τα στοιχεία του table μας, όπως και το api key και το base id. Μετά από αυτό είμαστε έτοιμοι να χρησιμοποιήσουμε τη συνάρτηση αυτή και να δημιουργούμε εγγραφές, παρέχοντας όλες τις πληροφορίες για το για τις εγγραφές. Η τελική μορφή του αρχείου θα είναι η ακόλουθη:
Σημαντική Σημείωση: Ένα κομμάτι το οποίο απαιτεί προσοχή είναι ότι στις boolean τιμές, όπως για παράδειγμα το loveYourJob, δεν μπορούμε να περάσουμε αυτούσια τιμή όπως false ή true. Για αυτό το λόγο, περάσαμε και στο table ως Multiple select field, όπου είναι ένα array of strings.