Οι καρφωτούρες, παίζει με καρφωμένες τιμές, α τι ωραία βρήκα ένα magic number, α τι ωραίο σκουπίδι που είναι ο κώδικας και το project μου
Λοιπόν, να πω ότι τα φαινόμενα που θα περιγράψω παρακάτω δεν είναι αρνητικό προνόμιο μόνο της ελληνικής αγοράς και των Ελλήνων developers (εμείς είμαστε αυτοί), αλλά παγκόσμιο.
Παρόλα αυτά επειδή θα γράψω στα Ελληνικά θα το ζωγραφίσω με τη δική μας κατάσταση.
Εσύ συνάδελφε που τυχαίνει να με διαβάσεις, πες μου πόσες φορές ακούς την ημέρα (όχι την εβδομάδα ή το μήνα), την ημέρα, τις εξής εκφράσεις:
- παίζει αλλά είναι με καρφωμένες τιμές.
- εντάξει δεν ξέρω πως θα το κάνω και του κάρφωσα μερικές συνθήκες στην υλοποίηση.
- _με πιέζουν αρκετά και το θέλουν αύριο, δεν μπορώ να κάνω κάτι καλύτερο από το να καρφώσω με τιμές που θα παίξουν.
- από μέσα του όχι φωναχτά: έλα μωρέ ποιος θα το δει τώρα ότι πήγα και το έφτιαξα τσαπατσούλικα, εδώ μέσα γίνεται χαμός, σιγά μη σκάσω εγώ για τον μ@@κα
- από μέσα του: δεν πληρώνομαι αρκετά ρε φίλε για να το φτιάξω σωστά, σιγά τόσα που μου δίνουν και με αυτές τις συνθήκες, θα καρφώσω την υλοποίηση και ότι γίνει.
Καρφωτούρες, καρφωμένες τιμές, υποθέσεις χωρίς εξήγηση, αφημένες στην τύχη τους, μια βόμβα έτοιμη να σκάσει:
- ακριβώς μόλις βγει σε παραγωγή στο σύστημα
- την αμέσως επόμενη μέρα που θα χρειαστούμε να κάνουμε αλλαγές στην πρώτη έκδοση
- την αμέσως επόμενη μέρα που θα συνειδητοποιήσουμε ότι πρέπει να αλλάξουμε τη λύση μας
- τα αμέσως επόμενα χρόνια που κάποιος κακόμοιρος θα προσπαθήσει να διορθώσει τη δική μας απόφαση (διάλεξε πάνω από τα bullet ποια είναι η δικαιολογία σου).
Το φαινόμενο προφανέστατα είναι μια ακόμα όψη του ίδιου νομίσματος που ονομάζεται technical debt. Ο Π.Παπαπέτρου περιγράφει πολύ εύστοχα σε αυτή του την παρουσίαση το technical debt ως τον βαθμό δυσκολίας που θα έχει μια οποιαδήποτε ομάδα λογισμικού για να προσθέσει added value σε ένα λογισμικό χωρίς να το διαλύσει ή να εκφυλίσει την αρχιτεκτονική του (θα προσθέσω σιωπηλά). Το technical debt στην Ελλάδα κατά την ταπεινή μου άποψη οφείλεται στους εξής λόγους:
- Το λεγόμενο technical IT management είναι σχεδόν ανύπαρκτο και εξασκείται από ανθρώπους στην πλειοψηφία μέτριων ή με σχεδόν καθόλου γνώσεις πάνω στη διαδικασία της σχεδίασης, υλοποίησης και διαχείρισης έργων πληροφορικής. Είναι οι ίδιοι άνθρωποι που θα θυσιάσουν τη λογική για εξωπραγματικά estimates, θα εθιστούν στο overpromise στον πελάτη, θα θεωρήσουν ότι ξέρουν καλύτερα, θα αποσυντονίσουν την ομάδα, στις δύσκολες στιγμές θα πιέσουν ή θα απειλήσουν. Είναι οι άνθρωποι που θα κομπάσουν ότι ξέρουν το business αλλά αυτό δε σημαίνει ότι ξέρουν πως να οργανώσουν μια ομάδα λογισμικού. Οι ομάδες πληροφορικής πρέπει να οργανωθούν από τεχνικούς ανθρώπους και όχι business experts και wannabe πωλητές. Κακό management σημαίνει κακό λογισμικό.
- Δε διδάσκουμε εγχώρια την ανάπτυξη λογισμικού σαν μια επιστήμη από μόνη της. Ταπεινή μου άποψη είναι ότι έχουμε ανάγκη από ακόμα πιο πολλές σχολές σε πανεπιστήμια και ΤΕΙ που θα ετοιμάσουν προγραμματιστές και όχι hybrid τα ξέρω λίγο απ' όλα, βασικά θέλω να γίνω admin αλλά τελικά αναγκάζομαι να γράψω php κτλ. Τα τελευταία χρόνια στην Ελλάδα από αυτά που ακούω υπάρχουν πια σχολές στοχευμένες στο Software Engineering και θέλω να ελπίζω ότι θα γίνουν mainstream. Η υλοποίηση λογισμικού δεν είναι μόνο α) ξέρω θεωρητικά ένα αλγόριθμο τέλεια ή ξέρω πολύ καλά μόνο μία γλώσσα. Είναι μια σύνθετη διαδικασία που φέρνει τον προγραμματιστή αντιμέτωπο με τεχνικά αλλά και διαχειριστικά challenges, τα οποία πολλές φορές τα αγνοούμε. Δεν είναι δυνατόν το 2014 να βλέπεις παιδιά που βγαίνουν τώρα από τα πανεπιστήμια πληροφορικής και να μην κατανοούν την έννοια του unit test, του documentation, της δομημένης λογικής. Ο προγραμματιστής είναι και αυτά, όχι μόνο 2 γραμμές δυσνόητου κώδικα και φύγαμε. Η αγορά δεν έχει ανάγκη μόνο από hackers αλλά πραγματικά από ανθρώπους που θα υλοποιήσουν και θα λύσουν προβλήματα με απλό και ευέλικτο τρόπο. Αυτοί είναι για μένα οι πιο χρήσιμοι και άξιοι συνάδελφοι.
- Η εγχώρια αγορά πληροφορικής δεν είναι τόσο ανταγωνιστική έτσι ώστε να δημιουργήσει τις συνθήκες ώστε πελάτες και εταιρίες να δώσουν έμφαση στην ποιότητα του παραγόμενου λογισμικού. Δε φταίει μόνο η κακή εταιρία που δίνει μία τσαπατσούλικη λύση, φταίει και αυτός που την αποδέχεται, που δεν τον νοιάζει ίσως η ποιότητα γιατί τελικά δεν έχει επίδραση στον αριθμό των πωλήσεων του. Τα συστήματα πληροφορικής στη χώρα μας τώρα δειλά αρχίζουν να παίρνουν τη θέση που τους αξίζει σε ό,τι έχει να κάνει με το business value. Ποιότητα σε ένα έργο πληροφορικής δεν είναι ότι δεν ** έσκασε** την πρώτη μέρα σε παραγωγή ή δεν έμειναν οι servers από μνήμη. Ποιότητα σημαίνει ότι παρέλαβα ένα σύστημα το οποίο δεν έχει αρκετά παιδικά προβλήματα, δεν παρουσιάζει προβλήματα με τον χρόνο, είναι σχετικά εύκολο να χτίσω πάνω του χωρίς να το διαλύω, τέλος μπορώ να το θεωρήσω σαν μια τεχνολογική επένδυση που περιμένω να μου κάνει απόσβεση και όχι να το ξανά-αγοράσω μετά από 1 χρόνο. Το σύστημα κάνει deliver το business promise αλλά δε μου τρώει λεφτά η τεχνική του πολυπλοκότητα και αδυναμία.
- Εμείς, μας άφησα τελευταίους. Ναι, εμείς οι developers, η έλλειψη επαγγελματισμού. Νομίζω ότι είναι γενικό φαινόμενο της χώρας μας, όπως και η ποιότητα παροχής υπηρεσιών. Κάθε φορά που βάζουμε μια μαγική τιμή κάπου, κάθε φορά που είτε μας πίεσαν είτε όχι γράψαμε μερικές γραμμές κώδικα και στη συνείδησή μας δεν το καταλαβαίνουμε ότι αυτό που κάνουμε είναι αντι-επαγγελματικό ή δεν το επικοινωνούμε καθόλου, φταίμε και έχουμε μεγάλο μερίδιο ευθύνης.
Θα ρωτήσει κάποιος και πως θα αλλάξει. Προφανέστατα αύριο που θα πας στη δουλειά, ή τώρα που με διαβάζεις, δε θα αλλάξει προς το λογικό και ευέλικτο το management, δε θα γεμίσει η αγορά με καταρτισμένους developers και φυσικά ο συνάδελφός σου δίπλα που ξέρεις ότι slack-άρει ή βαριέται δε θα αποκτήσει συνείδηση για να κάνει σωστά τη δουλειά του. Το στοίχημα λοιπόν είσαι εσύ, ο καθένας μας, από τον ρόλο που υπηρετεί στο τέλος της ημέρας να είναι περήφανος για τη δουλειά του και να ξέρει ότι έδωσε το 100% των δυνατοτήτων του, όχι το 70% ούτε το 110%. Αρκεί όλοι μας να δώσουμε το 100% και μέρα με τη μέρα ακόμα και τα πιο μικρά πράγματα σαν developers θα βελτιώσουν τη ζωή των δίπλα μας. Μπορεί κάποια στιγμή κάποιος manager να το εκτιμήσει αντίστοιχα, μπορεί και όχι. Μιλάμε αρκετά για την ελληνική επιχειρηματική εξωστρέφεια και τις ελληνικές start-ups και τη μεγάλη ελπίδα όλων.
Κύριοι και κυρίες, αν δεν αλλάξουμε επαγγελματικές συνήθειες, δεν αποκτήσουμε πιο υψηλά standards για τους ίδιους μας τους εαυτούς, δε θα μπορέσουμε να κάνουμε κάτι τόσο διαφορετικό. Γιατί μεταξύ μας, ναι όλοι έχουμε δει κώδικα από τις φάρμες Ινδών σε κάποιο project πολυεθνικής, αλλά μήπως εμείς είμαστε καλύτεροι όταν πάμε και γεμίζουμε τσαπατσούλικες λύσεις τα συστήματα εδώ και εκεί; Λίγο αυτοκριτική λοιπόν.
Ο προγραμματισμός είναι χαρά, είναι δημιουργία, είναι δύναμη, αλλά όταν δεν το πάρεις στα σοβαρά ή δεν έχεις διάθεση γίνεται ένα καθημερινό βάσανο για σένα αλλά και τους υπόλοιπους που θα λουστούν τη δουλειά σου μετά από λίγο.
Αν μόλις ξεκίνησες την ημέρα, προσπάθησε να βγάλεις μια καρφωτούρα από τον κώδικα σου, σίγουρα θα έχεις κάνει κάτι καλύτερο!
Αν είσαι γεμάτος καρφωτούρες ή δεν ξέρεις πως να τις βγάλεις, ή δεν μπορείς να κατανοήσεις το πρόβλημα σου, μη διστάσεις να μου στείλεις ένα email.