Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
Χαμένοι στη μετάφραση

Γιατί οι προγραμματιστές δεν μπορούν να συνεννοηθούν με τους πωλητές; Έχουν προταθεί πολλές απαντήσεις, αλλά είναι όλες λάθος. Στην πραγματικότητα το πρόβλημα έγκειται στην ερώτηση, η οποία είναι άκρως παραπλανητική, γιατί υπονοεί ότι "κανονικά" τίποτα δεν θα έπρεπε να εμποδίζει τη μεταξύ τους επικοινωνία, όπερ ψευδές και άτοπον.

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

Ιδού ένας φανταστικός διάλογος μεταξύ του πωλητή Α και του προγραμματιστή Β:

Α: Πόσο καιρό θα σου έπαιρνε να ετοιμάσεις μια εφαρμογή ΧΨΖ;
Β: Όταν λες ΧΨΖ, τι ακριβώς εννοείς;
Α: Τι θα πει "τι εννοώ";
Β: Θα πει ότι πρέπει να γίνεις πιο συγκεκριμμένος, γιατί δεν καταλαβαίνω τι ακριβώς θέλεις.
Α: Σου λέω ό,τι μου λένε οι πελάτες...
Β: Τότε πες στους πελάτες ότι το ΧΨΖ είναι τίτλος κι όχι προδιαγραφή, κι ότι πρέπει να συζητήσουμε αρκετές λεπτομέρειες πριν δεσμευτούμε για το χρόνο ανάπτυξης.
Α: Δηλαδή θα πάρει περισσότερο από 2 μήνες;
Β: Μπορεί να πάρει από 4 μέχρι 14 μήνες, ανάλογα με το τι εννοεί ο καθένας όταν λέει ΧΨΖ.
Α: 4 μήνες! Είσαι τρελός; Αφού σε 2 μήνες είναι η έκθεση.
Β: Είπα 4 έως 14 μήνες και η έκθεση δεν έχει καμμία απολύτως σχέση με το χρόνο ανάπτυξης.
Α: Κακώς μιλάω μαζί σου... Θα πρέπει να φέρω το θέμα στον γενικό διευθυντή.

Ας εξετάσουμε τώρα τον ίδιο διάλογο, αλλά με τους σωστούς υποτίτλους:

Α: Πόσο καιρό θα σου έπαιρνε να ετοιμάσεις μια εφαρμογή ΧΨΖ;
[Μετάφραση: Ξέρεις, δυο-τρεις όμορφες οθόνες και καμμιά εκτύπωση για να 'χω κάτι να δείχνω]
Β: Όταν λες ΧΨΖ, τι ακριβώς εννοείς;
[Μετάφραση: Απλή client-server ή n-tier, με fat clients, thin clients ή smart clients που θα παίζουν και offline, θα χτίσουμε δικά μας web services ή θα χρησιμοποιήσουμε κάποιο έτοιμο middleware, ...]
Α: Τι θα πει "τι εννοώ";
[Μετάφραση: μα πόσο δύσκολο είναι να φτιάξεις δυο οθόνες και μια εκτύπωση;]
Β: Θα πει ότι πρέπει να γίνεις πιο συγκεκριμμένος, γιατί δεν καταλαβαίνω τι ακριβώς θέλεις.

[Μετάφραση: Απλή client-server ή n-tier, με fat clients, thin clients ή smart clients που θα παίζουν και offline, θα χτίσουμε δικά μας web services ή θα χρησιμοποιήσουμε κάποιο έτοιμο middleware, ...]
Α: Σου λέω ό,τι μου λένε οι πελάτες...
[Μετάφραση: Κάτι, τέλος πάντων, να δούνε οι άνθρωποι, μπας και στραβωθούνε και βάλουν καμμιά παραγγελία]
Β: Τότε πες στους πελάτες ότι το ΧΨΖ είναι τίτλος κι όχι προδιαγραφή, κι ότι πρέπει να συζητήσουμε αρκετές λεπτομέρειες πριν δεσμευτούμε για το χρόνο ανάπτυξης.
[Μετάφραση: Απλή client-server ή n-tier, με fat clients, thin clients ή smart clients που θα παίζουν και offline, θα χτίσουμε δικά μας web services ή θα χρησιμοποιήσουμε κάποιο έτοιμο middleware, ...]
Α: Δηλαδή θα πάρει περισσότερο από 2 μήνες;
[Μετάφραση: Σε 2 μήνες είναι η μεγαλύτερη κλαδική έκθεση. Εάν δεν είμαστε έτοιμοι μέχρι τότε, ώστε να προωθήσουμε δυναμικά το προϊόν, δεν υπάρχει περίπτωση ούτε να πλησιάσουμε τους στόχους που μας έχουνε βάλει]
Β: Μπορεί να πάρει από 4 μέχρι 14 μήνες, ανάλογα με το τι εννοεί ο καθένας όταν λέει ΧΨΖ.
[Μετάφραση: Απλή client-server με έτοιμο middleware και thin clients = 2 μήνες, n-tier με δικά μας web services, παραμετρικά workflows, persisted messaging και smart clients που θα παίζουν online και offline και θα συγχρονίζονται στο σύννεφο = 7 μήνες, πολλαπλασίασε επί 2 γιατί οι πελάτες θ' αλλάξουν 2-3 φορές άποψη => 4 μέχρι 14 μήνες]
Α: 4 μήνες! Είσαι τρελός; Αφού σε 2 μήνες είναι η έκθεση!
[Μετάφραση: Σε 2 μήνες είναι η μεγαλύτερη κλαδική έκθεση. Εάν δεν είμαστε έτοιμοι μέχρι τότε, ώστε να προωθήσουμε δυναμικά το προϊόν, δεν υπάρχει περίπτωση ούτε να πλησιάσουμε τους στόχους που μας έχουνε βάλει]
Β: Είπα 4 έως 14 μήνες και η έκθεση δεν έχει καμμία απολύτως σχέση με το χρόνο ανάπτυξης.
[Μετάφραση: Ο τύπος είναι τελείως @#$%^. Δηλαδή πώς την έχει δει; Όταν η πραγματικότητα δεν συμβαδίζει με τις επιθυμίες του, τόσο το χειρότερο για την πραγματικότητα;]
Α: Μου φαίνεται ότι κακώς μιλάω μαζί σου. Θα πρέπει να φέρω το θέμα στη γενική διεύθυνση.
[Μετάφραση: Ο τύπος είναι τελείως @#$%^. Δηλαδή πώς την έχει δει; Όταν του έρθει η εντολή από τον γενικό διευθυντή, θα τολμήσει να μας πει το ίδιο τραγούδι;]

Τι συμπέρασμα βγαίνει από το υποτιτλισμένο κείμενο; Μα είναι προφανές: ο Α και ο Β μιλούν όχι μία, αλλά δύο γλώσσες, οι οποίες μορφολογικά είναι απολύτως όμοιες, αλλά σημασιολογικά είναι απολύτως διαφορετικές.

Δεν το πιάσατε ακόμα; Φανταστείτε τότε ότι υπάρχουν δύο γλώσσες προγραμματισμού, ας τις πούμε Χ-- και Χ++, οι οποίες έχουν ακριβώς τα ίδια keywords, αλλά τα χρησιμοποιούν με διαφορετική σημασία. Όταν ο X++ προγραμματιστής γράφει repeat <statement> until <condition>, εννοεί αυτό που ο X-- προγραμματιστής δηλώνει με το while <condition> do <statement>. Το περίεργο είναι ότι το while <condition> do <statement> είναι απολύτως νόμιμη σύνταξη και στη X++, αλλά σημαίνει ό,τι και το if <condition> then <statement> στη X--. Και το if <condition> then <statement> είναι απολύτως νόμιμη έκφραση στη X++, αλλά σημαίνει ό,τι και το repeat <statement> until <condition> στη Χ--. Μπορεί η κατάσταση να φαίνεται μπερδεμένη, αλλά όσο οι Χ++ προγραμματιστές και οι Χ-- προγραμματιστές δεν ανταλλάσσουν code snippets και δεν παρακολουθούν τα ίδια developer events, όλα βαίνουν καλώς.

Ας υποθέσουμε όμως ότι κάποιος Χ++ προγραμματιστής που είχε μείνει άυπνος δυο 24ωρα προσπαθώντας να προλάβει κάποιο deadline, μπερδεύεται και μεταφράζει το πρόγραμμά του από τον Χ-- compiler. Συνταχτικά, ο Χ-- compiler τα βλέπει όλα θαυμάσια, αλλά φτιάχνει εκτελέσιμο κώδικα που κάνει τελείως διαφορετικά πράγματα απ' ό,τι θα περίμενε ο προγραμματιστής. Φανταστείτε την έκπληξή του τελευταίου όταν τρέξει το πρόγραμμά του στον debugger. Ο κακομοίρης δεν θα πιστεύει στα μάτια του: θα βλέπει ένα απόλυτα σωστό πρόγραμμα που κάνει μια σειρά από τελείως λάθος πράξεις, σαν να έχει αυτονομηθεί ο υπολογιστής και κάνει του κεφαλιού του.

Ας εξετάσουμε φιλοσοφικά "τις πταίει"…

  • όχι ο προγραμματιστής, γιατί έγραψε σωστό Χ++ κώδικα
  • όχι ο Χ-- compiler, γιατί μετέφρασε σωστά το source code που του δώσανε
  • όχι ο debugger, γιατί δείχνει τις σωστές γραμμές κώδικα που εκτελούνται.

Τότε γιατί η κατάσταση συνολικά χαρακτηρίζεται "μύλος"; Γιατί απλώς ο Χ++ κώδικας δεν είναι φτιαγμένος για να περάσει από Χ-- compiler.

Επανεξετάστε τώρα το βασικό μας θέμα υπό το νέο πρίσμα.

[* Aha moment *] 

Άρα το λάθος ήταν ότι ο προγραμματιστής κι ο πωλητής άνοιξαν συζήτηση...

Technorati Tags: ,
Share
Posted: Παρασκευή, 22 Μαΐου 2009 9:19 πμ από το μέλος Παναγιώτης Παρίσης
Δημοσίευση στην κατηγορία: ,

Σχόλια:

cap έγραψε:

Δεν χρειάζεται, ως Ζαχαρίας, να σχολιάσω περαιτέρω. Παρ'όλα αυτά θα ήθελα να εκφέρω την απολύτως υποκειμενική μου άποψη οτι ο χώρος των προγραμματιστών πρέπει να διαχωρίζεται από αυτόν των πωλητών με υδάτινη τάφρο γεμάτη αιμοβόρους κροκόδειλους.

# Μαΐου 26, 2009 4:15 μμ

Παναγιώτης Παρίσης έγραψε:

@cap

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

# Μαΐου 26, 2009 4:57 μμ

Pantaleon έγραψε:

I love these arscliet. How many words can a wordsmith smith?

# Ιανουαρίου 21, 2015 2:38 πμ
Ποιά είναι η άποψή σας για την παραπάνω δημοσίευση;

(απαιτούμενο)

(απαιτούμενο)

(προαιρετικό)

(απαιτούμενο)
ÅéóÜãåôå ôïí êùäéêü:
CAPTCHA Image

Ενημέρωση για Σχόλια

Αν θα θέλατε να λαμβάνετε ένα e-mail όταν γίνονται ανανεώσεις στο περιεχόμενο αυτής της δημοσίευσης, παρακαλούμε γίνετε συνδρομητής εδώ

Παραμείνετε ενήμεροι στα τελευταία σχόλια με την χρήση του αγαπημένου σας RSS Aggregator και συνδρομή στη Τροφοδοσία RSS με σχόλια