Assicurati di leggere Quando usare Devin e Istruire Devin in modo efficace per altri suggerimenti essenziali.
Aggiungere un nuovo endpoint API
Approccio correttoPerché funziona:
Approccio erratoPerché non funziona:
“Create a new endpoint
/users/stats that returns a JSON object with user count and average signup age. Use our existing users table in PostgreSQL. You can reference the /orders/stats endpoint in statsController.js for how we structure responses. Ensure the new endpoint is covered by the StatsController.test.js suite.”- Specifica chiaramente la route e il formato di risposta atteso
- Fa riferimento a codice esistente come modello
- Definisce la fonte dati (tabella users)
- Include i requisiti di copertura dei test
Approccio erratoPerché non funziona:
- Non è specificato quali statistiche includere
- Nessun riferimento alle fonti dati
- Nessun riferimento a pattern esistenti
- Mancano i requisiti relativi ai test
Funzionalità frontend per la visualizzazione dei dati
Approccio correttoPerché funziona:
Approccio erratoPerché non funziona:
“In
UserProfileComponent, add a dropdown that shows a list of user roles (admin, editor, viewer). Use the styling from DropdownBase. When a role is selected, call the existing API to set the user role. Validate by checking that the selection updates the user role in the DB. Refer to your Knowledge for how to test properly.”- Indica componenti specifici
- Elenca esattamente i ruoli da includere
- Fa riferimento al componente di stile esistente
- Definisce il flusso di interazione dell’utente
- Include i passaggi di validazione
Approccio erratoPerché non funziona:
- “User-friendly” è soggettivo
- Nessun componente di UI specifico menzionato
- Flusso di interazione dell’utente non chiaro
- Criteri di validazione vaghi
Altri esempi
Buoni esempi
Scrivere test unitari
“Aggiungi test Jest per i metodi di AuthService: login e logout. Assicurati che la copertura dei test per queste due funzioni sia almeno dell’80%. Usa
UserService.test.js come esempio. Dopo l’implementazione, esegui npm test -- --coverage e verifica che il report di copertura mostri >80% per entrambe le funzioni. Conferma inoltre che i test passino sia con credenziali valide che non valide e che il logout svuoti correttamente i dati di sessione.”UserService.test.js) e ambito ben definito con passaggi di verifica specifici.Migrazione o refactoring del codice esistente
“Migra
logger.js da JavaScript a TypeScript. Abbiamo già un tsconfig.json e una suite di test LoggerTest.test.js per la validazione. Assicurati che compili senza errori e non modificare la configurazione esistente! Dopo la migrazione, verifica: 1) eseguendo tsc per confermare che non ci siano errori di tipo, 2) eseguendo la test suite con npm test LoggerTest.test.js per verificare che tutti i test passino e 3) controllando che tutte le chiamate esistenti ai metodi del logger in tutta la codebase funzionino ancora senza errori di tipo.”tsconfig.json) e una test suite per un feedback immediato, oltre a passaggi specifici di compilazione e validazione.Aggiornare API o query del database
“Stiamo passando da pg a Sequelize (leggi https://sequelize.org/api/v6/identifiers). Aggiorna le query di UserModel per usare i metodi Sequelize. Fai riferimento a
OrderModel per vedere come lo facciamo in questa codebase. Dopo l’implementazione, verifica: 1) eseguendo npm run test:integration UserModel.test.js per controllare che tutti i test di integrazione passino, 2) confermando che le prestazioni delle query non siano peggiorate controllando il tempo di esecuzione su un dataset di test di 1000 utenti e 3) verificando che tutte le operazioni CRUD mantengano l’integrità dei dati eseguendo npm run test:e2e user-flows.test.js.”OrderModel.js). Fornisce un link alla documentazione così che Devin sappia di consultarla e include passaggi specifici di verifica delle prestazioni e della funzionalità con comandi di test esatti.Cattivi esempi
Revisione del codice senza specifiche
Perché è un cattivo esempio? La richiesta è troppo vaga e chiede a Devin di completare troppe attività in un’unica sessione. Devin può confondersi durante sessioni molto lunghe.
Attività di design visivo
Perché è un cattivo esempio? Si tratta di una richiesta visiva soggettiva. Devin non può “vedere” come gli esseri umani e non coglierà perfettamente tutti i dettagli. Non è ottimizzato per questi casi d’uso.
Progetti molto complessi e poco definiti
Perché è un cattivo esempio? Si tratta di un compito molto ampio e non strutturato, che richiede decisioni architetturali e compromessi.Invece, suddividi i progetti complessi in fasi:
- Fai analizzare la tua base di codice da Devin
- Chiedi a Devin di proporre architetture specifiche
- Crea sessioni separate per implementare ogni parte
