4 πράγματα που έμαθα από το να γίνω κύριος προγραμματιστής το πρώτο έτος ως αυτοδίδακτος επαγγελματίας προγραμματιστής

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

Φωτογραφία από τον Alex Kotliarskyi στο Unsplash

Η είσοδος στον κόσμο της επαγγελματικής ανάπτυξης λογισμικού χωρίς εκπαίδευση σε σχετικό τομέα δεν είναι ακριβώς εύκολη. Είχα την πρώτη μου εμπειρία με την ανάπτυξη μιας εταιρικής διαδικτυακής εφαρμογής στο ρόλο μου ως εργαζόμενος φοιτητής σε μια τεράστια δικηγορική εταιρεία για την οποία εργαζόμουν ενώ σπούδαζα για το πτυχίο μου στην κοινωνική ανθρωπολογία. Σε κάποιο σημείο μου ζητήθηκε να επιβλέψω τα αποτελέσματα ενός νέου συστήματος ενσωμάτωσης που το εσωτερικό της ομάδας «IT» ανέπτυξε για νέους πελάτες. Σε αντάλλαγμα με έναν διευθυντή QA δοκίμασα τη νέα εφαρμογή για μήνες προτού να γίνει έτοιμη να κυκλοφορήσει στο κοινό.

Βλέποντας ό, τι ήταν δυνατό στο πεδίο μιας «σύγχρονης» εφαρμογής )️, με έκανε να συνειδητοποιήσω πόσο θα μου άρεσε να κάνω τα πράγματα να μετακινούνται μόνα μου στην οθόνη. Άρχισα λοιπόν να ψάχνω για διαδικτυακά μαθήματα για την ανάπτυξη διαδικτύου, καταδύοντας σε μαθήματα Javascript, καταλαβαίνω πώς να κάνω κουμπιά να μετακινούνται με το jQuery και πώς να δημιουργώ ένα απλό blog με τον Ruby (on Rails) και το SPA-πλαίσιο επιλογής μου, AngularJs.

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

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

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

# 1 Η ανάπτυξη λογισμικού δεν αφορά μόνο τη σύνταξη εύγλωττου κώδικα

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

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

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

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

# 2 Δεν χρειάζεται να είστε ο καλύτερος προγραμματιστής στην ομάδα για να είστε καλό προβάδισμα

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

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

Το να είσαι προπονητής δεν σημαίνει ότι κανείς δεν μπορεί να σου διδάξει τίποτα πια…

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

# 3 Οι νεοσύστατες επιχειρήσεις είναι ένα καταπληκτικό μέρος για ανάπτυξη

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

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

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

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

# 4 Η ταπεινότητα αποδίδει πάντα

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

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

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

Ο ουρανός είναι το όριο!