Ο προγραμματιστής και ο developer συχνά χρησιμοποιούνται εναλλάξ ως λέξεις, αλλά υπάρχει μια σημαντική διάκριση μεταξύ τους: η ευρύτερη προοπτική και η εστίαση του προγραμματιστή πέρα από τον απλό κώδικα. Σε αυτό το άρθρο, θα απομακρυνθούμε από τον προγραμματισμό για να αναδείξουμε τις δεξιότητες που καθορίζουν ποιες δεξιότητες πρέπει να έχει ένας επιτυχημένος προγραμματιστής.
Προγραμματιστής vs Software Developer
Οι περισσότεροι άνθρωποι γνωρίζουν αυτούς τους δύο όρους ως συνώνυμα, και πράγματι είναι. Ωστόσο, αν κάνετε μια αναζήτηση στο Google, θα παρατηρήσετε ότι υπάρχει μια διάκριση. Η διαφορά δεν είναι στον τρόπο που εργάζονται με τον κώδικα, αλλά στη στάση τους απέναντι στη δουλειά και την ανάπτυξη λογισμικού.
Ένας προγραμματιστής λογισμικού, ωστόσο, έχει μια πολύ ευρύτερη άποψη για την ανάπτυξη. Δεν πρόκειται μόνο για το γράψιμο κώδικα· πρόκειται για τη συνεργατική δημιουργία ενός προϊόντος που λύνει τα προβλήματα των πελατών. Αυτό σπάνια περιλαμβάνει μόνο μια ομάδα, αλλά μάλλον πολλές ομάδες σε όλο τον κύκλο ζωής του DevOps, από τη φάση του σχεδιασμού μέχρι την παρακολούθηση του αναπτυγμένου προϊόντος.
Αυτό δεν σημαίνει απαραίτητα ότι ένας προγραμματιστής εργάζεται σε όλη την αλυσίδα DevOps. Το σημαντικό είναι ότι ο προγραμματιστής κατανοεί και συμμετέχει στον πλήρη κύκλο ζωής και προσπαθεί ενεργά να βελτιώσει και να βελτιστοποιήσει τη διαδικασία. Είναι επίσης θέμα διαθεσιμότητας όταν άλλες ομάδες χρειάζονται βοήθεια, ώστε ο οργανισμός στο σύνολό του να μπορεί να παραδώσει ένα ποιοτικό προϊόν.
Αρχιτεκτονικές δεξιότητες
Ας ξεκινήσουμε με την πιο προφανή δεξιότητα που πρέπει να έχει ένας προγραμματιστής λογισμικού – μία που θα πρέπει να κατέχουν ακόμη και οι προγραμματιστές: η αρχιτεκτονική. Αν και αυτό μπορεί να φαίνεται προφανές, αξίζει να τονιστεί λόγω της σημασίας του και του γεγονότος ότι πολλοί άνθρωποι το παραμελούν.
Ένας κοινός ρόλος στην ανάπτυξη λογισμικού είναι αυτός του αρχιτέκτονα. Ένα εύκολο λάθος είναι να πιστεύει κανείς ότι ο αρχιτέκτονας της ομάδας είναι αποκλειστικά υπεύθυνος για την αρχιτεκτονική όλων των εφαρμογών που ανήκουν στην ομάδα, κάτι που απλά δεν ισχύει. Κάθε προγραμματιστής θα πρέπει να συμβάλλει στη βελτίωση της αρχιτεκτονικής του κώδικα και επομένως πρέπει να την γνωρίζει και να την εξασκεί. Ενώ οι αρχιτέκτονες εργάζονται σε ένα υψηλότερο και ευρύτερο επίπεδο, όλοι οι προγραμματιστές μοιράζονται την ευθύνη της διατήρησης του κώδικα καθαρού.
Οι καλύτερες πρακτικές και αντι-μοτίβα
Υπάρχουν βέλτιστες πρακτικές και αντι-παραδείγματα για όλες τις γλώσσες και τα πλαίσια. Διαφέρουν κάπως και αλλάζουν με την πάροδο του χρόνου. Για παράδειγμα, το άρθρο μου για τα πρέπει και τα μην του React από πέρυσι είναι ακόμα πολύ σχετικό, αλλά με τον νέο μεταγλωττιστή στο React 19, αρκετοί από αυτούς τους 17 κανόνες θα γίνουν ξεπερασμένοι.
Αυτό που είναι σημαντικό να θυμάστε είναι να ερευνάτε πάντα τις βέλτιστες πρακτικές και τα αντιπαραδείγματα όταν ξεκινάτε με μια νέα γλώσσα ή πλαίσιο. Αυτές οι ώρες ανάγνωσης εξοικονομούν σημαντικό χρόνο που διαφορετικά θα δαπανούταν σε αποσφαλμάτωση και αναδιάρθρωση. Σε ακραίες περιπτώσεις, μιλάμε για μήνες ή ακόμα και χρόνια χρόνου ανάπτυξης που εξοικονομούνται.
Μοτίβα σχεδιασμού
Τα μοτίβα σχεδιασμού παίζουν μεγάλο ρόλο στην αρχιτεκτονική. Η διαφορά μεταξύ καλού και κακού κώδικα συχνά έγκειται στη χρήση των σχεδιαστικών προτύπων. Οι περισσότερες σχεδιαστικές προτύπες είναι γλωσσικά ανεξάρτητες, που σημαίνει ότι μπορείτε να τις χρησιμοποιήσετε ανεξάρτητα από τη γλώσσα ή το πλαίσιο που χρησιμοποιείτε. Επιπλέον, κάθε πλαίσιο έχει το δικό του σύνολο σχεδιαστικών προτύπων και βασίζεται σε πρότυπα που οι καταναλωτές θα πρέπει να ακολουθούν.
Ένα από τα πιο γνωστά γενικά μοτίβα σχεδίασης είναι το SOLID. Είναι ένα καθολικό μοτίβο σχεδίασης που λειτουργεί με τα περισσότερα πλαίσια. Ορισμένα πλαίσια είναι ήδη βασισμένα σε αυτό, και οι χρήστες αυτών των πλαισίων θα ακολουθήσουν αυτόματα το μοτίβο. Άλλα πλαίσια μπορούν να επωφεληθούν από αυτό, αν και δεν είναι πάντα προφανές πώς να προσαρμοστούν σε αυτό. Για παράδειγμα, το React δεν ακολουθεί αυτόματα τις αρχές SOLID, αλλά αν κατανοήσετε πώς λειτουργούν οι αρχές SOLID, μπορείτε να τις εφαρμόσετε και στο React.
Το React επίσης χρησιμεύει ως ένα καλό παράδειγμα για σχέδια σχεδίασης που είναι συγκεκριμένα για το πλαίσιο, όπου έχετε σχέδια όπως Render Props, Custom Hook Pattern και Higher Order Components.
Το κύριο σημείο είναι διπλό: αφιερώστε χρόνο για να μάθετε για τα μοτίβα σχεδίασης γενικά, και βεβαιωθείτε ότι θα αναζητήσετε σχέδια σχεδίασης συγκεκριμένα για το πλαίσιο όταν ξεκινάτε με ένα νέο πλαίσιο.
Σε γενικές γραμμές, τα μοτίβα σχεδιασμού κάνουν τον κώδικα πιο:
- αναγνώσιμο
- ελέγξιμο
- δομημένο
- ανθεκτικό
- DRY (Μην Επαναλαμβάνεσαι)
Αυτές οι πτυχές είναι απαραίτητες για τη συγγραφή επαναχρησιμοποιήσιμου κώδικα και τη συνεργασία με τους συναδέλφους. Τα μοτίβα σχεδίασης βοηθούν επίσης στην πρόληψη σφαλμάτων.
Επικοινωνία
Ως προγραμματιστής, τις περισσότερες φορές κατασκευάζετε ένα μέρος ενός μεγαλύτερου συστήματος. Χωρίς σωστή επικοινωνία με τις άλλες ομάδες για να διασφαλιστεί ότι το λογισμικό σας λειτουργεί με το υπόλοιπο σύστημα, ο ρόλος σας γίνεται άχρηστος. Και χωρίς επικοινωνία μέσα στην ίδια σας την ομάδα, δεν θα ολοκληρώσετε ούτε το στοιχείο σας εγκαίρως.
Η επικοινωνία είναι ζωτικής σημασίας σε κάθε έργο. Δυστυχώς, είναι πολύ δύσκολο. Θα μπορούσα να γράψω πολλά άρθρα για τις δυσκολίες στην επικοινωνία και πώς να επικοινωνούμε αποτελεσματικά, αλλά αυτό δεν είναι το θέμα μου σήμερα.
Προς το παρόν, απλώς θυμηθείτε ότι η επικοινωνία είναι ένα σημαντικό μέρος της δουλειάς ενός προγραμματιστή, και είναι εξίσου σημαντική με την ικανότητα στον προγραμματισμό. Αν θέλεις να μάθεις περισσότερα, έχω επιπλέον συμβουλές για το πώς να επικοινωνείς αποτελεσματικά σε μεγάλες οργανώσεις.
Εξάλειψη Εξαρτήσεων
Στις πρώτες μου μέρες, όταν δυσκολευόμουν στην επικοινωνία με ορισμένα άτομα και ομάδες, η αρχική μου αντίδραση ήταν συχνά να δίνω πολύ σαφείς οδηγίες και να παρακολουθώ στενά τις διαδικασίες για να διασφαλίσω ότι οι εργασίες ολοκληρώνονταν από άλλους. Όταν αυτό δεν λειτουργούσε, τελικά τα παρατούσα και έκανα τη δουλειά μόνος μου απλώς για να ολοκληρωθεί.
Τότε συνειδητοποίησα ότι ο καλύτερος τύπος επικοινωνίας είναι όταν δεν χρειάζεται καθόλου. Αν δεν υπάρχει τίποτα που να χρειάζεται να επικοινωνηθεί, δεν μπορούν να υπάρξουν προβλήματα επικοινωνίας.
Ένα σημαντικό σημείο εδώ: Δεν προτείνω να παραλείψετε την επικοινωνία και να κάνετε εσείς τη δουλειά των άλλων. Αντίθετα, λέω ότι η εργασία θα πρέπει να χωρίζεται σε διαφορετικούς τομείς με τρόπο που να ελαχιστοποιεί την ανάγκη για επικοινωνία.
Όταν δημιουργούν ομάδες, οι άνθρωποι συνήθως μιλούν για λειτουργικές ομάδες – ομάδες που διαθέτουν όλες τις απαραίτητες ικανότητες για να αναπτύξουν, να αναπτύξουν και να παρακολουθήσουν το προϊόν τους χωρίς εξαρτήσεις από άλλες ομάδες.
Οι λειτουργικές ομάδες συχνά αναφέρονται στην ύπαρξη της γνώσης και των δεξιοτήτων για να είναι αυτοοργανωμένες, που σημαίνει ότι διαθέτουν όλη την απαραίτητη εξειδίκευση για να διαχειρίζονται τις εξαρτήσεις τους.
Μια φορά ακόμα, υπάρχει πολύ υλικό να καλυφθεί σε αυτό το άρθρο, οπότε δεν θα εμβαθύνω σε αυτό το θέμα. Αν σας ενδιαφέρει, μπορείτε να διαβάσετε περισσότερα για την εξάλειψη των εξαρτήσεων στο άλλο μου άρθρο, το οποίο καλύπτει επίσης παρόμοιες συμβουλές για τη συνεργασία και την επικοινωνία της ομάδας.
Χτίστε μια ομάδα
Η ομαδική οικοδόμηση είναι ένας όρος που συχνά συνδέεται με διασκεδαστικές δραστηριότητες και περιστασιακές συγκεντρώσεις μετά τη δουλειά. Ενώ αυτά είναι σίγουρα σημαντικές πτυχές της οικοδόμησης ομάδας, απέχουν πολύ από το να είναι η πλήρης εικόνα.
Έχει η ομάδα σας κοινούς στόχους; Έχετε συμφωνήσει πώς να διαχειρίζεστε τις αναθεωρήσεις κώδικα; Ξέρεις γιατί η ομάδα σου δεν απαντά ποτέ σε ερωτήσεις στο κανάλι Slack της ομάδας; Αν οι απαντήσεις σε αυτές τις ερωτήσεις είναι όχι, δεν έχετε ακόμα ολοκληρώσει την οικοδόμηση της ομάδας σας.
Η οικοδόμηση ομάδας θα πρέπει να αφορά τη συζήτηση ιδεών, την επίλυση συγκρούσεων και διαφωνιών, και την εύρεση ενός κοινού τρόπου εργασίας που να συμφωνεί η όλη ομάδα. Πρόκειται για την ανταλλαγή γνώσεων και εμπειριών ώστε όλοι οι συνεργάτες να είναι άνετοι να εργάζονται με την ομάδα και να αντιμετωπίζουν τα επερχόμενα χαρακτηριστικά και σφάλματα. Πρόκειται για το να βοηθάμε τους συναδέλφους να εργάζονται τόσο ανεξάρτητα όσο και συνεργατικά.
Ο τρόπος για να επιτευχθεί αυτό συχνά περιλαμβάνει συναντήσεις. Αυτές δεν χρειάζεται να είναι επίσημες συναντήσεις με αυστηρές ημερήσιες διατάξεις, αλλά πρέπει να υπάρχουν περιπτώσεις όπου η ομάδα συγκεντρώνεται για να επικοινωνήσει. Ορισμένες συζητήσεις μπορεί να απαιτούν μια ολόκληρη ώρα, ενώ άλλα θέματα μπορούν να αντιμετωπιστούν κατά τη διάρκεια μικρών συναντήσεων συγχρονισμού.
Για παράδειγμα, μια καλή στιγμή για να συζητήσετε τις προσδοκίες για τις αναθεωρήσεις κώδικα είναι κατά τη διάρκεια των πραγματικών αναθεωρήσεων κώδικα! Αντί να μιλάτε μόνο για το πώς να αλλάξετε τον κώδικα, βεβαιωθείτε ότι συζητάτε γιατί πιστεύετε ότι οι αλλαγές είναι απαραίτητες. Γιατί νομίζετε ότι είναι σημαντικό, και τι πιστεύουν οι συμπαίκτες σας γι’ αυτό;
Μια τελευταία σημείωση – η οικοδόμηση της ομάδας αφορά ολόκληρη την ομάδα. Ενώ ορισμένοι ρόλοι όπως ο Scrum Master και ο επικεφαλής της ομάδας έχουν την ευθύνη της οικοδόμησης μιας ομάδας, δεν είναι οι μόνοι που πρέπει να προσπαθούν να την βελτιώσουν. Η οικοδόμηση μιας ομάδας είναι ομαδική εργασία, όχι καθήκον ενός μόνο ατόμου.
Χτίστε ένα δίκτυο
Έχεις ποτέ κολλήσει σε ένα πρόβλημα; Μια φορά που ζητήσατε βοήθεια αλλά κανείς δεν είχε χρόνο να σας βοηθήσει; Έχετε νιώσει ότι κανείς δεν άκουγε αυτά που λέγατε, αν και αργότερα αποδείχθηκε ότι είχες δίκιο; Γιατί συμβαίνει αυτό;
Οι άνθρωποι είναι συνήθως απασχολημένοι, και δεν είναι δυνατόν να λαμβάνεται πάντα υπόψη η γνώμη όλων. Αυτό που πρέπει να κάνετε είναι να κάνετε τη φωνή σας να ακουστεί. Πολύ συχνά, ο τρόπος για να το κάνετε αυτό είναι να μιλήσετε δυνατά και να δηλώσετε με αυτοπεποίθηση ότι η λύση ή το πρόβλημά σας είναι αυτό που πρέπει να ληφθεί υπόψη.
Ωστόσο, δεν είναι όλοι άνετοι με αυτό. Ευτυχώς, υπάρχει ένας άλλος τρόπος να ακουστεί η φωνή σου – βρίσκοντας κάποιον που σε ακούει ακόμα και όταν ψιθυρίζεις.
Ποιοι είναι οι άνθρωποι που είναι πιο πιθανό να σας βοηθήσουν όταν χρειάζεστε βοήθεια; Είναι η οικογένεια, οι φίλοι και οι γνωστοί. Είναι πολύ σπάνιο οι άνθρωποι να βοηθούν ξένους, ειδικά όταν αυτό σημαίνει ότι θα αναλάβουν επιπλέον δουλειά.
Δημιουργώντας ένα δίκτυο και κάνοντας φίλους, θα διαπιστώσετε ότι θα λαμβάνετε βοήθεια πιο συχνά και πολύ πιο γρήγορα. Οι άνθρωποι δίνουν προτεραιότητα στη βοήθεια στους φίλους, τόσο επειδή είναι κάποιοι που τους αρέσουν όσο και επειδή είναι πιο δύσκολο να πεις όχι σε έναν φίλο.
Η ευκολία του να κάνεις φίλους διαφέρει από άτομο σε άτομο, αλλά όλοι έχουν ευκαιρίες. Απλά κάντε ένα σύντομο σχόλιο ή ρωτήστε κάτι σε κάποιον ενώ περιμένετε στη σειρά για καφέ, ή φροντίστε να μιλήσετε με τον σχεδιαστή για κάτι που σας απασχολεί στα σχέδια του Figma αντί να μαντεύετε ή να στέλνετε ένα μήνυμα στο Slack. Ό,τι κι αν κάνετε, μην ζητήσετε από άλλους να μιλήσουν σε κάποιον για σας, γιατί έτσι χάνετε μια νέα φιλία.