Ξέρουμε, ξέρουμε. Διαβάσατε δεκάδες βιβλία, ακούσατε εκατοντάδες διαλέξεις, ψάξατε στο internet χιλιάδες φορές για να είστε σίγουροι οτι γνωρίζετε καλά το αλφαβητάρι του Software Development. Εχοντας πίστη στον εαυτό σας, σηκώσατε πανιά για να γίνετε ο νέος Bill Gates, γράφοντας κώδικα που φυσάει.
ΚΑΝΑΤΕ ΟΜΩΣ ΕΝΑ ΤΡΑΓΙΚΟ ΛΑΘΟΣ.
Στην Ελλάδα, βασικές έννοιες του Software Development έχουν αποκτήσει τη δική τους, localized ερμηνεία. Για να είστε λοιπόν σίγουροι οτι γνωρίζετε πού πατάτε, παραθέτουμε τους κυριότερους όρους και τις ΣΩΣΤΕΣ τους ερμηνείες παρακάτω. Αν νοιώσετε έκπληξη διαβάζοντάς τους, τότε σκεφτείτε ξανά εκείνο το περίπτερο που θέλατε να ανοίξετε όταν ήσασταν μικροί (για να τρώτε εσείς τα παγωτά, βεβαίως βεβαίως). Ισως να μην είναι κακή ιδέα.
Πολυμορφισμός (polymorphism): Ιδιότητα που εκφράζει όλους τους σύγχρονους Ελληνες developers. Αν και ο developerείναι πάντα ο ίδιος άνθρωπος, αυτό που κάνει διαφοροποιείται ανάλογα με τις παραμέτρους που του δίδονται από τον ProjectManager. Για παράδειγμα, ο developerμπορεί σε διαφορετικές χρονικές στιγμές να κάνει: Dataentry, συναντήσεις με τον πελάτη, ανάλυση, επισκευές δικτύων, συντήρηση μηχανημάτων, σήκωμα τηλεφώνων, γραφικά για το εταιρικό website, καφέ για το αφεντικό, παραγγελίες deliveryγια όλη την εταιρία, ψυχολογική υποστήριξη , ενώ ενίοτε φτιάχνει και software.
Κληρονομικότητα (inheritance): Η άνευ όρων μεταφορά αρμοδιοτήτων από ανώτερα στελέχη προς τα κατώτερα, ιδίως όταν τα πρώτα λείπουν διακοπές. Αποτελεί συμπλήρωμα του πολυμορφισμού. Η κληρονομικότητα γίνεται εύκολα αντιληπτή κατά την πρώτη ημέρα άφιξης του developerστην εταιρία μετά από ολιγοήμερες διακοπές, χάρη στις άναρθρες κραυγές απόγνωσης που γεμίζουν το κτίριο όταν αντικρίζει το βουνό εκκρεμοτήτων που έχει συγκεντρωθεί στο γραφείο του.
Συναλλαγή (transaction): Η λογική του «ή το κάνεις όλο ή τίποτα». Ξεχάστε τους περίπλοκους ορισμούς για το transaction, είναι όρος εξαιρετικά κοινός στην Ελληνική πραγματικότητα. Αντίθετα με ο,τι πιστεύατε, transactionalπρέπει να είναι ΟΙ ΠΡΟΓΡΑΜΜΑΤΙΣΤΕΣ και όχι τα προγράμματα. Μέθοδος: Δίνεις προδιαγραφές στον developerκαι περιμένεις να βγεί το softwareχωρίς να ασχολείσαι με περιττές λεπτομέρειες όπως κατανομή ρόλων, αρμοδιοτήτων κλπ. Δεν τον πληρώνεις ωσπου να σου δώσει το πακέτο εγκατάστασης. Είναι ο κύριος λόγος για τον οποίο στις αγγελίες εργασίας ζητούνται προγραμματιστές με ΑΠΑΙΤΟΥΜΕΝΕΣ γνώσεις Java,.Net, Oracle,SQLServer, HTML, Photoshop, Word, Excel, SAP, Perl, PHP, MySQL, Unix, Linux, Windows, EJB, COM+, UML, τρείς ξένες γλώσσες και μισθό 800 ευρώ μεικτά (θα συνεκτιμηθεί εμπειρία σε AS/400 και προγραμματισμό σε σουαχίλι μονοτονικό).
Αφαίρεση (abstraction): Ενας τρόπος να περιγράψεις το τι θέλεις να κάνεις χωρίς να δώσεις λεπτομέρειες για το ΠΩΣ θα γίνει αυτό. Το απόλυτο σύστημα συγγραφής προδιαγραφών.
Interface: Ορίζει ένα standardτρόπο επικοινωνίας ανάμεσα στον developerκαι τη διοίκηση. Ο developerοφείλει να ανταποκρίνεται άμεσα σε αιτήματα όπως «Δούλεψε υπερωρίες», «Οι προδιαγραφές άλλαξαν 5 μέρες πριν το deadline», «Φτιάξτο τώρα». Ατύπως, όλες αυτές οι κλήσεις θα πρέπει να επιστρέφουν Boolean. Τιμές FALSEδεν γίνονται αποδεκτές. Interface, φυσικά, υπάρχει και για την επικοινωνία ΑΠΟ τον developerΠΡΟΣ τη διοίκηση, μόνο που όλες οι κλήσεις του developerπρος τη διοίκηση («Θέλω αύξηση», «Χρειάζομαι περισσότερο χρόνο», «Πρέπει να αγοράσουμε το τάδε εργαλείο άμεσα») επιστρέφουν NULL.
n-tier: Ανάπτυξη σε επίπεδα. Ξεκινάμε με ένα μόνο επίπεδο που περιλαμβάνει τα πάντα, και απολύουμε τον προγραμματιστή μόλις δούμε ότι η εφαρμογή δεν δουλεύει / δουλεύει αλλά έληξε η σύμβασή του. Προσλαμβάνουμε ένα καινούριο προγραμματιστή και τον βάζουμε να δουλέψει στο ίδιο project. Τρομοκρατημένος, αρχίζει να γράφει ένα νέο layerφοβούμενος να πειράξει το παλιό. Επαναλαμβάνουμε n φορές.