Monday, May 26, 2014

Οι καρφωτούρες, παίζει με καρφωμένες τιμές, α τι ωραία βρήκα ένα magic number... α τι ωραίο σκουπίδι που είναι ο κώδικας και το project μου



Λοιπόν, να πω ότι τα φαινόμενα που θα περιγράψω παρακάτω δεν είναι αρνητικό προνόμιο μόνο της ελληνικής αγοράς και των Ελλήνων developer (εμείς είμαστε αυτοί), αλλά παγκόσμιο. 

Παρόλα αυτά επειδή θα γράψω στα Ελληνικά θα το 'ζωγραφίσω' με την δική μας κατάσταση.

Εσύ συνάδελφε ή συναδέλφισα που τυχαίνει να με διαβάσεις, πες μου πόσες φορές ακούς την ημέρα, (όχι την εβδομάδα ή το μήνα) την ημέρα, τις εξής  εκφράσεις
  • παίζει αλλά είναι με καρφωμένες τιμές.
  • εντάξει δεν ξέρω πως θα το κάνω και του κάρφωσα μερικές συνθήκες στην υλοποίηση.
  • με πιέζουν αρκετά και το θέλουν αύριο, δεν μπορώ να κάνω κάτι καλύτερο από το να 'καρφώσω' με τιμές που θα παίξουν.
  • ...από μέσα του όχι φωναχτά 'έλα μωρέ ποιος θα το δει τώρα ότι πήγα και το έφτιαξα τσαπατσούλικα, εδώ μέσα γίνεται χαμός, σιγά μην σκάσω εγώ για τον μ...ακα'
  • από μέσα του ' δεν πληρώνομαι αρκετά ρε φίλε για να το φτιάξω σωστά, σιγά τόσα που μου δίνουν και με αυτές τις συνθήκες, θα καρφώσω την υλοποίηση και ότι γίνει'.
Καρφωτούρες, καρφωμένες τιμές, υποθέσεις χωρίς εξήγηση, αφημένες στην τύχη τους, μια βόμβα έτοιμη να σκάσει
  • ακριβώς μόλις βγει σε παραγωγή στο σύστημα
  • την αμέσως επόμενη μέρα που θα χρειαστούμε να κάνουμε αλλαγές στην πρώτη έκδοση
  • την αμέσως επόμενη μέρα που θα συνειδητοποιήσουμε ότι πρέπει να αλλάξουμε την λύση μας
  • τα αμέσως επόμενα χρόνια που κάποιος κακόμοιρος θα προσπαθήσει να διορθώσει την δική μας απόφαση (διάλεξε πάνω από τα bullet ποια είναι η δικαιολογία σου).
Το φαινόμενο προφανέστατα είναι μια ακόμα όψη του ίδιου νομίσματος που ονομάζεται 'technical debt'. O Π.Παπαπέτρου περιγράφει πολύ εύστοχα σε αυτή του την παρουσίαση, το technical debt ως τον 'βαθμό δυσκολίας που θα έχει, μια οποιαδήποτε ομάδα λογισμικού για προσθέσει  added value σε ένα λογισμικό΄ χωρίς να το διαλύσει ή να εκφυλίσει την αρχιτεκτονική του (θα προσθέσω σιωπηλά).  Tο technical debt στην Ελλάδα κατά την ταπεινή μου άποψη οφείλεται στους εξής λόγους.

  • Το λεγόμενο technical , IT management είναι σχεδόν ανύπαρκτο και εξασκείται από ανθρώπους στην πλειοψηφία μέτριων ή με σχεδόν καθόλου γνώσεις πάνω στην διαδικασία της σχεδίασης, υλοποίησης και διαχείρισης έργων πληροφορικής. Είναι οι ίδιοι άνθρωποι που θα θυσιάσουν την λογική 'για' εξωπραγματικά estimates, θα εθιστούν στο overpromise στον πελάτη, θα θεωρήσουν ότι 'ξέρουν' καλύτερα, θα αποσυντοντίσουν την ομάδα, στις δύσκολες στιγμές θα πιέσουν ή θα απειλήσουν. Είναι οι άνθρωποι που θα κομπάσουν ότι ξέρουν το business αλλά αυτό δεν σημαίνει ότι ξέρουν πως να οργανώσουν μια ομάδα λογισμικού. Οι ομάδες πληροφορικής πρέπει να οργανωθούν από τεχνικούς ανθρώπους και όχι busines expert και wannabe πωλητές. Κακό management σημαίνει κακό λογισμικό.
  • Δεν διδάσκουμε, εγχώρια την ανάπτυξη λογισμικού σαν μια επιστήμη από μόνη της, ταπεινή μου άποψη είναι ότι έχουμε ανάγκη από ακόμα πιο πολλές σχολές σε πανεπιστήμια και ΤΕΙ που θα ετοιμασουν προγραμματιστές και όχι hybrid τα ξέρω λίγο απ' όλα, βασικά θέλω να γίνω admin αλλά τελικά αναγκάζομαι να γράψω php κτλ κτλ. Τα τελευταία χρόνια στην Ελλάδα από αυτά που ακούω υπάρχουν πια σχολές στοχευμένες στο Software Engineering και θέλω να ελπίζω ότι θα γίνουν mainstream. Η υλοποίηση λογισμικού δεν είναι μόνο α) ξέρω θεωρητικά ένα αλγόριθμο τέλεια ή ξέρω πολύ καλά μόνο μία γλώσσα. Είναι μια σύνθετη διαδικασία, που φέρνει τον προγραμματιστή αντιμέτωπο με τεχνικά αλλά και διαχειριστικά challenges, τα οποία πολλές φορές τα αγνοούμε. Δεν είναι δυνατόν το 2014 να βλέπεις παιδιά που βγαίνουν τώρα από τα πανεπιστήμια πληροφορικής και να μην κατανοούν την έννοια του unit test, του documentation, της δομημένης λογικής. Ο προγραμματιστής είναι και αυτά..όχι μόνο 2 γραμμές δυσνόητου κώδικα και φύγαμε. Η αγορά δεν έχει ανάγκη μόνο από hacker αλλά πραγματιστικά από ανθρώπους που θα υλοποιήσουν και θα λύσουν προβλήματα, με απλό και ευέλικτο τρόπο. Αυτοί είναι για μένα οι πιο χρήσιμοι και άξιοι συνάδελφοι.
  • Η εγχώρια αγορά πληροφορικής δεν είναι τόσο ανταγωνιστική έτσι ώστε να  δημιουργήσει τις συνθήκες  έτσι πελάτες και εταιρίες να δώσουν έμφαση στην ποιότητα του παραγόμενου λογισμικού. Δεν φταίει μόνο η κακή εταιρία που δίνει μία τσαπατσούλικη λύση, φταίει και αυτός που την αποδέχεται, που δεν τον νοιάζει ίσως η ποιότητα γιατί τελικά δεν έχει επίδραση στον αριθμό των πωλήσεων του. Τα συστήματα πληροφορικής στην χώρα μας τώρα δειλά δειλά, αρχίζουν θα παίρνουν την θέση που τους αξίζει σε ότι έχει να κάνει το business value. Ποιότητα σε ένα έργο πληροφορικής δεν είναι ότι δεν 'έσκασε' την πρώτη μέρα σε παραγωγή ή δεν έμειναν οι server από μνήμη. Ποιότητα σημαίνει ότι παρέλαβα ένα σύστημα, το οποίο, δεν έχει αρκετά παιδικά προβλήματα, δεν παρουσιάζει προβλήματα με τον χρόνο, είναι σχετικά εύκολο να χτίσω πάνω του χωρίς να το διαλύω τέλος μπορώ να το θεωρήσω σαν μια τεχνολογική επένδυση που περιμένω να μου κάνει απόσβεση και όχι να το 'ξανα-αγοράσω' μετά από 1 χρόνο. Το σύστημα κάνει 'deliver' to business promise αλλά δεν μου τρώει λεφτά η τεχνική του πολυπλοκότητα και αδυναμία.
  • Εμείς, μας άφησα τελευταίους. Ναι εμείς οι developer, η έλλειψη επαγγελματισμού. Νομίζω ότι είναι γενικό φαινόμενο της χώρας μας, όπως και η ποιότητα παροχής υπηρεσιών. Κάθε φορά που βάζουμε μια μαγική τιμή κάπου, κάθε φορά που είτε μας πίεσαν είτε όχι, γράψαμε μερικές γραμμές κώδικα και στην συνείδηση μας δεν το καταλαβαίνουμε ότι αυτό που κάνουμε είναι αντί-επαγγλεματικό ή δεν το επικοινωνούμε καθόλου, φταίμε και έχουμε μεγάλο μερίδιο ευθύνης
Θα ρωτήσει κάποιος και πως θα αλλάξει, προφανέστατα αύριο που θα πας στην δουλειά, ή τώρα που με διαβάζεις, δεν θα αλλάξει προς το λογικό και ευέλικτο το management, δεν θα γεμίσει η αγορά με καταρτισμένους developer  και φυσικά ο συνάδελφος σου δίπλα που ξέρεις ότι slack-άρει ή βαριέται δεν θα αποκτήσει συνείδηση για να κάνει σωστά την δουλειά του. Το στοίχημα λοιπόν είσαι εσύ, ο καθένας μας, από τον ρόλο που υπηρετεί στο τέλος της ημέρας να είναι περήφανος για την δουλειά του και να ξέρει ότι έδωσε το 100% των δυνατοτήτων του, όχι το 70% ούτε το 110%, αρκεί όλοι μας να δώσουμε το 100% και μέρα με την μέρα ακόμα και τα πιο μικρά πράγματα σαν developer θα βελτιώσουν την ζωή των δίπλα μας. Μπορεί κάποια στιγμή κάποιος manager να το εκτιμήσει αντίστοιχα, μπορεί και όχι.  Μιλάμε μιλάμε αρκετά για τις ελληνική επιχειρηματική εξωστρέφεια και τις ελληνικές start-up και την μεγάλη ελπίδα όλων. 

Κύριοι και κυρίες αν δεν αλλάξουμε επαγγελματικές συνήθειες δεν αποκτήσουμε πιο υψηλά standard, για τους ίδιους μας τους εαυτούς, δεν θα μπορέσουμε να κάνουμε κάτι τόσο διαφορετικό. Γιατί μεταξύ μας ναι όλοι έχουμε δει κώδικα από τις φάρμες 'Ινδων' σε κάποιο project πολυεθνικής αλλά μήπως εμείς είμαστε καλύτεροι όταν πάμε και γεμίζουμε τσαπατσούλικες λύσεις τα συστήματα εδώ κι εκεί. Λίγο αυτοκριτική λοιπόν.

Ο προγραμματισμός είναι χαρά, είναι δημιουργία, είναι δύναμη, αλλά όταν δεν το πάρεις στα σοβαρά ή δεν έχει διάθεση γίνεται ένα καθημερινό βάσανο για σένα αλλά και τους υπόλοιπους που θα λουστούν την δουλειά σου μετά από λίγο.

Αν μόλις ξεκίνησες την ημέρα, προσπάθησε να βγάλεις μια 'καρφωτούρα' από τον κώδικα σου, σίγουρα θα έχεις κάνει κάτι καλύτερο! 

Αν είσαι γεμάτος καρφωτούρες ή δεν ξέρεις πως να τις βγάλεις, ή δεν μπορείς να κατανοήσεις το πρόβλημα σου, μην διστάσεις να μου στείλεις ένα email.

9 comments:

  1. +1 ή μάλλον... kudos!!!

    ReplyDelete
  2. Εχεις απολυτο δικιο.

    Για να σου παω και την κουβεντα 2 μετρα παραπερα, δεν ειναι μονο στον κωδικα τα καρφωματα και οι τσαπατσουλιες. Προσωπικα, δεν ηθελα ποτε μου να δω κωδικα, γι'αυτο και ειμαι απο παιδι χαρντγουερας, και στηνω καθημερινα δικτυα.

    Το τι εχουν δει τα ματακια μου σε εγκαταστασεις, δεν περιγραφεται. Απο καρφωτες ip "γιατι αλλιως δεν παιζει", μεχρι sqlατο οτιναναι προγραμμα δημοσιας υπηρεσιας που για να δει νεο client επρεπε να κανω βουντου στην Carcosa.

    Δυστυχως, στον κλαδο της πληροφορικης ολα αυτα τα χρονια εχουν επικρατησει για τα καλα οι μπακαληδες, και οσο οι σχολες μας βγαζουν καταρτισμενους σελιγοαπολα, σε συνδυασμο με τον κλασσικο σταρχιδισμο (διαλεξε τυχαιο bullet), θα παραμεινουμε εμεις να μαζευουμε τα κομματια αλλων.

    ReplyDelete
  3. πάντα καυστικός, αλλά σωστός και δίκαιος...
    έτσι είναι Πάρι, αν θες το αύριο να είναι καλύτερο (σε οποιοδήποτε τομέα) μην περιμένεις κανένα, ΚΑΝΤΟ!

    ReplyDelete
  4. Έχεις απόλυτο δίκιο, όμως το πρόβλημα ξεκινάει από το γεγονός ότι το τυπικό διευθυντικό στέλεχος επιχείρησης έχει απόλυτη άγνοια του τι σημαίνει ποιότητα για το λογισμικό. Όλοι γνωρίζουν τη διαφορά μίας Mercedes από ένα Hyundai όμως πώς ξεχωρίζει το καλό από το κακό λογισμικό;

    ReplyDelete
  5. +1 nice article. Maybe peer code review can be a "motivator" to avoid sloppy code.
    BTW this is not a Greek phenomenon only...

    ReplyDelete
    Replies
    1. indeed - this is not a greek phenomenon only, as stated clearly in the beginning :)

      Delete
  6. Πολύ καλό άρθρο, το οποίο αναλύει το πρόβλημα από τις βασικές πλευρές του, τόσο το management όσο και τους ίδιους τους developers.

    Για τους πρώτους, μία αντικειμενική ανάλυση/αξιολόγηση της ποιότητας του κώδικα και των οικονομικών/business ρίσκων που αυτή συνεπάγεται μπορεί να βοηθήσει προκειμένου να κατανοήσουν το πρόβλημα.

    Για τους δεύτερους, πιστεύω ότι στην Ελλάδα τουλάχιστον έχουμε ένα 30% μηχανικών που είναι άριστοι και από εκεί και πέρα το χάος. Γι'αυτό και το φαινόμενο κάποιοι να δουλεύουν στο 150%-200% και άλλοι στο 70% των δυνατοτήτων τους.

    Όσο για τα Πανεπιστήμια, είναι πλέον σύνηθες το φαινόμενο των φροντιστηρίων που αναλαμβάνουν να κάνουν τις εργασίες των φοιτητών πληροφορικής έναντι αμοιβής. Αναρωτιέμαι, πως αυτά τα παιδιά θα βγούν μετά στην αγορά εργασίας η οποία γίνεται όλο και πιο απαιτητική (και καλά κάνει).

    ReplyDelete
  7. Χμμμμ...... ψύχραιμη και συνεκτική αυτοκριτική στο άρθρο σου, πράμα σπάνιο και συνάμα πολύτιμο στους καιρούς μας.Μπράβο σου.!!!!

    Kαι η ερώτηση της "άσχετης":
    Δεν υπάρχει προτυποποίηση υπηρεσιών (ΙSO κ.λ.π.)στον τομέα της πληροφορικής;;;;;

    Μάρω Καψιώτη Φεργάδη

    ReplyDelete
  8. Ο προγραμματισμός είναι χαρά, είναι δημιουργία, είναι δύναμη....!!! Πολύ καλό αρθρο και συμφωνώ απόλυτα.
    Δύναμη που όμως απαιτείται να χρησιμοποιηθεί σωστά μέσα σε πλαίσια επαγγελματισμού και ποιοτικής παροχής υπηρεσιών. Θέλω να πιστεύω ότι η αρχή του « 2 γραμμές δυσνόητου κώδικα» απέδειξε ότι μόνο σε «technical Debt» οδηγεί....
    Θα ήταν ευχής έργο λοιπόν να καταλάβουμε ότι έχουμε ανάγκη από περισσότερα πανεπιστήμια και σχολές που θα ετοιμάσουν επαγγελματίες προγραμματιστές και developers ικανούς να επιλύουν προβλήματα και όχι να δημιουργούν βραδυφλεγείς βόμβες. Όμως μόνο αυτό δεν αρκεί. Απαιτείται και η τοπική ΙΤ κοινότητα να επαναπροσδιορίσει την ποιότητα των υπηρεσιών που πρέπει και θα θέλει να προσφέρει. Ως Έλληνες διαθέτουμε την σκέψη, την ευστροφία, την δημιουργικότητα, τον δυναμισμό να είμαστε πρώτοι, και μπορούμε αρκεί να το θελήσουμε.....όλοι!!! Διαφορετικά δεν έχουμε κανένα λόγο, και πολύ περισσότερο δικαίωμα, να κρίνουμε τον κώδικα που παράγουν οι φάρμες...... τουλάχιστον αυτοί κάτι παράγουν....

    ReplyDelete