Ο συγγραφέας, προγραμματισμός, περίπου το 1988

Πρέπει οι κώδικες σχεδιαστές;

Όχι, Μέρος πρώτο.

Υπάρχει μια επαναλαμβανόμενη συζήτηση στον κλάδο μας σχετικά με το αν οι σχεδιαστές πρέπει να γράψουν κώδικα ή όχι. Κάποιος προγραμματιστής θα θέσει το ερώτημα στο Twitter, τότε οι υπεύθυνοι, οι ασκούμενοι και οι γκουρού απαντούν. Ο καθένας έχει μια άποψη, η φλόγα, οι άνθρωποι συμφωνούν να διαφωνούν και η συζήτηση υποχωρεί. Αλλά μερικές εβδομάδες αργότερα κάποιος άλλος θέτει την ίδια ερώτηση και τα κοινωνικά μέσα μαζεύουν με μια ακόμη άμεση επανάληψη του μάταιου, αδιάκοπου επιχειρήματος.

Η συζήτηση ακολουθεί ένα χαρακτηριστικό μοτίβο: οι άνθρωποι συζητούν ένα ζήτημα προσωπικής γεύσης σαν να ήταν μια καθολική αλήθεια. Είναι σαν κάποιος που ισχυρίζεται ότι επειδή δεν τους αρέσουν προσωπικά αβοκάντο, τα αβοκάντο είναι ένα τρομερό φαγητό και άλλοι θα πρέπει να τους αποφύγουν επίσης. Το θέμα - προφανώς - δεν είναι στο αβοκάντο αλλά στο άτομο, αλλά τα συναισθήματα αποκρύπτουν το προφανές.

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

Θεωρώ ότι είμαι μοναδικός ειδικός για να σχολιάσω την ερώτηση. Πριν αναπτύξω την πρακτική του σχεδιασμού αλληλεπίδρασης, έχτισα μια επιτυχημένη καριέρα γράφοντας μερικά από τα πιο καινοτόμα λογισμικά για προσωπικούς υπολογιστές στη δεκαετία του 1970 και του '80. Παρά τα προσόντα μου, οι δικές μου καταιγίδες tweet είναι ανεπαρκείς για αυτή την πρόκληση. Υπάρχουν πάρα πολλά θέματα και υπερβολική χροιά για σύντομες εκθέσεις. Έτσι, οι σκέψεις μου πάνω στο θέμα είναι εδώ.

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

Τα βασικά επιχειρήματα κατά της κωδικοποίησης των σχεδιαστών έχουν ως εξής:

  1. Μπορείτε να ξέρετε χωρίς να κάνετε. Υπάρχουν πολλά παραδείγματα προπονητών, χορογράφων, εκπαιδευτών και στελεχών που κατευθύνουν το έργο των επαγγελματιών χωρίς να το κάνουν ποτέ οι ίδιοι.
  2. Η εκτέλεση μιας εργασίας δεν σας διδάσκει αυτόματα τις συνέπειες της εκτέλεσης. Ακριβώς επειδή κωδικοποιείτε, αυτό δεν σημαίνει ότι καταλαβαίνετε αυτόματα τα αποτελέσματα του κώδικα σας σε άλλους ή στον οργανισμό.
  3. Υπάρχει ένα τεράστιο εύρος δεξιοτήτων, καθηκόντων και ρόλων εργασίας στον κόσμο της ανάπτυξης λογισμικού και κάνοντας ισχυρισμούς στην απλοϊκή δυαδικότητα των "σχεδιαστών" ή των "προγραμματιστών" δεν αναγνωρίζει την πολυπλοκότητα και την απόχρωση αυτών των ρόλων.
  4. Γιατί θέτουμε ακόμη και αυτή την ερώτηση; Πάντα φαίνεται να τίθεται από τους ασκούμενους με τη λιγότερη ενσυναίσθηση για τους άλλους, ζητώντας την ενσυναίσθηση από την πολύ πιο εντυπωσιακή ομάδα, ενώ αγνοεί την πραγματικά σημαντική πρόκληση της ενσυναίσθησης με τον χρήστη.

Το ένα επιχείρημα για να ευνοηθεί ο κωδικοποιητής σχεδιαστές είναι πραγματικά μια ευρεία γενίκευση που κάνει την εργασία κάποιου άλλου για λίγο είναι ένας καλός τρόπος για να καταλάβετε τις προκλήσεις που αντιμετωπίζει το πρόσωπο. Έτσι, ναι, είναι γενικά καλό για τους σχεδιαστές να περνούν κάποιο χρόνο κωδικοποίησης. Φυσικά, με το ίδιο επιχείρημα, οι προγραμματιστές θα πρέπει να αφιερώσουν λίγο χρόνο για να σχεδιάσουν. Και με το σχεδιασμό, δεν εννοώ το σχεδιασμό οθονών. Εννοώ να συνεντεύομαι τους χρήστες και έπειτα να κατανοώ τι μαθαίνουν.

Ωστόσο, εγώ κατηγορηματικά δεν πιστεύω ότι οι κωδικοποιητές παραγωγής πρέπει να σχεδιάσουν την παραγωγή. Αυτό θα ισοδυναμούσε με την ερώτηση του προγραμματιστή να κάνει τη λογιστική. Σίγουρα, είναι πιθανώς ικανοί, αλλά γιατί; Τι χάσιμο καλό ταλέντο προγραμματιστή για την κοινή λογιστική. Καλοί προγραμματιστές και καλοί σχεδιαστές είναι σπάνιοι. Είναι ανόητο και σπατάλη για να τους δουλέψει έξω από την ιδιαίτερη ειδική τους ικανότητα.

Το πραγματικό ζήτημα.

Το αληθινά σοβαρό λάθος με όλα αυτά τα επιχειρήματα είναι ότι αποφεύγουν το πιο σημαντικό ερώτημα: πώς δημιουργούμε λογισμικό;

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

Ο Agilistas επικροτεί την αποτυχία των συμβατικών μεθόδων ανάπτυξης λογισμικού, αλλά οι πιο σύγχρονες μέθοδοι δημιουργίας λογισμικού δεν είναι σημαντικά καλύτερες. Κυρίως οι αποτυχίες είναι μικρότερες, γρηγορότερες και πιο εύκολα κρυφτές. Δεν θέλω να μπω σε ένα επιχείρημα σχετικά με αυτό το ζήτημα, διότι πιστεύω ότι το ευκίνητο είναι ένα θαυμάσιο και τεράστιο άλμα προς τα εμπρός στον κόσμο της πρακτικής ανάπτυξης λογισμικού. Αλλά σίγουρα δεν έχει φτάσει μέχρι τη χρέωσή της. Μπερδεύει τη διαχείριση. Είναι γνωστό ότι είναι δύσκολο να εκτελεσθεί σε κλίμακα. Συχνά περιπλέκει τον πραγματικό σχεδιασμό που βασίζεται στον χρήστη. Είναι αντιδραστικό και όχι προορατικό. Και το χειρότερο απ 'όλα, πολλοί από τους ασκούντες την πρακτική τους χρησιμοποιούν διαχειριστικές και τεχνικές χειροκίνητες, καπνιστές, ψευδείς ισχυρισμοί και προαντίληψη ως φύλλο συκής για να αποκρύψουν την άγνοια, την ανικανότητα και την άρνηση να δουλέψουν καλά με άλλους απαραίτητους κλάδους, Σχέδιο αλληλεπίδρασης (Ναι, αυτό είναι μια έκρηξη σε ευκίνητο, αλλά - για λόγους προοπτικής - πιστεύω ότι η ευκίνητη είναι καλύτερη από όλες τις άλλες μεθόδους ανάπτυξης που έχουμε).

Ακόμα χειρότερο είναι ότι οι ομάδες διαμαρτύρονται συνεχώς πάνω στο χλοοτάπητα, κατηγορώντας τους διάφορους κλάδους για την ανικανότητά τους να πληρούν τις προθεσμίες. Υπάρχουν άνθρωποι που ισχυρίζονται ότι οι "προθεσμίες λογισμικού" είναι ένα οξύμωρο και η καθιέρωσή τους αποτελεί εκ πρώτης όψεως ένδειξη έλλειψης κατανόησης του μέσου. Ειλικρινά, είμαι ένας από αυτούς τους ανθρώπους. Ακριβώς περίπου κάθε προσπάθεια κωδικοποίησης είναι ένα sally στο άγνωστο, και συνήθως χρειάζεται μερικά ταξίδια για να μάθουν την περιοχή. Η πρόβλεψη είναι αδύνατη. Μου αρέσει να συγκρίνω την ανάπτυξη λογισμικού με το περπάτημα μέσα από ένα ναρκοπέδιο: αν δεν κάνεις βήμα σε ένα ορυχείο, είναι γρήγορο και εύκολο. Οποιοσδήποτε σας δίνει μια πρόβλεψη για το πόσο χρόνο θα χρειαστεί να αναπτυχθεί το λογισμικό είναι να μοιάζει. Και αν ρωτάς κάποιον για αυτή την πρόβλεψη, ενθαρρύνεις την παραβίαση και υποστηρίζεις τον μύθο της βιομηχανίας ότι η ανάπτυξη λογισμικού είναι προβλέψιμη.

Ελπίζω να γράψω περισσότερα για αυτό το μεγάλο θέμα, οπότε μείνετε συντονισμένοι.

Εδώ είναι το δεύτερο μέρος.

Εδώ είναι το τρίτο μέρος.

Εδώ είναι το Μέρος Τέταρτο.