AI Συνέντευξη 14: Διαφορά μεταξύ vibe coding και spec coding;
Αυτό είναι ένα πρόβλημα που αντιμετωπίζουν οι περισσότεροι προγραμματιστές. Vibe Coding και Spec Coding είναι δύο εντελώς διαφορετικές παραδειγματικές προσεγγίσεις στον προγραμματισμό με τη βοήθεια μεγάλων γλωσσικών μοντέλων (LLM). Η βασική τους διαφορά είναι: το "είσοδο" που δίνεις στο AI είναι ασαφές συναίσθημα ή ακριβείς προδιαγραφές.
1. Ας εξηγήσουμε τη διαφορά μεταξύ vibe coding και spec coding με μια αναλογία μαγειρικής
- Vibe Coding = Λες σε έναν φίλο "Θέλω να φάω κάτι πικάντικο", αυτός μαγειρεύει ένα πιάτο με βάση το ένστικτό του, το δοκιμάζεις και λες "Λίγο ακόμα αλάτι", και προσθέτει αλάτι. Η γεύση μπορεί να είναι εξαιρετική, αλλά αν το μαγειρέψει άλλος φίλος, το αποτέλεσμα θα είναι εντελώς διαφορετικό.
- Spec Coding = Γράφεις μια συνταγή: "20g πάστα τσίλι Pixian, 150g φέτες βοδινού, 50g κομμάτια σέλινου, σοτάρισμα σε δυνατή φωτιά για 2 λεπτά, πρόσθεσε 3g ζάχαρη πριν το σερβίρισμα". Διαφορετικοί σεφ ακολουθούν τη συνταγή και η γεύση είναι σε μεγάλο βαθμό συνεπής.
2. Ορισμοί
| Διάσταση | Vibe Coding | Spec Coding |
|---|---|---|
| Εναλλακτική ονομασία | Προγραμματισμός με βάση το συναίσθημα, αυτοσχεδιασμός με prompt | Προγραμματισμός με βάση προδιαγραφές, τεκμηρίωση πρώτα |
| Μορφή εισόδου | "Φτιάξε μου μια όμορφη σελίδα σύνδεσης με τεχνολογική αίσθηση" | "Η σελίδα σύνδεσης πρέπει να περιλαμβάνει πεδία email/κωδικού, πλαίσιο ελέγχου 'Remember Me', κουμπί υποβολής· frontend με React + Tailwind· κανόνες επικύρωσης φόρμας: μορφή email, μήκος κωδικού ≥8· σε περίπτωση αποτυχίας, εμφάνιση κόκκινου μηνύματος…" |
| Τρόπος χρήσης AI | Διαλογικός, επαναληπτικός: δίνεις γενική κατεύθυνση → βλέπεις αποτέλεσμα → κάνεις μικρορυθμίσεις | Μηχανικός: γράφεις λεπτομερές PRD/τεχνικές προδιαγραφές → το AI παράγει κώδικα βάσει αυτών |
| Συμμετοχή ανθρώπου | Χαμηλή: εξάρτηση από τη δημιουργικότητα του AI, ο άνθρωπος απλά ελέγχει αν "αισθάνεται σωστά" | Υψηλή: ο άνθρωπος ολοκληρώνει τον σχεδιασμό/αρχιτεκτονική, το AI κυρίως εκτελεί |
| Τυπικές περιπτώσεις | Γρήγορη δημιουργία πρωτοτύπων, προσωπικά εργαλεία, εξερεύνηση UI, δημιουργικός κώδικας | Συστήματα παραγωγής, ομαδική συνεργασία, κώδικας που απαιτεί συντήρηση/δοκιμές |
3. Σύγκριση ροών εργασίας
Διαδικασία Vibe Coding
- Ασαφής ιδέα: "Θέλω να γράψω ένα web scraper για να πάρω τα hot topics από το Zhihu."
- Γράψε το πρώτο prompt: Ζήτησε απευθείας από το AI να δημιουργήσει κώδικα.
- Εκτέλεση → Σφάλμα → Επικόλλησε το σφάλμα πίσω → Το AI το διορθώνει.
- Η διεπαφή φαίνεται άσχημη → "Κάνε το κουμπί πιο στρογγυλό, άλλαξε το φόντο σε gradient μπλε" → Το AI αλλάζει.
- Λείπει λειτουργία → "Πρόσθεσε λειτουργία αποθήκευσης σε CSV" → Το AI την προσθέτει.
- Επανάληψη βημάτων 3-5 μέχρι να "αισθάνεσαι ότι είναι αρκετά καλό".
Διαδικασία Spec Coding
- Σύνταξη εγγράφου προδιαγραφών: Καθόρισε είσοδο/έξοδο, δομές δεδομένων, διαχείριση σφαλμάτων, απαιτήσεις απόδοσης, μη λειτουργικές απαιτήσεις (π.χ. logging, rate limiting).
- Διάσπαση προδιαγραφών σε εργασίες: Π.χ. Εργασία 1: Υλοποίηση συνάρτησης
fetch_hot_topics()σύμφωνα με την υπογραφή API της προδιαγραφής. - Εκτέλεση κάθε εργασίας από το AI: Το prompt περιλαμβάνει υπογραφή συνάρτησης, σχόλια, αναμενόμενα αποτελέσματα δοκιμών.
- Ανθρώπινη αναθεώρηση και επαλήθευση: Βεβαιώσου ότι συμμορφώνεται με τις προδιαγραφές, εκτέλεσε unit tests.
- Ενσωμάτωση και regression test.
4. Σύγκριση πλεονεκτημάτων/μειονεκτημάτων
| Χαρακτηριστικό | Vibe Coding | Spec Coding |
|---|---|---|
| Ταχύτητα εκκίνησης | Πολύ γρήγορη, πρωτότυπο σε λεπτά | Αργή, απαιτεί γράψιμο τεκμηρίωσης, διάσπαση εργασιών |
| Ποιότητα κώδικα | Χαμηλή (μπορεί να είναι περιττός, ασυνεπής, με κρυφά bugs) | Υψηλή (εύκολος στην ανάγνωση, δοκιμάσιμος, συνεπής με αρχιτεκτονική) |
| Συντηρησιμότητα | Κακή, οι επόμενοι δεν καταλαβαίνουν "γιατί γράφτηκε έτσι" | Καλή, οι προδιαγραφές αποτελούν τεκμηρίωση |
| Εξάρτηση από LLM | Πολύ υψηλή, αλλαγή μοντέλου μπορεί να αλλάξει ριζικά το αποτέλεσμα | Μέτρια, εφόσον οι προδιαγραφές είναι σαφείς, διαφορετικά μοντέλα μπορούν να παράγουν παρόμοια δομή |
| Δυσκολία εντοπισμού σφαλμάτων | Δύσκολη, δεν είναι γνωστό από πού προήλθε η λογική | Εύκολη, έλεγχος κατά προδιαγραφή |
| Καταλληλότητα για ομαδική συνεργασία | Σχεδόν αδύνατη | Δυνατή (οι προδιαγραφές αποτελούν συμβόλαιο επικοινωνίας) |
| Προβλεψιμότητα αποτελέσματος | Χαμηλή, το αποτέλεσμα μπορεί να διαφέρει σε κάθε συνομιλία | Υψηλή, ίδιες προδιαγραφές παράγουν σταθερό αποτέλεσμα |
5. Προτάσεις για πραγματική χρήση
"Στην εργασία, το vibe coding και το spec coding δεν είναι δίλημμα, αλλά συνδυάζονται, χρησιμοποιώντας την κατάλληλη προσέγγιση ανά περίσταση:
- Στη φάση εξερεύνησης (όταν η τεχνολογική επιλογή ή το UI δεν είναι σίγουρα), χρησιμοποίησε Vibe Coding για γρήγορη δοκιμή διαφορετικών προσεγγίσεων, π.χ. 'Γράψε ένα component κάρτας με Tailwind για να δω πώς φαίνεται'.
- Μόλις η προσέγγιση καθοριστεί, μετάβασε αμέσως σε Spec Coding: μετέτρεψε το επιτυχημένο πρωτότυπο σε σαφείς προδιαγραφές (είσοδο/έξοδο, οριακές συνθήκες, διαχείριση σφαλμάτων) και ζήτησε από το AI ή έναν άνθρωπο να ξαναγράψει τον κώδικα παραγωγής αυστηρά σύμφωνα με τις προδιαγραφές.
Η αμιγώς Vibe λειτουργία είναι κατάλληλη μόνο για εφάπαξ scripts ή εσωτερικά εργαλεία· για συστήματα που απαιτούν μακροπρόθεσμη συντήρηση και χρησιμοποιούνται από πολλούς, το Spec Coding είναι απαραίτητο."
评论
暂无已展示的评论。
发表评论(匿名)