Come scegliere uno sviluppatore o un'agenzia per la tua attività
Una guida insider per trovare e valutare sviluppatori o agenzie — cosa cercare, cosa evitare e come assicurare il successo del tuo progetto.

Assumere uno sviluppatore o un'agenzia è una delle decisioni a più alto rischio che un imprenditore prende, e la maggior parte delle persone ci arriva praticamente senza un framework di valutazione. Non assumeresti un commercialista senza verificare le sue credenziali, o un appaltatore senza vedere i lavori precedenti. Eppure incontro regolarmente imprenditori che hanno assunto il primo sviluppatore trovato su Upwork, pagato il 50% in anticipo senza contratto, e si sono ritrovati con un prodotto a metà che non possono usare né mantenere.
Qui ti do la prospettiva da insider — le cose che gli sviluppatori sanno del settore e che i clienti di solito imparano a proprie spese.
Freelancer vs. agenzia vs. interno: i trade-off
Prima di iniziare a valutare i singoli candidati, devi decidere quale tipo di incarico ha senso per il tuo progetto.
Sviluppatori freelance
Ideale per: Progetti piccoli e medi con scope ben definito, manutenzione continua di prodotti esistenti, aggiunta di funzionalità specifiche a una codebase esistente.
Costo tipico: $50-$200/ora a seconda dell'esperienza e della posizione, o $3.000-$30.000 per progetto.
Vantaggi: Costi generali più bassi significano costi più bassi. Lavori direttamente con la persona che costruisce il tuo prodotto — nessun project manager, account executive o livelli di comunicazione nel mezzo. I buoni freelancer sono molto reattivi perché la loro reputazione dipende da ogni progetto.
Svantaggi: Singolo punto di fallimento. Se il tuo freelancer si ammala, va in vacanza o prende troppi progetti, la tua timeline slitta. Capacità limitata per progetti grandi. Nessuna competenza integrata di design, QA o DevOps — potresti dover assumere più freelancer e coordinarli tu stesso.
La realtà: La gamma di qualità tra i freelancer è enorme. I migliori freelancer sono meglio della maggior parte dei team di agenzia e addebitano di conseguenza. I peggiori freelancer prenderanno i tuoi soldi e consegneranno codice inutilizzabile. Il tuo compito è distinguerli (più dettagli sotto).
Agenzie
Ideale per: Progetti medi e grandi che richiedono più discipline (design, frontend, backend, mobile), attività che hanno bisogno di un team senza assumere dipendenti a tempo pieno, progetti dove vuoi un unico punto di responsabilità.
Costo tipico: $100-$300/ora per il team, o $20.000-$200.000+ per progetto.
Vantaggi: Ottieni un team — designer, sviluppatori, project manager, QA — senza assumerne nessuno. Le buone agenzie hanno processi consolidati, standard di qualità e strutture di responsabilità. Possono gestire progetti più grandi e scalare il team su e giù secondo necessità.
Svantaggi: Costo più alto perché paghi per l'overhead (ufficio, management, vendite, marketing). La comunicazione spesso passa attraverso un project manager, che aggiunge un livello tra te e le persone che fanno il lavoro. Alcune agenzie privilegiano il fatturato rispetto alla qualità e raccomanderanno più lavoro del necessario.
La realtà: La qualità delle agenzie varia tanto quanto quella dei freelancer, solo a un prezzo più alto. Le migliori agenzie offrono lavoro costantemente eccellente con gestione professionale del progetto. Le peggiori addebitano tariffe da agenzia e poi esternalizzano lo sviluppo effettivo a subappaltatori economici all'estero senza dirtelo. Chiedi chi scriverà effettivamente il codice.
Sviluppatori interni
Ideale per: Attività dove la tecnologia è il prodotto core, aziende con esigenze di sviluppo continue che costerebbero di più in outsourcing, organizzazioni che hanno bisogno di attenzione dedicata a tempo pieno.
Costo tipico: $80.000-$180.000/anno di stipendio più benefit, spazio ufficio, attrezzature e overhead di gestione. Il costo reale è di solito 1,3-1,5 volte lo stipendio.
Vantaggi: Dedizione a tempo pieno al tuo progetto. Comprensione profonda della tua attività nel tempo. Nessuna sorpresa in fatturazione. Possiedi la relazione e la conoscenza.
Svantaggi: L'assunzione richiede 2-4 mesi. Devi sapere abbastanza di tecnologia per valutare i candidati e gestirli efficacemente (o assumere qualcuno che lo faccia). Sei responsabile del loro sviluppo di carriera, di tenerli motivati, e di sostituirli se se ne vanno. Un singolo sviluppatore non può coprire ogni tecnologia — potresti comunque aver bisogno di contractor per lavori specializzati.
La realtà: L'interno ha senso solo quando le tue esigenze di sviluppo continue sono abbastanza grandi da tenere uno sviluppatore pienamente occupato. Se hai bisogno di 20 ore di lavoro di sviluppo al mese, assumere uno sviluppatore a tempo pieno a $150.000/anno significa che stai pagando $625/ora per il suo tempo utilizzato. Un freelancer a $150/ora costerebbe una frazione di quello.
La mia raccomandazione
Per la maggior parte delle piccole e medie imprese che costruiscono il loro primo prodotto digitale, inizia con un freelancer o una piccola agenzia per la build iniziale. Passa all'interno solo quando il tuo prodotto genera abbastanza fatturato per giustificare stipendi a tempo pieno e le tue esigenze di sviluppo sono continue (non basate su progetto).
Se il tuo progetto è abbastanza complesso da necessitare un team (app mobile + backend + dashboard web, per esempio), una piccola agenzia (5-15 persone) di solito fornisce il miglior equilibrio tra qualità, coordinamento e costo. Le grandi agenzie (50+ persone) sono migliori per progetti di scala enterprise dove hai bisogno di competenze profonde in aree specializzate.
Come valutare un portfolio
Un portfolio è il singolo strumento di valutazione più importante che hai, ma la maggior parte delle persone lo guarda nel modo sbagliato. Vedono screenshot belli e assumono qualità. Ecco cosa cercare realmente.
Visita i siti live
Non limitarti a guardare gli screenshot in un deck di portfolio. Chiedi gli URL e visita effettivamente i siti o scarica le app. Un numero sorprendente di "pezzi del portfolio" non sono più online, che significa che il cliente ha chiuso l'attività (comprensibile, succede), il progetto non è mai stato completato (segnale d'allarme), o la qualità si è deteriorata dopo il lancio perché nessuno l'ha mantenuto (domande sulla qualità a lungo termine).
Quando visiti un sito live, presta attenzione a:
- Velocità. Si carica velocemente sul tuo telefono? Provalo su una connessione cellulare, non sul Wi-Fi dell'ufficio. Se un pezzo del portfolio dello sviluppatore stesso è lento, cosa ti dice degli standard che applica al lavoro per i clienti?
- Esperienza mobile. Aprilo sul tuo telefono. È usabile? Riesci a trovare le informazioni senza difficoltà? I pulsanti sono facili da toccare?
- Cura dei dettagli. Le immagini si caricano correttamente? Ci sono link rotti? Il testo è ben formattato? Questi dettagli rivelano il livello di cura che lo sviluppatore porta in un progetto.
Chiedi del loro ruolo
Quando uno sviluppatore o un'agenzia ti mostra un progetto, chiedi: "Cosa avete costruito specificamente?" Molti portfolio includono progetti dove lo sviluppatore ha costruito un piccolo pezzo di un sistema più grande, o dove ha personalizzato un template piuttosto che costruire da zero. Nessuno dei due è intrinsecamente negativo, ma devi capire la portata del loro contributo per valutare se le loro competenze corrispondono alle tue esigenze.
Cerca progetti simili al tuo
Uno sviluppatore che ha costruito cinque negozi e-commerce ne costruirà un sesto migliore rispetto a uno sviluppatore che non ne ha mai costruito uno. L'esperienza di dominio conta — non perché la tecnologia sia diversa, ma perché gli sviluppatori esperti hanno già fatto e imparato dagli errori che gli sviluppatori inesperti faranno sul tuo progetto.
Questo non significa che dovresti assumere solo qualcuno che ha costruito una replica esatta di ciò che vuoi. Ma se il tuo progetto è un sistema di ordini per ristoranti, uno sviluppatore che ha costruito prodotti food-tech capirà i casi limite (personalizzazione del menu, zone di consegna, workflow di cucina, suddivisione dei pagamenti) che uno sviluppatore che ha costruito solo siti di marketing non capirà.
Controlla le date
Chiedi quando i progetti nel portfolio sono stati completati. Lo sviluppo web cambia velocemente. Un portfolio pieno di progetti del 2019 che non sono stati aggiornati da allora ti dice qualcosa sul livello di attività attuale dello sviluppatore e sulla qualità a lungo termine del suo lavoro. Progetti recenti (negli ultimi 12-18 mesi) sono più rilevanti per valutare i livelli di competenza attuali.
Segnali d'allarme che dovrebbero farti andare via
Nei miei anni di lavoro in questo settore, ho visto ogni variazione di progetto andato male. Questi sono i segnali d'allarme che, dalla mia esperienza, predicono costantemente il fallimento.
Il prezzo è sospettosamente basso
Se uno sviluppatore quota $15.000, un altro quota $12.000 e un terzo quota $2.000 per lo stesso progetto, lo sviluppatore da $2.000 non è più efficiente — sta tagliando angoli che non puoi vedere ancora, sta pianificando di colpirti con ordini di modifica dopo, o semplicemente non capisce la portata di ciò che stai chiedendo.
L'opzione più costosa non è sempre la migliore, ma l'opzione più economica non è quasi mai la migliore. Lo sviluppo di qualità richiede tempo, e il tempo costa. Quando qualcuno sottoquota significativamente il mercato, c'è sempre un motivo.
Nessun processo o metodologia
Un buon sviluppatore o agenzia dovrebbe essere in grado di guidarti attraverso il proprio processo prima che tu firmi qualsiasi cosa. Come appare la fase di discovery? Come raccoglieranno i requisiti? Quando vedrai i design? Come fornirai feedback? Con quale frequenza riceverai aggiornamenti sull'avanzamento? Cosa succede quando qualcosa deve cambiare?
Se la risposta è "dimmi cosa vuoi e lo costruisco," ti stai dirigendo verso un progetto dove le aspettative sono disallineate, le tempistiche sono poco chiare e i conflitti sono inevitabili. Il processo non è burocrazia — è come i professionisti esperti gestiscono la complessità e consegnano risultati prevedibili.
Non menzionano il testing
Chiedi come testano il loro lavoro. Se la risposta è "lo testo io stesso prima di consegnarlo" senza menzione di testing sistematico, processi di quality assurance o testing su più dispositivi e browser, il tuo prodotto verrà rilasciato con bug. Ogni prodotto ha bug, ma la differenza tra uno sviluppatore professionista e un amatore è se quei bug vengono catturati prima o dopo che i tuoi clienti li trovano.
I buoni sviluppatori scrivono test automatizzati che verificano che il loro codice funzioni correttamente. Testano su più browser e dispositivi. Hanno qualcuno diverso dalla persona che ha scritto il codice a verificare che funzioni. Queste pratiche richiedono tempo, che è parte del motivo per cui lo sviluppo di qualità costa più dello sviluppo amatoriale.
Resistenza ai contratti o alla documentazione
Se uno sviluppatore oppone resistenza ad avere un contratto scritto, è un segnale d'allarme importante. I professionisti accolgono i contratti perché i contratti proteggono entrambe le parti. Un contratto dovrebbe coprire: scope del lavoro, tempistiche, piano di pagamento, proprietà intellettuale, cosa succede se lo scope cambia e come ciascuna parte può terminare l'incarico.
Allo stesso modo, se resistono a documentare le decisioni tecniche o a creare documentazione su come funziona il tuo sistema, stai costruendo una dipendenza da quella persona specifica. Quando non sono disponibili (o vuoi passare a uno sviluppatore diverso), la mancanza di documentazione significa che la persona successiva deve fare reverse-engineering di tutto da zero.
Promettono tempistiche irrealistiche
"Posso costruire la tua intera piattaforma in due settimane." No, non possono. Non bene, almeno. Lo sviluppo software custom richiede tempo perché le parti più difficili — capire i requisiti, gestire i casi limite, testare, iterare basandosi sul feedback — non possono essere compresse.
Uno sviluppatore che promette tempistiche aggressive o sta pianificando di tagliare angoli, non capisce la portata, o tornerà nella seconda settimana con una lista di "complicazioni" che estendono la timeline (e il budget) significativamente.
Elementi essenziali del contratto: cosa dovrebbe contenere l'accordo
Che tu stia assumendo un freelancer o un'agenzia, l'accordo scritto dovrebbe coprire queste aree.
Scope del lavoro
Lo scope dovrebbe descrivere cosa verrà costruito in sufficiente dettaglio che entrambe le parti possano guardare il prodotto finito e concordare se corrisponde a ciò che era stato promesso. Non così dettagliato che ogni pixel sia specificato (quel livello di rigidità fa fallire i progetti), ma abbastanza dettagliato che "costruiscimi un sito web" non diventi una disputa su se un sistema di prenotazione era incluso.
Raccomando un documento di scope che descrive le funzionalità in termini di risultati per l'utente: "Un cliente può sfogliare il menu, aggiungere articoli al carrello e effettuare un ordine con pagamento con carta di credito" è più chiaro di "funzionalità e-commerce."
Struttura dei pagamenti
Non pagare mai il 100% in anticipo. Una struttura di pagamento basata su milestone allinea gli incentivi e protegge entrambe le parti.
Una struttura comune che funziona bene:
- 20-30% in anticipo per iniziare il progetto (copre il rischio dello sviluppatore di iniziare il lavoro)
- 30-40% a metà percorso (tipicamente dopo l'approvazione del design o un prototipo funzionale)
- 30-40% al completamento (dopo la revisione finale e il deployment)
Per progetti più grandi, potresti avere 4-5 milestone. La chiave è che ogni pagamento è legato a un deliverable che puoi valutare. Se il progetto si blocca, hai pagato solo per il lavoro completato fino a quel momento.
A ore vs. prezzo fisso: I contratti a prezzo fisso funzionano bene quando lo scope è chiaramente definito. I contratti a ore funzionano meglio per progetti dove lo scope evolverà o dove vuoi flessibilità per aggiustare le priorità. Molti sviluppatori esperti preferiscono la fatturazione a ore perché è più onesta — i contratti a prezzo fisso spesso includono premi di rischio che gonfiano il costo totale.
Proprietà intellettuale
Questa è la clausola che la maggior parte dei fondatori non tecnici trascura e poi rimpiange. Dovresti possedere il codice che viene scritto per il tuo progetto. Questo dovrebbe essere esplicito nel contratto.
Ci sono sfumature. La maggior parte degli sviluppatori usa librerie open-source, framework e a volte i propri componenti pre-costruiti nel tuo progetto. Non possiedi quelli — sono licenziati sotto i loro termini. Ciò che dovresti possedere è il codice personalizzato scritto specificamente per il tuo progetto e gli asset di design creati per te.
Senza una clausola IP chiara, lo sviluppatore tecnicamente possiede il codice e te lo sta concedendo in licenza. Questo crea dipendenza: se la relazione finisce male, potrebbero argomentare che non hai il diritto di modificare o mantenere il codice.
Considerazioni sull'NDA
Se il tuo progetto coinvolge logica di business proprietaria, dati dei clienti o un'idea genuinamente innovativa, un accordo di non divulgazione è ragionevole. La maggior parte degli sviluppatori professionisti firmerà un NDA standard senza obiezioni.
Tuttavia, comprendi cosa fa e cosa non fa un NDA. Protegge le informazioni confidenziali — non le idee. Se il tuo concetto di business è "Uber per il dog walking," un NDA non impedisce a qualcuno di costruire un prodotto concorrente. Impedisce loro di condividere i dettagli aziendali specifici, i dati dei clienti e i processi proprietari che hai divulgato durante l'incarico.
Mantieni gli NDA ragionevoli per portata e durata. Un NDA di 2 anni che copre le informazioni condivise durante il progetto è standard. Un NDA di 10 anni che impedisce allo sviluppatore di lavorare nell'intero tuo settore è irragionevole e un buon sviluppatore (giustamente) si opporrà.
Valutazione tecnica per fondatori non tecnici
Non devi capire il codice per valutare un partner tecnico. Ecco una checklist che puoi usare.
Chiedi delle loro scelte tecnologiche
Un buon sviluppatore spiegherà le sue raccomandazioni tecnologiche in termini che puoi capire e le giustificherà basandosi sulle esigenze del tuo progetto — non sulle sue preferenze personali. Chiedi: "Perché state raccomandando questa tecnologia per il mio progetto?" La risposta dovrebbe fare riferimento ai tuoi requisiti specifici, timeline e budget.
Diffida degli sviluppatori che raccomandano la tecnologia più nuova e all'avanguardia per un sito web aziendale standard. Tecnologie collaudate e mature sono quasi sempre la scelta migliore per le applicazioni aziendali. I nuovi strumenti sono entusiasmanti per gli sviluppatori ma rischiosi per il tuo progetto.
Chiedi di hosting e deployment
Dove vivrà il tuo sito web o la tua app? Chi gestisce i server? Cosa succede se il sito va giù alle 2 di notte? Come vengono distribuiti gli aggiornamenti?
Dovresti capire l'accordo di hosting abbastanza da sapere: chi è responsabile di mantenerlo funzionante, qual è il costo mensile e se puoi trasferire a un provider diverso se necessario. Se lo sviluppatore ospita tutto sul suo server personale e tu non hai accesso, sei vincolato a quella relazione — e chiuso fuori dal tuo stesso prodotto.
Chiedi della sicurezza
Per qualsiasi progetto che gestisce dati dei clienti o pagamenti, chiedi come gestiscono la sicurezza. La risposta non deve essere profondamente tecnica, ma dovrebbe coprire: come vengono archiviati e protetti i dati dei clienti, come vengono elaborati i pagamenti (dovrebbero usare processori di pagamento consolidati come Stripe, non gestire direttamente i numeri delle carte), se il sito usa HTTPS e come vengono gestite le credenziali di accesso.
Se liquidano le domande sulla sicurezza come non importanti per il tuo progetto, è un segnale d'allarme. La sicurezza è importante per ogni progetto che ha utenti.
Chiedi referenze
Questo è lo strumento di valutazione più sottoutilizzato. Chiedi 2-3 referenze da clienti passati — preferibilmente clienti con progetti simili per dimensione e tipo al tuo. Poi chiamali davvero.
Domande da fare alle referenze:
- Il progetto è stato completato nei tempi e nel budget?
- Come è stata la comunicazione durante il progetto?
- Ci sono state sorprese o costi imprevisti?
- Li assumereste di nuovo?
- Come gestiscono i problemi o i disaccordi?
Le risposte ti diranno più di qualsiasi revisione del portfolio o call di vendita.
Gestire la relazione per il successo del progetto
Assumere lo sviluppatore giusto è metà della battaglia. Gestire l'incarico efficacemente è l'altra metà.
Stabilisci aspettative di comunicazione presto
Prima che il lavoro inizi, concorda su:
- Con quale frequenza comunicherete (aggiornamenti settimanali come minimo)
- Attraverso quale canale (email, Slack, uno strumento di project management)
- Aspettative sui tempi di risposta (24 ore per domande non urgenti, stesso giorno per blocchi)
- Check-in regolari (una videochiamata settimanale di 30 minuti per revisionare l'avanzamento)
La maggior parte dei fallimenti dei progetti che ho visto non sono stati causati da cattivo sviluppo — sono stati causati da problemi di comunicazione. Lo sviluppatore ha costruito qualcosa di diverso da ciò che il cliente voleva perché nessuna delle parti ha verificato l'allineamento finché non era troppo tardi.
Fornisci feedback scritto e chiaro
Quando revisioni il lavoro in corso, scrivi il tuo feedback. "Non mi piace il design" è inutile. "Il font dell'header sembra troppo casual per il nostro brand — possiamo usare qualcosa di più professionale, simile a ciò che vediamo su [esempio specifico]?" dà allo sviluppatore qualcosa di actionable.
Crea un documento condiviso o usa uno strumento di project management dove il feedback viene tracciato e affrontato. Il feedback verbale in una call viene dimenticato. Il feedback scritto crea responsabilità e un registro a cui puoi fare riferimento.
Gestisci i cambiamenti di scope deliberatamente
Ogni progetto incontra cambiamenti di scope. Una nuova idea di funzionalità, un cambiamento nei requisiti di business, o feedback da utenti early — questi sono normali e sani. Il problema sorge quando i cambiamenti di scope avvengono informalmente, senza discutere il loro impatto su tempistiche e budget.
Quando vuoi aggiungere o cambiare qualcosa, formulalo come: "Vorrei aggiungere X. Come influisce su tempistiche e costo?" Questo forza una conversazione esplicita sui trade-off. Lo sviluppatore potrebbe dire che aggiunge due settimane e $3.000, e puoi decidere se ne vale la pena. O potrebbe suggerire una versione più semplice della funzionalità che rientra nello scope esistente. La chiave è rendere i cambiamenti di scope deliberati, non accidentali.
Definisci "fatto" prima di iniziare
La singola fonte di conflitto più comune nei progetti di sviluppo è il disaccordo su quando il progetto è finito. Lo sviluppatore pensa di aver consegnato tutto ciò che era concordato. Il cliente si aspettava di più. Entrambi operano in buona fede, ma le loro aspettative non erano mai state allineate.
Prima che il lavoro inizi, crea un documento di criteri di accettazione che descrive — in linguaggio semplice — cosa farà il prodotto finito e come lo verificherai. "Il processo di checkout funziona correttamente" è vago. "Un cliente può aggiungere articoli al carrello, inserire il proprio indirizzo di spedizione, pagare con carta di credito e ricevere un'email di conferma dell'ordine" è testabile.
Quando il deliverable soddisfa i criteri di accettazione, il progetto è fatto. Modifiche aggiuntive oltre quei criteri sono nuovo scope, con le proprie tempistiche e budget.
Dopo il progetto: cosa viene dopo
Il passaggio di consegne alla fine di un progetto è tanto importante quanto il kick-off all'inizio.
Ottieni accesso a tutto. Login del registrar del dominio, account di hosting, repository del codice sorgente, tutti gli account dei servizi di terze parti (analytics, servizio email, processore di pagamento). Dovresti essere in grado di operare indipendentemente se la relazione con lo sviluppatore finisce. Se non hai accesso amministrativo a ogni servizio da cui il tuo prodotto dipende, non hai il controllo.
Ottieni la documentazione. Come minimo, hai bisogno di un documento che spiega: come aggiornare i contenuti, dove risiede il codice, come distribuire le modifiche, quali servizi di terze parti il prodotto usa e qualsiasi attività di manutenzione continua (come rinnovare certificati SSL o aggiornare le dipendenze).
Discuti la manutenzione continua. Ogni prodotto digitale necessita di attenzione continua — patch di sicurezza, aggiornamenti delle dipendenze, correzioni di bug, miglioramenti minori basati sul feedback degli utenti. Concorda un accordo di manutenzione: ore in retainer, tempo di risposta per le emergenze e come le richieste di manutenzione saranno prioritizzate.
Pianifica il trasferimento di conoscenza. Se cambi sviluppatore (e su un arco temporale abbastanza lungo, probabilmente lo farai), il nuovo sviluppatore deve capire cosa è stato costruito e perché. Buona documentazione, codice pulito e una codebase ben organizzata rendono questa transizione fluida. Documentazione scarsa e codice disordinato la rendono dolorosa e costosa.
La mentalità dell'investimento
Assumere uno sviluppatore non è un acquisto — è un investimento. Come ogni investimento, il ritorno dipende dal prendere buone decisioni su dove allocare le tue risorse e gestire il processo attivamente.
Lo sviluppatore più economico è raramente il miglior valore. Il più costoso non è sempre il migliore nemmeno. Il miglior valore viene dal trovare un professionista competente che capisce i tuoi obiettivi di business, comunica chiaramente e consegna in modo affidabile.
Prendi il processo di valutazione seriamente. Controlla le referenze. Leggi il contratto attentamente. Stabilisci aspettative chiare. Gestisci la relazione attivamente. Lo sforzo iniziale che metti nello scegliere e gestire il giusto partner tecnico pagherà dividendi per gli anni a venire.
E se qualcosa non ti convince durante il processo di valutazione — se la comunicazione è difficile, le risposte sono evasive, o le promesse sembrano troppo belle — fidati di quell'istinto. Il momento migliore per allontanarti da un cattivo partner di sviluppo è prima di avergli dato i tuoi soldi.