Skip to content

Archive for April, 2010

6
Apr

Η Βέλτιστη Λύση

Η Βέλτιστη Λύση

Ξεκίνησα να προγραμματίζω από απλή θέληση. Θυμάμαι από μικρό παιδί που ήθελα να καταλάβω πώς λειτουργεί ο υπολογιστής. Πώς καταλαβαίνει ένας υπολογιστής πώς θα κάνει τις κινήσεις των γραφικών, πώς θα σου βρει ένα αρχείο που ψάχνεις υπό προϋποθέσεις, πώς “καταλαβαίνει” τι πρέπει να κάνει.

Και κάθισα και το έψαξα. Η γλώσσα προγραμματισμού ήταν κάτι άγνωστο στις μάζες, όταν άρχισα να προγραμματίζω εγώ. Και μάλιστα το να προγραμματίζει κάποιος σε περιβάλλον Mac OS ήταν κάτι σαν να υπάρχει τη σήμερον ημέρα επάγγελμα πυρηνικού υδραυλικού. Λίγοι είχαν τότε Macintosh, και ακόμα λιγότεροι χρειάζονταν κάποιο πρόγραμμα. Μόνο επαγγελματίες μουσικούς και γραφίστες έβλεπες να τα χρησιμοποιούν.

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

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

Για να μην τα πολυλογώ, έχω περάσει πολλά σε αυτό το θέμα. Αλλά πλέον πιστεύω ότι έχω καταφέρει μερικά πράγματα. Το iGreekNews είναι ακόμα πρώτο στην κατηγορία του στο App Store, το iMe έχει πάρει διθυραμβικές κριτικές, και εγώ πλέον έχω πάρει την επιβράβευσή μου και κατάλαβα ότι τα πράγματα που είναι απίθανα, δεν σημαίνει ότι είναι και ακατόρθωτα. Το FS2_Launcher αριθμεί εκατοντάδες χιλιάδες downloads.

Αυτό όμως δεν σημαίνει ότι τα πεπραγμένα είναι και εύκολα επειδή κάποιος κατάφερε και τα έκανε, κύριοι! Πόσες φορές έχω γυρίσει το κεφάλι μου και το αυτί μου έχει ακούσει ατάκες του τύπου “iPhone, ε? Ναι, λέω να το αρχίσω κι εγώ. Σε πόσο καιρό λες να μάθω να προγραμματίζω αν αρχίσω τώρα από το 0?”. Ή κάτι άλλες ατάκες του τύπου “Πόσο καιρό σου πήρε να φτιάξεις το τάδε πρόγραμμα?”. Και με κοιτάζουν περίεργα όταν τους λέω ότι μου πήρε περίπου 5 χρόνια και 3 εβδομάδες.

Έχετε ακούσει κανέναν να ρωτάει έναν νευροχειρουργό πόση ώρα του τρώει μία εγχείρηση? Όχι. Γιατί οι ώρες που χρειάζεται ένας νευροχειρουργός για την εγχείρηση αυτή είναι ένα τίποτα μπροστά στα χρόνια που έχει φάει πάνω από ένα βιβλίο για να μάθει να την κάνει, χρόνια την πρακτική εξάσκηση που χρειάζεται. Και δεν συγχέω τον Προγραμματισμό με την Ιατρική. Πιστεύω ακράδαντα ότι για να γίνεις προγραμματιστής χρειάζεσαι πολύ λιγότερη δουλειά από την δουλειά που χρειάζεσαι για να γίνεις γιατρός. Αλλά για να γίνεις καλός προγραμματιστής χρειάζεσαι την διπλάσια δουλειά από έναν γιατρό.

Γιατί?

Γιατί ο Προγραμματισμός είναι τρόπος σκέψης. Είναι η προσωποποίηση της δημιουργίας. Ο κάθε προγραμματιστής αφήνει το στίγμα του στον κώδικά του, όπως αφήνει και ένας συγγραφέας σε ένα βιβλίο του. Ο σωστός προγραμματιστής έχει διαφορετικό τρόπο ζωής και σκέψης και αυτό αποτυπώνεται στα προγράμματά του. Για κάθε πρόβλημα, υπάρχουν πολλές λύσεις, αλλά η Βέλτιστη Λύση είναι ένα θέμα που άλλα επαγγέλματα, όπως η Ιατρική (επειδή το παράδειγμα το έπιασα και νωρίτερα) δεν το αγγίζουν τόσο συχνά.

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

Για αυτό σε αυτούς τους ανθρώπους θα απευθύνω τις εξής ερωτήσεις: Εσείς που τώρα μαθαίνετε προγραμματισμό, έχετε νιώσει ποτέ την ικανοποίηση της επίλυσης ενός προβλήματος? Έχετε ξενυχτίσει ποτέ μπροστά σε μία οθόνη για να καταλάβετε γιατί δεν λειτουργεί σωστά αυτή η κωλο-συνάρτηση malloc()? Όταν φτιάξατε το πρώτο σας πρόγραμμα, νιώσατε περήφανοι ακόμα και αν δεν επρόκειτο να το χρησιμοποιήσει κανείς άλλος εκτός από εσάς? Και πάνω από όλα: Ξεκινήσατε προγραμματισμό πριν ακούσετε για άλλους που έπιασαν την καλή από αυτό?

Αν απαντήσατε ναι σε όλα τα προηγούμενα, τότε ο Προγραμματισμός είναι για εσάς, και εσείς έχετε τις περισσότερες πιθανότητες να βρίσκετε πάντα την Βέλτιστη Λύση, όχι μόνο στο επάγγελμα, αλλά και στην ζωή σας. Οι υπόλοιποι… πιάστε κάποιο άλλο επάγγελμα, για να μην χαλάσετε και αργότερα την πιάτσα.