Μάθε παιδί μου κώδικα
Τι λένε τελικά τα κομπιούτερς κι οι αριθμοί; Και πώς μπορεί να μάθει κάποιος προγραμματισμό στο σημερινό μαγικό κόσμο της Πληροφορικής; Ένας αναγνώστης μας δίνει τις απαντήσεις.
Η γνώση προγραμματισμού προβάλλεται τα τελευταία χρόνια σχεδόν σαν φετίχ από ανθρώπους της βιομηχανίας της Πληροφορικής, αλλά και πολιτικούς, σαν φάρμακο για την παγκόσμια οικονομική κρίση. Από την ήδη ηγεμονική βιομηχανία των ΗΠΑ, μέχρι την δική μας… ψωροκώσταινα. Όλοι φαντασιώνονται για την χώρα τους ότι θα γίνουν η νέα Silicon Valley. Σχεδιασμοί επί σχεδιασμών για πώς θα στρωθούν τα κόκκινα χαλιά για το επενδυτικό περιβάλλον που θα δημιουργήσει τις super duper startups. Και θα έρθει η ανάπτυξις… Και θα έχουμε κάργα λεφτά…
Και ο Ελληνικός αστικός τύπος δεν χάνει ευκαιρία να προβάλει την παραμικρή ακτίδα φωτός. Το παραμικρό ελληνικό project που πέτυχε να πωληθεί σε κάποια μεγάλη Αμερικάνικη εταιρεία του χώρου (Google, Facebook, Microsoft κτλ). Ή και που δεν πωλήθηκε ακόμη, αλλά έρχεται η ώρα γιατί είναι φοβερό και τρομερό και σπάει την Ελληνική μιζέρια.
Η φιλολογία/μύθος (πες το όπως θες) για τον τύπο που μπορεί με μια φοβερή ιδέα να γίνει εκατομμυριούχος, πουλάει αρκετά στο χώρο και σε νέους ανθρώπους.
Ταυτόχρονα, άρθρα βγάζουν κραυγή αγωνίας για τις Ελληνικές επιχειρήσεις που δεν βρίσκουν προγραμματιστές για να καλύψουν την τεράστια ζήτηση στην Ελληνική αγορά.
Παγκοσμίως η βιομηχανία βγάζει κραυγή αγωνίας. ΘΕΛΟΥΜΕ ΠΕΡΙΣΣΟΤΕΡΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΤΕΣ! Μέχρι και ο Obama επιστρατεύτηκε για να ωθήσει την Αμερικάνικη νεολαία να μάθει να γράφει κώδικα, στην καμπάνια Hour of Code.
Ο Steve Jobs τα έλεγε αυτά (και κανείς δεν τον πίστευε, τώρα θα τον πιστέψουν και τα ζώα) από παλιά. Αν και ο παλιός του συνεργάτης, ο Steve Wozniak, είπε ότι ο Jobs δεν είχε ιδέα (ούτε από hardware, ούτε από κώδικα) και δεν βοήθησε ποτέ στο να σχεδιαστεί οτιδήποτε. Αν ασχολήθηκε έστω και λίγο ερασιτεχνικά (είτε πριν την ίδρυση της Apple, είτε αργότερα) δεν μπόρεσα να βρω μια επίσημη αναφορά (πέρα από το ότι ήταν παπατζής και πουλούσε άλλων δουλειά για δική του)
Τέλος πάντων. Το πιάσατε το νόημα. Αν η γιαγιά σου (ή ο Μητροπάνος) σου έλεγε τόσα χρόνια να μάθεις τι λένε τα γκομπιούτερς και οι αριθμοί, γιατί είναι το επάγγελμα του μέλλοντος, το μέλλον φαίνεται ότι ήρθε. Στρώσε τον κώλο σου να μάθεις.
Τώρα βέβαια κατά πόσο ισχύει ότι θα βρεις όντως δουλειά και ότι θα πληρώνεσαι σαν άνθρωπος, θα σε γελάσω. Ή είναι θέμα για άλλο άρθρο.
Εγώ το μόνο που θα σου πω είναι να μάθεις να γράφεις έστω και λίγο κώδικα, γιατί έχει πλάκα. Γιατί βοηθάει στο να έχεις μια λογική, να βάζεις κάτω 2 πράγματα στο χαρτί και να σχεδιάσεις, να καταλαβαίνεις το πρόβλημα και να ψάχνεις λύσεις και άλλα τέτοια κλισέ. Και στην τελική, κανένας που έμαθε να γράφει κώδικα, δεν πέθανε. Τουλάχιστον δεν υπάρχουν τέτοιες αναφορές.
Επίσης δεν θα μπορεί να σου την πει ο Μανδραβέλης, ότι είσαι μιζέριας. Ξέχνα όλα τα άλλα. Αυτό έχει τη μεγαλύτερη σημασία…
Ελπίζω να σε έπεισα λοιπόν. Αν δεν σε έπεισα κλείσε το tab και πάνε να διαβάσεις αλλού.
Από εδώ και πέρα διαβάζουν οι πεισμένοι
Πώς μπορεί λοιπόν κάποιος να μάθει προγραμματισμό; Καταρχήν ας κάνουμε μια αναδρομή στα… πέτρινα χρόνια. Δηλαδή πριν 25 χρόνια περίπου πάνω-κάτω. Τότε που τα πισιά (πισία για τον Ιβάν Σαββίδη που διαβάζει) δεν είχανε καλά-καλά παραθύρια και άλλα τέτοια του διαβόλου. Ούτε καν ποντίκι. Ούτε ήχο (πέρα από μπλιμπλίκια). Και το σημαντικότερο, δεν υπήρχαν ίντερνετς. Όλος ο κόσμος σου ήταν μια γραμμή εντολών που, άκου να δεις, πληκτρολογούσες. Υπερβάλλω λίγο, αλλά το πιάνεις το νόημα.
Τότε λοιπόν για να μάθεις να προγραμματίζεις, είτε πήγαινες σε κάποια ιδιωτική σχολή (την κακιάς ή της καλής ώρας), είτε σε κάποιο ΑΕΙ/ΤΕΙ, είτε αγόραζες ένα βιβλίο και έβγαζες τα μάτια σου μοναχός σου. Ενώ φίλους που να έχουν την ίδια τρέλα με σένα, έβρισκες με το sniper. Η μόνη ίσως επαφή με τον έξω κόσμο (για να μην νιώθεις και σαν τον Ρoβινσώνα Κρούσο) ήταν κάποια περιοδικά (ναι, άκου αίσχος, από χαρτί) του χώρου.
Αυτό είχε σαν συνέπεια ότι έπρεπε να ανακαλύπτεις σχεδόν τα πάντα μόνος σου. Όταν σήμερα είναι πολύ καλή πρακτική το να χρησιμοποιείς κώδικα που έχει γράψει κάποιος άλλος (και τον διαμοιράζει ελεύθερα στην κοινότητα. Δεν λέω να τον κλέψεις), αντί να ανακαλύπτεις ξανά και ξανά τον τροχό.
Ούτε φυσικά μπορούσες να ψάξεις στο google ή σε πιο εξειδικευμένα sites (όπως το… ευαγγέλιο stackoverflow.com). Είπαμε, δεν είχε internet.
Ήσουν μόνος! (ήχος από τζιτζίκια)
Για να μην αναφέρω ότι τότε πολύ δύσκολα ένα παιδί είχε και την δυνατότητα να αγοράσει ένα PC. Σήμερα και με 30-40 ευρώ (που λέει ο λόγος) παίρνεις ένα Raspberry Pi και αρχίζεις την περιπέτεια.
Από το 2000 περίπου και μετά, λοιπόν, αρχίζει να αλλάζει η κατάσταση. Έχει εμφανιστεί και η Google και ανοίγεται ένας μαγικός κόσμος για κάθε προγραμματιστή. Ένας κόσμος που τον βλέπουμε όσοι έχουμε ζήσει τα πέτρινα χρόνια και λέμε “αχ, να ήμασταν τώρα 15 χρονών”.
Και ερχόμαστε στο αρχικό ερώτημα. Πώς μπορεί κάποιος να μάθει να γράφει κώδικα, στον σημερινό… μαγικό κόσμο.
Ο προγραμματισμός είναι πολύ φιλικός για κάποιον που θέλει να μάθει μόνος του. Χωρίς να πάει δηλαδή σε κάποια σχολή, σε κάποιο Πανεπιστήμιο. Και για να βρεις εργασία, αν έχεις να δείξεις αξιόλογη δουλειά σου, δύσκολα θα σου κλείσει κάποια εταιρεία την πόρτα γιατί δεν έχεις χαρτί.
Αν μπορείς όμως να κάνεις και κανονικές σπουδές είναι ακόμη καλύτερα, γιατί σε βοηθάει περισσότερο να αποκτήσεις ένα καλό θεωρητικό υπόβαθρο.
Σε κάθε περίπτωση όμως η προσωπική ενασχόληση και η απόκτηση εμπειρίας σε διάφορα projects είναι αυτές που θα σε κάνουν προγραμματιστή. Όχι ότι πέρασες τα μαθήματα και πήρες το πτυχίο. Είναι άλλωστε συχνό το φαινόμενο να βλέπουμε αποφοίτους ΑΕΙ/ΤΕΙ Πληροφορικής που δεν ξέρουν να γράψουν 5 γραμμές κώδικα.
Αφού, λοιπόν, έχεις αποφασίσει ότι γουστάρεις να μάθεις, είτε πας σε κάποιο ΑΕΙ/ΤΕΙ, είτε μπορείς να βρεις και να παρακολουθήσεις δικτυακά μαθήματα (δωρεάν ή με πληρωμή).
Μέχρι πριν λίγα χρόνια στο internet έβρισκες διάφορα σύντομα tutorials που σου μαθαίνανε τα βασικά μιας γλώσσας προγραμματισμού. Σήμερα είναι πολύ καλύτερα με τα δικτυακά μαθήματα, που οργανώνουν τις περισσότερες φορές διάφορα Πανεπιστήμια. Αυτά έχουν πρόγραμμα σπουδών παρόμοιο με αυτό που έχεις αν πας σε κανονικό Πανεπιστήμιο. Υπάρχει ο καθηγητής που παραδίδει το μάθημα, συνήθως με βίντεο, αλλά και με αρκετό έξτρα υλικό. Υπάρχει αλληλεπίδραση και θα γράψεις και tests, αλλά θα παραδώσεις και εργασίες. Φυσικά βαθμολογείσαι. Πολλές φορές αν πληρώσεις (αφού έχεις επιτύχει στις εξετάσεις) μπορείς να πάρεις και βεβαίωση σπουδών. Αν γουστάρεις να μαζεύεις και χαρτιά.
Η μέθοδος αυτή των μαθημάτων είναι πολύ καλύτερη από το να διαβάσεις απλά ένα βιβλίο ή ένα tutorial, γιατί σε βοηθάει περισσότερο στην πειθαρχία. Αν έχεις έλλειψη πειθαρχίας και τάση να τα φορτώνεις στον κόκορα (όπως εγώ), τα μαθήματα αυτά σου θέτουν χρονικά όρια και το έξτρα κίνητρο να τα τελειώσεις.
Μπορείς να βρεις ό,τι θέλεις εκεί έξω από τεχνολογίες που θέλεις να μάθεις (και όχι μόνο από τον χώρο της Πληροφορικής). Ενώ και στην Ελλάδα έχουν αρχίσει να εμφανίζονται αξιόλογες προσπάθειες, που οργανώνονται από Ελληνικά Πανεπιστήμια. Αλλά πάντα καλό είναι να ξέρεις Αγγλικά.
Σημαντικό είναι αμέσως μετά να βρεις ένα προσωπικό (ή επαγγελματικό) project να ασχοληθείς και να εφαρμόσεις τις γνώσεις σου, να αποκτήσεις εμπειρία. Όσο φοβερό και τρομερό πρόγραμμα σπουδών και να παρακολουθήσεις, αν δεν ασχοληθείς να αποκτήσεις εμπειρία, θα έχεις κάνει μια τρύπα στο νερό. Και φυσικά θα ξεχάσεις ό,τι έμαθες μέσα σε λίγο χρονικό διάστημα.
Α, και μην προσπαθείς να μάθεις παπαγαλία. Πολλούς έχω δει να κάνουν αυτό το λάθος και στο τέλος να απογοητεύονται, γιατί δεν μάθανε τίποτα. Ξέρω να γράφω κώδικα δεν σημαίνει ότι ξέρω από έξω μια σειρά εντολών και το συντακτικό κάποιας γλώσσας. Η ουσία είναι να μάθεις καταρχάς την λογική του προγραμματισμού. Μετά μπορείς πανεύκολα να μάθεις την οποιαδήποτε γλώσσα (όλες ίδιες είναι πάνω-κάτω στην ουσία) και τεχνολογία.
Καλά όλα αυτά. Με τι γλώσσα μπορεί κάποιος να αρχίσει; Εγώ θα πρότεινα Python. Πολύ δημοφιλής γλώσσα και βολική για εκπαίδευση.
Μερικά από τα sites που μπορείς να αρχίσεις για να βρεις μαθήματα (είτε με την μορφή που είπα, είτε κάτι παρόμοιο) είναι τα παρακάτω. Αν είναι η πρώτη φορά που θα ασχοληθείς, ψάχνεις κυρίως για μαθήματα που σε εισάγουν στην λογική του προγραμματισμού.
https://www.coursera.org/
https://www.edx.org/
https://www.codecademy.com/
https://code.org/
https://www.udacity.com/
Και στα Ελληνικά
http://www.opencourses.gr/
http://mathesis.cup.gr/
Για εξάσκηση μετά πολύ καλό site είναι αυτό
Και για κερασάκι δες την πολύ ενδιαφέρουσα ομιλία του Γρηγόρη Λιονή σε εκδήλωση της ΚΟΒ Πληροφορικής του ΚΚΕ, που ξεδιαλύνει πολλούς από τους μύθους που κυριαρχούν στον χώρο. Έτσι δεν χρειάζεται να γράψω κι εγώ άλλο άρθρο για το τι ισχύει για όλα αυτά που έγραφα στην αρχή.
Γιάννης Κυράνης (http://www.error.gr)