Στο πρώτο μέρος της σειράς μας δείξαμε ότι η δουλειά του προγραμματιστή είναι πολύ περισσότερα από το απλό γράψιμο κώδικα.
Μιλήσαμε για τις πρώτες μέρες σε ένα software house, για τη διαφορά ανάμεσα στις σπουδές και στα πραγματικά έργα και γιατί η εμπειρία αποκτάται κυρίως μέσω της πρακτικής.
Σήμερα προχωράμε στην ερώτηση που κάνει σχεδόν κάθε Junior. Τι πρέπει πραγματικά να μάθω;
Το ίντερνετ προτείνει τα πάντα. Κάποιοι λένε ότι πρέπει οπωσδήποτε να γνωρίζεις React. Άλλοι ισχυρίζονται ότι το μέλλον ανήκει στο Rust. Άλλοι πάλι πείθουν ότι χωρίς Docker, Kubernetes και πέντε πιστοποιήσεις δεν έχει νόημα να στείλεις βιογραφικό.
Η αλήθεια είναι πολύ πιο ήρεμη...
Μην μαθαίνεις frameworks. Μάθε προγραμματισμό.
Αυτή η φράση μπορεί να φαίνεται παράξενη.
Τελικά οι εταιρείες δημοσιεύουν αγγελίες για React Developer, Java Developer ή PHP Developer.
Γιατί λοιπόν λέμε να μην ξεκινάς από τα frameworks; - Επειδή το framework είναι ένα εργαλείο. Και τα εργαλεία αλλάζουν πολύ γρήγορα.
Πριν λίγα χρόνια πολλοί ήταν πεπεισμένοι ότι το AngularJS θα κυριαρχούσε για δεκαετίες. Σήμερα τα πράγματα δείχνουν εντελώς διαφορετικά.
Θα μαθαίνεις frameworks όλη σου την καριέρα. Αντιθέτως, ο τρόπος σκέψης του προγραμματιστή μένει μαζί σου για πάντα.
Γι' αυτό πρώτα μάθε:
- να λύνεις προβλήματα,
- να αναλύεις απαιτήσεις,
- να σχεδιάζεις λύσεις,
- να διαβάζεις ξένο κώδικα,
- να γράφεις καθαρό, αναγνώσιμο κώδικα.
Η τεχνολογία είναι μόνο ένα μέσο για να πετύχεις έναν στόχο.
Κατάκτησε καλά μια γλώσσα
Αυτό είναι ίσως το πιο συχνό λάθος των αρχαρίων.
Σήμερα JavaScript. Αύριο Python. Μεθαύριο Go. Σε μια βδομάδα Rust. Μετά από έναν μήνα C#...
Μετά από δύο μήνες αποδεικνύεται ότι καμία από αυτές δεν έχει κατακτηθεί σε βάθος. Είναι πολύ καλύτερο να διαλέξεις μια γλώσσα και να τη μάθεις πραγματικά καλά.
Να καταλάβεις:
- πώς λειτουργεί η μνήμη,
- τι είναι οι αναφορές,
- πώς γίνεται η διαχείριση εξαιρέσεων,
- πώς λειτουργούν οι συλλογές,
- ποια η διαφορά ανάμεσα στον συγχρονικό και ασύγχρονο προγραμματισμό,
- πώς γίνεται το debugging.
Όταν μάθεις μία γλώσσα καλά, τις υπόλοιπες θα τις μάθεις πολύ ταχύτερα.
Μάθε να διαβάζεις τεκμηρίωση
Λίγο εντυπωσιακό; Πολύ.
Πάρα πολύ χρήσιμο; Ακόμα περισσότερο.
Ένας καλός προγραμματιστής δεν θυμάται τα πάντα. Ένας καλός προγραμματιστής ξέρει πού να βρει την αξιόπιστη απάντηση.
Η τεκμηρίωση του κατασκευαστή ενός framework ή μιας βιβλιοθήκης σχεδόν πάντα θα είναι καλύτερη πηγή γνώσης από ένα τυχαίο δημοσίευμα σε φόρουμ πριν έξι χρόνια.
Η ικανότητα αναζήτησης πληροφοριών είναι που ξεχωρίζει αυτούς που πραγματικά εξελίσσονται από αυτούς που απλώς αντιγράφουν λύσεις από το ίντερνετ χωρίς αντίκρισμα.
Το Git δεν είναι το κουμπί "Αποστολή"
Αν έπρεπε να υποδείξουμε μία ικανότητα που αξίζει να μάθεις όσο το δυνατόν νωρίτερα, θα ήταν το Git. Όχι γιατί είναι μόδα. Αλλά γιατί σχεδόν κάθε ομάδα προγραμματιστών το χρησιμοποιεί.
Το Git δεν είναι μόνο να αποθηκεύεις αλλαγές. Είναι τρόπος συνεργασίας. Branching. Pull Request. Merge. Επίλυση συγκρούσεων. Ιστορικό αλλαγών.
Χωρίς αυτό είναι δύσκολο να φανταστείς την εργασία σε μια επαγγελματική ομάδα.
Και μια ακόμα συμβουλή. Ποτέ μην στέλνεις το project μέσα σε αρχείο ZIP. Σοβαρά.
SQL - ακόμα κι αν δεν θες να γίνεις DBA
Πολλοί Juniors αποφεύγουν το SQL. Αυτό είναι λάθος.
Οι περισσότερες επιχειρηματικές εφαρμογές χρησιμοποιούν βάσεις δεδομένων. Δεν χρειάζεται να γίνεις ειδικός στην βελτιστοποίηση ερωτημάτων.
Αλλά πρέπει να καταλαβαίνεις:
- τι είναι μια σχεσιακή βάση δεδομένων,
- πώς λειτουργούν οι σχέσεις,
- τι είναι ένας δείκτης (index),
- ποια η διαφορά LEFT JOIN από INNER JOIN,
- γιατί ένα κακογραμμένο ερώτημα μπορεί να επιβραδύνει ολόκληρη την εφαρμογή.
Αυτή είναι γνώση που θα χρειαστείς σχεδόν σε κάθε έργο.
Το Linux δεν δαγκώνει
Δεν χρειάζεται να εγκαταλείψεις αμέσως τα Windows. Αλλά αξίζει να μάθεις τα βασικά της εργασίας στο terminal.
Οι περισσότεροι servers τρέχουν σε Linux.
Η γνώση βασικών εντολών:
- ls,
- cd,
- grep,
- cat,
- chmod,
- ssh,
μπορεί να εξοικονομήσει πολύ χρόνο.
Στην αρχή φαίνεται περίεργο. Μετά από μερικούς μήνες δύσκολα θα φανταστείς τη δουλειά χωρίς terminal.
Docker - γιατί όλοι μιλούν γι' αυτό;
Μερικά χρόνια πριν, η ρύθμιση ενός development περιβάλλοντος μπορούσε να πάρει ολόκληρη μέρα.
Ο καθένας είχε διαφορετική έκδοση PHP. Διαφορετική βάση δεδομένων. Διαφορετικές βιβλιοθήκες.
Το Docker απλοποίησε πολύ αυτό το πρόβλημα. Επιτρέπει την εκτέλεση εφαρμογών σε ίδιες συνθήκες ανεξάρτητα από τον υπολογιστή.
Πρέπει ένας Junior να γίνει αμέσως ειδικός στην containerization; - Όχι.
Αξίζει όμως να καταλαβαίνεις τι είναι ένα container και γιατί σχεδόν κάθε σύγχρονο έργο χρησιμοποιεί Docker.
Η AI είναι εξαιρετικός μέντορας. Όχι ο καλύτερος προγραμματιστής.
Αυτό είναι ένα θέμα που δεν μπορούμε πια να παραλείψουμε.
Το ChatGPT, το GitHub Copilot και άλλα εργαλεία AI μπορούν να επιταχύνουν πολύ τη μάθηση. Υπό μία προϋπόθεση. Μην αντιγράφετε κώδικα χωρίς να τον κατανοείτε.
Πολύ καλύτερα είναι να ρωτήσεις:
- Γιατί αυτή η λύση είναι καλύτερη;
- Πώς λειτουργεί αυτό το αλγόριθμος;
- Πώς μπορεί να βελτιστοποιηθεί;
- Ποια είναι τα μειονεκτήματα αυτής της προσέγγισης;
Η AI εξηγεί πολύ καλά.
Όμως δεν πρέπει να αντικαθιστά τη δική σου σκέψη.
Ο debugger είναι ο φίλος σου
Στην αρχή οι περισσότεροι προγραμματιστές κάνουν κάτι σαν: var_dump($zmienna);
Έπειτα: echo $zmienna;
Και λίγο αργότερα: console.log(dane);
console.log(dane2);
console.log(dane3);
console.log(dane4);
Όλοι μας έτσι ξεκινήσαμε. Αλλά αξίζει όσο το δυνατόν νωρίτερα να μάθεις να χρησιμοποιείς debugger.
Σου επιτρέπει να σταματήσεις το πρόγραμμα σε οποιοδήποτε σημείο, να δεις τις τιμές των μεταβλητών και να καταλάβεις τι πραγματικά συμβαίνει κατά την εκτέλεση του κώδικα.
Αυτή είναι μία από τις δεξιότητες που επιταχύνουν πολύ την εξέλιξη.
Τι εξοπλισμό να διαλέξεις;
Εδώ πολλοί περιμένουν μια λίστα με υπολογιστές αξίας δεκάδων χιλιάδων. Δεν χρειάζεται.
Στην αρχή πιο σημαντικά από τον πιο καινούργιο επεξεργαστή είναι:
- ένα άνετο πληκτρολόγιο,
- γρήγορος δίσκος SSD,
- αρκετή μνήμη RAM,
- σταθερό περιβάλλον εργασίας.
Το πολύχρωμο RGB δεν θα επιταχύνει τη μεταγλώττιση. Τρεις οθόνες επίσης δεν θα κάνουν τον κώδικα καλύτερο.
Ο καλός εξοπλισμός πρέπει να βοηθάει στην εργασία. Όχι να κάνει εντύπωση στις φωτογραφίες (αν και να, η εμφάνιση έχει και αυτή σημασία ;) )
Γλωσσάριο όρων
Framework
Ένα έτοιμο σύνολο εργαλείων και βιβλιοθηκών που διευκολύνει τη δημιουργία εφαρμογών σύμφωνα με συγκεκριμένες αρχές.
Git
Ένα σύστημα ελέγχου εκδόσεων που επιτρέπει την παρακολούθηση αλλαγών στον κώδικα και τη συνεργασία πολλών προγραμματιστών σε ένα project.
Docker
Μια πλατφόρμα που επιτρέπει την εκτέλεση εφαρμογών σε απομονωμένα containers, έτσι ώστε το περιβάλλον να λειτουργεί το ίδιο σε διαφορετικούς υπολογιστές.
Debugger
Εργαλείο για την ανάλυση της λειτουργίας ενός προγράμματος βήμα-βήμα και την εύρεση σφαλμάτων.
SQL
Γλώσσα για την επικοινωνία με σχεσιακές βάσεις δεδομένων.
Σύνοψη
Ένας καλός προγραμματιστής δεν γνωρίζει όλες τις τεχνολογίες. Δεν γνωρίζει όλα τα frameworks. Δεν θυμάται ολόκληρη την τεκμηρίωση.
Ένας καλός προγραμματιστής έχει σταθερά θεμέλια.
Ξέρει πώς να αναλύει προβλήματα.
Μπορεί να βρει πληροφορίες.
Κατανοεί τους κανόνες λειτουργίας των τεχνολογιών.
Και γι' αυτό μπορεί να μάθει γρήγορα νέα εργαλεία.
Τα frameworks θα αλλάζουν.
Οι γλώσσες θα εξελίσσονται.
Ο τρόπος σκέψης θα παραμείνει η πιο πολύτιμη δεξιότητα σε όλη την καριέρα.
Στο επόμενο μέρος θα δείξουμε πώς μοιάζει η καθημερινή δουλειά ενός Senior Developer, γιατί το Code Review είναι το καλύτερο σχολείο προγραμματισμού, τι πραγματικά σημαίνει Clean Code και γιατί η φράση "σε μένα δουλεύει" προκαλεί νευρικό χαμόγελο σε πολλούς προγραμματιστές.



