Blog

Il design delle API è UX
Gli endpoint che esponi sono un prodotto. Lo sviluppatore che li chiama è il tuo utente. Una cattiva DX si accumula in modi che una cattiva UI non fa mai.


Lavorare senza un designer
La maggior parte degli sviluppatori solisti cerca di progettare tutto da sola. La mossa migliore è prendere il minor numero possibile di decisioni di design — e lasciare che sia un sistema a fare il resto.


Il naming nell'era dell'AI
I buoni nomi hanno sempre avuto importanza. Con gli strumenti di coding AI, ne hanno di più. Un LLM legge il tuo codice come farebbe un nuovo ingegnere — inferendo l'intento dai nomi, non dal comportamento a runtime.


L'interfaccia è il contratto
Le implementazioni sono economiche da cambiare. Le interfacce no. La riga di codice più costosa che scriverai non è nella logica — è nella firma del tipo.


Gli errori sono dati
L'istinto quando qualcosa va storto è catturare l'errore e andare avanti. È l'istinto sbagliato. Gli errori sono informazioni su quello che il tuo sistema sta davvero facendo — ignorarli è come volare alla cieca.


Il testing è un problema di design
La maggior parte degli sviluppatori pensa di avere un problema con i test. In realtà ha un problema di design. Il codice difficile da testare è un sintomo — e la soluzione raramente riguarda i test.


Il mindset asincrono
La maggior parte dei problemi di performance non riguarda il rendere le cose più veloci — riguarda il fare lavoro al momento sbagliato. Il default sincrono è una trappola cognitiva, e uscirne è soprattutto un cambiamento di prospettiva.


Lo scope è il vero prodotto
Il backlog è un cimitero di buone idee che avrebbero ucciso il prodotto. La competenza più difficile nell'indie dev non è costruire — è decidere cosa non costruire.


Traccia le tue decisioni
Git ti dice cosa è cambiato. Non ti dice perché hai fatto quella scelta. Quel contesto mancante è ciò che trasforma una decisione ragionevole in un mistero sei mesi dopo.


Scrivere prompt è programmare
La maggior parte delle persone tratta il prompting come un'attività a tentativi. È invece una disciplina ingegneristica — con gli stessi cicli di feedback, tecniche di debugging e principi di astrazione di qualsiasi altro codice.


Il costo delle dipendenze
Ogni pacchetto che aggiungi è una scommessa che qualcun altro lo manterrà più a lungo di quanto tu ne abbia bisogno. Vale la pena pensarci prima di eseguire npm install.


Il real-time è più difficile di come appare
Le WebSocket sembrano semplici finché non vai in produzione. WebRTC sembra semplice finché non devi farlo funzionare ovunque. Ecco cosa ho imparato costruendo Clover e Argan.


Come progetto un database
Il design dello schema è la parte più difficile da cambiare in un software. Il modo per farlo bene è partire dalle query, non dalle entità.


Quando riscrivere, quando fare refactoring
La conversazione sulla riscrittura è una delle più cariche emotivamente nell'ingegneria del software. Ecco come capire quale delle due ti serve davvero.


La seconda versione
La prima versione ti fa entrare nella stanza. La seconda è dove inizia il lavoro vero.


Rilasciare in produzione è una competenza
La differenza tra chi finisce i progetti e chi no non è il talento o la motivazione. È un insieme di abitudini che si possono imparare.


Claude Code: com'è davvero usarlo
Ero scettico sugli strumenti di coding basati sull'AI. Dopo mesi di uso regolare, ho un'opinione più onesta di quanto suggerisca l'hype.


La maggior parte dei portfolio da sviluppatore è rotta
Cosa cercano davvero chi assume, e perché quasi tutti i portfolio mancano il punto.


IoT e web: cosa ho imparato lavorando in entrambi i mondi
Lavorare tra hardware e frontend insegna cose che nessuno dei due mondi ti dice da solo.


MongoDB senza Mongoose
Mongoose è la scelta predefinita per MongoDB in Node.js. Ho smesso di usarlo — ecco perché il driver nativo è spesso l'opzione migliore.


Costruire nei margini
Un lavoro a tempo pieno, un master, clienti da gestire e due prodotti in produzione. Ecco come funziona davvero.


Costruire con InvoiceTronic: fatturazione elettronica senza il dolore
Ho costruito un gestionale completo per la mia ditta individuale. La parte più difficile non era la contabilità — era l'SDI. Ecco come InvoiceTronic ha reso tutto gestibile.


Perché Expo ha cambiato il modo in cui sviluppo app mobile
Odiavo lo sviluppo mobile. Expo ha risolto quasi tutto — ecco come.


Barba Studio è online
Dopo mesi di sviluppo nei ritagli di tempo, Barba Studio — un'app di gestione prenotazioni pensata appositamente per i barbershop italiani — è ufficialmente lanciata.


Il mio stack tecnologico: Node.js, React e React Native
Perché ho costruito ogni prodotto che ho mai rilasciato sulle stesse quattro tecnologie — e perché non cambierei nulla.


Next.js App Router: cosa uso davvero dopo un anno
Un'analisi pratica delle funzionalità dell'App Router che si guadagnano il posto — e quelle che ho imparato a evitare.
