Σήμερα ο προγραμματισμός είναι μία από τις πιο συχνά επιλεγμένες πορείες επαγγελματικής εξέλιξης.
Κάποιοι εισέρχονται στον κλάδο μετά από σπουδές πληροφορικής. Άλλοι ολοκληρώνουν bootcamps. Και κάποιοι αυτοδιδάσκονται, γράφοντας τις πρώτες τους εφαρμογές μετά το πέρας του ωραρίου.
Ανεξάρτητα από την πορεία, σχεδόν κάθε αρχάριος προγραμματιστής θέτει παρόμοιες ερωτήσεις.
Ποιες τεχνολογίες να επιλέξω;
Πώς να βρω την πρώτη μου δουλειά;
Τι περιμένουν οι εταιρείες;
Πώς μοιάζει η καθημερινή εργασία σε ένα software house;
Και ίσως το σημαντικότερο... Πότε, επιτέλους, δεν θα είμαι πια junior;
Μετά από πάνω από είκοσι χρόνια υλοποίησης έργων για πελάτες από διάφορους κλάδους και μετά από την καθοδήγηση πολλών γενιών νεότερων προγραμματιστών, μπορούμε να απαντήσουμε σε πολλά από αυτά τα ερωτήματα.
Αλλά προειδοποιούμε. Δεν θα υπάρχει λίστα «10 frameworks που πρέπει να μάθεις το 2026».
Τέτοια άρθρα υπάρχουν χιλιάδες στο διαδίκτυο...
Αντί γι' αυτό θέλουμε να δείξουμε πώς είναι ο προγραμματισμός από μέσα. Τον αληθινό.
Χωρίς marketing συνθήματα. Χωρίς ιστορίες για προγραμματιστές που δουλεύουν από την παραλία στη Μπαλί. Αντιθέτως, με ιστορίες που συνέβησαν πραγματικά. Και με συμβουλές που κι εμείς κάποτε χρειαζόμασταν πολύ.
Τι θα καλύψει αυτή η σειρά;
Τις επόμενες τέσσερις αναρτήσεις θα σε καθοδηγήσουμε μέσα από τη διαδρομή που σχεδόν κάθε προγραμματιστής περνάει.
Στις επόμενες ενότητες θα μιλήσουμε μεταξύ άλλων για:
- τι αξίζει πραγματικά να μάθεις στην αρχή της καριέρας,
- ποιες τεχνολογίες αποτελούν θεμέλια και ποιες είναι μόδα πρόσκαιρη,
- ποιο hardware και λογισμικό έχουν πραγματική σημασία,
- πώς μοιάζει η καθημερινή δουλειά σε ένα επαγγελματικό software house,
- γιατί το Code Review είναι ένα από τα καλύτερα μαθήματα προγραμματισμού,
- πώς να χρησιμοποιήσεις την AI για να αναπτυχθείς γρηγορότερα, αντί να αντιγράφεις τυφλά κώδικα,
- ποια λάθη κάνει σχεδόν κάθε Junior,
- γιατί το «σε μένα δουλεύει» έγινε ένα από τα πιο διάσημα ανέκδοτα στον κλάδο,
- πώς διαφέρει ο Junior από τον Mid Developer και τον Senior Developer,
- γιατί τους καλύτερους προγραμματιστές τους αναγνωρίζεις όχι από τον αριθμό των γλωσσών που γνωρίζουν, αλλά από τον τρόπο σκέψης.
Αν μόλις ξεκινάς την περιπέτεια σου με τον προγραμματισμό, αυτή η σειρά θα σε βοηθήσει να αποφύγεις πολλά λάθη.
Αν ήδη εργάζεσαι στον κλάδο, πιθανότατα θα βρεις πολλές καταστάσεις που θυμάσαι πολύ καλά.
Κάθε Senior κάποτε ήταν ο χαμένος Junior
Μερικές φορές είναι δύσκολο να το πιστέψεις. Κοιτάς έναν Senior Developer που εντοπίζει ένα σφάλμα σε λίγα λεπτά, ενώ εσύ σκεφτόσουν γι' αυτό δύο μέρες. Γράφει κώδικα τόσο γρήγορα, σαν να μη χρειάζεται να σκεφτεί καθόλου. Γνωρίζει συντομεύσεις πληκτρολογίου που ούτε φαντάζεσαι ότι υπάρχουν. Μιλάει για αρχιτεκτονική, design patterns και containerization με την ίδια άνεση που κάποιος μιλάει για τον καιρό.
Είναι εύκολο τότε να σκεφτείς: "Αυτός απλά είναι ιδιοφυΐα."
Συνήθως όμως η αλήθεια είναι τελείως διαφορετική...
Κάθε Senior κάποτε:
- ξέχασε ένα μέτρο,
- κατά λάθος διέγραψε κομμάτι της βάσης δεδομένων,
- πολεμούσε με ένα bug μισή μέρα για να ανακαλύψει ένα τυπογραφικό λάθος,
- έκανε το πρώτο του conflict στο Git,
- προώθησε μια διόρθωση που... έσπασε κάτι τελείως άλλο.
Δεν είναι το ταλέντο που διαχωρίζει τους περισσότερους Seniors από τους Juniors. Είναι η εμπειρία. Και την εμπειρία την αποκτάς μόνο με την πρακτική.
Οι σπουδές διδάσκουν προγραμματισμό. Η δουλειά διδάσκει πώς να είσαι προγραμματιστής.
Αυτή η φράση μπορεί να ακούγεται προκλητική, αλλά περιγράφει πολύ καλά την πραγματικότητα.
Οι σπουδές είναι ένα εξαιρετικό μέρος για να κατανοήσεις τα βασικά. Να μάθεις αλγορίθμους. Δομές δεδομένων. Μαθηματικά. Αρχιτεκτονική υπολογιστών. Μοντέλα λειτουργίας λειτουργικών συστημάτων. Αυτά έχουν τεράστια αξία. Ωστόσο, η καθημερινή εργασία είναι εντελώς διαφορετική.
Ξαφνικά διαπιστώνεις ότι εκτός από το να γράφεις κώδικα πρέπει επίσης να:
- καταλάβεις τις ανάγκες του πελάτη,
- συνεργαστείς με UX Designers,
- συμβουλευτείς λύσεις με τον Project Manager,
- ενσωματωθείς με εξωτερικά συστήματα,
- διαβάζεις τεκμηρίωση,
- γράφεις τεκμηρίωση,
- αναλύεις σφάλματα που αναφέρουν χρήστες,
- συμμετέχεις σε Code Review,
- σχεδιάζεις τη δική σου εργασία,
- εκτιμάς τον χρόνο εκτέλεσης των εργασιών.
Και ακριβώς αυτά τα πράγματα τις περισσότερες φορές δεν διδάσκονται σε καμία σχολή.
Η μεγαλύτερη έκπληξη; Ο προγραμματισμός είναι μόνο ένα μέρος της δουλειάς.
Αυτό είναι ένα σημείο που εκπλήσσει σχεδόν κάθε Junior.
Τι φαντάζεσαι;
Έρχεσαι στη δουλειά. Παίρνεις ένα task. Γράφεις κώδικα. Παραδίδεις. Γυρνάς σπίτι.
Η πραγματικότητα είναι διαφορετική...
Μεγάλο μέρος της ημέρας είναι συζητήσεις. Σχεδιασμός. Ανάλυση. Συναντήσεις. Ανάγνωση υπάρχοντος κώδικα. Debugging. Αναζήτηση των αιτιών των προβλημάτων.
Το γράψιμο κώδικα συχνά είναι μόνο ένα από τα στάδια ολόκληρης της διαδικασίας.
Ένας καλός προγραμματιστής δεν είναι αυτός που γράφει τον κώδικα πιο γρήγορα. Ένας καλός προγραμματιστής είναι αυτός που μπορεί να βρει τον καλύτερο τρόπο για να λύσει ένα πρόβλημα.
Κάποιες φορές η καλύτερη λύση είναι... να μην γράψεις ούτε μια νέα γραμμή κώδικα.
Μία ιστορία από την ομάδα μας
Πριν λίγα χρόνια στην ομάδα μας ήρθε ένας μαθητευόμενος για πρακτική. Θυμόμαστε εκείνη την ημέρα πολύ καλά.
Τεράστιο ζήλο. Ακόμα μεγαλύτερη περιέργεια. Και χιλιάδες ερωτήσεις: Γιατί το κάνουμε έτσι; Τι χρειάζεται αυτό το design pattern; Γιατί δεν μπορεί να γραφτεί πιο απλά; Πρέπει στ' αλήθεια να γράφουμε tests; Πώς λειτουργεί το Git;
Ο καθένας από εμάς κάποτε έθετε παρόμοιες ερωτήσεις.
Γι' αυτό, αντί να περιμένουμε ότι από την πρώτη μέρα θα δημιουργεί πολύπλοκες λειτουργικότητες, επιλέξαμε κάτι τελείως διαφορετικό — να διδάξουμε τρόπο σκέψης.
Δεν δείχναμε μόνο πώς να γίνει κάτι.
Εξηγούσαμε κυρίως γιατί το κάνουμε με αυτόν τον τρόπο.
Μετά τις πρώτες πρακτικές επέστρεψε σε εμάς ξανά. Του αναθέσαμε σταδιακά πιο υπεύθυνα tasks. Συμμετείχε σε Code Review. Έμαθε νέες τεχνολογίες. Παρακολούθησε πώς διαχειριζόμαστε projects για πελάτες. Έμαθε να συνεργάζεται με ολόκληρη την ομάδα.
Σήμερα είναι πλήρες μέλος του software house μας.
Διαχειρίζεται απαιτητικά tasks. Σχεδιάζει λύσεις. Λύνει προβλήματα που πριν λίγα χρόνια του φαίνονταν αδύνατα.
Έγινε αυτό επειδή έμαθε ένα ακόμα framework; — Όχι.
Η μεγαλύτερη αλλαγή ήταν ότι έμαθε τρόπο σκέψης. Επειδή ο καλός προγραμματιστής δεν ξέρει τις απαντήσεις σε όλες τις ερωτήσεις. Ο καλός προγραμματιστής ξέρει πώς να βρει τις απαντήσεις αποτελεσματικά.
«Σε μένα δουλεύει...»
Δεν μπορούμε να κλείσουμε το πρώτο μέρος χωρίς ένα από τα πιο κλασικά ρητά στον κόσμο των προγραμματιστών.
Όποιος δουλεύει στο IT για λίγο καιρό γνωρίζει αυτή τη φράση. - Σε μένα δουλεύει.
Αυτή η φράση είναι ταυτόχρονα αστεία...
...και πολύ επικίνδυνη.
Γιατί ο χρήστης δεν ενδιαφέρεται ότι δουλεύει στον υπολογιστή σου.
Ο πελάτης δεν ενδιαφέρεται ότι δούλευε στο test περιβάλλον.
Ο production server επίσης δεν θα διαβάσει το σχόλιο: // σε μένα δούλευε :)
Ο αληθινός προγραμματιστής δεν τελειώνει την ανάλυση με την διαπίστωση «σε μένα δουλεύει».
Θα θέσει την επόμενη ερώτηση: Γιατί δουλεύει σε μένα αλλά όχι στον πελάτη;
Και από εκεί ακριβώς ξεκινάει η πραγματική μάθηση.
Λεξικό όρων
Junior Developer
Προγραμματιστής που ξεκινάει την επαγγελματική του καριέρα. Επικεντρώνεται στη απόκτηση εμπειρίας, στη γνώση καλών πρακτικών και στην ανάπτυξη τεχνικών δεξιοτήτων καθώς και της ομαδικής εργασίας.
Code Review
Διαδικασία αναθεώρησης του κώδικα από άλλον προγραμματιστή. Σκοπός της είναι η βελτίωση της ποιότητας του κώδικα, ο εντοπισμός πιθανών σφαλμάτων και η μεταφορά γνώσης μέσα στην ομάδα.
Framework
Σύνολο έτοιμων βιβλιοθηκών και εργαλείων που διευκολύνουν τη δημιουργία εφαρμογών. Το framework επιβάλλει μια συγκεκριμένη δομή στο project και επιταχύνει την ανάπτυξη λογισμικού.
Git
Το πιο δημοφιλές σύστημα ελέγχου εκδόσεων, που επιτρέπει την παρακολούθηση αλλαγών στον κώδικα και τη συνεργασία πολλών προγραμματιστών σε ένα project.
Debugging (Εντοπισμός σφαλμάτων)
Διαδικασία εντοπισμού, ανάλυσης και διόρθωσης σφαλμάτων σε μια εφαρμογή.
Σύνοψη
Αν μετά την ανάγνωση αυτού του μέρους θυμηθείς μόνο ένα πράγμα, ας είναι αυτό.
Τον προγραμματισμό μπορείς να τον μάθεις από μαθήματα, βιβλία και βίντεο.
Το να γίνεις προγραμματιστής το μαθαίνεις μόλις αρχίσεις να λύνεις πραγματικά προβλήματα μαζί με άλλους ανθρώπους.
Εκεί γεννιέται η εμπειρία, η ευθύνη και ο τρόπος σκέψης που με τον καιρό ξεχωρίζουν έναν καλό προγραμματιστή από κάποιον που απλώς γνωρίζει τη σύνταξη μιας γλώσσας.
Στο επόμενο μέρος θα περάσουμε στα συγκεκριμένα.
Θα δείξουμε τι αξίζει πραγματικά να μάθεις, ποιες τεχνολογίες αποτελούν ισχυρά θεμέλια για την καριέρα σου, ποιο hardware και λογισμικό να επιλέξεις και γιατί η γνώση μιας γλώσσας προγραμματισμού σε βάθος είναι συχνά πιο πολύτιμη από επιφανειακή γνώση πέντε.
