Recentemente ho avuto un confronto con un cliente (che chiamerò Marco d’ora in poi per semplicità) non contento della nostra modalità di collaborazione. Ho deciso di scrivere questo articolo per approfondire il tema della discussione.
Sul momento sono rimasto abbastanza spiazzato dalle sue obiezioni, per cui mi rendo conto di non essere stato in grado di replicare in maniera efficace. Ci provo ora.
Scrivo quindi queste righe affinché possano essere d’aiuto ad altri che magari si ritroveranno in questa stessa situazione siano essi committenti o sviluppatori.
Collaborazione in essere
Devi sapere che Marco aveva bisogno di utilizzare le API di diversi servizi online abbastanza di nicchia, per cui non molto conosciuti.
Dopo che mi è stato spiegato ciò di cui aveva bisogno il mio cliente, ho optato per proporre un pacchetto ore per diversi motivi:
- Mi era impossibile stimare un preventivo preciso in quanto non conoscevo il livello di complessità per implementare le API nei sistemi del mio cliente
- I lavori da fare non erano ben definiti, ma si trattava di piccole task da eseguire nel tempo
- Questo per me è un win-win per entrambi in quanto il cliente paga solo le ore effettivamente lavorate
- Scegliendo per forza la strada del preventivo avrei dovuto stimare una cifra molto più alta per potermi tutelare qualora il progetto si fosse rivelato più complesso del previsto
Tema della discussione
Qualche giorno fa mi ha contattato Marco per espormi i suoi dubbi circa la nostra collaborazione.
Mi ha fatto notare che grazie al lavoro commissionatomi ho avuto l’opportunità di imparare cose nuove e che secondo lui non è giusto che io poi vada ad utilizzare il mio know how acquisito per altri clienti.
In altre parole mi stava dicendo che “lui mi ha pagato per imparare”.
Questo, dal mio punto di vista, è il primo errore. Caro Marco, tu non mi hai pagato per imparare, tu mi hai pagato perché ho le competenze di leggermi le documentazioni delle API di cui necessiti, ed applicarle ai tuoi progetti.
Nonostante mi sembri un discorso un po’ strano a me dispiace sempre quando si vengono a creare screzi di questo tipo per cui ho chiesto che soluzione vorrebbe adottare per arginare questo problema.
Parlando, Marco suggeriva due possibili strade:
- Non utilizzare le nuove conoscenze per altri clienti
- Non scalare il tempo dal pacchetto di ore, ogni volta “che imparo” qualcosa di nuovo
Andiamo a vedere nel dettaglio perché nessuna delle due soluzioni proposte possono funzionare:
1. Non utilizzare le nuove conoscenze per altri clienti
Questa ritengo sia la soluzione più inverosimile. Se avessi dovuto applicarla ai miei progetti avrei smesso di lavorare probabilmente dopo due mesi di partita IVA.
Lavorando si imparano sempre cose nuove, si perfezionano le tecniche vecchie e con il tempo si migliora sempre di più. E questo mi permette di offrire un servizio sempre più professionale ai miei clienti grazie all’esperienza acquisita in anni di lavoro.
Faccio alcuni esempi di cosa sarebbe successo applicando questa logica ai miei progetti passati:
- La prima volta che un cliente mi ha chiesto di realizzare un form custom per l’iscrizione alla sua newsletter con Mailchimp mi sono dovuto studiare la loro documentazione API. Non avrei più potuto farlo per altri clienti.
- Dovrei reinventare la ruota ogni volta. Quando si lavora nello sviluppo si riutilizzano molto spesso parti di codice. Se in passato ho scritto qualcosa che so che funziona bene lo prendo e lo riadatto al progetto in corso. Seconda la logica di Marco non sarebbe giusto.
Se sei uno sviluppatore probabilmente starai pensando che queste sono cose ovvie ma, a quanto pare, non sempre lo sono anche per i nostri clienti, motivo per cui sto cercando di mettere nero su bianco il tutto.
Nonostante non si stia parlando di progetti particolarmente complessi, come sviluppo di specifici algoritmi ecc.., vale la pena notare come questa materia venga trattata anche dalla Legge italiana. Vedi questi articoli:
- https://www.diritto.it/diritto-dautore-creatore-software/
- https://www.avvocatoferrante.it/it/tutela-del-software.html
In breve, in assenza di un contratto in cui si cede volontariamente la paternità del codice sorgente al committente, lo sviluppatore ha il diritto di riutilizzare il proprio lavoro per altri progetti.
Sono entrato abbastanza nel dettaglio andando leggermente fuori tema, poiché mi veniva chiesto di non riutilizzare le mio know how e non parti di codice già prodotto.
2. Non scalare il tempo dal pacchetto di ore, ogni volta “che imparo” qualcosa di nuovo
Anche su questo punto di vista credo ci sia parecchio da discutere. Dove finisce “l’imparare” e dove inizia il “lavoro vero e proprio”? Dovrei ringraziare “per l’opportunità di imparare qualcosa di nuovo” che serve al mio cliente?
Secondo questa logica, ogni volta che mi viene chiesto di implementare del codice di cui bisogna leggere e capire la documentazione, non dovrei conteggiare la parte di studio e di test. Questo perché in futuro potrei riutilizzare queste competenze per altri progetti ed altri clienti.
Un ragionamento simile porta a diverse conclusioni:
La prossima volta che mi verrà richiesto l’utilizzo di API o sistemi che non ho mai affrontato prima dovrò necessariamente rifiutare in quanto non ha senso per me lavorare gratis solo perché in un ipotetico futuro potrei avvalermi di quelle competenze.
Quindi quali opzioni restano a disposizione di Marco?
La prima è certamente quella di andare alla ricerca di uno sviluppatore già in possesso di quelle skill specifiche. Tuttavia è molto difficile trovare un professionista che già ha avuto a che fare con particolari nicchie, magari molto piccole e che necessitano di approcci tecnici specifici.
Ha senso invece contrattare un dev che sa come muoversi in qualsiasi circostanza ovviamente nel limite di ciò che pensa di essere capace di fare.
Mettiamo però che si riesca a trovare qualcuno che sa esattamente come fare quella specifica integrazione necessaria a quel cliente. Mettiamo pure che grazie alla sua esperienza e bravura riesca ad eseguire il lavoro in una o massimo due ore.
Il preventivo richiesto sarà forse corrispondente a due ore lavorative? Non penso. Il costo si baserebbe piuttosto sulle effettive competenze, sul valore di ciò che si sta offrendo e non sul mero tempo impiegato per risolvere il problema. Vale quindi la pena ricordare la nota storiella dell’ingegnere e della vite.
Se non te la ricordi te la metto qui di seguito:
Un ingegnere viene chiamato per aggiustare un computer molto grande ed estremamente complesso. Un apparecchio del valore di 12 milioni di Euro. Seduto di fronte allo schermo, concentrato, preme un paio di tasti, annuisce con la testa, mormora qualcosa a se stesso e spegne il computer.
A quel punto estrae un piccolo cacciavite dalla tasca e dà un giro e mezzo ad una minuscola vite. Accende il computer e… tutto funziona perfettamente!
Il presidente dell’azienda è felicissimo e si offre di pagare il conto immediatamente.
“Quanto Le devo?” chiede.
“Sono 1000 Euro, per cortesia” risponde l’ingegnere.
“1000 Euro? Così tanto per così pochi minuti di lavoro? 1000 Euro per stringere una semplicissima vitina? Mi rendo conto che il computer vale 12 milioni di Euro, ma la Sua richiesta mi pare veramente esagerata. Pagherò solamente se mi manderà una fattura dettagliata che giustifichi una cifra del genere.”L’Ingegnere acconsente con un cenno e se ne va. Il mattino dopo il presidente riceve la fattura, la legge con attenzione, sorride e la paga immediatamente, senza una sola lamentela.
La fattura diceva:
Servizi effettuati:
– Girare una vite: EURO 1
– Sapere quale vite girare: EURO 999
Conclusione
Non posso che terminare questo mio articolo assecondando il tuo pensiero: sì, sono banalità che, probabilmente, non meritavano una trattazione. Tuttavia queste vicende sono accadute davvero e credo sia importante comunicarle, facendo chiarezza sulle mie scelte.
Ovviamente sono sempre molto dispiaciuto quando avvengono dei fraintendimenti tra me e i miei clienti. Per quanto questi non siano così frequenti, io cerco comunque di essere sempre trasparente e di offrire il miglior servizio possibile.
Come affermato in precedenza, ritengo che, per un lavoro del genere, una collaborazione a consuntivo sia la soluzione più conveniente per entrambe le parti: il cliente spende meno e io posso lavorare con la consapevolezza che verrò retribuito senza rischiare di rimetterci.
In situazioni del genere, infatti, il rischio di sottostimare il tempo necessario è davvero elevato e, a mia tutela, avrei dovuto preventivare una cifra con margini molto ampi, il che avrebbe portato sicuramente svantaggi economici anche al committente.
Fammi sapere cosa ne pensi nei commenti.
Ecco alcuni altri miei articoli che potresti trovare interessanti:
- Guadagnare online, tutti i modi per lavorare online da casa seriamente
- Come creare un virtual host in locale con MAMP
- Ngrok, come mostrare al cliente il sito in locale sul proprio computer
- Perché ho scelto SiteGround per il mio sito e quelli dei miei clienti
- Come trovare clienti per te che sei un web developer freelance
- 100/100 su Pagespeed Insights con il tuo sito WordPress