Η vibe coding έχει αλλάξει το ποιοι μπορούν να δημιουργήσουν μια εφαρμογή που φαίνεται λειτουργική. Μια προτροπή μπορεί να δημιουργήσει οθόνες, να συνδέσει ένα API και να συναρμολογήσει μια plausibly λειτουργική ροή εργασίας προτού μια παραδοσιακή ομάδα μηχανικών ολοκληρώσει την πρώτη ανασκόπηση σχεδιασμού.
Αυτή η ταχύτητα δημιουργεί ένα νέο πρόβλημα στις προσλήψεις και την παράδοση: μια επίδειξη δεν αποτελεί πλέον ισχυρή ένδειξη ότι το λογισμικό είναι καλό. Οι εργοδότες θα θέτουν ολοένα συχνότερα ένα δυσκολότερο ερώτημα: μπορεί αυτό το σύστημα που δημιουργήθηκε με AI να συμπεριφέρεται σωστά όταν οι είσοδοι είναι ακατάστατες, οι εξαρτήσεις αποτυγχάνουν, οι χρήστες επαναλαμβάνουν ενέργειες και το υποκείμενο μοντέλο αλλάζει;
Η απάντηση θα προκύψει από ένα ποιοτικό όριο που μοιάζει λιγότερο με οπτική τελειοποίηση και περισσότερο με πειθαρχημένη επαλήθευση λογισμικού. Όσοι ξεχωρίσουν δεν θα δείχνουν απλώς τι παρήγαγε ένα εργαλείο κωδικοποίησης AI. Θα δείχνουν πώς το δοκίμασαν, τι δεν μπορεί να κάνει με ασφάλεια και πώς γνωρίζουν ότι μια αλλαγή δεν προκάλεσε βλάβη σε κάτι άλλο.
Ένα benchmark είναι τεκμήριο, όχι θέση σε κατάταξη
Τα benchmarks πρακτόρων κωδικοποίησης ανοιχτού κώδικα προσφέρουν χρήσιμα σημεία εκκίνησης, αλλά μετρούν διαφορετικές ικανότητες. Το SWE-bench χρησιμοποιεί πραγματικά ζητήματα του GitHub και στιγμιότυπα αποθετηρίων, γεγονός που το καθιστά σχετικό με εργασίες συντήρησης. Το Terminal-Bench ελέγχει την αλληλεπίδραση μέσω γραμμής εντολών. Άλλα benchmarks που αναφέρονται, συμπεριλαμβανομένων των SlopCodeBench και ProgramBench, στοχεύουν σε διαφορετικές πτυχές του παραγόμενου κώδικα και της συμπεριφοράς των πρακτόρων.
Αυτά τα benchmarks μπορούν να βοηθήσουν στη σύγκριση εργαλείων ή στον καθορισμό μιας βάσης αναφοράς, αλλά οι εργοδότες θα πρέπει να είναι προσεκτικοί και να μην αντιμετωπίζουν οποιαδήποτε μεμονωμένη βαθμολογία ως απόδειξη ετοιμότητας για παραγωγή. Ένα μοντέλο που επιλύει ζητήματα αποθετηρίων μπορεί και πάλι να παράγει μη ασφαλή λογική εξουσιοδότησης. Ένας πράκτορας που ολοκληρώνει εργασίες τερματικού μπορεί να αποτύχει να διατηρήσει την κατάσταση σε μια μακρά ροή εργασίας. Μια καλοδουλεμένη διαδικτυακή εφαρμογή μπορεί να περνά μια επίδειξη της ομαλής διαδρομής, ενώ διαχειρίζεται λανθασμένα τις επαναλήψεις ή τις διπλές πληρωμές.
Επομένως, ένα αξιόπιστο portfolio ή μια εσωτερική ανασκόπηση θα πρέπει να περιλαμβάνει ένα σύνολο αξιολόγησης ειδικά για την εργασία. Το σύνολο μπορεί να περιέχει αντιπροσωπευτικές αναφορές σφαλμάτων, κανονικές διαδρομές χρηστών, κακοδιατυπωμένες εισόδους, όρια δικαιωμάτων, αποτυχίες εξαρτήσεων και παλινδρομήσεις που έχουν διορθωθεί στο παρελθόν. Κάθε περίπτωση θα πρέπει να έχει ένα σαφώς καθορισμένο αναμενόμενο αποτέλεσμα και όχι απλώς ένα στιγμιότυπο οθόνης που φαίνεται σωστό.
Το ελάχιστο πακέτο δοκιμών για λογισμικό που δημιουργήθηκε με AI
Για μια μικρή εφαρμογή, ένα χρήσιμο πακέτο ποιότητας μπορεί να δημιουργηθεί χωρίς ένα περίπλοκο ερευνητικό εργαστήριο:
- Δοκιμές αποδοχής: επαληθεύουν τη συμπεριφορά που είναι ορατή στον χρήστη για τις σημαντικότερες ροές εργασίας, συμπεριλαμβανομένων των επιτυχημένων και των αποτυχημένων αποτελεσμάτων.
- Μοναδιαίες δοκιμές και δοκιμές ολοκλήρωσης: ελέγχουν τους επιχειρηματικούς κανόνες μεμονωμένα και επιβεβαιώνουν ότι οι βάσεις δεδομένων, τα API, οι ουρές και η αυθεντικοποίηση συνεργάζονται όπως προβλέπεται.
- Αρνητικές δοκιμές: στέλνουν ελλιπείς, κακοδιατυπωμένες, υπερμεγέθεις, διπλότυπες και μη εξουσιοδοτημένες εισόδους. Ο κώδικας που δημιουργείται από AI συχνά φαίνεται καλύτερος στη διαδρομή που παρουσιάζεται στην προτροπή, επομένως οι διαδρομές που δεν ζητήθηκαν έχουν σημασία.
- Δοκιμές παλινδρόμησης: μετατρέπουν κάθε σφάλμα που ανακαλύπτεται σε μόνιμη δοκιμή. Μια επιτυχημένη επίδειξη μετά από μια διόρθωση δεν αρκεί, αν η ίδια αποτυχία μπορεί να επιστρέψει στην επόμενη αλλαγή που θα δημιουργηθεί.
- Έλεγχοι ασφάλειας: ελέγχουν τον έλεγχο πρόσβασης, τη διαχείριση μυστικών, τις άμυνες έναντι injection, τα τρωτά σημεία των εξαρτήσεων και το αν μη αξιόπιστο περιεχόμενο μπορεί να επηρεάσει κλήσεις εργαλείων ή προνομιακές ενέργειες.
- Λειτουργικοί έλεγχοι: επαληθεύουν τα χρονικά όρια, τις επαναλήψεις, την ιδεμποτένεια, την καταγραφή, τις ειδοποιήσεις και την ασφαλή συμπεριφορά όταν μια εξάρτηση δεν είναι διαθέσιμη.
Αυτό προσεγγίζει τη νοοτροπία μηχανικής QA που περιγράφεται στην αναφορά του Stack Overflow για έναν κύκλο ζωής ανάπτυξης λογισμικού με πράκτορες. Η σημαντική αλλαγή είναι πολιτισμική: η διασφάλιση ποιότητας δεν είναι μια τελική επιθεώρηση αφού ένα AI έχει γράψει τον κώδικα. Είναι η δομή που καθιστά την ταχεία παραγωγή αρκετά ασφαλή για χρήση.
Δοκιμάστε την ενορχήστρωση, όχι μόνο το αποτέλεσμα
Όταν το λογισμικό περιλαμβάνει έναν πράκτορα AI, οι συνηθισμένες δοκιμές εφαρμογών είναι απαραίτητες αλλά ανεπαρκείς. Το σύστημα μπορεί να αποτύχει επειδή το μοντέλο παρεξήγησε ένα αίτημα, αλλά μπορεί επίσης να αποτύχει επειδή η περιβάλλουσα ενορχήστρωση έχασε το πλαίσιο, κάλεσε ένα εργαλείο δύο φορές, αποδέχτηκε κακοδιατυπωμένη δομημένη έξοδο ή δεν τερματίστηκε ποτέ.
Οι προτεινόμενες από το digest περιοχές παλινδρόμησης πριν από την ανάπτυξη είναι μια πρακτική λίστα ελέγχου: απώλεια πλαισίου, ιδεμποτένεια εργαλείων, prompt injection, δομημένη έξοδος, μη τερματισμός, γείωση μέσω ανάκτησης και επαναφορά κατάστασης. Πρόκειται για ελέγξιμες ιδιότητες μηχανικής.
Για παράδειγμα, μια δοκιμή μπορεί να εκτελέσει το ίδιο αίτημα δύο φορές και να επιβεβαιώσει ότι η δεύτερη προσπάθεια δεν δημιουργεί διπλή παραγγελία. Μια άλλη μπορεί να διακόψει έναν πράκτορα στη μέση μιας ροής εργασίας, να τον επανεκκινήσει και να επαληθεύσει ότι συνεχίζει από έγκυρη κατάσταση αντί να επαναλάβει μια μη αναστρέψιμη ενέργεια. Μια δοκιμή ανάκτησης μπορεί να απαιτεί από το σύστημα να παραθέτει ή να επιστρέφει μόνο πληροφορίες από ένα εγκεκριμένο σύνολο πηγών. Μια δοκιμή δομημένης εξόδου μπορεί να παρέχει μια μη έγκυρη απάντηση και να επιβεβαιώνει ότι η εφαρμογή την απορρίπτει με ασφάλεια, αντί να την αντιμετωπίζει σιωπηρά ως έγκυρα δεδομένα.
Τα συστήματα μεγάλης διάρκειας και πολλών πρακτόρων χρειάζονται ιδιαίτερα σαφείς καταγραφές αποτυχιών. Οι ερευνητές εργάζονται πάνω στην αυτοματοποιημένη απόδοση αποτυχίας, επειδή μπορεί να είναι δύσκολο να εντοπιστεί ποιος πράκτορας προκάλεσε μια αποτυχία και σε ποιο σημείο μιας μακράς αλυσίδας αλληλεπίδρασης. Σε πρακτικό επίπεδο, οι ομάδες θα πρέπει να διατηρούν τις κλήσεις εργαλείων, τις εισόδους, τις εξόδους, τις εκδόσεις μοντέλων, τις χρονικές σημάνσεις, τις μεταβάσεις κατάστασης και τις τελικές αποφάσεις σε ένα αρχείο ελέγχου που λαμβάνει υπόψη την ιδιωτικότητα. Χωρίς αυτά τα στοιχεία, μια αποτυχημένη δοκιμή σάς λέει ότι κάτι απέτυχε, αλλά όχι από πού να αρχίσετε τη διόρθωσή του.
Η αναπαραγωγιμότητα θα γίνει επαγγελματικό πλεονέκτημα
Ο κώδικας που δημιουργείται από AI παρουσιάζει μεταβλητότητα. Μια επανεκτέλεση μπορεί να παράγει διαφορετική υλοποίηση· μια ενημέρωση του μοντέλου μπορεί να αλλάξει τη συμπεριφορά· μια διακοπή λειτουργίας παρόχου μπορεί να μεταβάλει τη δρομολόγηση ή την καθυστέρηση. Επομένως, οι εργοδότες θα εκτιμούν τους υποψηφίους που μπορούν να καταστήσουν τις αξιολογήσεις επαναλήψιμες.
Αυτό σημαίνει ότι πρέπει, όπου είναι δυνατόν, να «καρφιτσώνετε» στιγμιότυπα μοντέλων, να καταγράφετε τις προτροπές και τις ρυθμίσεις, να ελέγχετε την τυχαιότητα όταν το επιτρέπει η πλατφόρμα και να εκτελείτε πολλαπλές δοκιμές για εργασίες των οποίων τα αποτελέσματα μεταβάλλονται. Το digest επισημαίνει συγκεκριμένα τα «καρφιτσωμένα» στιγμιότυπα, τη χαμηλή ή μηδενική θερμοκρασία όπου είναι διαθέσιμη και τις πύλες CI/CD με όρια εμπιστοσύνης ως χρήσιμες δικλίδες ασφαλείας.
Μια πρακτική αναφορά θα πρέπει να διακρίνει τουλάχιστον τρία αποτελέσματα:
- Ποσοστό επιτυχίας: πόσες περιπτώσεις ολοκληρώθηκαν με επιτυχία.
- Συνέπεια: πόσο συχνά πετυχαίνει η ίδια περίπτωση σε επαναλαμβανόμενες εκτελέσεις.
- Σοβαρότητα: αν οι αποτυχίες είναι αισθητικές, ενοχλητικές, επιβλαβείς για τα δεδομένα, σχετικές με την ασφάλεια ή ικανές να προκαλέσουν μια μη ασφαλή εξωτερική ενέργεια.
Ένα σύστημα που περνά 19 από τους 20 ελέγχους μορφοποίησης χαμηλού κινδύνου δεν είναι απαραίτητα καλύτερο από ένα σύστημα που περνά 18 από τις 20 περιπτώσεις, αλλά δεν παραβιάζει ποτέ ένα όριο εξουσιοδότησης. Ο πήχης ποιότητας πρέπει να σταθμίζει τις αποτυχίες ανάλογα με τις συνέπειές τους.
Η ανθρώπινη αξιολόγηση πρέπει να στοχεύει στον κίνδυνο, όχι σε κάθε γραμμή
Σκοπός της καλύτερης αυτοματοποίησης δεν είναι να αναγκάζει κάποιον να ξαναδιαβάζει κάθε διακριτικό που παράγει μια AI. Είναι να κατευθύνει την ανθρώπινη προσοχή στις αποφάσεις που οι δοκιμές δεν μπορούν να καθορίσουν πλήρως.
Οι αξιολογητές πρέπει να εστιάζουν στην αυθεντικοποίηση και την εξουσιοδότηση, στη διατήρηση δεδομένων, σε οικονομικές ή συμβατικές ενέργειες, στην ιδιωτικότητα, στις μετα迁σεις, στην ανάκτηση από σφάλματα, στα δικαιώματα τρίτων και στις αλλαγές που επηρεάζουν το ίδιο το πλαίσιο αξιολόγησης του συστήματος. Για έναν πράκτορα, πρέπει επίσης να εξετάζουν ποια εργαλεία μπορεί να καλεί, σε ποια δεδομένα έχει πρόσβαση κάθε εργαλείο και αν απαιτείται έγκριση πριν από μια μη αναστρέψιμη ενέργεια.
Οι εμφανείς διαφορές, οι ροές εργασίας έγκρισης, οι αρχειοθετημένες συνομιλίες και τα αρχεία ελέγχου—χαρακτηριστικά που επισημαίνονται στην περιγραφή του συνεργατικού προγραμματισμού με AI από το Slack Code—δείχνουν προς μια ευρύτερη προσδοκία: η ιστορία του τρόπου με τον οποίο δημιουργήθηκε το λογισμικό θα έχει σημασία. Ένας αξιολογητής θα πρέπει να μπορεί να κατανοήσει το αίτημα, να εξετάσει την παραγόμενη αλλαγή, να δει τα στοιχεία των δοκιμών και να εντοπίσει ποιος ενέκρινε την ανάπτυξη.
Αυτό το αρχείο δεν είναι γραφειοκρατία για χάρη της γραφειοκρατίας. Κάνει μια εντυπωσιακή επίδειξη διακριτή από μια ελεγχόμενη αλλαγή που μπορεί να συντηρήσει κάποιος άλλος.
Τι να συμπεριλάβετε σε ένα portfolio ή σε μια συνέντευξη
Για τους υποψηφίους, η πιο ισχυρή επίδειξη είναι ένα μικρό σύστημα με μια σκόπιμα εμφανή ιστορία ποιότητας. Συμπεριλάβετε το αποθετήριο, οδηγίες εγκατάστασης, σημειώσεις αρχιτεκτονικής, εντολές δοκιμών, αντιπροσωπευτικές περιπτώσεις δοκιμών, γνωστούς περιορισμούς και μια σύντομη αναφορά αποτυχίας. Δείξτε ένα ή δύο σφάλματα που εντοπίστηκαν και μετατράπηκαν σε δοκιμές παλινδρόμησης. Εξηγήστε ποιο μοντέλο ή ποιος πράκτορας προγραμματισμού χρησιμοποιήθηκε, χωρίς να παρουσιάζετε το εργαλείο ως τον συντάκτη των αποφάσεων μηχανικής.
Αν η εφαρμογή χρησιμοποιεί πράκτορα, τεκμηριώστε τα δικαιώματα των εργαλείων, το μοντέλο κατάστασης, την πολιτική επαναλήψεων, τη συνθήκη τερματισμού και τα σημεία ανθρώπινης έγκρισης. Αν χρησιμοποιεί ανάκτηση, δείξτε πώς επιλέγονται οι πηγές και τι συμβαίνει όταν απουσιάζουν στοιχεία. Αν καλεί εξωτερικές υπηρεσίες, δείξτε τη συμπεριφορά σε περίπτωση λήξης χρόνου και διπλών αιτημάτων.
Μην ισχυρίζεστε αξιοπιστία από μία μόνο επιτυχημένη καταγραφή. Ένας ελέγξιμος ισχυρισμός θα ήταν περισσότερο σαν τον εξής: «Σε 30 καταγεγραμμένες εκτελέσεις αυτών των 12 σεναρίων, το σύστημα πληρούσε τα κριτήρια αποδοχής στα 28· οι δύο αποτυχίες αφορούσαν ασαφή εισαγωγή ημερομηνίας και αμφότερες τεκμηριώνονται». Ο ίδιος ο αριθμός είναι λιγότερο σημαντικός από τη μέθοδο, τα όρια και την ειλικρίνεια σχετικά με όσα παραμένουν μη ελεγμένα.
Ο νέος ορισμός του γρήγορου
Η AI μειώνει το κόστος παραγωγής μιας πρώτης έκδοσης. Δεν εξαλείφει το κόστος του να γνωρίζουμε αν αυτή η έκδοση αξίζει την εμπιστοσύνη μας. Στην πραγματικότητα, η ταχύτερη παραγωγή μπορεί να κάνει την αξιολόγηση ακόμη πιο σημαντική, επειδή μπορεί να συσσωρεύονται περισσότερες αλλαγές χωρίς έλεγχο μεταξύ των αναπτύξεων.
Ο επαγγελματίας της εποχής μετά τον vibe coding θα κρίνεται από τον κύκλο: ορισμός συμπεριφοράς, παραγωγή ή τροποποίηση κώδικα, δοκιμή ρεαλιστικών και αντίξοων περιπτώσεων, εξέταση αποφάσεων υψηλού κινδύνου, καταγραφή αποτυχιών και βελτίωση του συστήματος χωρίς απώλεια των στοιχείων. Τα benchmarks μπορούν να βοηθήσουν στη σύγκριση των δυνατοτήτων. Οι πρακτικές QA καθορίζουν αν αυτή η δυνατότητα θα γίνει αξιόπιστο λογισμικό.
Ο πήχης ποιότητας, επομένως, δεν είναι «Μπορείς να φτιάξεις μια εφαρμογή με AI;». Είναι «Μπορείς να αποδείξεις τι κάνει η εφαρμογή, να εντοπίσεις πότε παύει να το κάνει και να σχεδιάσεις τα όρια που εμποδίζουν μια αποτυχία να μετατραπεί σε περιστατικό;»