Ένας προγραμματιστής ζητά από έναν βοηθό μια συνάρτηση που ελέγχει εάν ένας χρήστης μπορεί να κατεβάσει μια αναφορά. Ο κώδικας μεταγλωττίζεται. Το τεστ happy-path είναι επιτυχές. Το αίτημα έλξης φαίνεται τακτοποιημένο. Δύο εβδομάδες αργότερα, ένας συνάδελφος παρατηρεί ότι η συνάρτηση ελέγχει ότι ο χρήστης είναι συνδεδεμένος, αλλά δεν ελέγχει ποτέ ότι η αναφορά ανήκει σε αυτόν.
Αυτό είναι ένα ενδεικτικό σενάριο, όχι ένα τεκμηριωμένο περιστατικό. Περιγράφει το κενό που πρέπει να καλύψει η εκπαίδευση αναθεώρησης κώδικα που δημιουργείται από την Τεχνητή Νοημοσύνη: ο παραγόμενος κώδικας που περνάει έναν βασικό έλεγχο μπορεί να περιέχει ακόμα ένα ελάττωμα εξουσιοδότησης ή ταυτόχρονης λειτουργίας και το άτομο που τον αναθεωρεί πρέπει να το βρει και να εξηγήσει γιατί έχει σημασία.
Αυτός ο οδηγός απευθύνεται σε επικεφαλής μηχανικής ενίσχυσης και διευθυντές μηχανικών. Καλύπτει τον τρόπο περιγραφής του προβλήματος απόδοσης, διάγνωσης των κενών, προετοιμασίας και πρακτικής εφαρμογής του σχεδιασμού, επεξεργασίας μιας περίπτωσης και αξιολόγησης του κατά πόσον η δεξιότητα μεταφέρεται σε πραγματικές αξιολογήσεις. Αφορά τον σχεδιασμό της εκπαίδευσης. Κάθε ελάττωμα, κανόνα δοκιμής και αξιολόγησης στο πρόγραμμά σας θα πρέπει να επικυρώνεται από ανώτερους μηχανικούς και την ομάδα ασφαλείας σας.
Τι είναι η εκπαίδευση αναθεώρησης κώδικα που δημιουργείται από την Τεχνητή Νοημοσύνη;
Η εκπαίδευση στην αναθεώρηση κώδικα που δημιουργείται από την τεχνητή νοημοσύνη διδάσκει στους προγραμματιστές να υποδεικνύουν με σαφήνεια έναν βοηθό και στη συνέχεια να αξιολογούν και να ελέγχουν τι επιστρέφει: είναι σωστό, είναι ασφαλές, συμπεριφέρεται υπό ταυτόχρονο φορτίο, είναι αρκετά αποτελεσματικό; Δεν είναι ένα μάθημα για ένα συγκεκριμένο εργαλείο. Εκπαιδεύει μια συνήθεια αναθεώρησης που παραμένει η ίδια όταν αλλάζει το εργαλείο.
Γρήγορα γεγονότα
| Ερώτηση | Σύντομη απάντηση |
|---|---|
| Ποια είναι η εργασία; | Ελέγξτε τον δημιουργημένο κώδικα και τεκμηριώστε κάθε κίνδυνο με μια δοκιμή. |
| Τι βαθμολογία βαθμολογείτε; | Ποιότητα επαλήθευσης και κατά πόσον εντοπίστηκαν τα σχετικά ελαττώματα. |
| Αρκεί ένα κουίζ σχετικά με τους κανόνες ασφαλούς κωδικοποίησης; | Όχι. Επιβεβαιώνει τις προϋποθέσεις, αλλά όχι το αν ένας προγραμματιστής μπορεί να εντοπίσει ένα ελάττωμα στον κώδικα που φαίνεται εύλογο. |
| Ποιος επικυρώνει το περιεχόμενο; | Ένας διευθυντής μηχανικής και η ομάδα ασφαλείας σας. |
| Τι δεν μπορεί να διορθώσει η προπόνηση; | Επανεξέταση του χρόνου, των εργαλείων, της ασαφούς ιδιοκτησίας και της πίεσης για γρήγορη συγχώνευση. |
| Πώς ξέρεις ότι λειτούργησε; | Μια νέα, αθέατη άσκηση κώδικα, βαθμολογημένη με βάση συμφωνημένα κριτήρια, με παρακολούθηση πραγματικών αξιολογήσεων. |
1. Περιγράψτε το πρόβλημα απόδοσης
Ξεκινήστε με την εργασία: ελέγξτε τον παραγόμενο κώδικα και τεκμηριώστε τους κινδύνους με δοκιμές. Ο έλεγχος είναι η ανάγνωση με καχυποψία. Η τεκμηρίωση είναι η μετατροπή μιας υποψίας σε αποδεικτικά στοιχεία, συνήθως μια δοκιμή που αποτυγχάνει ή μια αναπαραγωγή που δείχνει το ελάττωμα.
Η έρευνα υποδεικνύει γιατί αυτό χρειάζεται σκόπιμη εξάσκηση. Σε μια μελέτη του GitHub Copilot, ο Pearce και οι συνεργάτες του δημιούργησαν 1,689 προγράμματα σε 89 σενάρια που επιλέχθηκαν για γνωστούς τύπους αδυναμιών και διαπίστωσαν ότι περίπου το 40% αυτών ήταν ευάλωτα (Pearce και συνεργάτες, 2021). Αυτό ήταν ένα πρώιμο εργαλείο και ένα συγκεκριμένο σύνολο σεναρίων, επομένως μην αντιμετωπίζετε το ποσό ως ποσοστό για τους σημερινούς βοηθούς. Μια ξεχωριστή μελέτη χρηστών ζήτησε από τους συμμετέχοντες να γράψουν κώδικα με και χωρίς βοηθό Τεχνητής Νοημοσύνης. Όσοι είχαν τον βοηθό έγραψαν σημαντικά λιγότερο ασφαλή κώδικα και ήταν πιο πιθανό να πιστεύουν ότι ο κώδικά τους ήταν ασφαλής (Πέρι και συνεργάτες, 2023). Η ίδια μελέτη διαπίστωσε ότι οι συμμετέχοντες που εμπιστεύονταν λιγότερο τον βοηθό και ασχολούνταν περισσότερο με τις προτροπές του παρουσίασαν λιγότερα τρωτά σημεία.
Ακολουθούν δύο μαθήματα για τον σχεδιασμό της εκπαίδευσης. Το εύλογο αποτέλεσμα χρειάζεται έναν ενεργό κριτή. Και η εμπιστοσύνη δεν είναι απόδειξη, επομένως η άσκηση πρέπει να ζητά το τεστ, όχι τη γνώμη.
Γράψτε τη δήλωση απόδοσης σε μία πρόταση και ζητήστε από έναν διευθυντή μηχανικών να την ελέγξει: «Δεδομένης μιας παραγόμενης αλλαγής, ο προγραμματιστής παραθέτει τους κινδύνους ασφαλείας, ταυτόχρονης λειτουργίας και αποδοτικότητας που βλέπει και για κάθε έναν από αυτούς περιγράφει ή γράφει μια δοκιμή που θα την έδειχνε».
2. Διάγνωση των κενών μάθησης και πλαισίου
Πριν δημιουργήσετε οτιδήποτε, συγκρίνετε την εργασία με αυτό που εφαρμόζει και αξιολογεί το τρέχον πρόγραμμά σας. Τρεις ερωτήσεις συνήθως διαχωρίζουν ένα κενό εκπαίδευσης από κάτι άλλο:
- Χρησιμοποιεί η τρέχουσα πρακτική την πραγματική εργασία; Αν η εκπαίδευση καλύπτει την άμεση γραφή αλλά δεν ζητά ποτέ από τους προγραμματιστές να ελέγξουν το αποτέλεσμα, τότε κανείς δεν έχει εξασκηθεί στον έλεγχο. Αν η αξιολόγηση είναι ένα τεστ πολλαπλής επιλογής σε ασφαλείς κανόνες κωδικοποίησης, τότε μετράει την ανάκληση.
- Ποια είναι η γνωστική απαίτηση; Στην αναθεωρημένη ταξινόμηση του Bloom, η αξιολόγηση της ασφάλειας του κώδικα και η επιλογή της δοκιμής που αποδεικνύει ότι βρίσκεται στα επίπεδα ανάλυσης και αξιολόγησης, καθώς και ο σχεδιασμός μιας καλύτερης προτροπής ή μιας διόρθωσης φτάνει στο επίπεδο δημιουργίας. Η αντιστοίχιση δραστηριοτήτων με αυτά τα επίπεδα καλύπτεται στον οδηγό μας για... αντιστοίχιση μαθησιακών δραστηριοτήτων με την Ταξινόμηση του Bloom.
- Μήπως κάτι άλλο εκτός από την ικανότητα μπαίνει εμπόδιο; Ελέγξτε τον χρόνο αναθεώρησης, τα εργαλεία και την ιδιοκτησία. Εάν οι αναθεωρητές έχουν πέντε λεπτά ανά αίτημα έλξης, καμία εκπαίδευση δεν θα οδηγήσει σε έλεγχο. Εάν δεν υπάρχει στατική ανάλυση ή δοκιμαστική καλωδίωση στη διαδικασία, ένας προγραμματιστής μπορεί να εντοπίσει έναν κίνδυνο αλλά όχι να τον τεκμηριώσει. Αναφέρετε αιτίες που δεν σχετίζονται με την εκπαίδευση στα άτομα που μπορούν να τις διορθώσουν.
3. Προετοιμασία και πρακτική σχεδιασμού
Μόλις μάθετε ποια κενά μπορεί να καλύψει η εκπαίδευση, αναθέστε σε κάθε στάδιο μια ξεχωριστή εργασία.
Παρασκευή. Ελέγξτε τις προϋποθέσεις με μια σύντομη διάγνωση: τις κοινές κατηγορίες αδυναμιών που αντιμετωπίζει η στοίβα σας, τον τρόπο δομής των δοκιμών σας, τη λίστα ελέγχου ανασκόπησης που χρησιμοποιεί η ομάδα σας. Η αυτορυθμιζόμενη μελέτη είναι κατάλληλη για αυτό το στάδιο. Ένας έλεγχος ανάκλησης επιβεβαιώνει μόνο τις προϋποθέσεις.
Πρακτική. Χρησιμοποιήστε ασκήσεις ελέγχου που βασίζονται σε ρεαλιστικό παραγόμενο κώδικα. Προσθέστε σε κάθε μία από αυτές έναν μικρό αριθμό ελαττωμάτων διαφορετικών ειδών, όπως έναν ελλείποντα έλεγχο ιδιοκτησίας, έναν ανταγωνισμό μεταξύ δύο αιτημάτων και έναν αναποτελεσματικό βρόχο, καθώς και κάποιο κώδικα που είναι καλός. Ο προγραμματιστής εξετάζει, κατονομάζει κάθε κίνδυνο, λέει πόσο σοβαρός είναι και προτείνει τη δοκιμή που θα τον έδειχνε. Ζητήστε συλλογισμό, όχι μια λίστα με αριθμούς γραμμών.
Ανατροφοδότηση. Συνδέστε το με αποφάσεις και όχι με μια συνολική βαθμολογία. Η φράση "Επισημάνατε τον βρόχο αλλά όχι τον αγώνα στον κοινόχρηστο μετρητή και η δοκιμή σας δεν θα τον είχε εντοπίσει επειδή εκτελεί αιτήματα ένα κάθε φορά" είναι πιο χρήσιμη από την φράση "Βρέθηκαν 2 από 3".
Ζωντανή εισαγωγή ή ασύγχρονη αξιολόγηση; Η ζωντανή συμβολή προσθέτει μεγαλύτερη αξία όταν ένας κίνδυνος είναι ασαφής και οι προγραμματιστές μαθαίνουν ακούγοντας έναν ανώτερο μηχανικό να εξηγεί γιατί θα μπλόκαραν τη συγχώνευση. Η ασύγχρονη ανασκόπηση είναι αρκετή για τη σύγκριση των ευρημάτων ενός προγραμματιστή με μια σχολιασμένη ανασκόπηση από ειδικούς. Πολλές ομάδες χρησιμοποιούν και τα δύο: πρώτα την προετοιμασία με αυτορυθμιζόμενο ρυθμό και στη συνέχεια μια συνεδρία που διευκολύνεται στις δύσκολες περιπτώσεις.
4. Εργαστείτε με ένα ρεαλιστικό παράδειγμα
Ενδεικτικά. Ένας διευθυντής μηχανικής θα πρέπει να επικυρώσει την περίπτωση και τα κριτήρια απάντησης πριν από τη χρήση.
Η υπόθεση. Ένα δημιουργημένο τελικό σημείο επιστρέφει το τιμολόγιο ενός πελάτη με βάση το αναγνωριστικό τιμολογίου. Ελέγχει ότι ο καλών έχει μια έγκυρη συνεδρία, χρησιμοποιεί ένα παραμετροποιημένο ερώτημα και περνάει με επιτυχία τη βασική δοκιμή. Η ίδια συνάρτηση αυξάνει έναν κοινόχρηστο μετρητή λήψεων χωρίς κλείδωμα.
Το έργο. Ο προγραμματιστής αναφέρει κάθε κίνδυνο που βλέπει, τον κατατάσσει και περιγράφει τη δοκιμή που θα τεκμηριώσει τον καθένα.
Μια πρώτη προσπάθεια. "Φαίνεται μια χαρά. Το ερώτημα έχει παραμετροποιηθεί και η δοκιμή είναι επιτυχής." Ο προγραμματιστής αντιμετώπισε την επιτυχή δοκιμή ως απόδειξη και δεν ρώτησε τι δεν καλύπτει η δοκιμή.
Σχόλια και επανάληψη. Ο κριτής ζητά από τον προγραμματιστή να κατονομάσει τι αποδεικνύει και τι όχι ο έλεγχος περιόδου σύνδεσης. Η επανάληψη του ζητά να εξετάσει δύο διαφορετικούς πελάτες και δύο ταυτόχρονα αιτήματα.
Μια πιο δυνατή προσπάθεια. «Ο έλεγχος περιόδου σύνδεσης αποδεικνύει ποιος καλεί, όχι ότι το τιμολόγιο είναι δικό του. Θα έγραφα μια δοκιμή όπου ο πελάτης Α ζητά το αναγνωριστικό τιμολογίου του πελάτη Β και αναμένω απόρριψη. Ο μετρητής αυξάνεται χωρίς συγχρονισμό, επομένως δύο αιτήματα ταυτόχρονα θα μπορούσαν να χάσουν μια ενημέρωση. Θα εκτελούσα μια ταυτόχρονη δοκιμή και θα συνέκρινα την καταμέτρηση. Το ίδιο το ερώτημα είναι παραμετροποιημένο, επομένως δεν θα ξόδευα χρόνο εκεί.» Παρατηρήστε ότι αυτή η απάντηση κατατάσσει τους κινδύνους και συνδέει τον καθένα με μια δοκιμή.
Γιατί κάθε απάντηση είναι υπερασπίσιμη ή ελλιπής. Κρίνετε το καθένα με βάση εγκεκριμένα κριτήρια, όχι με βάση την προτίμηση ενός κριτή. Η πρώτη προσπάθεια ακολουθεί μια συνήθεια αλλά παραλείπει τα αποδεικτικά στοιχεία. Η ισχυρότερη προσπάθεια είναι συγκεκριμένη, ιεραρχημένη και ελέγξιμη.
5. Αξιολόγηση ικανότητας και σχεδιασμός μεταφοράς
Απόδειξη ικανότητας είναι η απόδοση σε μια νέα άσκηση που ο μαθητής δεν έχει δει. Ποιότητα επαλήθευσης βαθμολογίας και εντοπισμός σχετικών ελαττωμάτων. Μια απλή ρουμπρίκα χρησιμοποιεί μια κλίμακα από 0 έως 2 ανά κριτήριο:
| Κριτήριο | Παρατηρήσιμα στοιχεία |
|---|---|
| Εκτέλεση εργασιών | Ελέγχει τον παραγόμενο κώδικα και καταγράφει τα στοιχεία πίσω από κάθε εύρημα. |
| Αιτιολογία | Εξηγεί τους περιορισμούς, τις εναλλακτικές λύσεις και τι παραμένει αβέβαιο, και κατατάσσει τους κινδύνους. |
| Όρια | Ακολουθεί τους κανόνες αναθεώρησης της ομάδας και απευθύνεται σε έναν ειδικό ασφαλείας όταν ο κίνδυνος είναι πέρα από τις αρμοδιότητές του. |
Αγκυρώσεις: Το 0 απουσιάζει ή δεν υποστηρίζεται, το 1 είναι μερικό με σχετικές παραλείψεις και το 2 είναι πλήρες και δικαιολογημένο με βάση τα συμφωνημένα κριτήρια. Ορίστε τα κρίσιμα σφάλματα ξεχωριστά, όπως η έγκριση κώδικα με μη προστατευμένη διαδρομή πρόσβασης, ώστε μια συνολική βαθμολογία να μην μπορεί να αποκρύψει ένα. Αυτή η ρουμπρίκα είναι μια πρόταση, όχι ένα επικυρωμένο πρότυπο ετοιμότητας: προσαρμόστε την με έναν υπεύθυνο μηχανικής και δοκιμάστε την πιλοτικά. Ο οδηγός μας για σχεδιασμός διαδραστικής πρακτικής με χρήσιμη ανατροφοδότηση δείχνει πώς να γράφετε σχόλια που συνδέονται με αποφάσεις.
Σχεδιάστε τη μεταφορά σκόπιμα. Μετά την άσκηση, συνδέστε κάθε προγραμματιστή με ένα πραγματικό αίτημα έλξης που περιλαμβάνει δημιουργημένο κώδικα και εξετάστε τα ευρήματά τους μαζί ή εκτελέστε μια σύντομη αναδρομική ανασκόπηση σε μια πρόσφατη ανασκόπηση που παρέλειψε κάτι.
Όπου βοηθάει η διαδραστική παράδοση
Οι διαδραστικές μορφές βοηθούν στο να δεσμευτούν όλοι πριν δουν την ομάδα. Σε μια ζωντανή συνεδρία, ένας συντονιστής μπορεί να δείξει ένα δημιουργημένο απόσπασμα, να ζητήσει από κάθε προγραμματιστή να πληκτρολογήσει τους κινδύνους που βλέπει και το τεστ που θα γράψει και στη συνέχεια να αποκαλύψει την εξάπλωση πριν από τη συζήτηση. Η ίδια άσκηση μπορεί να εκτελεστεί με τον δικό σας ρυθμό για προετοιμασία. AhaSlides υποστηρίζει τη διαδραστική μάθηση και την εναλλαγή μεταξύ ζωντανής και αυτορυθμιζόμενης παράδοσης. Είναι ένα εργαλείο παρουσίασης και μάθησης, όχι ένα μέρος για την εκτέλεση κώδικα, επομένως εκτελέστε τις ασκήσεις κώδικα στο δικό σας περιβάλλον. Ελέγξτε οποιαδήποτε συγκεκριμένη λειτουργία σύνταξης, ανατροφοδότησης ή αναφοράς στην οποία σκοπεύετε να βασιστείτε σε σχέση με τη δική σας ροή εργασίας. Για οδηγίες σχετικά με την επιλογή μορφών, ανατρέξτε στο άρθρο μας σχετικά με πότε να χρησιμοποιείται προσαρμοστική, διαδραστική και ζωντανή μάθηση.
Μέτρησε τι άλλαξε
Αποφασίστε εκ των προτέρων τι θα έδειχνε ότι οι προγραμματιστές μπορούν να εκτελέσουν την εργασία. Συγκρίνετε την ποιότητα επαλήθευσης και τον εντοπισμό ελαττωμάτων σε μια άσκηση που δεν έχει παρακολουθηθεί με μια γραμμή βάσης. Ορίστε ποιος περιλαμβάνεται, τον παρονομαστή και το χρονοδιάγραμμα. Εάν τα αποτελέσματα βελτιωθούν, ελέγξτε τι άλλο άλλαξε κατά την ίδια περίοδο, όπως ένας νέος κανόνας στατικής ανάλυσης, μια αναθεωρημένη λίστα ελέγχου αναθεώρησης ή μια αλλαγή βοηθού, πριν πιστώσετε την εκπαίδευση.
Περιορισμοί που ενδέχεται να παραμείνουν
- Ώρα αναθεώρησης. Ένας έλεγχος διαρκεί περισσότερο από ένα σύντομο αρχείο (skim) και οι προθεσμίες πιέζουν προς το σύντομο αρχείο.
- Εργαλεία. Χωρίς δοκιμαστική καλωδίωση ή σάρωση σε εξέλιξη, είναι δύσκολο να τεκμηριωθεί ένας κίνδυνος.
- Αλλαγή εργαλείων. Οι βοηθοί αλλάζουν γρήγορα, οπότε οι ασκήσεις επικεντρώνονται στη συνήθεια της επανάληψης και όχι σε ένα μόνο προϊόν.
- Κάλυψη υπόθεσης. Μία άσκηση δείχνει μερικούς τύπους ελαττωμάτων. Μια βαθμολογία δεν περιγράφει γενικά την κρίση ενός προγραμματιστή.
- ΜΕΤΑΦΟΡΑ. Η απόδοση σε ένα εργαστήριο δεν είναι η ίδια με την απόδοση σε μια πολυάσχολη ουρά αξιολόγησης.
Ονομάστε τα αυτά στους χορηγούς νωρίς και σχεδιάστε ξεχωριστές διορθώσεις. Η εκπαίδευση βελτιώνει αυτά που μπορεί να βρει και να αποδείξει ένας προγραμματιστής. Δεν δημιουργεί τον χρόνο ή τα εργαλεία.
Συχνές ερωτήσεις
Τι είναι η εκπαίδευση αναθεώρησης κώδικα που δημιουργείται από την Τεχνητή Νοημοσύνη;
Διδάσκει στους προγραμματιστές πώς να προτρέπουν, να αξιολογούν και να ελέγχουν κώδικα που παράγεται από έναν βοηθό τεχνητής νοημοσύνης, εντοπίζοντας προβλήματα ασφάλειας, ταυτόχρονης λειτουργίας και αποδοτικότητας και υποστηρίζοντας το καθένα με μια δοκιμή.
Είναι ο παραγόμενος κώδικας λιγότερο ασφαλής από τον ανθρώπινο κώδικα;
Οι μελέτες υποδεικνύουν κίνδυνο, αλλά τα αποτελέσματα εξαρτώνται από το εργαλείο, την εργασία και τον σχεδιασμό της μελέτης. Μια μελέτη χρήστη διαπίστωσε ότι οι συμμετέχοντες με βοηθό έγραψαν λιγότερο ασφαλή κώδικα και ένιωθαν μεγαλύτερη αυτοπεποίθηση γι' αυτόν, γεγονός που αποτελεί λόγο για να εκπαιδευτεί η συνήθεια της αναθεώρησης.
Πώς αξιολογείτε εάν οι προγραμματιστές μπορούν να ελέγξουν τον παραγόμενο κώδικα;
Δώστε μια νέα άσκηση κώδικα και βαθμολογήστε την ποιότητα επαλήθευσης και τον εντοπισμό ελαττωμάτων σε σχέση με συμφωνημένα κριτήρια. Ένα κουίζ σχετικά με τους κανόνες ασφαλούς κωδικοποίησης επιβεβαιώνει μόνο τις προϋποθέσεις.
Χρειάζεστε ένα sandbox κώδικα για την εκπαίδευση;
Χρειάζεστε ένα μέρος για να εκτελέσετε τις ασκήσεις, το οποίο συνήθως είναι το δικό σας περιβάλλον. Ελέγξτε ότι οποιοδήποτε εργαλείο χρησιμοποιείτε υποστηρίζει τις ανάγκες σας πριν βασιστείτε σε αυτό.
Από πού να αρχίσω
Επιλέξτε ένα επαναλαμβανόμενο είδος παραγόμενης αλλαγής στη βάση κώδικα σας. Γράψτε τη δήλωση απόδοσης, ζητήστε από έναν υπεύθυνο μηχανικής να επικυρώσει τα ελαττώματα που έχουν τοποθετηθεί και τις δοκιμές που θα τα έδειχναν και συντάξτε μια ρουμπρίκα τριών κριτηρίων με κλίμακα από το 0 έως το 2 και μια λίστα κρίσιμων σφαλμάτων. Εφαρμόστε την πιλοτικά σε μια μικρή ομάδα πριν την εφαρμόσετε.
Για να δείτε πώς μια άσκηση ελέγχου θα μπορούσε να εκτελεστεί ζωντανά με τη δική σας ομάδα και να επαναχρησιμοποιηθεί με τον δικό σας ρυθμό στη συνέχεια, εξερευνήστε AhaSlides.








