<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>TCDEV Blog</title>
  <subtitle>Practical notes on AI, engineering, and developer tooling.</subtitle>
  <link href="https://www.tcdev.de/it/blog/feed.xml" rel="self" type="application/atom+xml" />
  <link href="https://www.tcdev.de/it/blog/" rel="alternate" type="text/html" />
  <id>https://www.tcdev.de/it/blog/</id>
  <updated>2026-04-27T00:00:00Z</updated>
  <author>
    <name>TCDEV Blog</name>
  </author>
  <entry>
    <title>Lasci che il suo LLM pensi in inglese</title>
    <link href="https://www.tcdev.de/it/blog/let-your-llm-think-in-english/" rel="alternate" type="text/html" />
    <id>https://www.tcdev.de/it/blog/let-your-llm-think-in-english/</id>
    <updated>2026-04-27T00:00:00Z</updated>
    <summary>Un RAG e uno strumento di chiamata affidabili necessitano solitamente di una lingua di lavoro stabile. Mantenga l&#39;inglese all&#39;interno del ciclo del modello, quindi localizzi per gli utenti ai margini.</summary>
    <content type="html">&lt;p&gt;Lei invia un chatbot per il suo team tedesco. L&#39;interfaccia utente è tedesca. I documenti di origine sono in parte tedeschi e in parte inglesi. Gli strumenti dietro l&#39;assistente si aspettano valori enum in inglese, descrizioni di funzioni in inglese, nomi di prodotti in inglese, tutto in inglese.&lt;/p&gt;
&lt;p&gt;Poi qualcuno fa una domanda perfettamente normale in tedesco, il modello sceglie lo strumento giusto, passa un argomento in tedesco invece che in inglese e l&#39;intera faccenda va tranquillamente in pezzi.&lt;/p&gt;
&lt;p&gt;Ho visto versioni di questo tipo abbastanza volte da non considerarlo più un problema di traduzione. &lt;strong&gt;Si tratta di un problema di esecuzione.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;La mia impostazione attuale è semplice: lasciare che gli utenti parlino la lingua che desiderano, ma lasciare che l&#39;LLM svolga il suo lavoro di reperimento, ragionamento e strumento in inglese quando l&#39;affidabilità è effettivamente importante. Poi localizzare la risposta al di fuori di questo ciclo.&lt;/p&gt;
&lt;p&gt;All&#39;inizio sembra un po&#39; eretico. Ma è anche, a mio avviso, la cosa più pratica che si possa fare in questo momento.&lt;/p&gt;
&lt;h2&gt;La ricerca sta iniziando a dirlo ad alta voce&lt;/h2&gt;
&lt;p&gt;I numeri non sono più sottili.&lt;/p&gt;
&lt;p&gt;Nel benchmark &lt;a href=&quot;https://aclanthology.org/2025.findings-emnlp.1099/&quot;&gt;MASSIVE-Agents&lt;/a&gt;, i ricercatori hanno valutato la chiamata di funzioni multilingue in 52 lingue, 47.020 campioni e 21 modelli. Il miglior punteggio medio in tutte le lingue è stato solo del 34,05%. L&#39;inglese ha raggiunto il 57,37%. L&#39;amarico è sceso al 6,81%.&lt;/p&gt;
&lt;p&gt;Non si tratta di una piccola oscillazione della qualità. Si tratta di un precipizio di affidabilità.&lt;/p&gt;
&lt;p&gt;Poi c&#39;è [Lost in Execution] (https://arxiv.org/abs/2601.05366), che si avvicina ancora di più al problema dei sistemi reali. L&#39;articolo mostra che molti fallimenti nella chiamata di strumenti multilingue avvengono &lt;strong&gt;dopo che il modello aveva già compreso l&#39;intento e selezionato lo strumento corretto&lt;/strong&gt;. Il problema dominante era la mancata corrispondenza linguistica dei valori dei parametri. In parole povere, il modello sapeva cosa fare, ma esprimeva i bit eseguibili nella lingua dell&#39;utente invece che nella lingua dell&#39;interfaccia, quindi la chiamata falliva comunque.&lt;/p&gt;
&lt;p&gt;E questo non si limita alle chiamate agli strumenti. In &lt;a href=&quot;https://aclanthology.org/2024.naacl-short.46/&quot;&gt;Do Multilingual Language Models Think Better in English?&lt;/a&gt;, Etxaniz e colleghi hanno scoperto che l&#39;auto-traduzione in inglese batteva in modo consistente l&#39;inferenza diretta non inglese in cinque compiti. La loro formulazione è sorprendentemente schietta: i modelli non sono &amp;quot;in grado di sfruttare il loro pieno potenziale multilingue quando vengono sollecitati in lingue diverse dall&#39;inglese&amp;quot;.&lt;/p&gt;
&lt;p&gt;Quindi sì, i modelli multilingue sono impressionanti. Ma se la vostra barra non è &amp;quot;sembra abbastanza buono&amp;quot; e invece è &amp;quot;deve comportarsi correttamente in produzione&amp;quot;, l&#39;inglese sembra ancora la lingua operativa più sicura molto spesso.&lt;/p&gt;
&lt;h2&gt;Perché RAG si rompe sempre nello stesso punto&lt;/h2&gt;
&lt;p&gt;Di solito le persone sentono questo argomento e pensano prima agli agenti. Chiamate di funzioni, output strutturato, esecuzione di API, questo genere di cose.&lt;/p&gt;
&lt;p&gt;RAG ha la stessa debolezza, solo un livello prima.&lt;/p&gt;
&lt;p&gt;Se il suo livello di reperimento deve abbinare il fraseggio locale di un utente a contenuti scritti in lingue miste, con una terminologia incoerente, nomi di prodotti tradotti ed etichette di tassonomia semilocalizzate, si creano più possibilità che il sistema vada alla deriva prima ancora di iniziare la generazione. Onestamente, è da qui che provengono molte delle lamentele &amp;quot;il modello è inaffidabile&amp;quot;. Il modello può andare bene. L&#39;interfaccia dei contenuti non lo è.&lt;/p&gt;
&lt;p&gt;Preferirei normalizzare in anticipo.&lt;/p&gt;
&lt;p&gt;Tradurre la domanda in inglese. Recuperare rispetto a un corpus canonico inglese. Lasciare che il modello ragioni su un livello terminologico stabile. Generare una bozza di risposta in inglese, se necessario. Poi traduce o localizza la risposta finale per l&#39;utente.&lt;/p&gt;
&lt;p&gt;In questo modo si ottiene un luogo in cui la denominazione rimane stabile:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;un titolo di documento canonico&lt;/li&gt;
&lt;li&gt;un vocabolario di prodotto canonico&lt;/li&gt;
&lt;li&gt;uno schema di strumenti canonico&lt;/li&gt;
&lt;li&gt;un insieme canonico di etichette di reperimento&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;È ancora possibile supportare ogni lingua dell&#39;utente all&#39;esterno. Basta smettere di chiedere al percorso di esecuzione principale di essere perfettamente multilingue in ogni fase.&lt;/p&gt;
&lt;h2&gt;Questo non è anti-localizzazione&lt;/h2&gt;
&lt;p&gt;Al contrario.&lt;/p&gt;
&lt;p&gt;Una cattiva architettura AI multilingue di solito danneggia prima gli utenti locali. Ricevono la bella interfaccia localizzata, poi il sistema nascosto anglo-centrico sottostante si comporta in modo incoerente e fa pagare loro il prezzo.&lt;/p&gt;
&lt;p&gt;Una localizzazione corretta significa essere onesti su dove la lingua deve flettersi e dove no.&lt;/p&gt;
&lt;p&gt;Per me, la divisione è la seguente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Localizzare l&#39;interfaccia utente, i suggerimenti, il testo di aiuto, l&#39;onboarding e le risposte finali.&lt;/li&gt;
&lt;li&gt;Localizzare i contenuti di partenza che le persone leggono direttamente quando questi contenuti devono esistere sul mercato.&lt;/li&gt;
&lt;li&gt;Mantenere le definizioni interne degli strumenti, gli identificatori canonici, le etichette di recupero e i perni di ragionamento in inglese, se questo è il livello più stabile.&lt;/li&gt;
&lt;li&gt;Aggiungere una post-elaborazione esplicita o una revisione umana quando un risultato localizzato ha un peso legale, normativo o contrattuale.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Quest&#39;ultimo punto è più importante di quanto i team amino ammettere. Se il modello sta parlando con un essere umano, la localizzazione è una decisione legata all&#39;esperienza dell&#39;utente. Se il modello sta parlando con un altro sistema, la lingua è un contratto di interfaccia.&lt;/p&gt;
&lt;p&gt;Non sono la stessa cosa.&lt;/p&gt;
&lt;h2&gt;L&#39;architettura di cui mi fido di più in questo momento&lt;/h2&gt;
&lt;p&gt;Questa è la versione su cui punterei oggi per i prodotti AI multilingue:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;L&#39;utente chiede nella sua lingua.&lt;/li&gt;
&lt;li&gt;Il sistema traduce o normalizza la richiesta in inglese.&lt;/li&gt;
&lt;li&gt;Il recupero, il ragionamento, la classificazione e le chiamate agli strumenti avvengono rispetto ai dati canonici inglesi.&lt;/li&gt;
&lt;li&gt;La risposta finale viene localizzata nella lingua dell&#39;utente.&lt;/li&gt;
&lt;li&gt;I risultati ad alto rischio ricevono un&#39;ulteriore fase di convalida prima di lasciare il sistema.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Non è filosoficamente puro. È sano dal punto di vista operativo.&lt;/p&gt;
&lt;p&gt;L&#39;aspetto positivo è che la ricerca recente punta nella stessa direzione. &lt;a href=&quot;https://arxiv.org/abs/2601.05366&quot;&gt;Lost in Execution&lt;/a&gt; ha scoperto che la pre-traduzione delle query degli utenti generalmente riduce gli errori di corrispondenza linguistica meglio delle correzioni post-hoc, anche se non recupera completamente le prestazioni a livello inglese. Questo corrisponde a ciò che molti costruttori già sospettano nella pratica. Se si aspetta fino alla fine per pulire l&#39;incoerenza multilingue, di solito è troppo tardi.&lt;/p&gt;
&lt;p&gt;E sì, ci sono delle eccezioni. Se si sta costruendo per lingue a bassa risorsa, per un linguaggio specifico del dominio o per un fraseggio culturalmente dipendente, tradurre tutto in inglese può introdurre una deriva. Il documento di cui sopra mette esplicitamente in guardia su questo aspetto. Quindi non trasformi questo in un dogma.&lt;/p&gt;
&lt;p&gt;Ma come impostazione predefinita per i copiloti aziendali, gli assistenti interni, i RAG multilingue e gli agenti che utilizzano gli strumenti, credo che la regola sia sorprendentemente valida.&lt;/p&gt;
&lt;h2&gt;Cosa significa questo per Rasepi&lt;/h2&gt;
&lt;p&gt;Questo è esattamente il motivo per cui mi interessa tanto la struttura canonica dei contenuti.&lt;/p&gt;
&lt;p&gt;Se la sua base di conoscenza ha un livello sorgente pulito, una terminologia stabile e una localizzazione controllata, l&#39;AI diventa più facile da fidarsi. Se ogni versione linguistica va alla deriva in modo indipendente all&#39;interno del percorso di esecuzione, si chiede al modello di improvvisare laddove il sistema dovrebbe essere preciso.&lt;/p&gt;
&lt;p&gt;L&#39;intero approccio di Rasepi si basa sulla separazione netta di queste preoccupazioni. Mantenere un nucleo canonico. Localizzare deliberatamente. Rintracciare dove esistono le varianti. Non pretenda che ogni livello dello stack sia ugualmente multilingue solo perché lo è l&#39;interfaccia utente.&lt;/p&gt;
&lt;p&gt;Un tempo pensavo che la migliore esperienza AI multilingue significasse &amp;quot;fare tutto nella lingua dell&#39;utente&amp;quot;. Non lo penso più. Non per i sistemi che devono recuperare il paragrafo giusto, scegliere lo strumento giusto e restituire qualcosa di cui ci si può fidare.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;La regola pratica è semplice: gli utenti devono rimanere locali, ma il percorso di esecuzione dell&#39;LLM deve rimanere stabile. Al momento, questo significa di solito l&#39;inglese al centro e la localizzazione ai margini.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Questo cambierà nel tempo. Spero che cambi rapidamente. Ma se sta effettuando una spedizione oggi e l&#39;affidabilità è più importante dell&#39;estetica, lascerei che il modello pensi in inglese e che il suo prodotto parli la lingua dell&#39;utente.&lt;/p&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="ai" />
    <category term="multilingual" />
    <category term="developer-experience" />
    <category term="knowledge-management" />
  </entry>
  <entry>
    <title>Claude Design e l&#39;agenzia creativa individuale</title>
    <link href="https://www.tcdev.de/it/blog/claude-design-the-one-person-creative-agency/" rel="alternate" type="text/html" />
    <id>https://www.tcdev.de/it/blog/claude-design-the-one-person-creative-agency/</id>
    <updated>2026-04-18T00:00:00Z</updated>
    <summary>Anthropic ha appena distribuito strumenti di progettazione, prototipazione e presentazione all&#39;interno di Claude. In combinazione con Code e Cowork, una persona ha ora un&#39;agenzia creativa completa sul proprio laptop.</summary>
    <content type="html">&lt;p&gt;Ieri Anthropic &lt;a href=&quot;https://www.anthropic.com/news/claude-design-anthropic-labs&quot;&gt;ha lanciato Claude Design&lt;/a&gt;, un nuovo prodotto del team Anthropic Labs che consente di creare progetti, prototipi, presentazioni e materiale di marketing parlando con Claude. E mi sono seduto a guardare l&#39;annuncio pensando: ok, ora una persona con un abbonamento a Claude ha davvero la maggior parte di ciò che offre una piccola agenzia creativa. Design. Codice. Automazione. Presentazioni. Coerenza con il marchio. Tutto all&#39;interno dello stesso ecosistema.&lt;/p&gt;
&lt;p&gt;È una frase azzardata da scrivere nel 2026. Ma non credo che sia un&#39;esagerazione.&lt;/p&gt;
&lt;h2&gt;Cosa fa il Claude Design&lt;/h2&gt;
&lt;p&gt;La versione breve: lei descrive ciò di cui ha bisogno e Claude costruisce una prima versione. Poi la perfeziona attraverso la conversazione, i commenti in linea, le modifiche dirette o i cursori personalizzati che Claude genera per lei. Si basa su &lt;a href=&quot;https://www.anthropic.com/news/claude-opus-4-7&quot;&gt;Opus 4.7&lt;/a&gt; ed è sorprendentemente bravo a mantenere la coerenza visiva.&lt;/p&gt;
&lt;p&gt;Ma la caratteristica che ha attirato la mia attenzione è l&#39;onboarding. Durante la configurazione, Claude legge la sua base di codice e i file di progettazione esistenti per costruire un sistema di progettazione per il suo team. Colori, tipografia, componenti. Ogni progetto successivo segue automaticamente il suo marchio. Può importare immagini, documenti (DOCX, PPTX, XLSX) o puntare direttamente alla sua base di codice. C&#39;è uno strumento di acquisizione web che cattura gli elementi dal suo sito web reale, in modo che i prototipi assomiglino al prodotto reale.&lt;/p&gt;
&lt;p&gt;Ha un mockup di Figma su cui vuole iterare? Lo esporti, lo inserisca in Claude Design e inizi una conversazione su cosa cambiare. O semplicemente catturare il suo sito web esistente e dire &amp;quot;rendi la sezione eroe più grande e aggiungi un carosello di testimonianze&amp;quot;. Questo genere di cose.&lt;/p&gt;
&lt;p&gt;Le testimonianze dell&#39;annuncio sono eloquenti. Il Senior Product Designer di Brilliant ha detto che le loro pagine più complesse, che richiedevano &lt;a href=&quot;https://www.anthropic.com/news/claude-design-anthropic-labs&quot;&gt;20+ richieste per essere ricreate in altri strumenti, hanno richiesto solo 2 richieste in Claude Design&lt;/a&gt;. Il Product Manager di Datadog ha descritto il passaggio da un&#39;idea grezza a un prototipo funzionante prima che qualcuno lasci la stanza, e ha detto che ciò che prima richiedeva una settimana di briefing, mockup e revisioni, ora avviene in una sola conversazione.&lt;/p&gt;
&lt;p&gt;Una settimana di tira e molla, racchiusa in un&#39;unica conversazione. Ci pensi per un attimo.&lt;/p&gt;
&lt;h2&gt;Lo stack che cambia tutto&lt;/h2&gt;
&lt;p&gt;Ecco dove il discorso si fa interessante. Il Claude Design non esiste in modo isolato. Anthropic ha ora tre prodotti che, combinati, coprono una quantità assurda di terreno:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Claude Code&lt;/strong&gt;: Scrivere, revisionare e spedire il software vero e proprio. &lt;a href=&quot;https://www.anthropic.com/news/anthropic-raises-30-billion-series-g-funding-380-billion-post-money-valuation&quot;&gt;2,5 miliardi di dollari di entrate correnti&lt;/a&gt; a febbraio, responsabile di circa il 4% di tutti i commit pubblici di GitHub in tutto il mondo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claude Cowork&lt;/strong&gt;: Automatizza il lavoro di conoscenza. Ricerca, analisi, elaborazione di documenti, attività ricorrenti dal suo desktop.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claude Design&lt;/strong&gt;: Crea lavori visivi. Prototipi, presentazioni, materiale di marketing, beni coerenti con il marchio.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;E si passano la mano l&#39;un l&#39;altro. Quando un progetto è pronto per essere costruito, Claude impacchetta tutto in un pacchetto di consegna che può passare a Claude Code con un&#39;unica istruzione. Dal design alla produzione in un unico flusso. Nessun ticket Jira. Nessuna riunione di handoff. Niente &amp;quot;puoi inviarmi le specifiche in Slack&amp;quot;.&lt;/p&gt;
&lt;p&gt;Continuo a pensare alla previsione di Sam Altman dell&#39;inizio del 2024 su &lt;a href=&quot;https://every.to/napkin-math/the-one-person-billion-dollar-company&quot;&gt;l&#39;azienda unipersonale da un miliardo di dollari&lt;/a&gt;. All&#39;epoca sembrava un&#39;aspirazione, forse un po&#39; iperbolica. Gli strumenti non erano ancora disponibili. Si potevano generare testi e immagini, certo, ma il divario tra la generazione di cose e la spedizione di prodotti reali era enorme.&lt;/p&gt;
&lt;p&gt;Questo divario si sta riducendo rapidamente.&lt;/p&gt;
&lt;h2&gt;Cosa avrei dato per questo due mesi fa&lt;/h2&gt;
&lt;p&gt;Quando ho costruito Rasepi, il sito di marketing era una delle parti più noiose. Non il codice. Il codice andava bene, Claude gestisce HTML e CSS come un campione. Ma le decisioni sul design visivo? Il layout degli eroi, le schede delle pagine dei prezzi, le tabelle di confronto delle funzionalità? Ho descritto le cose a parole, Claude ha prodotto qualcosa, e poi ho passato ore a fare avanti e indietro cercando di regolare la spaziatura, i colori, la tipografia. Il tutto tramite messaggi di testo. Nessun ciclo di feedback visivo.&lt;/p&gt;
&lt;p&gt;Con Claude Design, questo flusso di lavoro diventa: &amp;quot;Ecco il mio sito web&amp;quot; (acquisizione web), &amp;quot;ridisegna la sezione dei prezzi per enfatizzare il piano del team&amp;quot; (conversazione), modifica il colore verde dell&#39;accento con un cursore, approvazione, consegna a Claude Code per l&#39;implementazione. Credo che questo mi avrebbe fatto risparmiare un intero fine settimana.&lt;/p&gt;
&lt;p&gt;(Onestamente, sono un po&#39; seccato che non sia stato lanciato due mesi prima).&lt;/p&gt;
&lt;p&gt;E l&#39;esportazione di Canva è intelligente. &lt;a href=&quot;https://backlinko.com/canva-users&quot;&gt;Canva ha 220 milioni di utenti attivi&lt;/a&gt; e 3 miliardi di dollari di fatturato annuo. Anthropic non sta cercando di sostituire Canva. Sta cercando di essere il luogo in cui le idee iniziano prima di approdare a Canva per la rifinitura finale e la distribuzione. Si tratta di un gioco di posizionamento intelligente. Si genera la creatività in Claude Design, poi si esporta in Canva dove il team di marketing la raccoglie. Oppure esporta in PPTX per quel mazzo per gli investitori. Oppure esportare come HTML autonomo per una landing page.&lt;/p&gt;
&lt;h2&gt;Il moltiplicatore &amp;quot;basta aggiungere strumenti&lt;/h2&gt;
&lt;p&gt;Questo è lo schema che continuo a vedere nello spazio AI nel 2026. Il modello di base diventa più intelligente, certo, ma il vero salto di produttività si ottiene collegando gli strumenti tra loro. Claude da solo è un generatore di testo molto intelligente. Claude con Code è un ingegnere software. Claude con Cowork è un analista di ricerca. Claude con Design è un direttore creativo. Claude con tutti e tre? È una piccola agenzia.&lt;/p&gt;
&lt;p&gt;E le connessioni continuano a crescere. Anthropic ha dichiarato che aggiungerà altre integrazioni nelle prossime settimane. I server MCP consentono già di collegare Claude a strumenti e fonti di dati esterni. L&#39;ecosistema si sta costruendo da solo.&lt;/p&gt;
&lt;p&gt;Per i fondatori solitari, i freelance e i piccoli team, questo cambia completamente il calcolo. Non ha bisogno di un designer a pagamento per produrre documenti e prototipi dall&#39;aspetto professionale. Non ha bisogno di uno sviluppatore frontend separato per trasformare i mockup in codice. Non ha bisogno di un project manager per coordinare il passaggio tra design e ingegneria, perché non c&#39;è nessun passaggio. Si tratta di una conversazione continua.&lt;/p&gt;
&lt;p&gt;Non sto dicendo che i designer sono obsoleti. Tutt&#39;altro. Brilliant e Datadog hanno entrambi descritto i loro &lt;em&gt;progettisti&lt;/em&gt; utilizzando Claude Design. Lo strumento rende i bravi designer più veloci e consente a tutti gli altri di accedere a risultati visivi competenti. È una cosa diversa dal sostituire le persone.&lt;/p&gt;
&lt;h2&gt;Cosa significa questo per i prodotti di documentazione&lt;/h2&gt;
&lt;p&gt;Questo aspetto lo osservo da vicino. In Rasepi, stiamo costruendo una piattaforma di documentazione in cui la qualità visiva è importante. Le pagine di ingresso devono essere belle. Le guide rapide devono avere diagrammi chiari. I documenti di marketing devono essere coerenti con il marchio tra le varie lingue e i vari team.&lt;/p&gt;
&lt;p&gt;Un mondo in cui ogni membro del team può generare una documentazione visiva in linea con il marchio, consegnarla al motore di traduzione e distribuirla in sette lingue senza toccare Figma, Photoshop o InDesign? Questo è esattamente il problema che stiamo risolvendo da un&#39;altra angolazione. (E sì, questo è esattamente il tipo di flusso di lavoro che Rasepi è costruito per supportare).&lt;/p&gt;
&lt;h2&gt;La parte in cui diventa stranamente costosa&lt;/h2&gt;
&lt;p&gt;Ecco la cosa di cui nessuno parla ancora. Ho creato un nuovo account Anthropic appositamente per provare Claude Design. Account nuovo, nessuna storia, nessun utilizzo precedente. Ho importato un piccolo file Figma e ho generato una singola risorsa. Tutto qui. Due operazioni. E ho finito i crediti.&lt;/p&gt;
&lt;p&gt;Su un conto nuovo di zecca. Con una nuova allocazione.&lt;/p&gt;
&lt;p&gt;Non so come sia il calcolo dei token da parte di Anthropic quando Opus 4.7 si occupa della generazione visiva, ma qualunque cosa sia, brucia i crediti a un ritmo che fa sembrare il lancio di &amp;quot;agenzia creativa per una sola persona&amp;quot; molto più costoso del previsto. Se l&#39;importazione di un piccolo mockup Figma e la produzione di un&#39;immagine consumano l&#39;intero budget, l&#39;economia dell&#39;utilizzo di questo strumento di design quotidiano non funziona ancora.&lt;/p&gt;
&lt;p&gt;Per essere onesti, questa è un&#39;anteprima di ricerca e i prezzi probabilmente cambieranno. Ma al momento c&#39;è un divario significativo tra la promessa (sostituire il suo flusso di lavoro di progettazione) e la realtà (potrebbe esaurire i crediti prima di pranzo). I guadagni di produttività sono reali. Se il rapporto crediti per output lo renda pratico per un uso regolare è una questione completamente diversa.&lt;/p&gt;
&lt;h2&gt;L&#39;avvertimento onesto&lt;/h2&gt;
&lt;p&gt;Claude Design è in anteprima di ricerca. Avrà degli spigoli vivi. Le testimonianze provengono da team di progettazione di aziende ben finanziate con sistemi di progettazione consolidati. Il suo chilometraggio varierà, soprattutto se sta iniziando da zero, senza linee guida del marchio che lo alimentino.&lt;/p&gt;
&lt;p&gt;Ma la traiettoria è chiara. Diciotto mesi fa erano necessari un designer, uno sviluppatore e un project manager per passare dall&#39;idea alla pagina di destinazione spedita. Oggi una sola persona con un abbonamento a Claude può realizzare una versione sorprendentemente credibile dello stesso flusso di lavoro in un pomeriggio.&lt;/p&gt;
&lt;p&gt;Non siamo ancora alla società miliardaria composta da una sola persona. Ma l&#39;agenzia creativa composta da una sola persona? Penso che siamo appena arrivati.&lt;/p&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="ai" />
    <category term="developer-experience" />
    <category term="collaboration" />
  </entry>
  <entry>
    <title>Una chiave API, molti inquilini: Come isoliamo le traduzioni di DeepL tra i vari clienti</title>
    <link href="https://www.tcdev.de/it/blog/one-api-key-many-tenants-deepl-isolation/" rel="alternate" type="text/html" />
    <id>https://www.tcdev.de/it/blog/one-api-key-many-tenants-deepl-isolation/</id>
    <updated>2026-04-18T00:00:00Z</updated>
    <summary>Rasepi utilizza un&#39;unica chiave API DeepL per tutti gli affittuari. Ecco come gestiamo i glossari per cliente, le regole di stile, le traduzioni in cache e l&#39;isolamento a livello di blocco senza che nulla trapeli.</summary>
    <content type="html">&lt;p&gt;C&#39;è una domanda che sorge ogni volta che spiego l&#39;architettura di traduzione di Rasepi ad un altro sviluppatore: &amp;quot;Aspetti, quindi tutti i suoi inquilini condividono una chiave API DeepL? Come fa a evitare che i loro glossari e le loro regole di stile si influenzino a vicenda?&amp;quot;.&lt;/p&gt;
&lt;p&gt;È una domanda giusta. E la risposta comporta più lavoro di progettazione di quanto ci si aspetti.&lt;/p&gt;
&lt;p&gt;Abbiamo trattato la &lt;a href=&quot;https://www.tcdev.de/it/blog/inside-the-translation-engine-glossaries-style-rules-and-smart-retranslation/&quot;&gt;pipeline di traduzione completa&lt;/a&gt; in un post precedente, l&#39;hashing a livello di blocco, l&#39;orchestratore, l&#39;intero flusso dal salvataggio del documento all&#39;output tradotto. Questo post si concentra sul problema specifico della multi-tenancy. Come prendere un&#39;API di terze parti che non ha un concetto di locatari e costruirci sopra l&#39;isolamento dei locatari.&lt;/p&gt;
&lt;h2&gt;Il problema: DeepL non conosce i suoi clienti&lt;/h2&gt;
&lt;p&gt;L&#39;API di DeepL si autentica con una singola chiave API. Tutto ciò che viene creato con quella chiave, glossari, elenchi di regole di stile, cronologia delle traduzioni, appartiene allo stesso account. Non esiste il concetto di &amp;quot;questo glossario appartiene all&#39;inquilino A&amp;quot; da parte di DeepL.&lt;/p&gt;
&lt;p&gt;Quando chiama &lt;code&gt;GET /v2/glossaries&lt;/code&gt;, ottiene &lt;em&gt;tutti&lt;/em&gt; i glossari di &lt;em&gt;tutti&lt;/em&gt; gli inquilini. Quando crea un elenco di regole di stile, questo vive nello stesso spazio dei nomi delle regole di stile di ogni altro inquilino. L&#39;API è piatta.&lt;/p&gt;
&lt;p&gt;Per un prodotto self-hosted in cui ogni cliente gestisce la propria istanza con la propria chiave DeepL, questo va bene. Per un SaaS multi-tenant in cui gestiamo l&#39;infrastruttura? È necessario un livello di isolamento.&lt;/p&gt;
&lt;h2&gt;Il database è la fonte della verità&lt;/h2&gt;
&lt;p&gt;La nostra decisione progettuale principale: &lt;strong&gt;il database possiede tutti i contenuti del glossario e la configurazione delle regole di stile. DeepL è un obiettivo di esecuzione in fase di runtime, niente di più.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ogni entità &lt;code&gt;TenantGlossary&lt;/code&gt; e &lt;code&gt;TenantStyleRuleList&lt;/code&gt; implementa &lt;code&gt;ITenantScoped&lt;/code&gt;, il che significa che i filtri delle query globali di EF Core estendono automaticamente tutte le letture al tenant corrente. Una query per i glossari nel contesto di richiesta del tenant A non restituirà mai le voci del tenant B. Questo è lo stesso modello di isolamento che utilizziamo ovunque in Rasepi, applicato a livello di ORM.&lt;/p&gt;
&lt;p&gt;Ecco cosa rende questo interessante. Quando un inquilino modifica un termine del glossario, non chiamiamo immediatamente DeepL. Aggiorniamo la riga del database e impostiamo &lt;code&gt;IsDirty = true&lt;/code&gt;. Questo è tutto. Il glossario effettivo DeepL viene creato (o ricreato) pigramente, proprio prima che la traduzione successiva ne abbia bisogno.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public async Task&amp;lt;string?&amp;gt; GetOrSyncDeepLGlossaryIdAsync(
    string sourceLanguage, string targetLanguage)
{
    var glossary = await _db.TenantGlossaries
        .Include(g =&amp;gt; g.Entries)
        .FirstOrDefaultAsync(g =&amp;gt;
            g.SourceLanguage == sourceLanguage &amp;amp;&amp;amp;
            g.TargetLanguage == targetLanguage);

    if (glossary?.Entries.Count == 0) return null;

    if (!glossary.IsDirty &amp;amp;&amp;amp; glossary.DeepLGlossaryId is not null)
        return glossary.DeepLGlossaryId;

    // Dirty: delete old, create new
    if (glossary.DeepLGlossaryId is not null)
        await _deepL.DeleteGlossaryAsync(glossary.DeepLGlossaryId);

    var entries = glossary.Entries
        .ToDictionary(e =&amp;gt; e.SourceTerm, e =&amp;gt; e.TargetTerm);

    var created = await _deepL.CreateGlossaryAsync(
        $&amp;quot;rasepi-{glossary.Id}&amp;quot;,
        glossary.SourceLanguage,
        glossary.TargetLanguage,
        entries);

    glossary.DeepLGlossaryId = created.GlossaryId;
    glossary.IsDirty = false;
    glossary.LastSyncedAt = DateTime.UtcNow;
    await _db.SaveChangesAsync();

    return glossary.DeepLGlossaryId;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il filtro di query su &lt;code&gt;TenantGlossaries&lt;/code&gt; fa l&#39;isolamento. Il flag &lt;code&gt;IsDirty&lt;/code&gt; fa la sincronizzazione pigra. E la convenzione di denominazione (&lt;code&gt;rasepi-{glossary.Id}&lt;/code&gt;) serve solo per il debug nella dashboard DeepL, non ha alcuno scopo funzionale.&lt;/p&gt;
&lt;p&gt;Perché pigro? Perché &lt;a href=&quot;https://developers.deepl.com/docs/api-reference/glossaries&quot;&gt;i glossari di DeepL v2 sono immutabili&lt;/a&gt;. Non è possibile modificarli. Qualsiasi modifica significa cancellare e ricreare. Se un team importa un CSV con 200 termini e poi corregge un refuso in una voce, non vogliamo cancellare e ricreare il glossario DeepL due volte. Basta impostare &lt;code&gt;IsDirty&lt;/code&gt; in entrambe le occasioni e la singola ricreazione avviene quando viene eseguita la traduzione successiva.&lt;/p&gt;
&lt;h2&gt;Regole di stile: stesso modello, API diversa&lt;/h2&gt;
&lt;p&gt;Le regole di stile di &lt;a href=&quot;https://developers.deepl.com/docs/api-reference/translate/openapi-spec-for-text-translation&quot;&gt;DeepL&lt;/a&gt; sono più recenti (API v3) e sono effettivamente mutabili, il che è più bello. Può aggiornare le regole configurate in loco con &lt;code&gt;PUT /v3/style_rules/{style_id}/configured_rules&lt;/code&gt;, e le istruzioni personalizzate possono essere aggiunte o rimosse individualmente.&lt;/p&gt;
&lt;p&gt;Tuttavia, utilizziamo ancora lo stesso schema &lt;code&gt;IsDirty&lt;/code&gt;. Un &lt;code&gt;TenantStyleRuleList&lt;/code&gt; ha un &lt;code&gt;DeepLStyleId&lt;/code&gt; che corrisponde all&#39;identificatore di runtime di DeepL, più &lt;code&gt;ConfiguredRulesJson&lt;/code&gt; per le regole di formattazione e una collezione di voci &lt;code&gt;TenantCustomInstruction&lt;/code&gt; per le direttive di traduzione a testo libero.&lt;/p&gt;
&lt;p&gt;La vera potenza è in queste istruzioni personalizzate. Ognuna di esse è una direttiva in linguaggio semplice, fino a 300 caratteri, che modella il modo in cui DeepL traduce. Esempi reali dai nostri inquilini:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&amp;quot;Utilizzi sempre la forma &#39;Sie&#39;, mai &#39;du&#39;&amp;quot;&lt;/em&gt; per uno studio legale tedesco.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&amp;quot;Traduca &#39;deployment&#39; come &#39;Bereitstellung&#39;, mai &#39;Deployment&#39;&amp;quot;&lt;/em&gt; per termini dipendenti dal contesto che vanno oltre le semplici mappature del glossario.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&amp;quot;Utilizzi l&#39;ortografia inglese britannica (colore, organizzazione, licenza)&amp;quot;&lt;/em&gt; per un&#39;azienda del Regno Unito che traduce tra le varianti inglesi&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&amp;quot;Metta i simboli di valuta dopo l&#39;importo numerico&amp;quot;&lt;/em&gt; per le convenzioni europee&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ogni locatario può avere istruzioni completamente diverse per ogni lingua di destinazione, tutte dietro la stessa chiave API. L&#39;isolamento deriva dal fatto che ogni chiamata di traduzione include solo i &lt;code&gt;glossary_id&lt;/code&gt; e &lt;code&gt;style_id&lt;/code&gt; appartenenti al tenant richiedente. Le risorse DeepL di altri tenant non vengono mai citate.&lt;/p&gt;
&lt;h2&gt;La chiamata di traduzione: tutto si compone&lt;/h2&gt;
&lt;p&gt;Quando l&#39;orchestratore traduce un blocco, assembla tutte le impostazioni specifiche del tenant in un&#39;unica richiesta:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;var glossaryId = await _glossaryService
    .GetOrSyncDeepLGlossaryIdAsync(sourceLang, targetLang);
var styleId = await _styleRuleService
    .GetOrSyncStyleIdAsync(targetLang);
var formality = langConfig.Formality ?? &amp;quot;default&amp;quot;;

var options = new TranslationOptions
{
    GlossaryId = glossaryId,
    StyleId = styleId,
    Formality = formality,
    Context = documentContext,
    ModelType = styleId != null ? &amp;quot;quality_optimized&amp;quot; : null
};
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Tutti i parametri qui sono in base all&#39;inquilino. Il &lt;code&gt;glossaryId&lt;/code&gt; è stato risolto attraverso una query filtrata dall&#39;inquilino. Il &lt;code&gt;styleId&lt;/code&gt; è stato risolto allo stesso modo. Il &lt;code&gt;formality&lt;/code&gt; proviene da &lt;code&gt;TenantLanguageConfig&lt;/code&gt;, anch&#39;esso in base al tenant-scoped. Anche il &lt;code&gt;context&lt;/code&gt; (paragrafi circostanti inviati per migliorare la qualità della traduzione, non fatturati) proviene dal documento del locatario.&lt;/p&gt;
&lt;p&gt;Una cosa che voglio sottolineare: quando &lt;code&gt;style_id&lt;/code&gt; è impostato, DeepL utilizza automaticamente il loro modello &lt;code&gt;quality_optimized&lt;/code&gt;. Non è possibile combinare le regole di stile con &lt;code&gt;latency_optimized&lt;/code&gt;. Si tratta di un vincolo di DeepL, ma onestamente ragionevole. Se sta investendo in regole di stile personalizzate, probabilmente vuole un risultato della migliore qualità.&lt;/p&gt;
&lt;h2&gt;Caching a livello di blocco: il database come memoria di traduzione&lt;/h2&gt;
&lt;p&gt;Non chiamiamo DeepL per i blocchi che non sono stati modificati. Il meccanismo di caching è la tabella &lt;code&gt;TranslationBlock&lt;/code&gt; stessa.&lt;/p&gt;
&lt;p&gt;Ogni &lt;code&gt;EntryBlock&lt;/code&gt; sorgente ha un &lt;code&gt;ContentHash&lt;/code&gt;, una SHA256 del suo contenuto semantico (con attributi di metadati come &lt;code&gt;blockId&lt;/code&gt; e &lt;code&gt;deleted&lt;/code&gt; eliminati). Ogni &lt;code&gt;TranslationBlock&lt;/code&gt; memorizza il &lt;code&gt;SourceContentHash&lt;/code&gt; corrente al momento della traduzione. Quando il blocco sorgente cambia, cambia anche il suo hash. L&#39;orchestratore confronta gli hash e accoda solo i blocchi che non corrispondono.&lt;/p&gt;
&lt;p&gt;L&#39;albero decisionale per ogni blocco si presenta come segue:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Corrispondenza hash, traduzione esistente&lt;/strong&gt; = salta (memorizzato nella cache, aggiornato)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hash cambiato, traduzione automatica, non bloccato&lt;/strong&gt; = ritraduce automaticamente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hash modificato, modificato dall&#39;uomo o bloccato&lt;/strong&gt; = contrassegnare come Stale, non sovrascrivere&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Il terzo caso è fondamentale. Se il suo traduttore tedesco rifinisce manualmente un paragrafo, non lo sovrascriviamo solo perché la fonte inglese è cambiata. Lo contrassegniamo come stantio, in modo che sappiano che deve essere rivisto, ma il testo tradotto rimane intatto.&lt;/p&gt;
&lt;p&gt;Il risultato pratico: la modifica di un paragrafo in un documento di 30 paragrafi attiva esattamente una chiamata API DeepL (beh, un lotto che include un blocco). Gli altri 29 paragrafi, in tutte le lingue, sono già memorizzati nella cache e non costano nulla.&lt;/p&gt;
&lt;h2&gt;Perché non utilizzare una chiave separata per ogni inquilino?&lt;/h2&gt;
&lt;p&gt;Ci ho pensato seriamente. Dare a ciascun inquilino la propria chiave API DeepL, eliminando completamente il problema dell&#39;isolamento.&lt;/p&gt;
&lt;p&gt;Tre motivi per non farlo:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;**Ogni inquilino avrebbe avuto bisogno di un proprio abbonamento a DeepL o di un modo per fornire sub-account. DeepL non offre la gestione delle chiavi multi-tenant in modo nativo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Efficienza dei costi.&lt;/strong&gt; L&#39;infrastruttura condivisa significa limiti tariffari e sconti sul volume condivisi. Il nostro utilizzo aggregato consente di ottenere prezzi migliori.&lt;/li&gt;
&lt;li&gt;**Una sola chiave da ruotare, una sola quota da monitorare, una sola integrazione da mantenere.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Il compromesso è che abbiamo bisogno del livello di isolamento che ho descritto. Ma dato che abbiamo già delle query EF Core con scala per inquilino per tutto il resto del sistema, l&#39;aggiunta ai glossari e alle regole di stile è stata semplice. Il modello era già presente.&lt;/p&gt;
&lt;h2&gt;Cosa protegge effettivamente&lt;/h2&gt;
&lt;p&gt;Per riassumere le garanzie di isolamento:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Le voci del glossario** sono memorizzate in &lt;code&gt;TenantGlossary&lt;/code&gt; (implementa &lt;code&gt;ITenantScoped&lt;/code&gt;), filtrate dai filtri di query globali di EF Core. DeepL Gli ID del glossario sono riferimenti opachi che vengono risolti solo nel contesto dell&#39;inquilino.&lt;/li&gt;
&lt;li&gt;Le &lt;strong&gt;regole di stile e le istruzioni personalizzate&lt;/strong&gt; seguono lo stesso schema attraverso &lt;code&gt;TenantStyleRuleList&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Il &lt;strong&gt;contenuto tradotto&lt;/strong&gt; risiede in &lt;code&gt;TranslationBlock&lt;/code&gt;, con uno scope attraverso la catena del suo genitore &lt;code&gt;Entry&lt;/code&gt; → &lt;code&gt;Hub&lt;/code&gt;, anch&#39;esso con uno scope da inquilino.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La guardia &lt;code&gt;SaveChanges&lt;/code&gt;&lt;/strong&gt; imposta &lt;code&gt;TenantId&lt;/code&gt; automaticamente sulle nuove entità e lancia le scritture cross-tenant.&lt;/li&gt;
&lt;li&gt;Nessun &lt;code&gt;IgnoreQueryFilters()&lt;/code&gt;** nel codice di produzione. Mai.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Il principio di progettazione è semplice: DeepL vede gli ID delle risorse. Rasepi vede le entità con scala di inquilino. La mappatura tra loro non attraversa mai i confini degli inquilini, perché la query che risolve la mappatura è fisicamente incapace di restituire i dati di un altro inquilino.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Se sta costruendo un SaaS multi-tenant che si integra con API di terze parti senza supporto nativo del tenant, questo modello funziona bene. Tratta l&#39;API esterna come un motore di esecuzione stateless, conserva tutta la configurazione nel suo database con scala tenant, sincronizza in modo pigro e non si affida mai agli elenchi di risorse esterne per l&#39;isolamento.&lt;/p&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="architecture" />
    <category term="translations" />
    <category term="multilingual" />
  </entry>
  <entry>
    <title>I gettoni bruciati sono le nuove linee di codice</title>
    <link href="https://www.tcdev.de/it/blog/tokens-burned-is-the-new-lines-of-code/" rel="alternate" type="text/html" />
    <id>https://www.tcdev.de/it/blog/tokens-burned-is-the-new-lines-of-code/</id>
    <updated>2026-04-13T00:00:00Z</updated>
    <summary>Misurare l&#39;adozione dell&#39;AI in base alla spesa in token è lo stesso errore che abbiamo commesso con le linee di codice negli anni &#39;90. Lo stesso difetto, con un nuovo dashboard e un nuovo modello. Stesso difetto, nuovo cruscotto, posta in gioco molto più alta.</summary>
    <content type="html">&lt;p&gt;Il mio feed di LinkedIn ne è pieno da settimane. Anche la mia timeline X. Persone che pubblicano schermate di spesa di token come se fossero relazioni sui progressi. Fondatori di startup che si vantano di aver speso 16.000 dollari in Claude Code il mese scorso e di puntare a 60.000 dollari il prossimo. Classifiche. Classifiche. Titoli come &amp;quot;Token Legend&amp;quot; e &amp;quot;AI God&amp;quot;.&lt;/p&gt;
&lt;p&gt;E poi, la scorsa settimana, ha raggiunto la massa critica. Forbes &lt;a href=&quot;https://www.forbes.com/sites/richardnieva/2026/03/31/the-ai-gods-spending-as-much-as-they-can-on-ai-tokens/&quot;&gt;ha riferito del movimento &amp;quot;tokenmaxxing&amp;quot;&lt;/a&gt; che sta travolgendo la Silicon Valley, dove le aziende competono per vedere chi brucia più token AI. Jensen Huang ha partecipato al podcast All-In e ha detto: &lt;em&gt;&amp;quot;Quell&#39;ingegnere da 500.000 dollari, alla fine dell&#39;anno, gli chiederò: &amp;quot;Quanto hai speso in token?&amp;quot;. Se quella persona mi risponde &#39;5.000 dollari&#39;, io mi sclerotizzo. Se quell&#39;ingegnere da 500.000 dollari non ha consumato almeno 250.000 dollari di token, mi allarmerò profondamente&amp;quot;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Poi &lt;a href=&quot;https://fortune.com/2026/04/09/meta-killed-employee-ai-token-dashboard/&quot;&gt;Fortune ha riportato&lt;/a&gt; che un dipendente di Meta ha costruito una classifica interna chiamata &amp;quot;Claudeonomics&amp;quot;, che tiene traccia del consumo di token da parte degli oltre 85.000 dipendenti dell&#39;azienda. I migliori utenti ricevevano dei titoli. In un periodo di 30 giorni, l&#39;utilizzo totale ha raggiunto i 60.000 miliardi di token. Il singolo utente migliore ha avuto una media di 281 miliardi. Mark Zuckerberg non è nemmeno entrato nella top 250. Il CTO di Meta Andrew Bosworth, nel frattempo, ha dichiarato pubblicamente che il suo miglior ingegnere spendeva l&#39;equivalente del suo stipendio in token, ma era &amp;quot;da 5 a 10 volte più produttivo&amp;quot;. &amp;quot;È come se fossero soldi facili&amp;quot;, ha detto Bosworth. &amp;quot;Senza limiti&amp;quot;.&lt;/p&gt;
&lt;p&gt;Lavoro nel software da abbastanza tempo per capire cosa sta succedendo. Si tratta di &amp;quot;linee di codice&amp;quot; con un prezzo molto più alto.&lt;/p&gt;
&lt;h2&gt;Ci siamo già passati&lt;/h2&gt;
&lt;p&gt;Nel 2003, Martin Fowler ha scritto &lt;a href=&quot;https://martinfowler.com/bliki/CannotMeasureProductivity.html&quot;&gt;un breve articolo sul perché la produttività del software non può essere misurata&lt;/a&gt; che probabilmente dovrebbe essere una lettura obbligatoria per ogni dirigente tecnico. La sua argomentazione sulle linee di codice era precisa:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;Una delle mie maggiori irritazioni sono gli studi sulla produttività basati sulle linee di codice. Ogni buon sviluppatore sa che può codificare le stesse cose con enormi variazioni di linee di codice&amp;quot;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Il problema è evidente quando lo si dice ad alta voce. La LOC misura l&#39;attività, non la produzione. Due sviluppatori possono costruire la stessa funzione: uno scrive 1.200 righe, l&#39;altro ne scrive 80. Il più conciso probabilmente ha costruito una funzione migliore. Quello più conciso probabilmente costruisce un sistema migliore. In un regime di LOC, il verboso sembra più produttivo.&lt;/p&gt;
&lt;p&gt;I team valutati in base al LOC hanno risposto in modo razionale. Hanno scritto più righe. Hanno fatto copia-incolla invece di astrarre. Hanno evitato il refactoring, perché l&#39;eliminazione del codice avrebbe danneggiato i loro numeri. La metrica ha modellato il comportamento, ma non verso un software migliore. Più codice. Sistemi peggiori.&lt;/p&gt;
&lt;p&gt;Poi, nel 2023, McKinsey pubblicò un articolo in cui sosteneva di aver decifrato la misurazione oggettiva della produttività degli sviluppatori. &lt;a href=&quot;https://newsletter.pragmaticengineer.com/p/measuring-developer-productivity&quot;&gt;La risposta approfondita di Gergely Orosz e Kent Beck&lt;/a&gt; ha evidenziato lo stesso difetto: quasi tutte le metriche di McKinsey misuravano lo sforzo e la produzione, non i risultati. Kent Beck ha raccontato di aver visto i sondaggi interni di Facebook sul sentiment degli sviluppatori trasformarsi da un feedback utile a una negoziazione dei manager con gli ingegneri per ottenere punteggi più alti. Ecco cosa succede quando si incentiva una metrica proxy. Il numero migliora. La cosa di cui ci si preoccupa veramente non migliora.&lt;/p&gt;
&lt;p&gt;Si potrebbe pensare che abbiamo imparato. Non è così.&lt;/p&gt;
&lt;h2&gt;Stesso errore, unità diversa&lt;/h2&gt;
&lt;p&gt;La logica seducente del tokenmaxxing funziona così. Consumo di gettoni = utilizzo dell&#39;AI. Più utilizzo dell&#39;AI = i team utilizzano l&#39;AI. Pertanto, un&#39;elevata spesa di token = un&#39;elevata adozione dell&#39;IA = buona.&lt;/p&gt;
&lt;p&gt;Si tratta di una logica errata come quella di misurare le linee di codice, ma con un cruscotto di fatturazione invece di un grafico di commit. E per essere corretti nei confronti dell&#39;articolo di Forbes, il CEO di Sendbird, John Kim, ha detto esattamente questo: &amp;quot;Abbiamo già visto questo film&amp;quot;. Si riferiva alla cultura LOC degli anni &#39;90 e 2000. Il vero indicatore, ha osservato, è la quantità di codice generato dall&#39;AI che entra effettivamente in produzione. La spesa per i gettoni &amp;quot;è più che altro un argomento di conversazione&amp;quot;. Sono d&#39;accordo. Diventa un problema quando l&#39;argomento di conversazione viene promosso a KPI principale.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.blog/news-insights/research/survey-ai-wave-grows/&quot;&gt;Il sondaggio sugli sviluppatori 2024 di GitHub&lt;/a&gt; ha rilevato che il 97% degli sviluppatori aziendali ha utilizzato strumenti di codifica AI sul lavoro in qualche momento. Un&#39;adozione organizzativa significativa, tuttavia, richiede politiche chiare, flussi di lavoro e risultati misurabili legati ai risultati aziendali effettivi. Non solo utilizzo. Non solo consumo.&lt;/p&gt;
&lt;p&gt;Boris Cherny, l&#39;ingegnere che sta dietro a Claude Code, ha &lt;a href=&quot;https://x.com/bcherny/status/2004626064187031831&quot;&gt;condiviso pubblicamente&lt;/a&gt; che non ha aperto alcun IDE durante un mese di lavoro, con Opus 4.5 che ha scritto circa 200 PR. È impressionante. Ma ciò che lo rende impressionante non sono i token che quei 200 PR hanno consumato. È che si trattava di 200 contributi reali uniti con un software funzionante all&#39;altro capo.&lt;/p&gt;
&lt;p&gt;Il valore è nel risultato. I gettoni sono l&#39;energia che ha portato al risultato, niente di più.&lt;/p&gt;
&lt;h2&gt;Quando la metrica diventa l&#39;obiettivo&lt;/h2&gt;
&lt;p&gt;Esiste un principio chiamato Legge di Goodhart: quando una misura diventa un obiettivo, cessa di essere una buona misura. La storia dello sviluppo del software è praticamente un museo della Legge di Goodhart in azione.&lt;/p&gt;
&lt;p&gt;Il monitoraggio dei token come KPI per l&#39;adozione dell&#39;AI crea la stessa dinamica. I team di ingegneri misurati sul consumo di token consumeranno più token. È così che funzionano gli incentivi. Vuole sembrare più produttivo? Esegua qualche ciclo agenziale in più. Lasci che il modello ragioni a lungo prima di generare l&#39;output. Avvolgere ogni attività in un livello di orchestrazione che richiama quattro strumenti dove ne basterebbe uno. La spesa in gettoni aumenta. Il valore fornito non aumenta.&lt;/p&gt;
&lt;p&gt;In realtà, la storia di Claudeonomics lo ha dimostrato quasi subito. Fortune ha notato che &amp;quot;alcuni dipendenti hanno messo gli agenti AI al lavoro per ore per massimizzare l&#39;utilizzo dei token&amp;quot;. Eccola qui. La Legge di Goodhart in esecuzione in tempo reale, all&#39;interno di un&#39;azienda che dovrebbe essere alla frontiera della produttività guidata dall&#39;AI. La classifica era attiva da qualche settimana prima di essere chiusa, e i dipendenti la stavano già sfruttando eseguendo agenti in loop. La metrica era vecchia di tre settimane e aveva già smesso di misurare ciò che doveva misurare.&lt;/p&gt;
&lt;p&gt;Ogni sviluppatore che legge questo articolo può probabilmente pensare a cinque modi per gonfiare le metriche di utilizzo dei token senza alcun beneficio per nessuno. Non li elencherò. Ma se a me ne vengono in mente cinque, possono farlo anche gli ingegneri che vengono misurati in questo caso.&lt;/p&gt;
&lt;p&gt;Andrej Karpathy ha descritto &lt;a href=&quot;https://x.com/karpathy/status/2004607146781278521&quot;&gt;il momento attuale dell&#39;ingegneria del software&lt;/a&gt; come un &amp;quot;terremoto di magnitudo 9&amp;quot; per la professione. Ha ragione. Ma i terremoti non si misurano in base all&#39;elettricità consumata. Si misurano in base a ciò che si è mosso.&lt;/p&gt;
&lt;h2&gt;La versione della documentazione di questo problema&lt;/h2&gt;
&lt;p&gt;Questo non è un problema solo per i team di ingegneri. Vedo la stessa dinamica nella gestione della conoscenza, che è molto più vicina a noi di Rasepi.&lt;/p&gt;
&lt;p&gt;&amp;quot;Abbiamo pubblicato 400 documenti in questo trimestre&amp;quot; è un numero che suona bene in una presentazione. Non ha nulla a che vedere con l&#39;accuratezza di quei documenti, con il fatto che qualcuno li abbia letti o che le informazioni in essi contenute siano ancora vere sei mesi dopo. È possibile ottenere quel numero con l&#39;AI e senza alcun pensiero. Rumore assistito da token pubblicato su scala.&lt;/p&gt;
&lt;p&gt;La metrica onesta è più difficile da raccogliere, ma molto più utile: quale percentuale della sua base di conoscenza riflette effettivamente il funzionamento dei suoi sistemi oggi? Quante persone hanno raggiunto una risposta corretta utilizzando la sua documentazione? Quanti ci hanno provato, hanno fallito e hanno finito per chiedere a qualcuno su Slack?&lt;/p&gt;
&lt;p&gt;Queste domande non hanno ancora dei bei dashboard. Richiedono una riflessione concreta su ciò che vuole che la documentazione faccia per la sua organizzazione. (Non a caso, questo è esattamente il problema su cui si basa Rasepi. Le date di scadenza forzate esistono proprio perché i team debbano valutare se i contenuti sono ancora validi, piuttosto che lasciarli decadere silenziosamente dietro una metrica di numero di pagine elevato).&lt;/p&gt;
&lt;h2&gt;Cosa monitorare invece&lt;/h2&gt;
&lt;p&gt;La risposta onesta alla domanda &amp;quot;il nostro investimento nell&#39;AI sta dando i suoi frutti?&amp;quot; non può essere letta da un cruscotto di fatturazione.&lt;/p&gt;
&lt;p&gt;Si può approssimare con domande migliori: i tempi di ciclo stanno migliorando? Il rapporto tra le funzionalità consegnate e i bug segnalati è in tendenza nella giusta direzione? Gli ingegneri riferiscono di dedicare più tempo al lavoro di valutazione e meno alla digitazione? La sua documentazione rimane attuale invece di accumularsi come un sedimento?&lt;/p&gt;
&lt;p&gt;Questi dati sono più difficili da ricavare da un&#39;API. Richiedono di pensare a quali risultati vuole effettivamente dai suoi team, il che, è vero, è il lavoro più difficile. Ma sono le domande che contano, perché riguardano i risultati piuttosto che gli input.&lt;/p&gt;
&lt;p&gt;La spesa in gettoni indica la quantità di calcolo acquistata. Se quel calcolo è diventato qualcosa di utile è una questione completamente separata. Le aziende che non mantengono questa distinzione costruiranno dashboard molto costosi che non mostreranno quasi nulla.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Abbiamo passato anni a ottimizzare la metrica sbagliata per la produttività degli sviluppatori. Abbiamo forse un trimestre prima che lo stesso errore venga inserito in tutti i rapporti sull&#39;adozione dell&#39;AI nelle aziende. La finestra per evitarlo è aperta, ma non rimarrà tale.&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="ai" />
    <category term="developer-experience" />
    <category term="knowledge-management" />
  </entry>
  <entry>
    <title>L&#39;AI Divide divide il suo team a metà</title>
    <link href="https://www.tcdev.de/it/blog/the-ai-divide-is-splitting-your-team-in-half/" rel="alternate" type="text/html" />
    <id>https://www.tcdev.de/it/blog/the-ai-divide-is-splitting-your-team-in-half/</id>
    <updated>2026-04-10T00:00:00Z</updated>
    <summary>Metà del suo team sta costruendo il futuro con l&#39;AI. L&#39;altra metà pensa che sia una moda. Il divario tra loro sta diventando il più grande rischio competitivo che la maggior parte delle aziende non vede.</summary>
    <content type="html">&lt;p&gt;La settimana scorsa ho partecipato a una telefonata con un mio amico che mi ha parlato di uno dei suoi clienti, un&#39;azienda di logistica. Un caposquadra ha avuto una riunione di pianificazione in cui due dei suoi collaboratori avevano costruito un intero modello di scenario utilizzando l&#39;AI prima ancora che la riunione iniziasse. Previsioni, ripartizione dei rischi, tre approcci alternativi. Le altre quattro persone del team si sono presentate con lo stesso formato di slide deck che usavano da due anni. Stessa struttura, stesso processo manuale, stesse stime temporali.&lt;/p&gt;
&lt;p&gt;L&#39;incontro è andato rapidamente a rotoli. La coppia assistita dall&#39;AI non riusciva a capire perché gli altri non avessero fatto una preparazione di base che &amp;quot;richiede cinque minuti adesso&amp;quot;. Gli altri si sono sentiti in un&#39;imboscata, come se le regole del gioco fossero cambiate e nessuno glielo avesse detto. Il caposquadra ha trascorso il resto della giornata a controllare i danni.&lt;/p&gt;
&lt;p&gt;Questa storia non mi sorprende più. Ne sento versioni da mesi.&lt;/p&gt;
&lt;h2&gt;Il divario è misurabile ora&lt;/h2&gt;
&lt;p&gt;Non si tratta solo di vibrazioni. Il &lt;a href=&quot;https://www.microsoft.com/en-us/worklab/work-trend-index/2025-the-year-the-frontier-firm-is-born&quot;&gt;2025 Work Trend Index&lt;/a&gt; di Microsoft, un sondaggio condotto su 31.000 lavoratori in 31 Paesi, ha rilevato che il 67% dei leader ha familiarità con gli agenti AI, rispetto ad appena il 40% dei dipendenti. I leader sono molto più propensi a vedere l&#39;AI come un acceleratore di carriera (79% contro il 67% dei dipendenti), e stanno anche risparmiando più tempo. Quasi un terzo dei leader afferma che l&#39;AI fa risparmiare loro più di un&#39;ora al giorno.&lt;/p&gt;
&lt;p&gt;Ma ecco la parte che mi ha davvero colpito: alla domanda su come vedono l&#39;AI, il 52% degli intervistati ha risposto che la trattano come uno strumento basato sui comandi. Dagli un&#39;istruzione e ottieni un risultato. Solo il 46% l&#39;ha descritta come un partner di pensiero, qualcosa con cui si ha un rapporto di collaborazione.&lt;/p&gt;
&lt;p&gt;Non è una differenza da poco. Si tratta di due relazioni fondamentalmente diverse con la stessa tecnologia. E questi due gruppi partecipano alle stesse riunioni, lavorano agli stessi progetti e presumibilmente si muovono nella stessa direzione.&lt;/p&gt;
&lt;h2&gt;Due velocità, un team&lt;/h2&gt;
&lt;p&gt;La conseguenza pratica è che i team operano a due velocità completamente diverse. Le persone che hanno integrato l&#39;AI nel loro lavoro quotidiano non producono solo più velocemente. Pensano in modo diverso. Approcciano i problemi in modo diverso. Arrivano alle riunioni con un lavoro che prima richiedeva una settimana e che viene svolto in un pomeriggio.&lt;/p&gt;
&lt;p&gt;E le persone che non hanno adottato l&#39;Intelligenza Artificiale (o che l&#39;hanno provata una volta, l&#39;hanno trovata insoddisfacente e sono passate oltre) stanno facendo un lavoro davvero solido. Voglio essere chiaro su questo punto. Non è che non siano bravi nel loro lavoro. È che il limite massimo di ciò che è possibile è stato spostato e loro stanno lavorando sotto quello vecchio.&lt;/p&gt;
&lt;p&gt;Uno &lt;a href=&quot;https://papers.ssrn.com/sol3/papers.cfm?abstract_id=5188231&quot;&gt;studio di Harvard sull&#39;AI generativa nei team&lt;/a&gt; ha rilevato qualcosa di notevole: un singolo individuo con l&#39;AI supera un intero team che ne è privo. Ma un team in cui tutti utilizzano l&#39;IA supera tutti. L&#39;implicazione è brutale. L&#39;adozione mista non offre una via di mezzo. Offre un attrito.&lt;/p&gt;
&lt;p&gt;L&#39;ho visto in prima persona durante un workshop che ho tenuto il mese scorso. I partecipanti che utilizzavano regolarmente l&#39;IA terminavano gli esercizi nella metà del tempo, poi si sentivano frustrati nell&#39;attesa del resto. I partecipanti che non usavano l&#39;AI si sentivano affrettati e, onestamente, un po&#39; umiliati. Nessuno aveva intenzione di ottenere questo risultato. È successo semplicemente perché il divario di velocità è così grande ora.&lt;/p&gt;
&lt;h2&gt;Il vantaggio competitivo di cui nessuno parla&lt;/h2&gt;
&lt;p&gt;Ecco dove diventa davvero consequenziale. L&#39;indagine di McKinsey &lt;a href=&quot;https://www.mckinsey.com/capabilities/quantumblack/our-insights/the-state-of-ai&quot;&gt;State of AI 2025&lt;/a&gt; ha rilevato che l&#39;88% delle organizzazioni sta utilizzando l&#39;AI in almeno una funzione. Sembra fantastico, vero? Ma quasi due terzi sono ancora bloccati nelle fasi di sperimentazione e pilota. Solo circa un terzo ha iniziato a scalare l&#39;AI in tutta l&#39;azienda. E le aziende che hanno scalato, quelle che McKinsey chiama &amp;quot;high performer&amp;quot;? Rappresentano circa il 6% degli intervistati.&lt;/p&gt;
&lt;p&gt;Quel 6% si sta distaccando da tutti gli altri a una velocità che credo la maggior parte delle persone sottovaluti.&lt;/p&gt;
&lt;p&gt;Gli high performer hanno una probabilità tre volte maggiore di aver riprogettato radicalmente i loro flussi di lavoro intorno all&#39;AI. Sono tre volte più propensi ad avere leader senior che sostengono attivamente l&#39;uso dell&#39;IA e ne fanno da modello. Tre quarti di loro stanno scalando o hanno già scalato l&#39;AI nella loro organizzazione, rispetto a un terzo di tutti gli altri.&lt;/p&gt;
&lt;p&gt;I dati di Microsoft raccontano una storia simile. Le aziende che chiamano &amp;quot;aziende di frontiera&amp;quot; (quelle che hanno un&#39;implementazione dell&#39;AI a livello di organizzazione e una maturità avanzata) riportano risultati drammaticamente diversi. Il 71% dei leader delle aziende di frontiera afferma che la propria azienda è fiorente, rispetto al 39% dei lavoratori a livello globale. Il 55% afferma di poter assumere più lavoro, rispetto al 25% a livello globale. E hanno meno paura che l&#39;AI prenda il loro lavoro, non di più.&lt;/p&gt;
&lt;p&gt;Il divario tra queste aziende e tutte le altre non si sta riducendo. Sta accelerando.&lt;/p&gt;
&lt;h2&gt;Si tratta di un problema di persone mascherato da problema tecnologico&lt;/h2&gt;
&lt;p&gt;La tentazione è di risolverlo con gli strumenti. Lancia Copilot, acquista alcune licenze, invia un&#39;e-mail a tutta l&#39;azienda sulle risorse AI. Fatto.&lt;/p&gt;
&lt;p&gt;Ma la vera sfida è culturale. È il caposquadra in quella telefonata che cerca di tenere insieme un gruppo in cui metà delle persone si sente sovralimentata e l&#39;altra metà si sente lasciata indietro. È il manager che deve spiegare a un veterano di 20 anni che il suo flusso di lavoro, quello che ha perfezionato per un decennio, potrebbe non essere più l&#39;approccio migliore. È il dipendente junior che sta usando silenziosamente l&#39;AI per produrre un lavoro di livello superiore e non sa se essere orgoglioso o preoccupato per le ricadute politiche.&lt;/p&gt;
&lt;p&gt;Microsoft ha scoperto che il 47% dei leader elenca l&#39;aggiornamento dei dipendenti esistenti come strategia principale per la forza lavoro. Questo è incoraggiante, credo. Ma l&#39;upskilling funziona solo se le persone vogliono effettivamente imparare. E in questo momento, una parte significativa della forza lavoro ha deciso che l&#39;AI non è rilevante per loro, non è affidabile o non vale lo sforzo. Alcuni di loro potrebbero avere ragione su strumenti specifici. Ma la traiettoria più ampia non è opzionale (lo dico da persona che è stata scettica nei confronti di molti cicli di hype tecnologico nel corso degli anni, e questo sembra diverso).&lt;/p&gt;
&lt;h2&gt;Dove si sta dirigendo&lt;/h2&gt;
&lt;p&gt;Non credo che il divario scompaia. Penso che si allarghi. Le persone che adottano l&#39;AI continueranno a diventare più veloci, a produrre di più, ad alzare il livello di &amp;quot;produzione normale&amp;quot;. Le persone che non lo fanno sentiranno una pressione crescente, sia da parte della direzione, sia da parte dei colleghi, o semplicemente dalla realtà ambientale che i loro colleghi stanno facendo cose che loro non possono fare.&lt;/p&gt;
&lt;p&gt;Le aziende che riusciranno a capire come coinvolgere tutto il team, non solo gli appassionati, avranno un vantaggio reale. E questo vantaggio si moltiplica. Ogni mese di fluidità organizzativa dell&#39;AI è un mese che i suoi concorrenti passano a discutere se acquistare o meno le licenze ChatGPT.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Il più grande vantaggio competitivo nell&#39;era dell&#39;AI non sarà il modello da utilizzare. Sarà il fatto che tutto il suo team lo utilizzi davvero.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Il team di logistica di cui ho parlato? Il mio amico mi ha detto che il caposquadra ha prenotato un workshop interno di due giorni. Non &amp;quot;ecco come fare un prompt&amp;quot;. Piuttosto &amp;quot;ecco come questo cambia il modo di pianificare insieme&amp;quot;. Gli scettici dovevano vedere ciò che era possibile nel contesto del &lt;em&gt;loro&lt;/em&gt; lavoro, non in una demo generica con uno scenario inventato. E gli entusiasti dovevano imparare la pazienza. Per portare le persone con sé, invece di correre avanti.&lt;/p&gt;
&lt;p&gt;Questo sembra essere il lavoro da fare in questo momento. Non solo adottare l&#39;AI. Chiudere il divario. Prima che sia lei a chiudere voi.&lt;/p&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="ai" />
    <category term="collaboration" />
    <category term="knowledge-management" />
  </entry>
  <entry>
    <title>Build vs Buy Reimagined: Cosa significa realmente nel 2026</title>
    <link href="https://www.tcdev.de/it/blog/build-vs-buy-reimagined-what-it-means-in-2026/" rel="alternate" type="text/html" />
    <id>https://www.tcdev.de/it/blog/build-vs-buy-reimagined-what-it-means-in-2026/</id>
    <updated>2026-04-07T00:00:00Z</updated>
    <summary>Il costo della costruzione è appena crollato. Che cosa significa questo per tutte le aziende SaaS che scommettono la loro attività su &#39;non è necessario costruirlo da soli&#39;?</summary>
    <content type="html">&lt;p&gt;La scorsa settimana ho visto uno sviluppatore junior del nostro team creare un&#39;applicazione CRUD funzionante, con autenticazione, migrazioni di database e un&#39;interfaccia utente quasi decente, in circa 90 minuti. Con Copilot. Da zero.&lt;/p&gt;
&lt;p&gt;Cinque anni fa, lo stesso compito avrebbe richiesto una settimana. Forse due, se si contano le operazioni di razionalizzazione delle configurazioni di distribuzione e dei flussi OAuth. E questo cambiamento, questa compressione del tempo di costruzione da giorni a ore, sta silenziosamente smantellando una delle domande più antiche del software: meglio costruire o comprare?&lt;/p&gt;
&lt;h2&gt;Il vecchio schema è morto&lt;/h2&gt;
&lt;p&gt;Per decenni, la questione &amp;quot;costruire o comprare&amp;quot; è stata un calcolo dei costi. Si stimava il numero di mesi-sviluppatore necessari per costruire una cosa, si moltiplicava per il salario caricato, si aggiungeva un po&#39; di buffer per la manutenzione e si confrontava con il costo della licenza annuale di qualsiasi prodotto SaaS che facesse più o meno la stessa cosa. Se il SaaS era più economico, si comprava. Se i suoi requisiti erano abbastanza strani, ha costruito.&lt;/p&gt;
&lt;p&gt;Questa strutturazione presupponeva che la costruzione fosse costosa. E lo era. Ma &lt;a href=&quot;https://github.blog/ai-and-ml/generative-ai/how-ai-is-reshaping-developer-choice-and-octoverse-data-proves-it/&quot;&gt;secondo i dati Octoverse 2025 di GitHub&lt;/a&gt;, lo sviluppo assistito dall&#39;AI produce oggi un aumento del 20-30% del rendimento. L&#39;80% dei nuovi sviluppatori su GitHub utilizza Copilot entro la prima settimana. Oltre 1,1 milioni di repository pubblici integrano già gli SDK di LLM. La costruzione è diventata drammaticamente più economica, quasi da un giorno all&#39;altro.&lt;/p&gt;
&lt;p&gt;Quindi la domanda non è più &amp;quot;costruire o comprare&amp;quot;. È più simile a: per cosa si paga effettivamente quando si acquista un SaaS?&lt;/p&gt;
&lt;h2&gt;Il nuovo calcolo&lt;/h2&gt;
&lt;p&gt;Ecco ciò che penso che la maggior parte dei fondatori di SaaS (me compreso, onestamente) non voglia sentire: se la sua intera proposta di valore è &amp;quot;le abbiamo evitato di costruirla&amp;quot;, è nei guai. Perché quel fossato è appena diventato molto meno profondo.&lt;/p&gt;
&lt;p&gt;Quando un team può prototipare uno strumento interno funzionale in un giorno, l&#39;asticella di ciò che giustifica un abbonamento mensile si alza notevolmente. Non deve solo essere migliore di quello che potrebbero costruire loro. Deve essere migliore di quello che potrebbero costruire &lt;em&gt;con l&#39;aiuto dell&#39;AI&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.gartner.com/en/newsroom/press-releases/2026-04-02-gartner-expects-most-enterprises-to-abandon-assistive-ai-for-outcome-focused-workflow-by-2028&quot;&gt;Gartner ha previsto nell&#39;aprile 2026&lt;/a&gt; che entro il 2028, oltre la metà di tutte le aziende smetterà di pagare per l&#39;intelligenza assistiva e favorirà le piattaforme che si impegnano a ottenere risultati dal flusso di lavoro. Ancora più grave: si prevede che entro il 2030, le aziende di software che sovrappongono l&#39;AI alle applicazioni esistenti, anziché riprogettarle per l&#39;esecuzione agenziale, subiranno una compressione dei margini fino all&#39;80%.&lt;/p&gt;
&lt;p&gt;Ottanta per cento. Non è un errore di arrotondamento.&lt;/p&gt;
&lt;h2&gt;Quindi cosa sopravvive davvero?&lt;/h2&gt;
&lt;p&gt;Ho riflettuto molto su questo aspetto, in parte perché stiamo costruendo Rasepi e devo essere onesto con me stesso su dove si colloca il nostro valore. E credo che la risposta si riduca a tre cose che sono davvero difficili da replicare con uno sprint di codifica nel fine settimana, a prescindere dalla bravura dell&#39;assistente AI.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La profondità del dominio che non si può falsificare.&lt;/strong&gt; Chiunque può costruire un editor di testo. Costruire un sistema di traduzione che tenga traccia delle modifiche del contenuto a livello di paragrafo, che rilevi le traduzioni obsolete attraverso l&#39;hashing del contenuto e che gestisca l&#39;adattamento strutturale tra le lingue? Questo richiede anni di conoscenza del dominio, incorporata nell&#39;architettura. L&#39;AI può aiutarla a scrivere il codice più velocemente, ma non può dirle &lt;em&gt;cosa&lt;/em&gt; costruire.&lt;/p&gt;
&lt;p&gt;**Il punto è che costruire è divertente. Mantenere? Non è affatto divertente. Gestire i casi limite nei sistemi di permessi multi-tenant, tenere il passo con le stranezze dei browser, gestire le migrazioni dei database tra le varie versioni, correggere i CVE alle 2 del mattino, gestire il bug dell&#39;esportazione dei PDF che si presenta solo in Safari. L&#39;AI rende più veloce la creazione iniziale, certo. Ma &lt;a href=&quot;https://www.forrester.com/press-newsroom/forrester-three-years-into-genai-enterprises-are-still-chasing-its-true-transformative-value/&quot;&gt;la ricerca di Forrester dell&#39;aprile 2026&lt;/a&gt; mostra che la maggior parte delle aziende non riesce ancora a trasformare l&#39;adozione dell&#39;AI in un impatto misurabile, in parte perché la parte difficile non è mai stata la scrittura del codice. Si tratta di mantenere l&#39;oggetto in funzione, aggiornato e funzionante per anni. La costruzione è la parte facile. Sono i tempi di attività, i turni di reperibilità e le correzioni incrementali a costare.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fiducia, sicurezza e privacy dei dati.&lt;/strong&gt; Questo aspetto è sottovalutato. Quando costruisce qualcosa da solo, la sicurezza è &lt;em&gt;di sua proprietà&lt;/em&gt;. È responsabile della crittografia a riposo, della registrazione degli audit, dei test di penetrazione, della conformità GDPR, SOC 2 e della prossima normativa di cui nessuno ha ancora sentito parlare. Un buon fornitore SaaS ha un intero team il cui unico compito è quello di assicurarsi che i suoi dati non finiscano in un posto dove non dovrebbero essere. Per la maggior parte delle aziende, questo non è un costo che vogliono sostenere internamente. E onestamente, la maggior parte degli strumenti interni che ho visto non dispone nemmeno di controlli di accesso adeguati, per non parlare di una traccia di audit di sicurezza.&lt;/p&gt;
&lt;h2&gt;La via di mezzo compostabile&lt;/h2&gt;
&lt;p&gt;L&#39;aspetto interessante è che sempre più spesso la risposta non è &amp;quot;costruire&amp;quot; &lt;em&gt;o&lt;/em&gt; &amp;quot;comprare&amp;quot;. Si tratta di comporre. Scelga gli strumenti SaaS che fanno bene le cose difficili, espongono buone API e le permettono di costruire intorno a loro.&lt;/p&gt;
&lt;p&gt;Questo è il motivo per cui le architetture di plugin sono così importanti in questo momento (e sì, questo è esattamente ciò in cui abbiamo investito con il sistema di plugin di Rasepi). I prodotti SaaS che prospereranno sono quelli che dicono: &amp;quot;Noi ci occupiamo del nucleo duro e specifico del dominio. Lei personalizza tutto il resto&amp;quot;. Non &amp;quot;Ecco il nostro monolite, prendere o lasciare&amp;quot;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.forrester.com/press-newsroom/forrester-three-years-into-genai-enterprises-are-still-chasing-its-true-transformative-value/&quot;&gt;Il rapporto di Forrester dell&#39;aprile 2026&lt;/a&gt; ha rilevato che la maggior parte delle aziende sta ancora lottando per trasformare l&#39;adozione dell&#39;AI in un impatto aziendale misurabile. I grandi adottatori hanno il 47% di probabilità in più di collaborare con partner di consulenza per preparare i loro dati e sistemi. Il messaggio è chiaro: la capacità di costruzione grezza non è il collo di bottiglia. Sapere cosa costruire e avere l&#39;infrastruttura per supportarlo è il vero vincolo.&lt;/p&gt;
&lt;h2&gt;Cosa significa per SaaS&lt;/h2&gt;
&lt;p&gt;Se gestisce un&#39;azienda SaaS nel 2026, credo che ci siano alcune verità scomode:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Il risparmio di tempo era la classica vendita SaaS. Ma quando l&#39;AI comprime il tempo di costruzione del 20-30%, il numero di &amp;quot;tempo risparmiato&amp;quot; nel suo foglio di calcolo del ROI si riduce proporzionalmente. Ha bisogno di una storia diversa.&lt;/li&gt;
&lt;li&gt;Le caratteristiche sono la posta in gioco, i risultati sono il prodotto.** A nessuno interessa che lei abbia 47 integrazioni. A loro interessa che la documentazione sia aggiornata, che le traduzioni siano accurate, che il team utilizzi effettivamente lo strumento. Il linguaggio di Gartner sul &amp;quot;flusso di lavoro incentrato sui risultati&amp;quot; non è solo un gergo da analista. È la direzione che sta prendendo il mercato.&lt;/li&gt;
&lt;li&gt;L&#39;istinto di chiudere la piattaforma e di rendere difficile il passaggio è comprensibile. Ma Gartner ha esplicitamente avvertito che &amp;quot;i fornitori SaaS legacy che tentano di chiudere i sistemi di record rischiano di essere aggirati dai livelli di orchestrazione di cui le aziende si fidano di più&amp;quot;. Ahi.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;La versione onesta&lt;/h2&gt;
&lt;p&gt;Sarò schietto sulla mia posizione in merito. Costruire o comprare non ha mai riguardato la tecnologia. Si è sempre trattato di fiducia. Mi fido del fatto che questo fornitore comprenda il mio problema in modo così profondo che la sua soluzione sarà migliore di quella che potrei mettere insieme io?&lt;/p&gt;
&lt;p&gt;Nel 2026, il &amp;quot;cobble together&amp;quot; è stato aggiornato in modo massiccio. Quindi anche la barra della fiducia si è alzata.&lt;/p&gt;
&lt;p&gt;Per noi di Rasepi, questo significa che non possiamo essere solo uno strumento di documentazione che supporta le traduzioni. Dobbiamo essere così profondamente bravi nei problemi difficili, il monitoraggio delle traduzioni a livello di blocco, l&#39;applicazione della freschezza dei contenuti, la complessità multi-tenant, che la costruzione di un sostituto sarebbe davvero dolorosa anche con i migliori strumenti di intelligenza artificiale del mondo.&lt;/p&gt;
&lt;p&gt;Questo è il nuovo &amp;quot;build vs buy&amp;quot;. Non &amp;quot;può costruirlo?&amp;quot;, ma &amp;quot;deve spendere le sue energie per costruirlo quando qualcun altro ha già risolto le parti difficili?&amp;quot;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;La domanda non ha mai riguardato il costo. Si trattava di capire dove si vuole spendere la propria attenzione. E in un mondo in cui la costruzione è economica, l&#39;attenzione è l&#39;unica risorsa scarsa rimasta.&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="ai" />
    <category term="developer-experience" />
    <category term="knowledge-management" />
  </entry>
  <entry>
    <title>Smetta di licenziare le persone perché esiste l&#39;intelligenza artificiale</title>
    <link href="https://www.tcdev.de/it/blog/stop-firing-people-because-ai-exists/" rel="alternate" type="text/html" />
    <id>https://www.tcdev.de/it/blog/stop-firing-people-because-ai-exists/</id>
    <updated>2026-04-04T00:00:00Z</updated>
    <summary>Una persona con l&#39;AI può fare il lavoro di dieci. Ma qualcuno si è fermato a chiedersi cosa succede a quella persona? O cosa succede se si mantengono i dieci?</summary>
    <content type="html">&lt;p&gt;Una mia amica gestisce i contenuti per un&#39;azienda SaaS di medie dimensioni. L&#39;anno scorso, il suo team era composto da otto persone. Scrittori, redattori, uno specialista di localizzazione, qualcuno che si occupava della base di conoscenze. Un buon team, una produzione solida. Poi l&#39;amministratore delegato ha partecipato a una conferenza, è tornato entusiasta dell&#39;AI e nel giro di tre mesi il team si è ridotto a tre persone. Il motivo? &amp;quot;Con gli strumenti dell&#39;AI, tre persone possono produrre quello che prima facevano otto&amp;quot;.&lt;/p&gt;
&lt;p&gt;E tecnicamente, è vero. Le tre persone rimaste producono più o meno lo stesso volume. Post sul blog, documenti di aiuto, aggiornamenti sui prodotti, comunicazioni interne. I numeri sembrano buoni su un cruscotto.&lt;/p&gt;
&lt;p&gt;Ma la mia amica non dorme bene da mesi. Sta passando dalla scrittura, all&#39;editing, al prompt engineering, al QA dell&#39;output dell&#39;AI, alla gestione delle traduzioni e a tutto il lavoro strategico che un tempo era condiviso da tutto il team. I suoi due colleghi rimasti sono nella stessa barca. Uno di loro sta già cercando un altro lavoro.&lt;/p&gt;
&lt;p&gt;L&#39;azienda ha risparmiato cinque stipendi. Ma sta anche perdendo lentamente le tre persone che sanno effettivamente come funzionano le cose.&lt;/p&gt;
&lt;h2&gt;La matematica che sembra giusta ma non lo è&lt;/h2&gt;
&lt;p&gt;Ecco l&#39;argomentazione che sta facendo il giro dei consigli di amministrazione da quando il ChatGPT si è diffuso: una persona con l&#39;AI può ora fare il lavoro di dieci. E se è così, perché tenerne dieci?&lt;/p&gt;
&lt;p&gt;È un argomento convincente. Semplice. Pulito. Si adatta a una diapositiva.&lt;/p&gt;
&lt;p&gt;È anche pericolosamente incompleto.&lt;/p&gt;
&lt;p&gt;Sì, l&#39;AI può comprimere i compiti. Secondo il &lt;a href=&quot;https://www.microsoft.com/en-us/worklab/work-trend-index/ai-at-work-is-here-now-comes-the-hard-part&quot;&gt;Work Trend Index 2024 di Microsoft&lt;/a&gt;, il 90% degli utenti dell&#39;AI al lavoro afferma che gli strumenti li aiutano a risparmiare tempo. Gli utenti più assidui di Microsoft Teams hanno riassunto otto ore di riunioni utilizzando Copilot in un solo mese. Si tratta di un&#39;intera giornata lavorativa recuperata solo dai riepiloghi delle riunioni. E l&#39;85% afferma che l&#39;AI li aiuta a concentrarsi sul lavoro più importante.&lt;/p&gt;
&lt;p&gt;Questi sono numeri reali. I guadagni di produttività non sono immaginari.&lt;/p&gt;
&lt;p&gt;Ma ecco ciò di cui la folla &amp;quot;licenzia nove persone&amp;quot; non parla mai: la persona che rimane non assorbe solo il risultato. Assorbe il carico cognitivo, il contesto, il processo decisionale, la coordinazione, la garanzia di qualità e tutte le conoscenze istituzionali che sono uscite dalla porta con quei nove ex colleghi.&lt;/p&gt;
&lt;h2&gt;Il carico mentale non è un foglio di calcolo.&lt;/h2&gt;
&lt;p&gt;Esiste un concetto in psicologia chiamato teoria del carico cognitivo. Descrive la quantità totale di sforzo mentale utilizzato nella memoria di lavoro in un dato momento. E ogni volta che si chiede a una persona di fare il pensiero che prima era condiviso da cinque persone, non si risparmia sforzo. Lo sta concentrando.&lt;/p&gt;
&lt;p&gt;Ci penso spesso quando le persone mi dicono che l&#39;AI rende i lavoratori &amp;quot;10 volte più produttivi&amp;quot;. Produttivi in cosa? A produrre più parole? Spedire più biglietti? Generare più slide decks? Certo. Ma la parte più difficile del lavoro di conoscenza non è mai stata la produzione. È il pensiero. Decidere cosa produrre. Capire il contesto. Fare scelte di giudizio. Sapere quando una cosa è sbagliata, anche quando sembra giusta in superficie.&lt;/p&gt;
&lt;p&gt;L&#39;AI non fa questo per lei. L&#39;AI le dà una prima bozza e lei deve essere abbastanza intelligente da valutarla, abbastanza esperto da cogliere gli errori più sottili e abbastanza presente da notare quando il risultato è sicuramente sbagliato. (Se ha mai visto qualcuno spedire un documento interno generato dall&#39;AI senza leggerlo, sa esattamente cosa intendo).&lt;/p&gt;
&lt;p&gt;Il rapporto &lt;a href=&quot;https://www.gallup.com/workplace/659279/global-engagement-falls-second-time-2009.aspx&quot;&gt;State of the Global Workplace 2025 di Gallup&lt;/a&gt; ha rilevato che l&#39;impegno globale dei dipendenti è sceso al 21% nel 2024, rispetto al 23% dell&#39;anno precedente. Questo calo è costato all&#39;economia mondiale una perdita di produttività stimata in 438 miliardi di dollari. L&#39;impegno dei manager è calato ancora di più, dal 30% al 27%. Le donne manager hanno registrato un calo di sette punti. I manager sotto i 35 anni sono scesi di cinque punti.&lt;/p&gt;
&lt;p&gt;Queste sono le persone che dovrebbero guidare l&#39;adozione dell&#39;AI. E si stanno esaurendo.&lt;/p&gt;
&lt;h2&gt;L&#39;argomento dell&#39;amplificazione&lt;/h2&gt;
&lt;p&gt;Permettetemi di offrire un modo diverso di pensare a questo problema.&lt;/p&gt;
&lt;p&gt;Se una persona con AI può fare il lavoro di dieci, allora dieci persone con AI possono fare il lavoro di cento.&lt;/p&gt;
&lt;p&gt;Lo legga di nuovo. Perché questa è la parte di cui quasi nessuno parla, ed è la parte che dovrebbe tenere ogni CEO sveglio la notte. Non perché faccia paura, ma perché è un&#39;enorme opportunità che la maggior parte delle aziende sta buttando via.&lt;/p&gt;
&lt;p&gt;Le aziende che licenziano metà della loro forza lavoro perché &amp;quot;l&#39;AI può farcela&amp;quot; non sono efficienti. Sono miopi. Stanno ottimizzando per un numero di dipendenti trimestrale, mentre i loro concorrenti scoprono cosa succede quando si danno strumenti potenti a un team completo di persone motivate ed esperte.&lt;/p&gt;
&lt;p&gt;L&#39;ho visto in un evento per startup a Zurigo il mese scorso. Due aziende nello stesso spazio. Più o meno delle stesse dimensioni, stesso mercato. L&#39;azienda A aveva ridotto il suo team di contenuti da dodici a quattro. L&#39;azienda B aveva mantenuto tutti e dodici e aveva dato loro strumenti di AI e formazione. Indovini quale delle due stava producendo contenuti multilingue in sei lingue, eseguendo esperimenti con nuovi formati e inviando aggiornamenti settimanali dei prodotti alla loro base di conoscenze? (Non era l&#39;azienda A).&lt;/p&gt;
&lt;h2&gt;Cosa succede in realtà quando si taglia&lt;/h2&gt;
&lt;p&gt;Vediamo cosa succede in pratica quando si sostituisce un team di dieci persone con uno o due super-lavoratori &amp;quot;potenziati dall&#39;AI&amp;quot;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La prima settimana è fantastica.&lt;/strong&gt; Le persone rimaste sono energizzate. Hanno nuovi strumenti. Producono molto. La leadership è entusiasta. I numeri del cruscotto sono incredibili rispetto all&#39;organico.&lt;/p&gt;
&lt;p&gt;**L&#39;unica persona responsabile della documentazione scopre che i contenuti generati dall&#39;AI hanno bisogno di una revisione seria. Non un editing leggero. Una revisione profonda. Perché l&#39;AI non conosce le sfumature del suo prodotto, il contesto del suo cliente o le tre cose che ha cambiato la settimana scorsa e che hanno invalidato metà di ciò che è stato scritto. Il lavoro di revisione da solo si mangia il tempo che è stato &amp;quot;risparmiato&amp;quot; generando contenuti più velocemente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Al quarto mese, emergono le lacune di conoscenza istituzionale.&lt;/strong&gt; Ricorda le otto persone che ha lasciato andare? Non si limitavano a scrivere contenuti. Avevano rapporti con i product manager. Conoscevano i punti dolenti dei clienti grazie ad anni di modelli di ticket di assistenza. Sapevano quali argomenti della documentazione generavano il maggior numero di domande. Questa conoscenza non c&#39;è più. L&#39;intelligenza artificiale non ce l&#39;ha di certo.&lt;/p&gt;
&lt;p&gt;**Perché le persone rimaste sono sovraccariche, la qualità è diminuita e qualcuno ha finalmente notato che la base di conoscenze non viene aggiornata correttamente da settimane. Ma anche gli appaltatori non hanno un contesto, quindi lei paga di più all&#39;ora per risultati peggiori.&lt;/p&gt;
&lt;p&gt;Non me lo sto inventando. Ho visto questo schema ripetersi in tre diverse aziende solo nell&#39;ultimo anno.&lt;/p&gt;
&lt;h2&gt;I dati dicono di mantenere le persone (e di formarle)&lt;/h2&gt;
&lt;p&gt;Il &lt;a href=&quot;https://www.weforum.org/publications/the-future-of-jobs-report-2025/digest/&quot;&gt;World Economic Forum&#39;s Future of Jobs Report 2025&lt;/a&gt; ha chiesto a più di 1.000 datori di lavoro globali i loro piani per la forza lavoro. I numeri raccontano una storia interessante. Sì, il 40% dei datori di lavoro prevede di ridurre il personale quando l&#39;AI automatizza i compiti. Ma l&#39;85% prevede di migliorare la propria forza lavoro esistente. E il 70% prevede di assumere persone con nuove competenze, non meno persone.&lt;/p&gt;
&lt;p&gt;Il rapporto prevede una crescita netta di 78 milioni di posti di lavoro entro il 2030. E questo dopo aver tenuto conto dei 92 milioni di ruoli sfollati. Il mondo non si sta muovendo verso un minor numero di lavoratori. Si sta spostando verso lavoratori diversamente qualificati.&lt;/p&gt;
&lt;p&gt;Ed ecco il dato che dovrebbe far riflettere tutti gli Amministratori Delegati che &amp;quot;tagliano gli organici&amp;quot;: Il 64% dei datori di lavoro ha identificato il sostegno alla salute e al benessere dei dipendenti come una strategia chiave per la disponibilità di talenti. Non &amp;quot;ridurre i costi&amp;quot;. Non &amp;quot;automatizzare tutto&amp;quot;. &lt;strong&gt;Sostenere il benessere.&lt;/strong&gt; Perché le aziende che bruciano le loro persone non possono assumere quelle buone in seguito.&lt;/p&gt;
&lt;p&gt;Nel frattempo, uno &lt;a href=&quot;https://www.bcg.com/publications/2023/how-people-create-and-destroy-value-with-gen-ai&quot;&gt;studio di BCG e Harvard Business School&lt;/a&gt; ha rilevato che quando i team hanno utilizzato l&#39;AI per i compiti creativi, circa il 90% ha migliorato le proprie prestazioni, con un aumento della qualità dei risultati del 40% rispetto ai gruppi di controllo. Ma lo studio ha anche rilevato qualcosa che dovrebbe mettere a disagio ogni leader: la diversità delle idee tra i gruppi assistiti dall&#39;AI è diminuita del 41%.&lt;/p&gt;
&lt;p&gt;Pensi a cosa significa. Lei licenzia sette persone dal suo team di dieci persone. I tre che rimangono utilizzano l&#39;AI per produrre lo stesso volume. Ma la gamma di idee, prospettive e approcci si riduce di quasi la metà. La sua produzione sembra produttiva, ma gradualmente diventa omogenea. E nessuno se ne accorge, fino a quando un concorrente non lancia qualcosa di veramente creativo e lei non riesce a capire perché il suo team non stia facendo lo stesso.&lt;/p&gt;
&lt;h2&gt;Il carico mentale che nessuno mette in preventivo&lt;/h2&gt;
&lt;p&gt;Il sondaggio di Microsoft ha rilevato che il 68% delle persone ha difficoltà a gestire il ritmo e il volume del lavoro, e il 46% si sente esaurito. E questo era lo stato delle cose &lt;em&gt;prima&lt;/em&gt; che lei dicesse loro che ora stanno facendo il lavoro dei loro tre ex compagni di squadra.&lt;/p&gt;
&lt;p&gt;Ecco qualcosa che non appare nei dashboard di produttività: il costo cognitivo di essere l&#39;ultima linea di difesa. Quando è l&#39;unica persona a rivedere i risultati dell&#39;AI, non può avere una giornata no. Quando è l&#39;unico proprietario della base di conoscenze, ogni domanda di assistenza arriva sulla sua scrivania. Quando non c&#39;è nessuno con cui scambiare idee perché il team è stato &amp;quot;dimensionato correttamente&amp;quot;, ogni decisione è solo sua.&lt;/p&gt;
&lt;p&gt;Ho costruito Rasepi in parte perché ho visto questo problema da vicino. Quando i team di documentazione si riducono, la conoscenza non si riduce con loro. La quantità di contenuti che devono esistere, essere aggiornati ed essere accurati in tutte le lingue non diminuisce solo perché ci sono meno persone che li mantengono. Anzi, aumenta (tra l&#39;altro, questo è esattamente il problema che stiamo risolvendo con Rasepi, grazie a funzioni come le date di scadenza forzate e le traduzioni a livello di blocco, che rendono i team più piccoli davvero più efficaci, anziché più sovraccarichi).&lt;/p&gt;
&lt;p&gt;Ma anche i migliori strumenti non risolvono una decisione fondamentalmente sbagliata in materia di personale. Non si può automatizzare la necessità di giudizio umano, di contesto e di attenzione. Si può solo rendere questi esseri umani più efficaci.&lt;/p&gt;
&lt;h2&gt;Cosa fanno le aziende intelligenti&lt;/h2&gt;
&lt;p&gt;La cosa più impressionante dei dati di Microsoft è l&#39;aspetto dei &amp;quot;power user dell&#39;AI&amp;quot;. Si tratta di persone che utilizzano l&#39;AI più volte al giorno e risparmiano oltre 30 minuti. Hanno il 68% di probabilità in più di sperimentare diversi modi di utilizzare l&#39;AI. Non si limitano a generare più risultati. Riprogettano il modo in cui avviene il lavoro.&lt;/p&gt;
&lt;p&gt;Ed ecco la novità: esistono all&#39;interno delle organizzazioni che investono in loro. I power user dell&#39;AI hanno il 61% di probabilità in più di sentir parlare il loro CEO dell&#39;importanza dell&#39;AI sul lavoro. Hanno il 53% di probabilità in più di ricevere dalla leadership l&#39;incoraggiamento a ripensare l&#39;intera funzione. Ricevono una formazione personalizzata, non solo un accesso a ChatGPT.&lt;/p&gt;
&lt;p&gt;In altre parole, i lavoratori AI più produttivi non sono i solitari sopravvissuti a un licenziamento. Sono membri di team sostenuti e investiti.&lt;/p&gt;
&lt;p&gt;Permettetemi di fare un contrasto con ciò che vedo nelle aziende che hanno scelto la strada del &amp;quot;taglio del personale&amp;quot;. I dipendenti rimasti non sono dei power user. Sono generalisti sopraffatti che cercano disperatamente di far funzionare le cose. Non hanno il tempo di sperimentare l&#39;IA perché sono troppo impegnati a usarla per sopravvivere. Non c&#39;è un ripensamento della funzione, perché la funzione è solo... loro, da soli, che fanno tutto.&lt;/p&gt;
&lt;h2&gt;Il problema della conoscenza di cui nessuno parla&lt;/h2&gt;
&lt;p&gt;C&#39;è un&#39;altra cosa. E non sento nessuno parlarne, il che è strano perché dovrebbe essere ovvio.&lt;/p&gt;
&lt;p&gt;Quando si licenziano i lavoratori esperti della conoscenza, la conoscenza se ne va con loro. Non rimane nell&#39;edificio. Non è nel wiki. Non è nell&#39;AI. È nella testa delle persone che hanno costruito i processi, compreso i casi limite e saputo quali clienti erano interessati a quali dettagli.&lt;/p&gt;
&lt;p&gt;Sa cosa succede quando si hanno grandi strumenti di AI e nessuna conoscenza istituzionale? Si ottengono informazioni ben formattate, fornite con sicurezza e completamente sbagliate. In scala.&lt;/p&gt;
&lt;p&gt;Il mese scorso ho parlato con una responsabile della documentazione di un&#39;azienda fintech (non ha voluto essere nominata, il che la dice lunga). Dopo che il loro team è stato ridotto da sei a due, hanno iniziato a fare molto affidamento sull&#39;AI per la manutenzione dei documenti degli sviluppatori. Nel giro di quattro mesi, hanno notato un aumento dei ticket di assistenza. I documenti sembravano a posto. Erano ben scritti, aggiornati in superficie. Ma contenevano errori sottili che solo una persona con una profonda conoscenza del prodotto avrebbe colto. Una descrizione dei parametri API tecnicamente corretta, ma praticamente fuorviante. Una guida alla migrazione che mancava un passaggio che tutti i membri del vecchio team conoscevano. Piccole cose che l&#39;AI non può sapere, perché non partecipa ai suoi standup, non legge i suoi thread su Slack, non sente il frustrato &amp;quot;Oh, quel documento è di nuovo sbagliato&amp;quot; del tecnico dell&#39;assistenza alla macchinetta del caffè.&lt;/p&gt;
&lt;h2&gt;La vera domanda&lt;/h2&gt;
&lt;p&gt;Quindi, ecco su cosa penso che la conversazione dovrebbe vertere.&lt;/p&gt;
&lt;p&gt;Non: &lt;em&gt;&amp;quot;Quante persone possiamo tagliare ora che abbiamo l&#39;AI?&amp;quot;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Ma: Cosa diventa possibile quando diamo l&#39;IA a tutti quelli che abbiamo già?&amp;quot;.&lt;/p&gt;
&lt;p&gt;Il suo team di documentazione di dieci persone con strumenti di AI non diventa ridondante. Diventa un team in grado di gestire i contenuti in dodici lingue invece che in due. Che può mantenere aggiornato ogni contenuto con controlli di freschezza automatizzati. Può sperimentare nuovi formati, eseguire test A/B sui contenuti di aiuto, costruire guide interattive e avere ancora tempo per pensare strategicamente a ciò di cui i clienti hanno effettivamente bisogno.&lt;/p&gt;
&lt;p&gt;Il suo team di marketing di dieci persone con l&#39;AI non diventa cinque persone che fanno lo stesso lavoro con più stress. Diventa dieci persone che possono personalizzare le campagne su una scala che prima era impossibile, testare più varianti creative, rispondere più velocemente ai cambiamenti del mercato e avere ancora la larghezza di banda cognitiva per proporre idee veramente originali che l&#39;AI non avrebbe mai generato.&lt;/p&gt;
&lt;p&gt;Non si tratta di un costo. È un investimento con un ritorno che si moltiplica.&lt;/p&gt;
&lt;h2&gt;Dove si va a finire&lt;/h2&gt;
&lt;p&gt;Le aziende che vinceranno i prossimi cinque anni non saranno quelle che taglieranno più teste. Saranno quelle che hanno capito come rendere i loro team esistenti davvero più capaci.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;La questione non è se una persona può fare il lavoro di dieci. La questione è cosa succede quando tutti e dieci possono fare il lavoro di cento.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Se lei è un leader che sta leggendo, le chiedo una cosa. Prima di approvare il prossimo ciclo di &amp;quot;ristrutturazione abilitata dall&#39;AI&amp;quot;, parli con le persone che sono rimaste dopo l&#39;ultimo ciclo. Chieda loro come si stanno comportando. Chieda loro cosa hanno smesso di fare perché non c&#39;è tempo. Chieda loro che cosa si sta perdendo per strada.&lt;/p&gt;
&lt;p&gt;E poi immagina cosa potrebbero realizzare se, invece di portare il carico da soli, avessero un team completo e i migliori strumenti disponibili.&lt;/p&gt;
&lt;p&gt;Non è una fantasia. Per le aziende disposte a investire nelle loro persone invece di sostituirle, questi sono i prossimi dodici mesi.&lt;/p&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="ai" />
    <category term="knowledge-management" />
    <category term="collaboration" />
  </entry>
  <entry>
    <title>I lettori e gli scrittori hanno modalità mentali diverse. Perché ogni strumento offre loro la stessa interfaccia?</title>
    <link href="https://www.tcdev.de/it/blog/readers-and-writers-need-different-interfaces/" rel="alternate" type="text/html" />
    <id>https://www.tcdev.de/it/blog/readers-and-writers-need-different-interfaces/</id>
    <updated>2026-04-03T00:00:00Z</updated>
    <summary>Le piattaforme di documentazione costringono i lettori, gli scrittori e l&#39;intelligenza artificiale in un&#39;unica interfaccia. Ma consumare la conoscenza e crearla sono compiti cognitivamente diversi. Rasepi li separa.</summary>
    <content type="html">&lt;p&gt;Apra subito Confluence e trovi un documento da leggere. Cosa vede?&lt;/p&gt;
&lt;p&gt;Una barra degli strumenti. Pulsanti di modifica. Caselle di commento. Collegamenti alla cronologia della pagina. Una barra laterale piena di navigazione che non le serve. Briciole di pane. Campi di metadati. Indicatori di autorizzazione. Un&#39;intera interfaccia di authoring che ruota intorno al testo che è venuto a leggere.&lt;/p&gt;
&lt;p&gt;Ora pensi a ciò che desidera effettivamente: la risposta ad una domanda, o le tre fasi successive di un processo, o una politica che deve consultare prima di una riunione tra dieci minuti.&lt;/p&gt;
&lt;p&gt;Lei è venuto per consumare. L&#39;interfaccia presuppone che lei sia venuto per creare.&lt;/p&gt;
&lt;p&gt;Questa è l&#39;impostazione predefinita in quasi tutte le piattaforme di documentazione. Confluence, Notion, SharePoint, GitBook, Nuclino, Slite. Tutte presentano lo stesso ambiente ai lettori e agli scrittori. La pagina è la pagina. Tutti hanno la stessa visione, con o senza alcuni pulsanti di autorizzazione.&lt;/p&gt;
&lt;p&gt;Sembra normale, perché non abbiamo mai avuto altro. Ma è una decisione di design, non una legge di natura. Ed è quella sbagliata.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.tcdev.de/it/blog/img/lettori-scrittori-ui.svg&quot; alt=&quot;La stessa interfaccia per leggere e scrivere crea un sovraccarico cognitivo&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;La lettura e la scrittura non sono lo stesso compito cognitivo&lt;/h2&gt;
&lt;p&gt;Non si tratta di una preferenza dell&#39;interfaccia utente. Si tratta di una differenza fondamentale nel funzionamento del cervello.&lt;/p&gt;
&lt;p&gt;Quando scrive, si trova in modalità generativa. Sta costruendo, organizzando, decidendo cosa includere e cosa tralasciare. Ha bisogno di strumenti: opzioni di formattazione, controlli della struttura, inserimento di media, campi di metadati, cronologia delle versioni, funzioni di collaborazione. L&#39;interfaccia deve offrirle potere e flessibilità.&lt;/p&gt;
&lt;p&gt;Quando legge, è in modalità ricettiva. Sta analizzando, filtrando, estraendo ciò che è rilevante e cercando di andare avanti. Ha bisogno di chiarezza: tipografia pulita, layout mirato, distrazioni minime. L&#39;interfaccia deve essere fuori dagli schemi.&lt;/p&gt;
&lt;p&gt;La psicologia cognitiva ha un quadro chiaro per questo. La &lt;a href=&quot;https://www.instructionaldesign.org/theories/cognitive-load/&quot;&gt;Teoria del Carico Cognitivo&lt;/a&gt;, sviluppata da John Sweller alla fine degli anni &#39;80, distingue tra carico intrinseco (la difficoltà del materiale stesso), carico germinale (lo sforzo di apprendimento e di integrazione) e carico estraneo (tutto ciò che l&#39;ambiente aggiunge e non aiuta). Ogni barra degli strumenti, barra laterale e pulsante di modifica visibile al lettore è un carico estraneo. Non aiuta a capire il contenuto. Competono attivamente per l&#39;attenzione.&lt;/p&gt;
&lt;p&gt;La ricerca di &lt;a href=&quot;https://doi.org/10.1207/S15326985EP3801_6&quot;&gt;Mayer e Moreno (2003)&lt;/a&gt; sull&#39;apprendimento multimediale ha dimostrato che la riduzione degli elementi estranei migliora sia la comprensione che la conservazione. Il loro principio di coerenza è diretto: Un&#39;interfaccia di documentazione che mostra ai lettori i controlli di creazione sta violando questo principio in ogni singolo caricamento di pagina.&lt;/p&gt;
&lt;p&gt;**Il lettore non ha bisogno di vedere gli strumenti dell&#39;autore. Mostrarli comunque non è neutrale. È attivamente dannoso per la comprensione.&lt;/p&gt;
&lt;h2&gt;Come le piattaforme attuali gestiscono questo aspetto (per lo più non lo fanno)&lt;/h2&gt;
&lt;p&gt;Esaminiamo ciò che esiste.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Confluence&lt;/strong&gt; ha una modalità di lettura e una modalità di modifica, ma la modalità di lettura è ancora circondata dalla navigazione, dai metadati e dall&#39;albero della pagina della piattaforma. La barra degli strumenti di modifica scompare quando non si sta modificando, ma la cornice mentale di &amp;quot;questa è una pagina wiki modificabile&amp;quot; non scompare mai del tutto. Ogni lettore vede il pulsante &amp;quot;Modifica&amp;quot;. La pagina sussurra: &lt;em&gt;potresti cambiare questo.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Notion&lt;/strong&gt; è peggiore da questo punto di vista. La sua filosofia di design è che tutto è sempre modificabile. Clicchi su un punto qualsiasi e sta scrivendo. Questo è brillante per gli scrittori. È terribile per i lettori che vogliono semplicemente assorbire i contenuti senza l&#39;ansia di modificare accidentalmente qualcosa. La stessa [galleria di modelli] di Notion (https://www.notion.com/templates) lo dimostra: ogni modello è un&#39;area di lavoro, non una pubblicazione.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SharePoint&lt;/strong&gt; tecnicamente supporta diversi layout di pagina per la visualizzazione e la modifica, ma l&#39;esperienza complessiva è ancora quella di una intranet aziendale. I lettori hanno la sensazione di trovarsi all&#39;interno di uno strumento aziendale, non di leggere un documento ottimizzato per la comprensione.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GitBook&lt;/strong&gt; si avvicina di più a un&#39;esperienza di lettura, con il suo output pulito in stile documentazione. Ma anche in questo caso, l&#39;esperienza di lettura si basa sul presupposto che il lettore sia uno sviluppatore che consulta documenti tecnici. Non è stato progettato per il consumatore di conoscenze generali.&lt;/p&gt;
&lt;p&gt;Nessuna di queste piattaforme tratta la lettura come un&#39;attività fondamentalmente diversa dalla scrittura. La trattano come la scrittura con la barra degli strumenti nascosta.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.tcdev.de/it/blog/img/lettori-scrittori-strumenti-attuali.svg&quot; alt=&quot;Strumenti attuali: un&#39;interfaccia, tutti i tipi di pubblico&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Il costo di un&#39;unica interfaccia&lt;/h2&gt;
&lt;p&gt;Non si tratta solo di un problema estetico. Ha conseguenze misurabili.&lt;/p&gt;
&lt;h3&gt;Il sovraccarico di informazioni riduce la comprensione&lt;/h3&gt;
&lt;p&gt;Uno &lt;a href=&quot;https://doi.org/10.1086/209336&quot;&gt;studio pubblicato nel Journal of Consumer Research&lt;/a&gt; ha rilevato che il sovraccarico di informazioni porta a una minore qualità delle decisioni, con un effetto che aumenta con l&#39;aumentare del rapporto tra informazioni irrilevanti e rilevanti. Una pagina di documentazione con controlli di authoring visibili, alberi di navigazione e campi di metadati aumenta questo rapporto per ogni lettore che non è lì per scrivere.&lt;/p&gt;
&lt;h3&gt;Il cambio di contesto ha un costo reale&lt;/h3&gt;
&lt;p&gt;Quando un segnale di interfaccia dice &amp;quot;puoi modificare questo&amp;quot;, attiva un quadro cognitivo diverso da &amp;quot;leggi questo&amp;quot;. &lt;a href=&quot;https://www.ics.uci.edu/~gmark/&quot;&gt;La ricerca di Gloria Mark presso la UC Irvine&lt;/a&gt; sull&#39;attenzione e il multitasking ha rilevato che ci vogliono in media 23 minuti e 15 secondi per ricentrarsi completamente dopo un cambio di contesto. Un lettore che prende momentaneamente in considerazione l&#39;editing (anche per correggere un errore di battitura) è stato estromesso dalla modalità di lettura. Non è un&#39;ipotesi. Chiunque abbia utilizzato Notion conosce l&#39;esperienza di fare clic per selezionare il testo e di iniziare a digitare per sbaglio.&lt;/p&gt;
&lt;h3&gt;Lettori e scrittori hanno esigenze diverse rispetto allo stesso contenuto.&lt;/h3&gt;
&lt;p&gt;Uno scrittore ha bisogno di vedere la struttura, i marcatori di formattazione, i tipi di blocco, i metadati e i segnali di collaborazione. Ha bisogno di un macchinario completo.&lt;/p&gt;
&lt;p&gt;Un lettore ha bisogno di vedere un testo pulito, una gerarchia chiara e il percorso più veloce per raggiungere le informazioni che sta cercando. Ha bisogno del contenuto, non del macchinario.&lt;/p&gt;
&lt;p&gt;Servire entrambi dalla stessa interfaccia significa che nessuno dei due riceve un&#39;esperienza ottimizzata per quello che sta facendo.&lt;/p&gt;
&lt;h2&gt;E poi c&#39;è il terzo pubblico: L&#39;INTELLIGENZA ARTIFICIALE&lt;/h2&gt;
&lt;p&gt;Qui le cose si complicano e le piattaforme esistenti sono completamente impreparate.&lt;/p&gt;
&lt;p&gt;La documentazione nel 2026 ha tre consumatori distinti, non due:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Gli &lt;strong&gt;scrittori&lt;/strong&gt; che creano e mantengono i contenuti.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lettori&lt;/strong&gt; che consumano i contenuti visivamente&lt;/li&gt;
&lt;li&gt;Sistemi &lt;strong&gt;AI&lt;/strong&gt; che recuperano, analizzano e sintetizzano i contenuti in modo programmatico.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Ognuno di questi pubblici ha bisogno di un&#39;interfaccia fondamentalmente diversa per lo stesso contenuto sottostante.&lt;/p&gt;
&lt;p&gt;Gli scrittori hanno bisogno di ricchi strumenti di editing, funzioni di collaborazione e controlli strutturali. I lettori hanno bisogno di una presentazione pulita e mirata, con una distrazione minima. L&#39;intelligenza artificiale ha bisogno di un output strutturato, elaborabile con metadati espliciti: segnali di freschezza, etichette di classificazione, indirizzamento a livello di blocco e markup semantico pulito.&lt;/p&gt;
&lt;p&gt;Come abbiamo discusso in &lt;a href=&quot;https://www.tcdev.de/it/blog/builders-not-developers-how-claude-changed-devrel/&quot;&gt;Builders, Not Developers&lt;/a&gt;, gli intermediari AI sono già il consumatore dominante della documentazione per una quota crescente di lavoratori della conoscenza. &lt;a href=&quot;https://github.blog/news-insights/research/survey-ai-wave-grows/&quot;&gt;Il sondaggio sugli sviluppatori 2024 di GitHub&lt;/a&gt; ha rilevato che il 97% degli sviluppatori aziendali ha utilizzato strumenti di codifica AI. Entro il 2026, &lt;a href=&quot;https://www.index.dev/blog/developer-productivity-statistics-with-ai-tools&quot;&gt;l&#39;84% degli sviluppatori utilizza regolarmente strumenti di IA&lt;/a&gt;, con il 41% di tutto il codice generato dall&#39;IA.&lt;/p&gt;
&lt;p&gt;A questi sistemi di AI non interessa la barra laterale o la barra degli strumenti. Hanno bisogno di dati puliti. E una piattaforma che confonde la vista del lettore con la vista dello scrittore, confonde anche la superficie consumabile dall&#39;AI con la superficie autoriale umana. Si tratta di tre discrepanze in un&#39;unica interfaccia.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.tcdev.de/it/blog/img/lettori-scrittori-tre-audiences.svg&quot; alt=&quot;Tre pubblici, tre esigenze diverse&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Come Rasepi separa le esperienze&lt;/h2&gt;
&lt;p&gt;Rasepi si basa sul principio che la creazione di contenuti e il consumo di contenuti sono attività diverse che meritano interfacce diverse.&lt;/p&gt;
&lt;h3&gt;L&#39;ambiente dello scrittore&lt;/h3&gt;
&lt;p&gt;Quando scrive in Rasepi, ottiene un ambiente di scrittura completo. Editing di testo ricco con TipTap, controlli a livello di blocco, indicatori di stato di traduzione, gestione delle scadenze, strumenti di collaborazione, visualizzazioni della struttura dei contenuti e tutto ciò di cui uno scrittore ha bisogno per creare e mantenere una documentazione di alta qualità.&lt;/p&gt;
&lt;p&gt;Lo scrittore vede il macchinario perché ha bisogno del macchinario.&lt;/p&gt;
&lt;!-- Schermata: Ambiente di scrittura Rasepi --&gt;
&lt;h3&gt;L&#39;ambiente del lettore&lt;/h3&gt;
&lt;p&gt;Quando qualcuno consuma un documento Rasepi, vede un&#39;esperienza di lettura pulita e mirata. Nessun chrome di editing. Nessuna barra degli strumenti. Nessun segnale &amp;quot;puoi modificare questo&amp;quot;. Solo il contenuto, presentato in un layout ottimizzato per la comprensione e la scansione.&lt;/p&gt;
&lt;p&gt;Il lettore non vede il pulsante di modifica perché non è qui per modificare. È qui per imparare qualcosa, seguire un processo o trovare una risposta. L&#39;interfaccia rispetta questo intento.&lt;/p&gt;
&lt;!-- Schermata: Esperienza di lettura Rasepi --&gt;
&lt;h3&gt;La superficie AI&lt;/h3&gt;
&lt;p&gt;Per i consumatori di AI, Rasepi espone i contenuti attraverso API strutturate con metadati completi. Ogni blocco contiene il suo punteggio di freschezza, lo stato di traduzione, l&#39;hash del contenuto e le etichette di classificazione. I sistemi di AI possono interrogare i contenuti a livello di blocco, filtrare in base alla freschezza, escludere il materiale stantio o in bozza e recuperare esattamente i dati strutturati di cui hanno bisogno.&lt;/p&gt;
&lt;p&gt;Non è necessario raschiare una pagina wiki e sperare nel meglio. L&#39;IA riceve un&#39;interfaccia creata ad hoc, proprio come il lettore e lo scrittore.&lt;/p&gt;
&lt;!-- Schermata: Superficie AI / API di Rasepi --&gt;
&lt;h2&gt;Un livello di contenuto, tre interfacce&lt;/h2&gt;
&lt;p&gt;La cosa importante è che non stiamo mantenendo tre copie del contenuto. Non si tratta del problema delle cinque copie di imbarco di cui abbiamo parlato in [Smettere di mantenere cinque copie dello stesso documento] (/blog/stop-maintaining-five-copies-of-the-same-document/).&lt;/p&gt;
&lt;p&gt;Si tratta di un unico livello di contenuti, memorizzati come blocchi strutturati, serviti attraverso tre diverse visualizzazioni ottimizzate per tre diversi tipi di pubblico.&lt;/p&gt;
&lt;p&gt;Lo scrittore modifica i blocchi. Il lettore vede contenuti assemblati e stilizzati. L&#39;AI interroga i dati strutturati con i metadati. Stessi blocchi. Stessa fonte di verità. Strato di presentazione diverso per ogni consumatore.&lt;/p&gt;
&lt;p&gt;Questo è possibile solo grazie all&#39;architettura a livello di blocco. Ogni pezzo di contenuto è un&#39;unità indirizzabile individualmente con i propri metadati. Può presentare questi blocchi in modo diverso a seconda di chi li richiede:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pubblico&lt;/th&gt;
&lt;th&gt;Esigenze&lt;/th&gt;
&lt;th&gt;Ottiene&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Scrittore&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Formattazione, struttura, collaborazione, metadati&lt;/td&gt;
&lt;td&gt;Ambiente di creazione completo con controlli a livello di blocco&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Lettore&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Testo pulito, gerarchia chiara, scansione veloce&lt;/td&gt;
&lt;td&gt;Vista di lettura focalizzata, nessun chrome di editing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Dati strutturati, punteggi di freschezza, classificazione&lt;/td&gt;
&lt;td&gt;API a livello di blocco con metadati completi&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;Perché questo è più importante di quanto sembri&lt;/h2&gt;
&lt;p&gt;Leggendo questo potrebbe pensare: &amp;quot;Si tratta solo di UI. Viste diverse della stessa cosa. Quanto può essere importante?&amp;quot;.&lt;/p&gt;
&lt;p&gt;Molto importante, a quanto pare.&lt;/p&gt;
&lt;h3&gt;Fiducia dei lettori&lt;/h3&gt;
&lt;p&gt;Le persone si fidano dei contenuti che sembrano pubblicati. Quando una pagina sembra un wiki che chiunque può modificare, i lettori la ignorano inconsciamente. Quando lo stesso contenuto è presentato in una visualizzazione pulita, di qualità editoriale, gode di maggiore autorità. Questo non è irrazionale. È un segnale che qualcuno ha preso sul serio la presentazione, il che implica che ha preso sul serio anche il contenuto.&lt;/p&gt;
&lt;p&gt;Nielsen Norman Group ha studiato questo aspetto in modo approfondito. La loro &lt;a href=&quot;https://www.nngroup.com/articles/trust-signals-content/&quot;&gt;ricerca sulla credibilità dei contenuti&lt;/a&gt; mostra che la qualità del design e la presentazione sono tra i segnali più forti su cui gli utenti fanno affidamento per valutare l&#39;attendibilità dei contenuti. Una vista dell&#39;editore disordinata mina attivamente la credibilità del contenuto che visualizza.&lt;/p&gt;
&lt;h3&gt;Produttività dello scrittore&lt;/h3&gt;
&lt;p&gt;Gli scrittori che lavorano in un ambiente di authoring dedicato non devono scambiare il contesto tra &amp;quot;sto leggendo o sto scrivendo?&amp;quot;. Gli strumenti sono lì perché si suppone che ci siano, non perché l&#39;interfaccia non è in grado di decidere chi la sta guardando.&lt;/p&gt;
&lt;h3&gt;Affidabilità dell&#39;AI&lt;/h3&gt;
&lt;p&gt;Quando i sistemi di AI dispongono di una superficie appositamente costruita con metadati strutturati, possono prendere decisioni migliori su cosa recuperare e cosa escludere. Possono controllare i punteggi di freschezza prima di includere un blocco in una risposta. Possono rispettare le etichette di classificazione. Possono filtrare per lingua, stato o pubblico. Nulla di tutto ciò è possibile quando l&#39;AI esegue lo scraping della stessa pagina HTML progettata per i lettori umani.&lt;/p&gt;
&lt;h2&gt;Il cambiamento del modello mentale&lt;/h2&gt;
&lt;p&gt;Il presupposto fondamentale della maggior parte delle piattaforme di documentazione è: La pagina è l&#39;unità e tutti interagiscono con la pagina.&lt;/p&gt;
&lt;p&gt;Il presupposto di Rasepi è diverso: Il blocco è l&#39;unità, e un pubblico diverso interagisce con i blocchi attraverso superfici appositamente costruite.&lt;/p&gt;
&lt;p&gt;Sembra una piccola distinzione architettonica. Non lo è. È la differenza tra uno strumento che mostra accidentalmente i contenuti ai sistemi di intelligenza artificiale e uno che li serve deliberatamente. Tra un ambiente di scrittura che si dà il caso sia leggibile e un&#39;esperienza di lettura progettata da zero. Tra un&#39;interfaccia sufficiente e tre ottime.&lt;/p&gt;
&lt;p&gt;La documentazione non è più solo scritta e letta. Viene scritta, letta, interrogata, tradotta, valutata, classificata e servita ai sistemi di intelligenza artificiale su scala. Un&#39;unica interfaccia non può essere ottimizzata per tutte queste cose, e pretendere che lo sia è il modo in cui ci siamo ritrovati con wiki che nessuno vuole leggere e assistenti AI che estraggono risposte da pagine che non sono mai state progettate per essere consumate dalla macchina.&lt;/p&gt;
&lt;p&gt;I lettori e gli scrittori sono in modalità mentali diverse. L&#39;AI è in una modalità completamente diversa. L&#39;interfaccia dovrebbe rifletterlo.&lt;/p&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="ux" />
    <category term="documentation" />
    <category term="knowledge-management" />
  </entry>
  <entry>
    <title>Lo stato dei documenti nel 2026: cinque tendenze che definiranno la prossima era</title>
    <link href="https://www.tcdev.de/it/blog/the-state-of-docs-in-2026/" rel="alternate" type="text/html" />
    <id>https://www.tcdev.de/it/blog/the-state-of-docs-in-2026/</id>
    <updated>2026-04-03T00:00:00Z</updated>
    <summary>I lettori di AI sono aumentati del 500%. Notion ha spedito 21.000 agenti. Confluence ha ottenuto Rovo. GitBook ha pubblicato lo Stato dei documenti. Cinque tendenze del settore che ci dicono dove si sta dirigendo la documentazione.</summary>
    <content type="html">&lt;p&gt;Ogni pochi mesi mi ritaglio una mattinata per leggere e basta. Non il codice Rasepi, non i problemi di GitHub. Blog di concorrenti, relazioni di settore, annunci di conferenze, sondaggi tra gli sviluppatori. Tutto ciò che è stato pubblicato nell&#39;ultimo trimestre e che riguarda la documentazione, la gestione della conoscenza o i flussi di lavoro assistiti dall&#39;intelligenza artificiale.&lt;/p&gt;
&lt;p&gt;L&#39;ho fatto la scorsa settimana e il quadro che è emerso è stato più nitido di quanto mi aspettassi. Non perché un singolo annuncio sia stato rivoluzionario, ma perché cinque tendenze distinte stanno convergendo e, quando le si mette in fila, si delinea un quadro molto chiaro di ciò che le piattaforme di documentazione dovranno fare nei prossimi due anni.&lt;/p&gt;
&lt;p&gt;Ecco cosa ho scoperto.&lt;/p&gt;
&lt;h2&gt;1. L&#39;intelligenza artificiale è il lettore principale. Non gli esseri umani.&lt;/h2&gt;
&lt;p&gt;GitBook ha pubblicato un numero impressionante nel suo &lt;a href=&quot;https://www.gitbook.com/blog/ai-docs-data-2025&quot;&gt;rapporto sui dati dei documenti AI&lt;/a&gt;: La lettura della documentazione da parte dell&#39;AI è aumentata di oltre il 500% nel 2025. Cinquecento per cento. Non è un errore di arrotondamento.&lt;/p&gt;
&lt;p&gt;Nel frattempo, il sondaggio di Stack Overflow &lt;a href=&quot;https://survey.stackoverflow.co/2024/&quot;&gt;2024 Developer Survey&lt;/a&gt; ha mostrato che il 61% degli sviluppatori trascorre più di 30 minuti al giorno alla ricerca di risposte. Ma le modalità di ricerca sono cambiate. Il sondaggio di GitHub ha rilevato che &lt;a href=&quot;https://github.blog/news-insights/research/survey-ai-wave-grows/&quot;&gt;il 97% degli sviluppatori aziendali&lt;/a&gt; ha utilizzato strumenti di codifica AI. Entro il 2026, &lt;a href=&quot;https://www.index.dev/blog/developer-productivity-statistics-with-ai-tools&quot;&gt;l&#39;84% degli sviluppatori&lt;/a&gt; utilizzerà quotidianamente strumenti di AI, con il 41% del codice ora generato dall&#39;AI. Queste persone non stanno navigando nella barra laterale del wiki. Chiedono a Claude o a Copilot, e l&#39;AI legge i suoi documenti per loro conto.&lt;/p&gt;
&lt;p&gt;L&#39;implicazione è difficile da sopravvalutare. Il consumatore più frequente della sua documentazione non è più una persona con una scheda del browser aperta. È un modello linguistico che effettua chiamate di recupero. E questo modello non è in grado di guardare una pagina e pensare: &amp;quot;Questo sembra obsoleto&amp;quot;.&lt;/p&gt;
&lt;p&gt;GitBook ha individuato questo problema in anticipo e ha risposto con il rapporto &lt;a href=&quot;https://www.gitbook.com/blog/state-of-docs-2026&quot;&gt;State of Docs 2026&lt;/a&gt; e con una spinta verso i formati leggibili dalla macchina. Ha anche distribuito &lt;a href=&quot;https://www.gitbook.com/blog/skill-md&quot;&gt;skill.md&lt;/a&gt;, una convenzione per la strutturazione delle informazioni sui prodotti specifica per gli agenti AI. Google è andata oltre con il suo &lt;a href=&quot;https://blog.google/innovation-and-ai/technology/developers-tools/gemini-api-docsmcp-agent-skills/&quot;&gt;Gemini API Docs MCP&lt;/a&gt;, che collega gli agenti di codifica alla documentazione corrente tramite il Model Context Protocol. Il loro ragionamento era esplicito: gli agenti generano codice obsoleto perché i loro dati di addestramento hanno una data di scadenza. La correzione MCP ha portato il tasso di superamento della valutazione al 96,3%.&lt;/p&gt;
&lt;p&gt;Quindi la prima tendenza è risolta. L&#39;AI è il lettore principale. Le piattaforme che trattano questo aspetto come un vincolo di progettazione fondamentale, non come una funzione da aggiungere in seguito, avranno un vantaggio strutturale.&lt;/p&gt;
&lt;h2&gt;2. La freschezza e i metadati di fiducia stanno diventando obbligatori&lt;/h2&gt;
&lt;p&gt;Anthropic ha intervistato &lt;a href=&quot;https://www.anthropic.com/81k-interviews&quot;&gt;81.000 utenti Claude&lt;/a&gt; nel dicembre 2025 e ha pubblicato i risultati nel marzo 2026. Si tratta del più grande studio qualitativo sugli utenti di AI mai condotto (159 Paesi, 70 lingue). La preoccupazione più citata? L&#39;inaffidabilità. Il 27% degli intervistati l&#39;ha indicata come la preoccupazione principale e il 79% di loro l&#39;ha sperimentata in prima persona.&lt;/p&gt;
&lt;p&gt;Questo numero dovrebbe tenere sveglio ogni team di documentazione.&lt;/p&gt;
&lt;p&gt;Quando le risposte dell&#39;AI sono inaffidabili, il problema non è sempre il modello. Spesso il modello riproduce fedelmente ciò che ha trovato in un documento obsoleto. Il modello non ha avuto un&#39;allucinazione. I suoi documenti erano semplicemente sbagliati e nessuno li ha segnalati.&lt;/p&gt;
&lt;p&gt;I dati di Stack Overflow lo confermano da un altro punto di vista: &lt;a href=&quot;https://survey.stackoverflow.co/2024/&quot;&gt;L&#39;81% degli sviluppatori&lt;/a&gt; prevede che l&#39;AI sarà maggiormente integrata nel modo in cui documentano il codice nel prossimo anno. Se l&#39;81% dei suoi utenti fornisce documenti all&#39;IA e il 27% degli utenti dell&#39;IA afferma che l&#39;inaffidabilità è il problema principale, si ha un problema di fiducia che nessuna quantità di ingegneria tempestiva può risolvere. La soluzione è alla fonte.&lt;/p&gt;
&lt;p&gt;Ecco perché i metadati di freschezza sono importanti. Non i timestamp &amp;quot;ultima modifica&amp;quot; (questi indicano quando qualcuno ha toccato il file, non se il contenuto è ancora accurato). La vera freschezza: stato di revisione, salute dei link, allineamento delle traduzioni, segnali di lettura, rilevamento della deriva dei contenuti. Metadati che una macchina può leggere e utilizzare per decidere se un documento è sicuro da citare.&lt;/p&gt;
&lt;p&gt;Continuo a tornare ad un semplice inquadramento. La sua documentazione ha bisogno di un punteggio di credito. Non un timestamp. Un punteggio di credito. (Abbiamo costruito esattamente questo con il [sistema di punteggio di freschezza] di Rasepi(/caratteristiche/freschezza), e onestamente, vedere i dati del settore mi rende ancora più convinto che sia la decisione giusta).&lt;/p&gt;
&lt;h2&gt;3. La traduzione sta passando da &amp;quot;progetto&amp;quot; a &amp;quot;pipeline&amp;quot;.&lt;/h2&gt;
&lt;p&gt;A febbraio, DeepL ha pubblicato un articolo intitolato &lt;a href=&quot;https://www.deepl.com/en/blog/six-translation-transformations&quot;&gt;&amp;quot;Le 6 trasformazioni della traduzione che le aziende globali non possono permettersi di perdere&amp;quot;&lt;/a&gt;. La loro argomentazione: la traduzione sta diventando una sfida operativa continua, non un progetto in serie da realizzare trimestralmente.&lt;/p&gt;
&lt;p&gt;Questo corrisponde a tutto ciò che vedo.&lt;/p&gt;
&lt;p&gt;Il vecchio modello era semplice. Scrivere in inglese. Quando dispone di un budget, assume un traduttore o si rivolge a un servizio. Riceve le traduzioni. Le carichi. Fatto fino alla prossima volta. Il problema è che la &amp;quot;prossima volta&amp;quot; arriva sempre più velocemente quando il suo prodotto viene spedito settimanalmente e i documenti vengono aggiornati costantemente. Quando la versione tedesca torna dalla revisione, la fonte inglese è già cambiata due volte.&lt;/p&gt;
&lt;p&gt;Il [Customization Hub] di DeepL (https://www.deepl.com/customization-hub) offre ora glossari, regole di stile e impostazioni di formalità, il che è fantastico. Ma se questi strumenti vivono al di fuori della sua piattaforma di documentazione, lei gestisce una catena di strumenti di traduzione: editor, esportazione, traduzione, revisione, reimport, ripetizione. Ogni passaggio è una possibilità di deriva.&lt;/p&gt;
&lt;p&gt;Notion non ha alcun supporto multilingue nativo. Confluence lo offre attraverso i plugin del mercato. GitBook &lt;a href=&quot;https://www.gitbook.com/blog/new-in-gitbook-august-2025&quot;&gt;ha aggiunto la traduzione automatica nell&#39;agosto 2025&lt;/a&gt;, che è un passo, ma opera a livello di pagina.&lt;/p&gt;
&lt;p&gt;Il vero cambiamento è dal livello di pagina al livello di blocco. Quando si tiene traccia delle traduzioni a livello di paragrafo, si ritraduce solo ciò che è effettivamente cambiato. Una modifica tipica tocca forse due paragrafi su quaranta. Si tratta del 94% di lavoro di traduzione in meno. (Questa è l&#39;architettura di traduzione principale di Rasepi e, onestamente, la cosa di cui sono più orgoglioso del prodotto. Ma anche se ci mettiamo da parte, la direzione del settore è chiara: la traduzione continua, incrementale e incorporata è la direzione da seguire).&lt;/p&gt;
&lt;h2&gt;4. Gli agenti AI hanno bisogno di contenuti strutturati, non di pagine wiki.&lt;/h2&gt;
&lt;p&gt;Questo aspetto si è cristallizzato per me quando Notion ha annunciato &lt;a href=&quot;https://www.notion.com/blog/introducing-custom-agents&quot;&gt;Custom Agents&lt;/a&gt; a febbraio. 21.000 agenti costruiti durante l&#39;accesso anticipato. Agenti che rispondono alle domande delle basi di conoscenza, instradano i compiti, compilano rapporti sullo stato. Solo la Rampa ha oltre 300 agenti.&lt;/p&gt;
&lt;p&gt;Atlassian ha seguito una direzione simile. &lt;a href=&quot;https://www.atlassian.com/blog/confluence/create-and-edit-with-rovo&quot;&gt;Rovo AI in Confluence&lt;/a&gt; estrae il contesto da tutte le applicazioni Atlassian e di terze parti per generare contenuti. La loro proposta: &amp;quot;Contenuti ricchi di contesto e di alta qualità, basati sul lavoro esistente del suo team&amp;quot;.&lt;/p&gt;
&lt;p&gt;E poi Anthropic ha lanciato &lt;a href=&quot;https://www.anthropic.com/news/claude-opus-4-6&quot;&gt;team di agenti in Claude Code&lt;/a&gt;, dove più agenti AI si coordinano autonomamente su compiti complessi. Opus 4.6 ha ottenuto un punteggio del 76% nel benchmark MRCR a 8 aghi 1M (rispetto al 18,5% del modello precedente), il che significa che è in grado di recuperare informazioni sepolte in profondità in enormi serie di documenti senza perdere la traccia.&lt;/p&gt;
&lt;p&gt;Tutte e tre le aziende stanno costruendo agenti che consumano documentazione. Nessuna di loro ha risolto il problema della qualità delle fonti.&lt;/p&gt;
&lt;p&gt;La documentazione degli agenti personalizzati di Notion riconosce esplicitamente il &lt;a href=&quot;https://www.notion.com/blog/introducing-custom-agents&quot;&gt;prompt injection risk&lt;/a&gt; quando gli agenti leggono contenuti non attendibili. Rovo di Atlassian prende tutto ciò che trova in Confluence. Se quel contenuto è vecchio di tre mesi, Rovo non lo sa. Ci costruisce sopra comunque.&lt;/p&gt;
&lt;p&gt;Affinché gli agenti funzionino in modo affidabile, hanno bisogno di più di pagine di testo. Hanno bisogno di contenuti strutturati con identificatori stabili, segnali di freschezza espliciti, metadati di classificazione chiari e la capacità di distinguere &amp;quot;questo è attuale e revisionato&amp;quot; da &amp;quot;questo esiste ma nessuno lo ha toccato in un anno&amp;quot;. Le pagine Wiki non forniscono tutto questo. Lo fanno i contenuti strutturati a livello di blocco con metadati di fiducia.&lt;/p&gt;
&lt;h2&gt;5. L&#39;open source e il self-hosting stanno tornando in auge&lt;/h2&gt;
&lt;p&gt;Quest&#39;ultimo è più un&#39;intuizione supportata da dati che un singolo annuncio.&lt;/p&gt;
&lt;p&gt;GitBook &lt;a href=&quot;https://www.gitbook.com/blog/free-open-source-documentation&quot;&gt;open-sourced la propria documentazione pubblicata&lt;/a&gt; alla fine del 2024 e ha lanciato un fondo OSS. Il loro ragionamento: i progetti open source meritano strumenti di documentazione gratuiti e di alta qualità. Ma la mossa segnala anche qualcosa di più ampio.&lt;/p&gt;
&lt;p&gt;Notion è solo cloud. Non esiste un&#39;opzione self-hosted. Confluence Data Center esiste, ma richiede una licenza. Quando la sua piattaforma di documentazione contiene le sue conoscenze operative più sensibili (playbook sugli incidenti, procedure di conformità, decisioni sull&#39;architettura), la domanda &amp;quot;chi controlla questi dati?&amp;quot; non è astratta.&lt;/p&gt;
&lt;p&gt;Il post di Anthropic &lt;a href=&quot;https://www.anthropic.com/news/claude-is-a-space-to-think&quot;&gt;&amp;quot;Claude è uno spazio per pensare&amp;quot;&lt;/a&gt; di febbraio contiene un&#39;argomentazione interessante sulla fiducia e sui modelli di business. La loro affermazione principale: gli incentivi pubblicitari sono incompatibili con un assistente AI veramente utile. Hanno scelto di rimanere senza pubblicità, in modo che gli utenti possano fidarsi dello strumento.&lt;/p&gt;
&lt;p&gt;Penso che ci sia un parallelo per le piattaforme di documentazione. Se il suo sistema di documentazione è closed-source e solo cloud, non può verificare ciò che alimenta l&#39;AI. Non può verificare i calcoli di freschezza. Non può assicurarsi che i suoi dati rimangano sotto il suo controllo. Per i team che stanno implementando assistenti AI in cima alla loro base di conoscenze (e sempre più spesso lo fanno tutti), la verificabilità è importante.&lt;/p&gt;
&lt;p&gt;Non si tratta di una polemica sul fatto che l&#39;open source sia moralmente superiore. I prodotti closed-source possono assolutamente essere affidabili. Ma quando si costruiscono flussi di lavoro basati sull&#39;AI in cima alla propria documentazione interna, la possibilità di ispezionare e verificare il sistema è un vantaggio pratico. Per noi, la licenza MIT di Rasepi non è stata un ripensamento. Si è trattato di una decisione progettuale radicata nella stessa logica: l&#39;infrastruttura di documentazione deve essere verificabile.&lt;/p&gt;
&lt;h2&gt;Cosa significano queste cinque tendenze insieme&lt;/h2&gt;
&lt;p&gt;Singolarmente, ognuna di queste tendenze è gestibile. L&#39;intelligenza artificiale legge i suoi documenti? Ok, aggiunga dei metadati leggibili dalla macchina. La freschezza è importante? Bene, aggiunga delle date di revisione. La traduzione deve essere continua? Certo, integri DeepL. Gli agenti hanno bisogno di una struttura? Bene, migliori il suo modello di contenuti. La sovranità è importante? Ottimo, offra un&#39;opzione self-hosted.&lt;/p&gt;
&lt;p&gt;Ma nel loro insieme, descrivono una piattaforma che appare fondamentalmente diversa da quella che la maggior parte dei team utilizza oggi.&lt;/p&gt;
&lt;p&gt;Il divario è architettonico. Non si tratta di cinque funzionalità da aggiungere. Sono cinque presupposti che devono essere integrati nelle fondamenta. Come vengono archiviati i contenuti (a livello di blocco, non di pagina). Come viene modellata la fiducia (punteggi di freschezza, non timestamp). Come funziona la traduzione (incrementale, incorporata, per paragrafo). Come gli agenti AI accedono ai contenuti (API strutturate con metadati, non scrapes di pagine). Come vengono controllati i dati (aperti, verificabili, auto-ostabili).&lt;/p&gt;
&lt;p&gt;Nessuna piattaforma consolidata è stata progettata su tutti e cinque questi aspetti contemporaneamente. Alcune le stanno aggiungendo pezzo per pezzo. GitBook si sta muovendo più velocemente sul fronte della leggibilità AI. Notion sta costruendo un&#39;infrastruttura di agenti. Atlassian ha una distribuzione aziendale.&lt;/p&gt;
&lt;p&gt;Ma progettare per tutti e cinque fin dal primo giorno? Questo è il vantaggio di iniziare da zero quando il terreno si sposta.&lt;/p&gt;
&lt;p&gt;Mi rendo conto di essere di parte. Abbiamo costruito Rasepi proprio perché abbiamo visto queste tendenze convergere e volevamo una piattaforma che le assumesse tutte fin dall&#39;inizio. Traduzione a livello di blocco, scadenza forzata, punteggio di freschezza, contenuti strutturati pronti per l&#39;AI, open source. È la tesi dell&#39;intero progetto.&lt;/p&gt;
&lt;p&gt;Ma anche se non esistessimo, credo che qualsiasi lettura onesta di ciò che è accaduto nel primo trimestre del 2026 punti nella stessa direzione. La documentazione sta diventando un&#39;infrastruttura. E l&#39;infrastruttura ha requisiti diversi dalle pagine wiki.&lt;/p&gt;
&lt;p&gt;I team che lo capiranno per primi non avranno solo una documentazione migliore. Avranno agenti AI più affidabili, costi di traduzione più bassi, meno sorprese di conformità e basi di conoscenza che rimarranno effettivamente affidabili nel tempo.&lt;/p&gt;
&lt;p&gt;Questo è lo stato dei documenti nel 2026. La questione non è se queste tendenze sono reali. Si tratta di capire se la sua piattaforma è stata progettata per loro.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Cinque tendenze. Una domanda architettonica: la sua piattaforma di documentazione è stata progettata per il 2026, o sta ancora servendo ipotesi del 2016?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;em&gt;Fonti: &lt;a href=&quot;https://www.gitbook.com/blog/ai-docs-data-2025&quot;&gt;GitBook AI docs data report&lt;/a&gt;, &lt;a href=&quot;https://www.gitbook.com/blog/state-of-docs-2026&quot;&gt;GitBook State of Docs 2026&lt;/a&gt;, &lt;a href=&quot;https://www.gitbook.com/blog/skill-md&quot;&gt;GitBook skill.md&lt;/a&gt;, &lt;a href=&quot;https://blog.google/innovation-and-ai/technology/developers-tools/gemini-api-docsmcp-agent-skills/&quot;&gt;Google Gemini API Docs MCP&lt;/a&gt;, &lt;a href=&quot;https://survey.stackoverflow.co/2024/&quot;&gt;Stack Overflow 2024 Developer Survey&lt;/a&gt;, &lt;a href=&quot;https://github.blog/news-insights/research/survey-ai-wave-grows/&quot;&gt;GitHub 2024 developer survey&lt;/a&gt;, &lt;a href=&quot;https://www.index.dev/blog/developer-productivity-statistics-with-ai-tools&quot;&gt;Index.dev developer productivity statistics&lt;/a&gt;, &lt;a href=&quot;https://www.anthropic.com/81k-interviste&quot;&gt;Anthropic &amp;quot;What 81,000 People Want from AI&amp;quot;&lt;/a&gt;, &lt;a href=&quot;https://www.anthropic.com/news/claude-is-a-space-to-think&quot;&gt;Anthropic &amp;quot;Claude è uno spazio per pensare&amp;quot;&lt;/a&gt;, &lt;a href=&quot;https://www.anthropic.com/news/claude-opus-4-6&quot;&gt;Claude Opus 4.6&lt;/a&gt;, &lt;a href=&quot;https://www.notion.com/blog/introducing-custom-agents&quot;&gt;Notion Custom Agents&lt;/a&gt;, &lt;a href=&quot;https://www.atlassian.com/blog/confluence/create-and-edit-with-rovo&quot;&gt;Atlassian Rovo in Confluence&lt;/a&gt;, &lt;a href=&quot;https://www.deepl.com/en/blog/six-translation-transformations&quot;&gt;DeepL &amp;quot;6 trasformazioni di traduzione&amp;quot;&lt;/a&gt;, &lt;a href=&quot;https://www.deepl.com/customization-hub&quot;&gt;DeepL Customization Hub&lt;/a&gt;, &lt;a href=&quot;https://www.gitbook.com/blog/free-open-source-documentation&quot;&gt;GitBook open source documentation&lt;/a&gt;, &lt;a href=&quot;https://www.gitbook.com/blog/new-in-gitbook-august-2025&quot;&gt;GitBook auto-translate&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="ai" />
    <category term="documentation" />
    <category term="platforms" />
  </entry>
  <entry>
    <title>Costruttori, non sviluppatori: Come Claude ha cambiato il destinatario dei suoi documenti</title>
    <link href="https://www.tcdev.de/it/blog/builders-not-developers-how-claude-changed-devrel/" rel="alternate" type="text/html" />
    <id>https://www.tcdev.de/it/blog/builders-not-developers-how-claude-changed-devrel/</id>
    <updated>2026-04-02T00:00:00Z</updated>
    <summary>La persona che integra la sua API non legge più i suoi documenti. Si siede in Claude e descrive ciò che vuole. Le relazioni con gli sviluppatori, la documentazione API e l&#39;intero funnel di avvio devono essere ripensati per questa nuova realtà.</summary>
    <content type="html">&lt;p&gt;C&#39;è una persona che in questo momento, da qualche parte, sta integrando la sua API. Non sono sul suo sito di documentazione. Non hanno aperto la sua guida introduttiva. Non hanno mai visto il suo parco giochi interattivo o la sua navigazione laterale accuratamente progettata.&lt;/p&gt;
&lt;p&gt;Sono seduti in Claude. O Copilot. O in Cursor. Hanno digitato qualcosa come &lt;em&gt;&amp;quot;integra l&#39;API di fatturazione di Stripe con la mia applicazione Next.js utilizzando l&#39;app router&amp;quot;&lt;/em&gt; e hanno atteso il ritorno del codice funzionante. L&#39;AI ha letto i documenti per conto loro. Ha trovato gli endpoint pertinenti, ha compreso il flusso di autenticazione, ha scelto i metodi SDK giusti e ha prodotto un&#39;implementazione.&lt;/p&gt;
&lt;p&gt;Due settimane fa, allo Start Summit Hackathon di San Gallo, ho assistito a questo processo in tempo reale. Stavo parlando con un gruppo di studenti di informatica e un paio di fondatori di startup in fase iniziale su come approcciano le nuove API, e ognuno di loro ha descritto lo stesso flusso di lavoro: incollare il problema in un&#39;intelligenza artificiale, ricevere il codice indietro, iterare da lì. Una delle studentesse ha riso quando le ho chiesto se avesse letto i documenti. &amp;quot;Perché dovrei? Claude li legge per me&amp;quot;.&lt;/p&gt;
&lt;p&gt;La persona non ha mai visitato il suo sito. Potrebbe non visitare mai il suo sito. E questo è sempre più spesso il modo in cui viene costruito il software.&lt;/p&gt;
&lt;h2&gt;Il cambiamento fondamentale&lt;/h2&gt;
&lt;p&gt;La documentazione oggi ha due consumatori fondamentalmente diversi: gli esseri umani che la leggono e gli assistenti AI che la leggono per conto dei costruttori. La maggior parte della documentazione è ottimizzata esclusivamente per gli esseri umani. L&#39;AI è già il lettore dominante.&lt;/p&gt;
&lt;p&gt;Questo cambia tutto a valle:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Quando un&#39;IA serve contenuti stantii, il costruttore non ha modo di rilevare il problema. Il danno si aggrava in modo silenzioso.&lt;/li&gt;
&lt;li&gt;I responsabili di prodotto, i progettisti e gli analisti stanno distribuendo software attraverso gli assistenti AI, spesso senza aver mai letto una riga di documentazione.&lt;/li&gt;
&lt;li&gt;La struttura leggibile dalla macchina è più importante del design visivo.** Un markdown pulito, blocchi autocontenuti e metadati espliciti sono ciò che consente all&#39;AI di rappresentare il suo prodotto in modo accurato.&lt;/li&gt;
&lt;li&gt;I requisiti di formato si sono divisi.** I lettori umani hanno bisogno di narrazione. Gli intermediari dell&#39;intelligenza artificiale hanno bisogno di specifiche strutturate e analizzabili. Lei deve servire entrambi.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il resto di questo post spiega come siamo arrivati a questo punto, cosa significa per DevRel e cosa può fare in questo momento.&lt;/p&gt;
&lt;h2&gt;Il viaggio che nessuno ha pianificato&lt;/h2&gt;
&lt;p&gt;Per molto tempo, le relazioni con gli sviluppatori hanno seguito un percorso ben compreso. Avete scritto una documentazione completa. Ha pubblicato guide rapide. Ha tenuto conferenze. Ha mantenuto una presenza su Stack Overflow. Ha reso i suoi riferimenti API ricercabili, i suoi SDK idiomatici, i suoi messaggi di errore utili.&lt;/p&gt;
&lt;p&gt;Questo percorso presupponeva che lo sviluppatore leggesse i suoi contenuti. Naviga nella sua struttura. Seguire i suoi passi.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.blog/news-insights/research/survey-ai-wave-grows/&quot;&gt;Il sondaggio sugli sviluppatori 2024 di GitHub&lt;/a&gt; ha rilevato che il 97% degli sviluppatori aziendali ha utilizzato strumenti di codifica AI in qualche momento. &lt;a href=&quot;https://survey.stackoverflow.co/2024/&quot;&gt;Il sondaggio annuale di Stack Overflow&lt;/a&gt; ha evidenziato che il 76% di tutti gli sviluppatori sta utilizzando o pianificando l&#39;utilizzo di strumenti di AI, con il 62% dei professionisti che li utilizzano attivamente giorno per giorno. Entro il 2026, questo numero &lt;a href=&quot;https://www.index.dev/blog/developer-productivity-statistics-with-ai-tools&quot;&gt;salirà all&#39;84%&lt;/a&gt;, con il 41% di tutto il codice ora generato dall&#39;AI e il 51% degli sviluppatori professionisti che utilizzano quotidianamente gli strumenti di AI. Questi numeri non stanno rallentando.&lt;/p&gt;
&lt;p&gt;Il nuovo viaggio ha un aspetto diverso. Qualcuno descrive ciò che vuole in linguaggio naturale. Un assistente AI legge la documentazione, trova le sezioni pertinenti e genera l&#39;integrazione. Il costruttore esamina il risultato, forse perfeziona la richiesta, forse chiede un follow-up. Minuti, non ore.&lt;/p&gt;
&lt;p&gt;L&#39;imbuto di avvio che i team DevRel hanno perfezionato per anni? Viene aggirato. Non perché fosse sbagliato. Il punto di ingresso si è semplicemente spostato.&lt;/p&gt;
&lt;h2&gt;Due consumatori, una serie di documenti&lt;/h2&gt;
&lt;p&gt;La documentazione ora ha due destinatari fondamentalmente diversi.&lt;/p&gt;
&lt;p&gt;Il primo è il lettore umano. Questa persona esiste ancora. Si presenta per le decisioni sull&#39;architettura, il debugging dei casi limite, la revisione della conformità e la comprensione concettuale. Vogliono spiegazioni narrative, materiale di riferimento ben organizzato e un ragionamento chiaro sui compromessi.&lt;/p&gt;
&lt;p&gt;Il secondo è l&#39;intermediario AI. Legge la sua documentazione per conto di un costruttore. Non gli interessa la barra laterale. Non apprezza il suo design visivo. Ha bisogno di un contenuto strutturato, interpretabile dalla macchina: markdown pulito, formattazione coerente, specifiche esplicite su cui poter ragionare senza ambiguità.&lt;/p&gt;
&lt;p&gt;Quasi tutti i siti di documentazione oggi sono ottimizzati esclusivamente per il primo pubblico. Il secondo pubblico è già il consumatore dominante.&lt;/p&gt;
&lt;p&gt;Jeremy Howard ha identificato questa tensione quando &lt;a href=&quot;https://llmstxt.org/&quot;&gt;ha proposto lo standard /llms.txt&lt;/a&gt; nel 2024. La sua osservazione era precisa: &lt;em&gt;&amp;quot;I modelli linguistici di grandi dimensioni si basano sempre più sulle informazioni del sito web, ma devono affrontare una limitazione critica: le finestre di contesto sono troppo piccole per gestire la maggior parte dei siti web nella loro interezza.&amp;quot;&lt;/em&gt; La proposta è semplice. Un file markdown curato in &lt;code&gt;/llms.txt&lt;/code&gt; che fornisca ai modelli AI una panoramica strutturata del suo prodotto e i link alle risorse più importanti. FastHTML, i documenti di Anthropic e una &lt;a href=&quot;https://llmstxt.site/&quot;&gt;crescente directory di progetti&lt;/a&gt; ne forniscono ora uno.&lt;/p&gt;
&lt;p&gt;È una convenzione utile. Ma è anche un sintomo di un problema più profondo. Il vero problema non è il formato. È che la maggior parte della documentazione non è mai stata progettata pensando al consumo da parte delle macchine.&lt;/p&gt;
&lt;h2&gt;Il costruttore non sta tagliando le curve&lt;/h2&gt;
&lt;p&gt;C&#39;è la tentazione di guardare la persona che richiede Claude invece di leggere la documentazione e concludere che sta prendendo delle scorciatoie. Che non capisce veramente cosa succede nel codice. Che sia in qualche modo uno sviluppatore inferiore.&lt;/p&gt;
&lt;p&gt;Ho avuto questa conversazione abbastanza volte per sapere che di solito è sbagliata.&lt;/p&gt;
&lt;p&gt;Molti di questi costruttori sono ingegneri senior che fanno scelte di efficienza deliberate. Capiscono il codice, ma non vogliono navigare in quattro pagine di documentazione per trovare le tre righe di cui hanno effettivamente bisogno. Hanno imparato che un assistente AI può estrarre quelle righe più velocemente di quanto possano fare loro, quindi delegano la lettura. (Onestamente, lo faccio anch&#39;io. Non riesco a ricordare l&#39;ultima volta che ho letto una guida introduttiva da cima a fondo).&lt;/p&gt;
&lt;p&gt;Anthropic ha riconosciuto questo schema quando ha creato il &lt;a href=&quot;https://modelcontextprotocol.io/introduction&quot;&gt;Model Context Protocol&lt;/a&gt;. L&#39;MCP è ora supportato da Claude, ChatGPT, VS Code, Cursor e altri. È esplicitamente progettato in modo che gli assistenti AI possano accedere a sistemi esterni, estrarre il contesto e agire su di esso. Le specifiche lo descrivono come in grado di fornire &lt;em&gt;&amp;quot;l&#39;accesso a un ecosistema di fonti di dati, strumenti e applicazioni che potenzieranno le capacità e miglioreranno l&#39;esperienza dell&#39;utente finale&amp;quot;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Lo legga attentamente. Si tratta di un linguaggio di infrastruttura, non di convenienza. I costruttori che utilizzano questi strumenti non stanno evitando il lavoro. Stanno lavorando attraverso un nuovo livello, e la sua documentazione fa parte di quel livello, che lei l&#39;abbia progettato o meno.&lt;/p&gt;
&lt;p&gt;I numeri lo confermano. La sola Claude gestisce oggi &lt;a href=&quot;https://www.incremys.com/en/resources/blog/claude-statistics&quot;&gt;25 miliardi di chiamate API al mese&lt;/a&gt;, con 30 milioni di utenti attivi mensili in 159 Paesi. Il &lt;a href=&quot;https://www.incremys.com/en/resources/blog/claude-statistics&quot;&gt;70% delle aziende Fortune 100&lt;/a&gt; utilizza Claude. Secondo un sondaggio di Menlo Ventures, Anthropic detiene &lt;a href=&quot;https://fortune.com/2025/12/02/how-anthropics-safety-first-approach-won-over-big-business-and-how-its-own-engineers-are-using-its-claude-ai/&quot;&gt;il 32% della quota di mercato dell&#39;AI aziendale per utilizzo del modello&lt;/a&gt;, davanti a OpenAI con il 25%. Un rapporto di ricerca di HSBC lo colloca ancora più in alto: 40% della spesa totale in AI. Non si tratta di strumenti sperimentali. Sono infrastrutture primarie.&lt;/p&gt;
&lt;h2&gt;Le relazioni con gli sviluppatori sono state costruite per un&#39;altra epoca.&lt;/h2&gt;
&lt;p&gt;Se la sua strategia DevRel è stata progettata prima del 2023, è stata pensata per un mondo in cui gli sviluppatori leggevano direttamente i documenti. Quel mondo non è scomparso, ma non è più il modello di interazione dominante per una quota crescente di costruttori.&lt;/p&gt;
&lt;p&gt;Questo cambia il calcolo di diverse attività DevRel di lunga data.&lt;/p&gt;
&lt;p&gt;**Una presentazione di 45 minuti ad una conferenza di sviluppatori raggiunge una sala di poche centinaia di persone. Un file &lt;code&gt;/llms.txt&lt;/code&gt; ben strutturato e una documentazione pulita leggibile dalla macchina raggiungono ogni costruttore che chiede a qualsiasi assistente AI informazioni sul suo prodotto, continuamente, in qualsiasi momento. Il colloquio è un evento unico. La documentazione leggibile dalla macchina si compone. Non sto dicendo che le conferenze siano inutili (sono appena tornato da una di queste), ma l&#39;equazione della leva è cambiata.&lt;/p&gt;
&lt;p&gt;**Il classico tutorial di avvio rapido in cinque fasi è sempre più una formalità. Il costruttore non segue i passi. Descrive ciò che desidera e si aspetta che l&#39;AI produca l&#39;integrazione. Se l&#39;API è ben documentata in un formato facile da usare, l&#39;AI gestisce l&#39;esperienza di avvio in modo più efficiente di quanto potrebbe fare qualsiasi tutorial. Le esercitazioni dovrebbero invece diventare materiale concettuale: spiegare perché scegliere l&#39;approccio A rispetto all&#39;approccio B. L&#39;IA può generare l&#39;implementazione. È molto meno affidabile nello spiegare i compromessi.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stack Overflow.&lt;/strong&gt; I dati del loro sondaggio mostrano che &lt;a href=&quot;https://survey.stackoverflow.co/2024/&quot;&gt;l&#39;84% degli sviluppatori&lt;/a&gt; utilizza direttamente la documentazione tecnica, con il 90% di questi che si affida ai documenti all&#39;interno dei pacchetti API e SDK. Ma il modo in cui &lt;em&gt;accedono&lt;/em&gt; a questi documenti è sempre più spesso attraverso un livello AI, non una scheda del browser. Le domande che ancora arrivano a Stack Overflow tendono ad essere quelle difficili. Casi limite, debug di produzione, cose che richiedono sfumature. Preziose, certo. Ma non è più il luogo in cui si concentra il volume.&lt;/p&gt;
&lt;h2&gt;Quando l&#39;AI legge i suoi documenti, la freschezza diventa fondamentale&lt;/h2&gt;
&lt;p&gt;Ecco la parte a cui la maggior parte dei team non ha pensato.&lt;/p&gt;
&lt;p&gt;Quando un umano legge una pagina di documentazione, può applicare un giudizio. Potrebbe notare che le schermate sembrano vecchie, o che un commento in fondo dice che il processo è cambiato. Può strizzare l&#39;occhio e pensare: &amp;quot;Sembra una cosa superata&amp;quot;.&lt;/p&gt;
&lt;p&gt;Un assistente AI non può fare nulla di tutto ciò. Legge il testo, lo elabora come fatto e genera una risposta con piena fiducia. Se la documentazione descrive un endpoint deprecato, l&#39;AI consiglierà allegramente di integrarlo. Se la documentazione fa riferimento a un&#39;infrastruttura che è stata sostituita sei mesi fa, l&#39;AI descriverà la vecchia configurazione come attuale. Senza esitazioni.&lt;/p&gt;
&lt;p&gt;Ed ecco la cosa che rende tutto questo peggiore di quanto sembri: Il &lt;a href=&quot;https://www.index.dev/blog/developer-productivity-statistics-with-ai-tools&quot;&gt;66% degli sviluppatori&lt;/a&gt; afferma già che il problema principale degli strumenti di AI è che forniscono risultati &amp;quot;quasi giusti ma non del tutto&amp;quot;. La documentazione obsoleta alimenta direttamente questo problema. L&#39;AI non ha le allucinazioni. Sta riproducendo fedelmente contenuti obsoleti e il costruttore non ha modo di capire la differenza.&lt;/p&gt;
&lt;p&gt;Il costruttore si fida dell&#39;AI. L&#39;AI si fida della documentazione. Se la documentazione è obsoleta, questa catena di fiducia fornisce una risposta sicura e sbagliata.&lt;/p&gt;
&lt;p&gt;Questo è sempre stato un problema, ovviamente. I contenuti obsoleti hanno sempre confuso le persone. Ma il danno era contenuto perché i lettori umani potevano a volte individuarlo. Gli intermediari AI non possono. Amplificano i contenuti stantii servendoli in scala, con autorità, a persone che non hanno motivo di dubitarne.&lt;/p&gt;
&lt;p&gt;La freschezza non è più un problema di qualità dei contenuti. È un problema di affidabilità per ogni flusso di lavoro alimentato dall&#39;AI che tocca i suoi documenti.&lt;/p&gt;
&lt;h2&gt;La parola &amp;quot;sviluppatore&amp;quot; è troppo ristretta&lt;/h2&gt;
&lt;p&gt;Le persone che costruiscono software nel 2026 non si identificano tutte come sviluppatori. Alcuni sono designer che chiedono a Claude di costruire un prototipo funzionante. Alcuni sono manager di prodotto che usano Cursor per distribuire strumenti interni. Alcuni sono analisti di dati che descrivono una pipeline di dati in linguaggio naturale e lasciano che un agente la assembli. Allo Start Summit, la metà dei team dell&#39;hackathon aveva membri con un background di programmazione pari a zero, che alla fine del weekend stavano inviando software funzionante.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://ramp.com/&quot;&gt;Ramp&lt;/a&gt; è un esempio utile. L&#39;azienda fintech è passata da una valutazione di 5,8 miliardi di dollari nel 2023 a &lt;a href=&quot;https://techcrunch.com/2025/11/17/ramp-hits-32b-valuation-just-three-months-after-hitting-22-5b/&quot;&gt;32 miliardi di dollari entro la fine del 2025&lt;/a&gt;, superando il miliardo di dollari di fatturato annualizzato lungo il percorso. Una delle startup a crescita più rapida della storia. Una parte molto discussa del loro approccio: i product manager costruiscono le funzionalità direttamente con gli strumenti di AI, invece di aspettare in un backlog di ingegneria. I PM di Ramp non si limitano a scrivere le specifiche. Inviano il codice. L&#39;AI gestisce l&#39;implementazione. Il PM gestisce l&#39;intento.&lt;/p&gt;
&lt;p&gt;Non è una scorciatoia. Un nuovo modello operativo, che sta funzionando su una scala tale da rendere difficile liquidarlo come un esperimento.&lt;/p&gt;
&lt;p&gt;Lo studio interno di Anthropic è rivelatore. Quando &lt;a href=&quot;https://fortune.com/2025/12/02/how-anthropics-safety-first-approach-won-over-big-business-and-how-its-own-engineers-are-using-its-claude-ai/&quot;&gt;hanno intervistato 132 dei loro ingegneri&lt;/a&gt; su come utilizzano Claude, gli ingegneri hanno riferito di utilizzarlo per circa il 60% delle loro attività lavorative. Gli usi più comuni? Debuggare il codice esistente, capire cosa fanno le parti della base di codice e implementare nuove funzionalità. Gli ingegneri hanno detto che tendono a passare a Claude compiti &amp;quot;non complessi, ripetitivi, dove la qualità del codice non è critica&amp;quot;. E il 27% del lavoro che svolgono ora con Claude semplicemente non sarebbe stato svolto prima.&lt;/p&gt;
&lt;p&gt;Questo è il team di Anthropic. Le persone che hanno costruito il modello lo usano come lettore di documentazione, come navigatore della base di codice e come generatore di prime bozze. Tutti gli altri stanno facendo lo stesso, solo con la propria documentazione invece che con la loro.&lt;/p&gt;
&lt;p&gt;Anthropic ha deciso di chiamare questa persona &amp;quot;costruttore&amp;quot;. I loro strumenti sono progettati non solo per gli ingegneri informatici professionisti, ma per chiunque sia in grado di descrivere ciò che vuole costruire. Quando Claude può creare un&#39;applicazione full-stack da un progetto Figma tramite MCP, la linea tradizionale tra &amp;quot;sviluppatore&amp;quot; e &amp;quot;non sviluppatore&amp;quot; si dissolve.&lt;/p&gt;
&lt;p&gt;Questo ha implicazioni reali per chiunque gestisca la documentazione o si preoccupi dell&#39;esperienza degli sviluppatori. Il suo pubblico non è più limitato alle persone che sanno cos&#39;è un endpoint REST. Include tutti coloro il cui assistente AI potrebbe interagire con il suo prodotto. Il PM di Ramp che invia una funzionalità utilizzando la sua API? Probabilmente non leggerà mai direttamente la sua documentazione. Il loro agente AI lo farà assolutamente.&lt;/p&gt;
&lt;h2&gt;Cosa significa questo per la documentazione&lt;/h2&gt;
&lt;p&gt;Se la documentazione ora serve due pubblici, i lettori umani e gli intermediari AI, deve funzionare per entrambi. Sembra ovvio. In pratica, quasi nessuno lo fa.&lt;/p&gt;
&lt;p&gt;Ecco cosa penso sia importante:&lt;/p&gt;
&lt;p&gt;**Se i suoi documenti API sono una pagina HTML splendidamente renderizzata che un LLM deve analizzare e analizzare, l&#39;AI sta lavorando più duramente di quanto dovrebbe. Spedisca la specifica OpenAPI grezza insieme alla versione renderizzata. Spedire un markdown pulito. Rendere le specifiche accessibili senza richiedere all&#39;intelligenza artificiale di interpretare il layout della pagina.&lt;/p&gt;
&lt;p&gt;**Gli assistenti AI non consumano la documentazione pagina per pagina. Estraggono le sezioni rilevanti. Un documento con intestazioni chiare, paragrafi autocontenuti e una semantica esplicita a livello di blocco è molto più utile per un&#39;IA rispetto a una narrazione fluida che richiede la lettura dell&#39;intera pagina per il contesto.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Segnali di fiducia che le macchine sanno leggere.&lt;/strong&gt; Quando è stato rivisto l&#39;ultima volta questo documento? È ancora attuale? Il contenuto è stato segnalato? Questi segnali devono esistere in una forma accessibile all&#39;AI, non solo come indicazioni visive su una pagina web. Un punteggio di freschezza, uno stato di scadenza, una data di revisione, questi sono i metadati che permettono all&#39;IA di decidere se un documento è sicuro da usare come fonte.&lt;/p&gt;
&lt;p&gt;**Quando un assistente AI serve a un costruttore una risposta sicura basata su un endpoint deprecato, il danno è peggiore di un 404. Il costruttore ci costruisce sopra. Il costruttore ci costruisce sopra. Lo spedisce. Poi si rompe in produzione e nessuno sa perché, finché qualcuno non risale alla documentazione che avrebbe dovuto essere aggiornata mesi fa. Ogni documento a cui un&#39;AI potrebbe fare riferimento ha bisogno di un meccanismo per dimostrare che è ancora aggiornato. (Questo è, in tutta franchezza, esattamente il problema che stiamo costruendo Rasepi per risolvere. La scadenza forzata dei blocchi di documentazione impedisce ai contenuti obsoleti di nascondersi).&lt;/p&gt;
&lt;h2&gt;Per iniziare: verificare la documentazione attuale&lt;/h2&gt;
&lt;p&gt;Se ha letto fino a questo punto e sta pensando &amp;quot;Ok, ma cosa devo fare effettivamente lunedì?&amp;quot;, ecco quattro cose concrete che può controllare questa settimana.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Provi i suoi documenti attraverso un&#39;AI.&lt;/strong&gt; Apra Claude o ChatGPT e gli chieda di integrare il suo prodotto in uno scenario realistico. Non utilizzi le sue conoscenze interne. Guardi semplicemente ciò che l&#39;AI produce. È corretto? È attuale? Utilizza i giusti endpoint, la giusta versione dell&#39;SDK, il giusto flusso di autenticazione? Se l&#39;AI sbaglia, è quello che i costruttori stanno ottenendo in questo momento.&lt;/p&gt;
&lt;p&gt;**2. Scelga le cinque pagine di documentazione più visitate e si chieda: quando è stata fatta l&#39;ultima revisione? Descrive ancora lo stato attuale del prodotto? Se non può rispondere con sicurezza, non può farlo nemmeno l&#39;AI. Questa è la soluzione più efficace per la maggior parte dei team.&lt;/p&gt;
&lt;p&gt;**3. Se non ha un file &lt;code&gt;/llms.txt&lt;/code&gt;, ne crei uno. Se il suo riferimento API è disponibile solo come HTML renderizzato, esporti la specifica OpenAPI grezza e la renda accessibile. Se i suoi documenti si trovano in un CMS che non produce un markdown pulito, è un problema che vale la pena risolvere subito.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Aggiunga date di revisione e metadati di freschezza.&lt;/strong&gt; Anche qualcosa di semplice, un campo &lt;code&gt;last-reviewed&lt;/code&gt; nel suo sistema di gestione dei contenuti, un ciclo di revisione obbligatorio per le pagine ad alto traffico. In questo modo, sia gli esseri umani che l&#39;intelligenza artificiale ricevono un segnale sull&#39;affidabilità dei contenuti. Strumenti come Rasepi possono &lt;a href=&quot;https://www.tcdev.de/features/freshness&quot;&gt;automatizzare questo aspetto con la scadenza forzata a livello di blocco&lt;/a&gt;, ma anche un processo manuale è meglio di niente.&lt;/p&gt;
&lt;h2&gt;Il cambiamento silenzioso nel modo in cui vengono rappresentati i prodotti&lt;/h2&gt;
&lt;p&gt;C&#39;è una conseguenza più ampia di tutto questo che vale la pena di sottolineare direttamente.&lt;/p&gt;
&lt;p&gt;La sua documentazione non è più solo un manuale di riferimento per gli sviluppatori. È il materiale di partenza che gli assistenti AI utilizzano per rappresentare il suo prodotto al mondo. Quando un costruttore chiede a Claude come utilizzare il suo prodotto, la risposta di Claude è modellata da tutto ciò che può trovare e analizzare nella sua documentazione.&lt;/p&gt;
&lt;p&gt;Buona documentazione, buona risposta. Aggiornata, ambigua, bloccata all&#39;interno di un HTML difficile da analizzare per un modello? Risposta peggiore o errata. Semplice.&lt;/p&gt;
&lt;p&gt;La qualità della risposta dell&#39;AI sul suo prodotto è ora un proxy diretto dell&#39;esperienza dello sviluppatore. La maggior parte delle aziende non la sta ancora trattando in questo modo.&lt;/p&gt;
&lt;p&gt;I team che sono all&#39;avanguardia, Stripe, Vercel, Cloudflare, Anthropic stessa, trattano la leggibilità dell&#39;AI come una preoccupazione di prima classe. Un requisito fondamentale che modella il modo in cui la documentazione viene scritta, strutturata e mantenuta. Non è una voce del backlog per il prossimo trimestre.&lt;/p&gt;
&lt;p&gt;Il costruttore che siede in Claude in questo momento, descrivendo ciò che vuole costruire, si aspetta un codice funzionante in pochi minuti. Potrebbe non visitare mai più un sito di documentazione. Ma l&#39;AI che li serve lo farà. Costantemente.&lt;/p&gt;
&lt;p&gt;Questa AI è ora il suo lettore più frequente. La domanda è se la sua documentazione è pronta per questo.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;La migliore strategia per l&#39;esperienza dello sviluppatore nel 2026 non è una conferenza o una guida rapida. Si tratta di assicurarsi che l&#39;IA faccia le cose per bene.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;*Questo post fa riferimento a ricerche e documentazione di prodotto disponibili pubblicamente. Le statistiche sono tratte da &lt;a href=&quot;https://github.blog/news-insights/research/survey-ai-wave-grows/&quot;&gt;GitHub&#39;s 2024 developer survey&lt;/a&gt;, &lt;a href=&quot;https://survey.stackoverflow.co/2024/&quot;&gt;Stack Overflow 2024 Developer Survey&lt;/a&gt;, &lt;a href=&quot;https://www.index.dev/blog/developer-productivity-statistics-with-ai-tools&quot;&gt;Index.dev&#39;s 2026 developer productivity report&lt;/a&gt;, &lt;a href=&quot;https://www.incremys.com/en/resources/blog/claude-statistics&quot;&gt;Incremys Claude statistics&lt;/a&gt; e &lt;a href=&quot;https://fortune.com/2025/12/02/how-anthropics-safety-first-approach-won-over-big-business-and-how-its-own-engineers-are-using-its-claude-ai/&quot;&gt;Fortune&#39;s reporting on Anthropic&lt;/a&gt;. La specifica /llms.txt è mantenuta su &lt;a href=&quot;https://llmstxt.org/&quot;&gt;llmstxt.org&lt;/a&gt;. Il protocollo Model Context è documentato su &lt;a href=&quot;https://modelcontextprotocol.io/&quot;&gt;modelcontextprotocol.io&lt;/a&gt;.&lt;/p&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="ai" />
    <category term="documentation" />
    <category term="developer-experience" />
  </entry>
  <entry>
    <title>All&#39;interno del motore di traduzione: Glossari, regole di stile e ritraduzione intelligente</title>
    <link href="https://www.tcdev.de/it/blog/inside-the-translation-engine-glossaries-style-rules-and-smart-retranslation/" rel="alternate" type="text/html" />
    <id>https://www.tcdev.de/it/blog/inside-the-translation-engine-glossaries-style-rules-and-smart-retranslation/</id>
    <updated>2026-03-31T00:00:00Z</updated>
    <summary>Un approfondimento tecnico su come funziona effettivamente la pipeline di traduzione di Rasepi: risoluzione del glossario, regole di stile DeepL e istruzioni personalizzate, hashing dei contenuti e l&#39;integrazione che lega il tutto.</summary>
    <content type="html">&lt;p&gt;Il nostro &lt;a href=&quot;https://www.tcdev.de/it/blog/how-plugin-guardrail-e-pipeline-systems-work/&quot;&gt;post precedente sull&#39;architettura&lt;/a&gt; ha trattato i plugin, le action guard e il sistema di pipeline. Questo post approfondisce il motore di traduzione, la parte che credo renda Rasepi fondamentalmente diverso da ogni altra piattaforma di documentazione.&lt;/p&gt;
&lt;p&gt;Non il marketing che parla di tradurre paragrafi anziché pagine. Il codice vero e proprio. Come i glossari vengono risolti per tenant, come le regole di stile di DeepL e le istruzioni personalizzate modellano ogni traduzione, come l&#39;hashing dei contenuti guida il rilevamento degli stanti e come l&#39;orchestratore decide quali blocchi ritradurre.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.tcdev.de/it/blog/img/translation-engine-deep-dive.svg&quot; alt=&quot;Motore di traduzione: glossari, regole di stile e ritraduzione intelligente&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;La pipeline di traduzione&lt;/h2&gt;
&lt;p&gt;Quando un utente salva un documento, il sistema non si limita a ritradurre tutto. Esegue una sequenza piuttosto specifica:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Analizza il JSON di TipTap in singoli blocchi.&lt;/li&gt;
&lt;li&gt;Confronta gli hash dei contenuti per rilevare quali blocchi sono stati effettivamente modificati.&lt;/li&gt;
&lt;li&gt;Per i blocchi modificati, risolvere il glossario dell&#39;inquilino e l&#39;elenco delle regole di stile per la coppia di lingue.&lt;/li&gt;
&lt;li&gt;Applica le regole di stile, le istruzioni personalizzate e la formalità dalla configurazione del locatario.&lt;/li&gt;
&lt;li&gt;Invia solo i blocchi modificati a DeepL&lt;/li&gt;
&lt;li&gt;Aggiorna i blocchi di traduzione e sincronizza gli hash dei contenuti&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Ogni fase è un servizio proprio con una propria interfaccia. Questo è importante perché ogni fase può essere sostituita da qualcos&#39;altro, un diverso fornitore di traduzioni, un diverso algoritmo di hashing, una diversa fonte di glossario.&lt;/p&gt;
&lt;h2&gt;Risoluzione del glossario: in base all&#39;inquilino, DeepL-sincronizzato&lt;/h2&gt;
&lt;p&gt;I glossari di DeepL hanno un vincolo che la maggior parte delle persone non conosce: **Non è possibile modificare un glossario DeepL. Qualsiasi modifica comporta la cancellazione del vecchio glossario e la creazione di uno nuovo.&lt;/p&gt;
&lt;p&gt;Rasepi gestisce questo aspetto trattando il database come fonte di verità e i glossari DeepL come artefatti di runtime da buttare. L&#39;entità &lt;code&gt;TenantGlossary&lt;/code&gt; memorizza tutto a livello locale:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public class TenantGlossary : ITenantScoped
{
    public Guid Id { get; set; }
    public Guid TenantId { get; set; }
    public string Name { get; set; }
    public string SourceLanguage { get; set; }     // e.g. &amp;quot;en&amp;quot;
    public string TargetLanguage { get; set; }     // e.g. &amp;quot;de&amp;quot;
    public string? DeepLGlossaryId { get; set; }   // Runtime DeepL ID
    public DateTime? LastSyncedAt { get; set; }
    public bool IsDirty { get; set; } = true;      // Triggers re-sync
    public ICollection&amp;lt;TenantGlossaryEntry&amp;gt; Entries { get; set; }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Quando un utente aggiunge una voce di glossario, ad esempio la mappatura di &amp;quot;Sprint Review&amp;quot; in &amp;quot;Sprint-Überprüfung&amp;quot; per EN→DE, il record del database si aggiorna immediatamente e &lt;code&gt;IsDirty&lt;/code&gt; viene impostato su &lt;code&gt;true&lt;/code&gt;. Il glossario DeepL non viene ricreato subito. Viene ricreato pigramente, la prossima volta che una traduzione ne ha effettivamente bisogno.&lt;/p&gt;
&lt;h3&gt;Il flusso di sincronizzazione&lt;/h3&gt;
&lt;p&gt;Prima di ogni chiamata di traduzione, il sistema risolve il glossario:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public async Task&amp;lt;string?&amp;gt; GetOrSyncDeepLGlossaryIdAsync(
    string sourceLanguage, string targetLanguage,
    CancellationToken ct = default)
{
    var glossary = await _db.TenantGlossaries
        .Include(g =&amp;gt; g.Entries)
        .FirstOrDefaultAsync(g =&amp;gt;
            g.SourceLanguage == sourceLanguage &amp;amp;&amp;amp;
            g.TargetLanguage == targetLanguage, ct);

    if (glossary is null || glossary.Entries.Count == 0)
        return null;

    if (!glossary.IsDirty &amp;amp;&amp;amp; glossary.DeepLGlossaryId is not null)
        return glossary.DeepLGlossaryId;

    // Dirty - delete old, create new
    if (glossary.DeepLGlossaryId is not null)
        await _deepL.DeleteGlossaryAsync(glossary.DeepLGlossaryId);

    var entries = glossary.Entries
        .ToDictionary(e =&amp;gt; e.SourceTerm, e =&amp;gt; e.TargetTerm);

    var deepLGlossary = await _deepL.CreateGlossaryAsync(
        $&amp;quot;rasepi-{glossary.Id}&amp;quot;,
        glossary.SourceLanguage,
        glossary.TargetLanguage,
        entries);

    glossary.DeepLGlossaryId = deepLGlossary.GlossaryId;
    glossary.IsDirty = false;
    glossary.LastSyncedAt = DateTime.UtcNow;
    await _db.SaveChangesAsync(ct);

    return glossary.DeepLGlossaryId;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Tre cose da notare qui:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Sincronizzazione pigra.&lt;/strong&gt; Intercettiamo l&#39;API DeepL solo quando è effettivamente necessaria una traduzione. La modifica in blocco delle voci del glossario non comporta decine di chiamate all&#39;API.&lt;/li&gt;
&lt;li&gt;**La query passa attraverso i filtri della query globale EF, quindi &lt;code&gt;TenantGlossaries&lt;/code&gt; è automaticamente individuato. Le voci del glossario dell&#39;inquilino A non si riversano mai nelle traduzioni dell&#39;inquilino B.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Un glossario per coppia di lingue.&lt;/strong&gt; DeepL lo impone comunque. Un glossario EN→DE, un glossario EN→FR e così via. La coppia &lt;code&gt;(SourceLanguage, TargetLanguage)&lt;/code&gt; è unica per inquilino.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Voci del glossario&lt;/h3&gt;
&lt;p&gt;Le singole voci sono solo mappature di termini:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CODICEBLOCCO_2&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;L&#39;API le offre un CRUD completo e l&#39;importazione/esportazione di CSV per una gestione massiva:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;POST   /admin/glossaries                       Create glossary
POST   /admin/glossaries/{id}/entries           Add term
PUT    /admin/glossaries/{id}/entries/{entryId}  Update term
DELETE /admin/glossaries/{id}/entries/{entryId}  Remove term
POST   /admin/glossaries/{id}/import            Import CSV
GET    /admin/glossaries/{id}/export            Export CSV
POST   /admin/glossaries/{id}/sync              Force DeepL sync
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;L&#39;importazione CSV è utilissima per i team che migrano da sistemi di memoria di traduzione esistenti. Esporta i termini, li ripulisce, li importa in Rasepi e la successiva esecuzione della traduzione utilizza automaticamente il nuovo glossario.&lt;/p&gt;
&lt;h2&gt;Regole di stile, istruzioni personalizzate e formalità&lt;/h2&gt;
&lt;p&gt;I glossari gestiscono la terminologia. Ma la terminologia è solo la metà. Una traduzione può utilizzare tutte le parole giuste e tuttavia suonare male. Tono sbagliato, formato della data sbagliato, convenzioni di punteggiatura sbagliate.&lt;/p&gt;
&lt;p&gt;La &lt;strong&gt;Style Rules API&lt;/strong&gt; di DeepL (v3) risolve questo problema. Può creare elenchi di regole di stile riutilizzabili che combinano due tipi di controlli:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Regole configurate&lt;/strong&gt;, convenzioni di formattazione predefinite per date, orari, punteggiatura, numeri e altro.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Istruzioni personalizzate&lt;/strong&gt;, direttive di testo libero che modellano il tono, la formulazione e le convenzioni specifiche del dominio.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Rasepi crea e gestisce queste istruzioni per tenant, per lingua di destinazione. L&#39;entità &lt;code&gt;TenantStyleRuleList&lt;/code&gt; memorizza il DeepL &lt;code&gt;style_id&lt;/code&gt; insieme alle regole configurate e alle istruzioni personalizzate del tenant:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public class TenantStyleRuleList : ITenantScoped
{
    public Guid Id { get; set; }
    public Guid TenantId { get; set; }
    public string Name { get; set; }
    public string TargetLanguage { get; set; }      // e.g. &amp;quot;de&amp;quot;
    public string? DeepLStyleId { get; set; }       // Runtime DeepL style_id
    public string ConfiguredRulesJson { get; set; }  // Serialized configured rules
    public bool IsDirty { get; set; } = true;
    public DateTime? LastSyncedAt { get; set; }
    public ICollection&amp;lt;TenantCustomInstruction&amp;gt; CustomInstructions { get; set; }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Creazione di elenchi di regole di stile&lt;/h3&gt;
&lt;p&gt;Quando un amministratore imposta le regole di traduzione per il tedesco, Rasepi chiama l&#39;API v3 di DeepL per creare l&#39;elenco di regole di stile. Ecco come si presenta:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public async Task&amp;lt;string&amp;gt; CreateOrSyncStyleRuleListAsync(
    TenantStyleRuleList ruleList, CancellationToken ct = default)
{
    if (!ruleList.IsDirty &amp;amp;&amp;amp; ruleList.DeepLStyleId is not null)
        return ruleList.DeepLStyleId;

    // DeepL style rule lists are mutable - we can update in place
    if (ruleList.DeepLStyleId is not null)
    {
        // Replace configured rules on existing list
        await _httpClient.PutAsJsonAsync(
            $&amp;quot;v3/style_rules/{ruleList.DeepLStyleId}/configured_rules&amp;quot;,
            JsonSerializer.Deserialize&amp;lt;JsonElement&amp;gt;(ruleList.ConfiguredRulesJson),
            ct);

        // Sync custom instructions
        await SyncCustomInstructionsAsync(ruleList, ct);

        ruleList.IsDirty = false;
        ruleList.LastSyncedAt = DateTime.UtcNow;
        return ruleList.DeepLStyleId;
    }

    // Create new style rule list
    var payload = new
    {
        name = $&amp;quot;rasepi-{ruleList.TenantId}-{ruleList.TargetLanguage}&amp;quot;,
        language = ruleList.TargetLanguage,
        configured_rules = JsonSerializer.Deserialize&amp;lt;JsonElement&amp;gt;(
            ruleList.ConfiguredRulesJson),
        custom_instructions = ruleList.CustomInstructions.Select(ci =&amp;gt; new
        {
            label = ci.Label,
            prompt = ci.Prompt,
            source_language = ci.SourceLanguage
        })
    };

    var response = await _httpClient.PostAsJsonAsync(&amp;quot;v3/style_rules&amp;quot;, payload, ct);
    var result = await response.Content.ReadFromJsonAsync&amp;lt;StyleRuleResponse&amp;gt;(ct);

    ruleList.DeepLStyleId = result.StyleId;
    ruleList.IsDirty = false;
    ruleList.LastSyncedAt = DateTime.UtcNow;
    await _db.SaveChangesAsync(ct);

    return ruleList.DeepLStyleId;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A differenza dei glossari, gli elenchi di regole di stile di DeepL sono &lt;strong&gt;mutabili&lt;/strong&gt;. Può sostituire le regole configurate sul posto con &lt;code&gt;PUT /v3/style_rules/{style_id}/configured_rules&lt;/code&gt;, e le istruzioni personalizzate possono essere aggiunte, aggiornate o eliminate individualmente. Molto più amichevole per il perfezionamento iterativo.&lt;/p&gt;
&lt;h3&gt;Come appaiono le regole configurate&lt;/h3&gt;
&lt;p&gt;Le regole configurate riguardano le convenzioni di formattazione che variano in base alla lingua o alle preferenze aziendali. Cose come:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &amp;quot;dates_and_times&amp;quot;: {
    &amp;quot;time_format&amp;quot;: &amp;quot;use_24_hour_clock&amp;quot;,
    &amp;quot;calendar_era&amp;quot;: &amp;quot;use_bc_and_ad&amp;quot;
  },
  &amp;quot;punctuation&amp;quot;: {
    &amp;quot;periods_in_academic_degrees&amp;quot;: &amp;quot;do_not_use&amp;quot;
  },
  &amp;quot;numbers&amp;quot;: {
    &amp;quot;decimal_separator&amp;quot;: &amp;quot;use_comma&amp;quot;
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sembrano banali, ma si sommano velocemente. Un documento tedesco che utilizza il formato orario AM/PM e i decimali separati da un periodo, viene letto come &amp;quot;tradotto dall&#39;inglese&amp;quot; da un lettore tedesco. L&#39;impostazione di &lt;code&gt;use_24_hour_clock&lt;/code&gt; e &lt;code&gt;use_comma&lt;/code&gt; per i separatori decimali in tutte le traduzioni in tedesco elimina immediatamente questo problema.&lt;/p&gt;
&lt;h3&gt;Istruzioni personalizzate: questa è la vera potenza&lt;/h3&gt;
&lt;p&gt;Le istruzioni personalizzate sono direttive di testo libero, fino a 200 per elenco di regole di stile, ciascuna di 300 caratteri. In pratica, lei dice a DeepL come modellare la traduzione in un linguaggio semplice:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public class TenantCustomInstruction
{
    public Guid Id { get; set; }
    public Guid StyleRuleListId { get; set; }
    public string Label { get; set; }              // e.g. &amp;quot;Tone instruction&amp;quot;
    public string Prompt { get; set; }             // e.g. &amp;quot;Use a friendly, diplomatic tone&amp;quot;
    public string? SourceLanguage { get; set; }    // Optional source lang filter
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esempi reali dai nostri inquilini:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;Use a friendly, diplomatic tone&amp;quot;&lt;/code&gt; per una startup che desidera documenti accessibili&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;Always use &#39;Sie&#39; form, never &#39;du&#39;&amp;quot;&lt;/code&gt; per uno studio legale tedesco&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;Translate &#39;deployment&#39; as &#39;Bereitstellung&#39;, never &#39;Deployment&#39;&amp;quot;&lt;/code&gt; per i termini che necessitano di una gestione dipendente dal contesto, al di là della semplice mappatura del glossario&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;Use British English spelling (colour, organisation, licence)&amp;quot;&lt;/code&gt; per le aziende con sede nel Regno Unito che traducono tra varianti di inglese&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CODEBLOCCO_30&lt;/strong&gt; per corrispondere alle convenzioni europee&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le istruzioni personalizzate sono davvero potenti per le convenzioni specifiche del dominio che non si adattano alle voci del glossario. Un glossario mappa un termine ad un altro. Un&#39;istruzione personalizzata può dire: &amp;quot;Quando traduce i documenti API, usi l&#39;umore imperativo invece della voce passiva&amp;quot;. Si tratta di un tipo di controllo completamente diverso.&lt;/p&gt;
&lt;h3&gt;Formalità&lt;/h3&gt;
&lt;p&gt;Il parametro &lt;code&gt;formality&lt;/code&gt; di DeepL (&lt;code&gt;default&lt;/code&gt;, &lt;code&gt;more&lt;/code&gt;, &lt;code&gt;less&lt;/code&gt;, &lt;code&gt;prefer_more&lt;/code&gt;, &lt;code&gt;prefer_less&lt;/code&gt;) è ancora disponibile come controllo separato insieme alle regole di stile. Tedesco &amp;quot;du&amp;quot; contro &amp;quot;Sie&amp;quot;, francese &amp;quot;tu&amp;quot; contro &amp;quot;vous&amp;quot;, livelli di cortesia giapponese. Questi sono impostati per ogni lingua di inquilino tramite &lt;code&gt;TenantLanguageConfig&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public class TenantLanguageConfig : ITenantScoped
{
    public string LanguageCode { get; set; }
    public string DisplayName { get; set; }
    public bool IsEnabled { get; set; }
    public TranslationTrigger Trigger { get; set; }
    public string? Formality { get; set; }         // &amp;quot;more&amp;quot;, &amp;quot;less&amp;quot;, &amp;quot;prefer_more&amp;quot;, etc.
    public string? StyleRuleListId { get; set; }   // Links to TenantStyleRuleList
    public string? TranslationProvider { get; set; }
    public int SortOrder { get; set; }
    public bool IsDefault { get; set; }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Formalità, regole di stile e glossari si compongono. Una singola chiamata di traduzione può contenere tutte e tre le cose:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;var glossaryId = await GetOrSyncDeepLGlossaryIdAsync(sourceLang, targetLang, ct);
var styleId = await GetOrSyncStyleRuleListAsync(targetLang, ct);
var formality = tenantLanguageConfig.Formality ?? &amp;quot;default&amp;quot;;

// Build the v2/translate request payload
var payload = new
{
    text = new[] { blockContent },
    source_lang = NormalizeLanguageCode(sourceLang),
    target_lang = NormalizeLanguageCode(targetLang),
    glossary_id = glossaryId,
    style_id = styleId,
    formality = formality,
    preserve_formatting = true,
    context = surroundingContext,  // Adjacent blocks, not billed
    model_type = &amp;quot;quality_optimized&amp;quot;
};
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Due cose da notare qui:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Il parametro &lt;code&gt;context&lt;/code&gt;.&lt;/strong&gt; Passiamo i blocchi adiacenti come contesto per migliorare la qualità della traduzione. DeepL lo utilizza per risolvere le ambiguità, ma non traduce né fattura per questo. Un paragrafo sulle &amp;quot;celle&amp;quot; si traduce in modo diverso quando il contesto circostante è un documento di biologia rispetto ad un manuale di foglio elettronico.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Selezione del modello.&lt;/strong&gt; Qualsiasi richiesta con &lt;code&gt;style_id&lt;/code&gt; o &lt;code&gt;custom_instructions&lt;/code&gt; usa automaticamente il modello &lt;code&gt;quality_optimized&lt;/code&gt; di DeepL. Questo è il livello di qualità più alto. Non è possibile combinarli con &lt;code&gt;latency_optimized&lt;/code&gt;, e questo è un vincolo intenzionale di DeepL. La personalizzazione dello stile necessita del modello completo.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Perché questo è importante più di quanto si pensi&lt;/h3&gt;
&lt;p&gt;Immagini un&#39;azienda che scrive documenti interni in tedesco con l&#39;informale &amp;quot;du&amp;quot; che improvvisamente passa al formale &amp;quot;Sie&amp;quot; in una sezione tradotta. Nel migliore dei casi sembra incoerente, nel peggiore poco professionale. La formalità gestisce questo aspetto. Ma la formalità, da sola, non può catturare un documento che utilizza i timestamp AM/PM quando l&#39;ufficio tedesco usa il formato 24 ore, o che mette il simbolo della valuta prima del numero invece che dopo.&lt;/p&gt;
&lt;p&gt;Tutti questi elementi (regole di stile, istruzioni personalizzate, formalità, glossari) producono traduzioni che sembrano scritte da qualcuno del suo team. Non come se fossero prodotte da una macchina che non sa dell&#39;esistenza della sua azienda.&lt;/p&gt;
&lt;h2&gt;Il livello di servizio DeepL&lt;/h2&gt;
&lt;p&gt;Tutte le comunicazioni di DeepL passano attraverso &lt;code&gt;IDeepLService&lt;/code&gt;. Questo strato avvolge l&#39;SDK ufficiale di DeepL .NET e gestisce le chiamate API v3 per le regole di stile:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public interface IDeepLService
{
    // Text translation (v2)
    Task&amp;lt;TextResult&amp;gt; TranslateTextAsync(
        string text, string sourceLanguage, string targetLanguage,
        string? options = null);

    Task&amp;lt;TextResult[]&amp;gt; TranslateTextBatchAsync(
        IEnumerable&amp;lt;string&amp;gt; texts, string sourceLanguage,
        string targetLanguage, string? options = null);

    // Glossary management (v2)
    Task&amp;lt;GlossaryInfo&amp;gt; CreateGlossaryAsync(
        string name, string sourceLang, string targetLang,
        Dictionary&amp;lt;string, string&amp;gt; entries);
    Task DeleteGlossaryAsync(string glossaryId);
    Task&amp;lt;GlossaryInfo&amp;gt; GetGlossaryAsync(string glossaryId);
    Task&amp;lt;GlossaryInfo[]&amp;gt; ListGlossariesAsync();
    Task&amp;lt;Dictionary&amp;lt;string, string&amp;gt;&amp;gt; GetGlossaryEntriesAsync(
        string glossaryId);

    // Style rules (v3)
    Task&amp;lt;StyleRuleResponse&amp;gt; CreateStyleRuleListAsync(
        string name, string language,
        JsonElement configuredRules,
        IEnumerable&amp;lt;CustomInstructionRequest&amp;gt; customInstructions);
    Task ReplaceConfiguredRulesAsync(
        string styleId, JsonElement configuredRules);
    Task&amp;lt;CustomInstructionResponse&amp;gt; AddCustomInstructionAsync(
        string styleId, string label, string prompt,
        string? sourceLanguage = null);
    Task DeleteCustomInstructionAsync(
        string styleId, string instructionId);
    Task DeleteStyleRuleListAsync(string styleId);

    // Usage tracking
    Task&amp;lt;Usage&amp;gt; GetUsageAsync();
    Task&amp;lt;Language[]&amp;gt; GetSourceLanguagesAsync();
    Task&amp;lt;Language[]&amp;gt; GetTargetLanguagesAsync();
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;L&#39;implementazione gestisce la normalizzazione del codice linguistico. DeepL richiede &lt;code&gt;EN-US&lt;/code&gt; o &lt;code&gt;EN-GB&lt;/code&gt; invece di &lt;code&gt;en&lt;/code&gt; nudo, e &lt;code&gt;PT-PT&lt;/code&gt; o &lt;code&gt;PT-BR&lt;/code&gt; invece di &lt;code&gt;pt&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;private static string NormalizeLanguageCode(string code)
    =&amp;gt; code.ToLower() switch
    {
        &amp;quot;en&amp;quot; =&amp;gt; &amp;quot;EN-US&amp;quot;,
        &amp;quot;pt&amp;quot; =&amp;gt; &amp;quot;PT-PT&amp;quot;,
        _ =&amp;gt; code.ToUpper()
    };
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La traduzione batch utilizza un chunking di 50 elementi per rimanere entro i limiti dell&#39;API di DeepL, massimizzando al contempo il throughput:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public async Task&amp;lt;TranslationBatchResult&amp;gt; TranslateBatchAsync(
    Dictionary&amp;lt;string, string&amp;gt; texts,
    string sourceLanguage, string targetLanguage)
{
    var translations = new Dictionary&amp;lt;string, string&amp;gt;();
    long totalChars = 0;

    foreach (var chunk in texts.Chunk(50))
    {
        var results = await _deepL.TranslateTextBatchAsync(
            chunk.Select(kv =&amp;gt; kv.Value),
            sourceLanguage, targetLanguage);

        for (int i = 0; i &amp;lt; chunk.Length; i++)
        {
            translations[chunk[i].Key] = results[i].Text;
            totalChars += chunk[i].Value.Length;
        }
    }

    return new TranslationBatchResult
    {
        Translations = translations,
        BilledCharacters = totalChars
    };
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Dato che inviamo solo blocchi di dati, non interi documenti, un tipico batch di traduzione per una singola modifica contiene 1-3 blocchi invece di 40+. Ecco da dove deriva la riduzione dei costi del 94%.&lt;/p&gt;
&lt;h2&gt;L&#39;orchestratore di traduzione&lt;/h2&gt;
&lt;p&gt;Il &lt;code&gt;TranslationOrchestrator&lt;/code&gt; decide cosa fare con ogni blocco quando il documento sorgente cambia. Esaminiamo l&#39;albero delle decisioni:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public async Task OrchestrateTranslationAsync(
    Guid entryId, List&amp;lt;Guid&amp;gt; changedBlockIds,
    CancellationToken ct = default)
{
    var entry = await _db.Entries
        .FirstOrDefaultAsync(e =&amp;gt; e.Id == entryId, ct);

    var translations = await _db.EntryTranslations
        .Where(t =&amp;gt; t.EntryId == entryId)
        .ToListAsync(ct);

    foreach (var translation in translations)
    {
        var langConfig = await GetLanguageConfigAsync(
            translation.Language, ct);

        var translationBlocks = await _db.TranslationBlocks
            .Where(tb =&amp;gt; changedBlockIds.Contains(tb.SourceBlockId)
                      &amp;amp;&amp;amp; tb.Language == translation.Language)
            .ToListAsync(ct);

        foreach (var block in translationBlocks)
        {
            if (block.IsLocked || block.TranslatedById is not null)
            {
                // Human-edited or locked - mark stale, don&#39;t overwrite
                block.Status = TranslationStatus.Stale;
            }
            else if (langConfig.Trigger == TranslationTrigger.AlwaysTranslate)
            {
                // Machine-translated, auto mode - retranslate now
                await RetranslateBlockAsync(block, translation.Language, ct);
            }
            else
            {
                // TranslateOnFirstVisit - mark stale, translate later
                block.Status = TranslationStatus.Stale;
            }
        }
    }

    await _db.SaveChangesAsync(ct);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il punto chiave: **Se un traduttore ha modificato manualmente un blocco, magari aggiungendo un contesto culturale o riformulando per chiarezza, il sistema rispetta il suo lavoro. Contrassegna il blocco come obsoleto, in modo che il traduttore sappia che la fonte è cambiata, ma non sostituisce silenziosamente le sue modifiche.&lt;/p&gt;
&lt;p&gt;I blocchi tradotti a macchina con &lt;code&gt;AlwaysTranslate&lt;/code&gt; abilitato vengono ritradotti immediatamente. I blocchi tradotti a macchina con &lt;code&gt;TranslateOnFirstVisit&lt;/code&gt; sono contrassegnati come stantii e tradotti quando qualcuno apre effettivamente il documento in quella lingua.&lt;/p&gt;
&lt;h2&gt;Inneschi di traduzione: quando avvengono le traduzioni&lt;/h2&gt;
&lt;p&gt;Ogni lingua ha un &lt;code&gt;TranslationTrigger&lt;/code&gt; che controlla la tempistica:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public enum TranslationTrigger
{
    AlwaysTranslate,         // Translate on every save
    TranslateOnFirstVisit    // Translate when first opened in that language
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il &lt;code&gt;AlwaysTranslate&lt;/code&gt; è utile per le lingue ad alta priorità, dove vuole che le traduzioni siano immediatamente attuali. Francese per un&#39;azienda con una grande sede a Parigi. Tedesco per un&#39;azienda con sede a Monaco.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;TranslateOnFirstVisit&lt;/code&gt; è utile per le lingue che sono occasionalmente necessarie ma che non valgono il costo API di mantenere sempre perfettamente aggiornate. Quando qualcuno apre il documento in quella lingua, i blocchi obsoleti vengono tradotti al volo.&lt;/p&gt;
&lt;p&gt;Entrambe le modalità utilizzano la stessa risoluzione del glossario, le stesse impostazioni di formalità e lo stesso hashing dei contenuti. L&#39;unica differenza è la tempistica.&lt;/p&gt;
&lt;h2&gt;Adattamento unico del contenuto e della struttura&lt;/h2&gt;
&lt;p&gt;È qui che l&#39;architettura dà i suoi frutti, al di là della semplice traduzione.&lt;/p&gt;
&lt;p&gt;Quando un traduttore tedesco aggiunge una sezione di conformità DSGVO che non esiste in inglese, la aggiunge come nuovo blocco nella versione tedesca. Quel blocco non ha &lt;code&gt;SourceBlockId&lt;/code&gt;, è contrassegnato come contenuto unico. Il sistema non lo invia mai per la ritraduzione, perché non esiste una fonte da cui tradurre. Esiste solo in tedesco.&lt;/p&gt;
&lt;p&gt;Quando un traduttore giapponese cambia un elenco puntato in un elenco numerato (una convenzione comune nella scrittura tecnica giapponese), il flag &lt;code&gt;IsStructureAdapted&lt;/code&gt; del blocco lo conserva per i futuri cicli di ritraduzione:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;var translation = new TranslationBlock
{
    SourceBlockId = sourceBlockId,
    Language = targetLanguage,
    BlockType = translatedBlockType,
    SourceBlockType = sourceBlock.BlockType,
    IsStructureAdapted = translatedBlockType != sourceBlock.BlockType,
    StructureAdaptationNotes = &amp;quot;Numbered list preferred in JP technical docs&amp;quot;,
    SourceContentHash = sourceBlock.ContentHash,
    Status = TranslationStatus.UpToDate,
};
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il flag &lt;code&gt;IsNoTranslate&lt;/code&gt; gestisce i contenuti che devono essere copiati alla lettera: blocchi di codice, URL, nomi di prodotti, notazioni matematiche. Il fornitore di traduzione li salta completamente.&lt;/p&gt;
&lt;h2&gt;Mettere tutto insieme&lt;/h2&gt;
&lt;p&gt;Vediamo il flusso completo. Un utente a Londra modifica un paragrafo nel documento sorgente inglese, e il suo ufficio di Monaco ha il tedesco impostato su &lt;code&gt;AlwaysTranslate&lt;/code&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;L&#39;utente salva.&lt;/strong&gt; TipTap invia JSON all&#39;API.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Estrazione dei blocchi e rilevamento delle modifiche.&lt;/strong&gt; &lt;code&gt;CreateBlocksFromDocumentAsync&lt;/code&gt; analizza JSON, ricalcola gli hash dei contenuti e confronta gli hash vecchi e nuovi per identificare i blocchi effettivamente modificati.&lt;/li&gt;
&lt;li&gt;**Trova il &lt;code&gt;EntryTranslation&lt;/code&gt; tedesco, controlla il blocco tedesco. È tradotto a macchina, non bloccato, non modificato dall&#39;uomo, quindi è idoneo per la ritraduzione.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configurazione della traduzione caricata.&lt;/strong&gt; ID del glossario risolto tramite &lt;code&gt;GetOrSyncDeepLGlossaryIdAsync(&amp;quot;en&amp;quot;, &amp;quot;de&amp;quot;)&lt;/code&gt;, regole di stile tramite &lt;code&gt;GetOrSyncStyleRuleListAsync(&amp;quot;de&amp;quot;)&lt;/code&gt;, formalità impostata su &amp;quot;more&amp;quot; (formale &amp;quot;Sie&amp;quot;), blocchi adiacenti passati come contesto per la disambiguazione.&lt;/li&gt;
&lt;li&gt;Chiamata a &lt;strong&gt;DeepL.&lt;/strong&gt; Blocco singolo inviato con ID glossario, ID stile, formalità e contesto.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aggiornamento del blocco.&lt;/strong&gt; Contenuto tradotto memorizzato, &lt;code&gt;SourceContentHash&lt;/code&gt; sincronizzato, stato impostato su &lt;code&gt;UpToDate&lt;/code&gt;. Un blocco tradotto invece di 40+. I 39 blocchi rimanenti? Non sono stati toccati.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Nel frattempo, il suo ufficio di Tokyo ha il giapponese impostato su &lt;code&gt;TranslateOnFirstVisit&lt;/code&gt;. La stessa modifica contrassegna il blocco di traduzione giapponese come &lt;code&gt;Stale&lt;/code&gt;. Quando qualcuno a Tokyo apre il documento, i passaggi 5-9 avvengono al volo. Il loro adattamento alla struttura (elenco numerato) viene conservato. I loro blocchi unici rimangono esattamente dove sono.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Credo che il motore di traduzione sia la parte di Rasepi che offre il valore più visibile. Traduzioni che utilizzano la sua terminologia, seguono le sue convenzioni di formattazione, obbediscono alle sue istruzioni personalizzate, corrispondono al suo tono, rispettano il lavoro dei suoi traduttori e costano una frazione di quanto costerebbe una ritraduzione di un documento completo. L&#39;architettura rende tutto questo automatico, e non si intromette quando l&#39;uomo vuole intervenire.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Lo stesso motore di DeepL che alimenta le traduzioni scritte alimenta anche Talk to Docs, la nostra interfaccia di documentazione conversazionale, con DeepL Voice che gestisce l&#39;interazione parlata. Stessi glossari, stesse regole di stile, stessa formalità, stessa coerenza. Che il suo team legga la documentazione o ci parli, la qualità del linguaggio è identica.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://developers.rasepi.com/&quot;&gt;Esplora l&#39;API di traduzione →&lt;/a&gt;&lt;/p&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="architecture" />
    <category term="translation" />
    <category term="deepl" />
  </entry>
  <entry>
    <title>Parlare con i documenti è meglio che leggerli</title>
    <link href="https://www.tcdev.de/it/blog/why-talking-to-documents-feels-better-than-reading/" rel="alternate" type="text/html" />
    <id>https://www.tcdev.de/it/blog/why-talking-to-documents-feels-better-than-reading/</id>
    <updated>2026-03-10T00:00:00Z</updated>
    <summary>La lettura è potente, ma faticosa. La conversazione è più antica, più veloce e più naturale. Parlare con le informazioni è spesso mentalmente più leggero che scorrere pagine di testo.</summary>
    <content type="html">&lt;p&gt;C&#39;è un motivo per cui le persone dicono &amp;quot;parliamone&amp;quot; quando qualcosa è complesso.&lt;/p&gt;
&lt;p&gt;Quando cerchiamo di capire una nuova idea, di risolvere un problema o di ricordare un processo sotto pressione, spesso la conversazione è più facile della lettura. Non perché la lettura sia negativa. La lettura è uno degli strumenti più potenti che l&#39;uomo abbia mai sviluppato. Ma la lettura è un&#39;abilità appresa che si sovrappone a qualcosa di molto più antico: il linguaggio.&lt;/p&gt;
&lt;p&gt;Siamo parlatori molto prima di essere lettori.&lt;/p&gt;
&lt;p&gt;Questo è più importante di quanto si pensi, soprattutto ora che la maggior parte della conoscenza del mondo vive all&#39;interno di documenti, wiki, PDF e lunghe pagine interne che nessuno vuole aprire a meno che non sia assolutamente necessario.&lt;/p&gt;
&lt;h2&gt;La lettura si impara. La conversazione è nativa.&lt;/h2&gt;
&lt;p&gt;Gli esseri umani hanno parlato per molto tempo prima di scrivere qualcosa. I bambini imparano a capire il linguaggio parlato in modo naturale. La lettura richiede istruzioni esplicite, ripetizioni e anni di pratica.&lt;/p&gt;
&lt;p&gt;Anche per gli adulti altamente alfabetizzati, la lettura è ancora un atto più deliberato rispetto all&#39;ascolto o alla conversazione. Richiede concentrazione visiva, attenzione continua, memoria di lavoro e interpretazione della struttura sulla pagina. Si decodificano simboli, si analizzano frasi, si costruisce un contesto e si decide cosa è importante.&lt;/p&gt;
&lt;p&gt;La conversazione funziona in modo diverso. Quando le informazioni vengono fornite in forma parlata e interattiva, il cervello vive un&#39;esperienza diversa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Si sente in sequenza, piuttosto che visivamente travolgente.&lt;/li&gt;
&lt;li&gt;Fornisce feedback e chiarimenti immediati&lt;/li&gt;
&lt;li&gt;Riduce la necessità di scansionare e filtrare grandi blocchi di testo.&lt;/li&gt;
&lt;li&gt;Rispecchia il modo in cui le persone chiedono aiuto nella vita reale.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Quest&#39;ultimo punto è molto importante. In condizioni di incertezza, la maggior parte delle persone non vuole istintivamente leggere 1.500 parole. Vogliono chiedere: &amp;quot;Cosa devo fare dopo?&amp;quot;.&lt;/p&gt;
&lt;h2&gt;Parlare riduce l&#39;attrito cognitivo&lt;/h2&gt;
&lt;p&gt;Un documento è statico. Contiene tutto in una volta.&lt;/p&gt;
&lt;p&gt;Sembra utile, e spesso lo è. Ma crea anche attrito. Una pagina piena di titoli, richiami, link, note, esempi e casi limite costringe il lettore a decidere cosa ignorare. Questo è cognitivamente costoso.&lt;/p&gt;
&lt;p&gt;Quando si parla con un sistema informativo, di solito si ha l&#39;esperienza opposta: la rilevanza prima di tutto, i dettagli poi.&lt;/p&gt;
&lt;p&gt;Si pone una domanda. Ottiene una risposta. Poi si fa un&#39;altra domanda.&lt;/p&gt;
&lt;p&gt;Questo modello di interazione riduce il carico mentale in alcuni modi importanti:&lt;/p&gt;
&lt;h3&gt;1. Restringe lo spazio del problema&lt;/h3&gt;
&lt;p&gt;Un documento completo presenta l&#39;intero panorama. Una conversazione presenta il prossimo passo utile.&lt;/p&gt;
&lt;p&gt;Quando qualcuno chiede: &amp;quot;Come faccio ad assumere un nuovo ingegnere?&amp;quot;_ di solito non vuole l&#39;intero manuale immediatamente. Vuole un orientamento. La conversazione consente di iniziare in piccolo e di espandersi solo quando necessario.&lt;/p&gt;
&lt;h3&gt;2. Conserva la memoria di lavoro&lt;/h3&gt;
&lt;p&gt;La lettura richiede di tenere in mente più cose mentre cerca la parte pertinente. L&#39;interazione orale o conversazionale esteriorizza questo sforzo. Il sistema fa una parte maggiore del filtraggio per lei.&lt;/p&gt;
&lt;h3&gt;3. Sembra socialmente familiare&lt;/h3&gt;
&lt;p&gt;Gli esseri umani sono profondamente adattati allo scambio avanti e indietro. Chiediamo. Qualcuno risponde. Noi perfezioniamo. Loro chiariscono. Questo ciclo è una delle forme più antiche di apprendimento che abbiamo.&lt;/p&gt;
&lt;p&gt;Anche quando il &amp;quot;qualcuno&amp;quot; è un sistema, la struttura è ancora naturale.&lt;/p&gt;
&lt;h2&gt;La lettura non è passiva. È proprio questo il punto.&lt;/h2&gt;
&lt;p&gt;Uno dei motivi per cui parlare può sembrare più facile è che la lettura non è così facile come si pensa. I lettori esperti lo fanno sembrare senza sforzo, ma il processo è molto attivo.&lt;/p&gt;
&lt;p&gt;Per leggere bene, bisogna:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;identificare la struttura&lt;/li&gt;
&lt;li&gt;dedurre l&#39;importanza&lt;/li&gt;
&lt;li&gt;risolvere l&#39;ambiguità&lt;/li&gt;
&lt;li&gt;tenere a mente il contesto&lt;/li&gt;
&lt;li&gt;collegare una sezione all&#39;altra&lt;/li&gt;
&lt;li&gt;decidere quando sfogliare e quando rallentare&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Questo è un vero lavoro cognitivo.&lt;/p&gt;
&lt;p&gt;In molte situazioni, questo lavoro è utile. La lettura profonda aiuta con le sfumature, la precisione e la comprensione a lungo termine. Ma in altre situazioni, soprattutto quando una persona è stanca, stressata, sovraccarica o sta semplicemente cercando di districarsi, parlare è spesso l&#39;opzione mentalmente più leggera.&lt;/p&gt;
&lt;p&gt;Questo è particolarmente vero sul posto di lavoro, dove le persone di solito non si avvicinano alla documentazione in condizioni ideali. Lo sono:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a metà dell&#39;attività&lt;/li&gt;
&lt;li&gt;interrotto&lt;/li&gt;
&lt;li&gt;cambiano contesto&lt;/li&gt;
&lt;li&gt;cercano di risolvere qualcosa in fretta&lt;/li&gt;
&lt;li&gt;spesso già leggermente frustrato&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In questo stato, l&#39;accesso &lt;em&gt;conversativo&lt;/em&gt; alle informazioni può risultare nettamente migliore rispetto all&#39;accesso alla pagina.&lt;/p&gt;
&lt;h2&gt;Parlare cambia il rapporto con le informazioni&lt;/h2&gt;
&lt;p&gt;Qui c&#39;è anche una dimensione emotiva.&lt;/p&gt;
&lt;p&gt;I documenti possono sembrare formali e distanti. Implicano: Questo può essere utile come materiale di riferimento, ma può anche creare esitazione.&lt;/p&gt;
&lt;p&gt;La conversazione è permissiva. Può essere vago. Può chiedere male. Può ammettere la confusione. Può dire: &amp;quot;Non so bene cosa sto cercando, ma ho bisogno di informazioni sulle richieste di accesso&amp;quot;.&lt;/p&gt;
&lt;p&gt;Questo è importante perché spesso le persone evitano la documentazione non perché non amano le informazioni, ma perché non amano lo sforzo e l&#39;incertezza di trovare la parte giusta.&lt;/p&gt;
&lt;p&gt;Parlare riduce questa barriera.&lt;/p&gt;
&lt;h2&gt;Perché questo è importante ora&lt;/h2&gt;
&lt;p&gt;Per molto tempo, i documenti dovevano essere letti perché non c&#39;erano alternative pratiche. La ricerca ha aiutato le persone a trovare le pagine, ma non ha cambiato il modello di interazione. Bisognava ancora aprire la pagina, scansionarla ed estrarre ciò che serviva.&lt;/p&gt;
&lt;p&gt;Questo sta cambiando.&lt;/p&gt;
&lt;p&gt;Man mano che le interfacce diventano più conversazionali, le persone si aspettano sempre più che le informazioni rispondano, anziché esistere. Vogliono chiedere ciò di cui hanno bisogno in un linguaggio semplice e ricevere qualcosa di adatto al momento.&lt;/p&gt;
&lt;p&gt;Questo non rende la lettura obsoleta. Cambia il suo ruolo.&lt;/p&gt;
&lt;p&gt;La lettura diventa il livello profondo. La conversazione diventa il livello di accesso.&lt;/p&gt;
&lt;p&gt;I migliori sistemi supporteranno entrambi:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;parlare quando ha bisogno di orientamento o velocità&lt;/li&gt;
&lt;li&gt;leggere quando ha bisogno di profondità, di verifica o di un contesto completo&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Il rischio di semplificare eccessivamente&lt;/h2&gt;
&lt;p&gt;C&#39;è un&#39;avvertenza importante: parlare con le informazioni è meglio solo se le risposte sono affidabili.&lt;/p&gt;
&lt;p&gt;Se un&#39;interfaccia conversazionale fornisce risposte parziali, fuorvianti o troppo sicure, l&#39;esperienza diventa peggiore della lettura, perché elimina la capacità dell&#39;utente di ispezionare direttamente il materiale di partenza.&lt;/p&gt;
&lt;p&gt;Quindi il futuro non è &amp;quot;sostituire tutti i documenti con la voce&amp;quot;. Il futuro è offrire alle persone un modo più umano di accedere ai documenti, senza perdere la profondità e la precisione che la conoscenza scritta offre.&lt;/p&gt;
&lt;p&gt;Questo equilibrio è importante. La conversazione è più facile, ma i documenti mantengono la struttura durevole, i dettagli e la responsabilità di cui le organizzazioni hanno bisogno.&lt;/p&gt;
&lt;h2&gt;Un&#39;interfaccia più umana per la conoscenza&lt;/h2&gt;
&lt;p&gt;Il punto più profondo è semplice: le persone non pensano naturalmente per pagine. Pensano per domande, storie, frammenti e dialoghi.&lt;/p&gt;
&lt;p&gt;Noi chiediamo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Che cosa significa?&lt;/li&gt;
&lt;li&gt;Cosa devo fare prima?&lt;/li&gt;
&lt;li&gt;Qual è la parte importante?&lt;/li&gt;
&lt;li&gt;Può spiegarlo in modo diverso?&lt;/li&gt;
&lt;li&gt;Cosa è cambiato?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Queste sono mosse di conversazione, non di lettura.&lt;/p&gt;
&lt;p&gt;Quindi, quando parlare con le informazioni è mentalmente più facile che leggerle, non è un segno di pigrizia intellettuale. Di solito è un segno che l&#39;interfaccia corrisponde al modo in cui il cervello preferisce affrontare l&#39;incertezza.&lt;/p&gt;
&lt;p&gt;La lettura rimane essenziale. Ma come punto di accesso alla conoscenza, la conversazione è spesso migliore perché è più vicina a ciò che siamo per natura.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Non siamo prima di tutto lettori. Siamo prima di tutto dei parlatori. I sistemi di conoscenza più intuitivi lo ricorderanno.&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="voice" />
    <category term="knowledge" />
    <category term="documentation" />
  </entry>
  <entry>
    <title>Piattaforme di documentazione costruite per un&#39;altra epoca</title>
    <link href="https://www.tcdev.de/it/blog/why-confluence-and-notion-are-struggling-in-the-ai-era/" rel="alternate" type="text/html" />
    <id>https://www.tcdev.de/it/blog/why-confluence-and-notion-are-struggling-in-the-ai-era/</id>
    <updated>2026-03-08T00:00:00Z</updated>
    <summary>Confluence e Notion sono stati costruiti per un modello di documentazione pre-AI. Possono evolvere, ma le piattaforme consolidate hanno un bagaglio strutturale. I sistemi più recenti possono progettare per l&#39;AI fin dal primo giorno.</summary>
    <content type="html">&lt;p&gt;Confluence e Notion non sono prodotti scadenti. Questo deve essere detto chiaramente all&#39;inizio.&lt;/p&gt;
&lt;p&gt;Hanno avuto successo per buone ragioni. Confluence è diventato la &lt;a href=&quot;https://www.atlassian.com/software/confluence&quot;&gt;casa predefinita per la documentazione interna&lt;/a&gt; in molte aziende, perché ha dato ai team un luogo centrale per scrivere, organizzare e condividere le conoscenze. Notion &lt;a href=&quot;https://www.notion.com/about&quot;&gt;ha conquistato le persone&lt;/a&gt; con flessibilità, esperienze di scrittura più pulite e una superficie del prodotto più moderna.&lt;/p&gt;
&lt;p&gt;Entrambe le piattaforme hanno risolto problemi reali nell&#39;epoca per cui sono state costruite.&lt;/p&gt;
&lt;p&gt;Il problema ora è che il mondo intorno a loro è cambiato più velocemente delle loro fondamenta.&lt;/p&gt;
&lt;p&gt;Non siamo più in un mondo in cui la documentazione deve solo essere scritta, archiviata e ricercata. Siamo in un mondo in cui ci si aspetta che la documentazione sia sempre più:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;leggibile dalla macchina&lt;/li&gt;
&lt;li&gt;consapevole della freschezza&lt;/li&gt;
&lt;li&gt;sicura per il recupero da parte dell&#39;AI&lt;/li&gt;
&lt;li&gt;sufficientemente strutturata per l&#39;automazione&lt;/li&gt;
&lt;li&gt;dinamico tra le varie lingue e i vari tipi di pubblico&lt;/li&gt;
&lt;li&gt;continuamente affidabile, non solo disponibile&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Questa è una barra diversa.&lt;/p&gt;
&lt;h2&gt;Sono stati costruiti per un modello di conoscenza precedente all&#39;Intelligenza Artificiale.&lt;/h2&gt;
&lt;p&gt;Le piattaforme di documentazione tradizionali sono state progettate sulla base di un semplice presupposto: se la pagina esiste ed è ricercabile, il problema è per lo più risolto.&lt;/p&gt;
&lt;p&gt;Questo era sufficiente quando l&#39;utente principale era un essere umano che apriva un wiki, sfogliava la pagina e applicava un giudizio. In quel modello, il compito della piattaforma era quello di facilitare la scrittura e la navigazione.&lt;/p&gt;
&lt;p&gt;L&#39;intelligenza artificiale cambia la descrizione del lavoro.&lt;/p&gt;
&lt;p&gt;Ora la piattaforma non si limita ad archiviare la conoscenza per le persone. Sta producendo materiale di partenza per i sistemi che recuperano, classificano, riassumono e rispondono automaticamente alle domande.&lt;/p&gt;
&lt;p&gt;Ciò introduce nuovi requisiti che le architetture precedenti non consideravano prioritari:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Quali contenuti sono affidabili in questo momento?&lt;/li&gt;
&lt;li&gt;Quali pagine sono obsolete ma ancora ricercabili?&lt;/li&gt;
&lt;li&gt;Quali sezioni sono state modificate di recente?&lt;/li&gt;
&lt;li&gt;Quale versione linguistica è attuale?&lt;/li&gt;
&lt;li&gt;Quali contenuti sono in bozza, archiviati, specifici di una regione o a bassa affidabilità?&lt;/li&gt;
&lt;li&gt;Quali documenti dovrebbero essere esclusi completamente dalle risposte dell&#39;AI?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Una piattaforma che non è stata costruita intorno a queste domande deve adattarle a posteriori. Questo è sempre più difficile che progettare per loro fin dall&#39;inizio.&lt;/p&gt;
&lt;h2&gt;La forza dell&#39;eredità diventa un freno all&#39;eredità&lt;/h2&gt;
&lt;p&gt;I prodotti consolidati hanno dei vantaggi: distribuzione, ecosistema, marchio, familiarità con i clienti, integrazioni e team che sanno come spedire. Ma questi stessi punti di forza possono rallentare il cambiamento strutturale.&lt;/p&gt;
&lt;p&gt;Perché? Perché le piattaforme mature comportano degli impegni.&lt;/p&gt;
&lt;p&gt;Hanno:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;anni di decisioni accumulate sui prodotti&lt;/li&gt;
&lt;li&gt;enormi basi installate con flussi di lavoro esistenti&lt;/li&gt;
&lt;li&gt;aspettative di retrocompatibilità&lt;/li&gt;
&lt;li&gt;plugin ed estensioni che dipendono dal vecchio comportamento&lt;/li&gt;
&lt;li&gt;modelli di dati ottimizzati per i casi d&#39;uso di ieri&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Quando una piattaforma come Confluence o Notion vuole aggiungere una funzionalità veramente nuova, spesso deve adattarla al sistema esistente, piuttosto che utilizzarla.&lt;/p&gt;
&lt;p&gt;Questa è la sfida dell&#39;incumbency: non solo si costruisce il futuro, ma si trascina con sé il passato.&lt;/p&gt;
&lt;h2&gt;Aggiungere funzionalità di AI non significa diventare nativi di AI&lt;/h2&gt;
&lt;p&gt;Molte piattaforme consolidate stanno ora sovrapponendo l&#39;AI. Riassunti. Assistenza alla scrittura. Miglioramenti nella ricerca. Interfacce Q&amp;amp;A. Confluence ha &lt;a href=&quot;https://www.atlassian.com/platform/intelligence&quot;&gt;Atlassian Intelligence&lt;/a&gt;, Notion ha lanciato &lt;a href=&quot;https://www.notion.com/product/ai&quot;&gt;Notion AI&lt;/a&gt;, e GitBook ha aggiunto &lt;a href=&quot;https://docs.gitbook.com/product-tour/searching-your-content/gitbook-ai&quot;&gt;AI-powered search&lt;/a&gt;. Si tratta di funzionalità utili. Alcune sono buone.&lt;/p&gt;
&lt;p&gt;Ma c&#39;è una differenza significativa tra:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;aggiungere funzionalità AI a un prodotto di documentazione&lt;/li&gt;
&lt;li&gt;costruire un prodotto di documentazione la cui architettura di base presuppone il consumo di IA fin dal primo giorno.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il primo approccio spesso porta a funzioni di assistenza ai margini. Il secondo cambia le fondamenta.&lt;/p&gt;
&lt;p&gt;Una piattaforma di conoscenza nativa dell&#39;AI pone domande di progettazione diverse fin dall&#39;inizio:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;come devono essere strutturati i documenti in modo che i sistemi possano ragionare su di essi in modo sicuro?&lt;/li&gt;
&lt;li&gt;come deve essere rappresentata la fiducia?&lt;/li&gt;
&lt;li&gt;quali metadati devono essere di prima classe, non opzionali?&lt;/li&gt;
&lt;li&gt;in che modo i contenuti obsoleti dovrebbero degradare la loro visibilità?&lt;/li&gt;
&lt;li&gt;come limitare le risposte quando le fonti sottostanti sono deboli?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Queste sono domande di architettura, non di funzionalità.&lt;/p&gt;
&lt;h2&gt;Le piattaforme fresche hanno un vantaggio temporaneo&lt;/h2&gt;
&lt;p&gt;Qui è dove le piattaforme più recenti possono vincere, almeno per un po&#39;.&lt;/p&gt;
&lt;p&gt;Una nuova piattaforma ha la libertà di progettare intorno ai vincoli di oggi, invece che alle abitudini di ieri. Non deve conservare un decennio di presupposti su cosa sia un documento o su come debba comportarsi un wiki. Può fare scelte diverse in anticipo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;trattare la freschezza come un concetto di prima classe&lt;/li&gt;
&lt;li&gt;rendere visibile la fiducia nella fonte sia agli esseri umani che alle macchine&lt;/li&gt;
&lt;li&gt;memorizzare metadati più ricchi sullo stato dei contenuti&lt;/li&gt;
&lt;li&gt;integrare i flussi di lavoro multilingue nel modello principale, anziché aggiungerli in un secondo momento&lt;/li&gt;
&lt;li&gt;decidere che la ricerca e il reperimento dell&#39;intelligenza artificiale debbano essere classificati in base alla fiducia, non solo alla pertinenza&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Che la libertà è importante.&lt;/p&gt;
&lt;p&gt;Nella tecnologia, gli operatori storici sono spesso più forti nei periodi di stabilità. I nuovi operatori sono spesso più forti quando il modello stesso si sta spostando.&lt;/p&gt;
&lt;p&gt;L&#39;era dell&#39;AI è uno di questi cambiamenti.&lt;/p&gt;
&lt;h2&gt;Perché questo è particolarmente difficile per Confluence&lt;/h2&gt;
&lt;p&gt;Confluence è potente, ma proviene da una visione del mondo più vecchia. È stato costruito intorno a &lt;a href=&quot;https://support.atlassian.com/confluence-cloud/docs/use-spaces-to-organize-your-work/&quot;&gt;spazi per i team, pagine, navigazione gerarchica&lt;/a&gt; e a un &lt;a href=&quot;https://marketplace.atlassian.com/&quot;&gt;modello aziendale ricco di plugin&lt;/a&gt;. Queste scelte avevano senso. Hanno ancora senso per molte organizzazioni.&lt;/p&gt;
&lt;p&gt;Ma significano anche che il prodotto è molto complesso. Le piattaforme aziendali raramente possono reinventarsi in modo pulito. Devono negoziare con la propria storia.&lt;/p&gt;
&lt;p&gt;Questo rende la modernizzazione più lenta. Non è impossibile. Solo più lenta.&lt;/p&gt;
&lt;p&gt;Quando i requisiti dell&#39;era dell&#39;Intelligenza Artificiale richiedono metadati più puliti, una modellazione della fiducia più esplicita o una governance dei contenuti più basata sulle opinioni, un sistema costruito per ottenere la massima flessibilità attraverso anni di estensioni può faticare a muoversi in modo coerente.&lt;/p&gt;
&lt;h2&gt;Perché questo è particolarmente complicato per Notion&lt;/h2&gt;
&lt;p&gt;Notion ha un problema diverso. Sembra più nuovo, più leggero e più flessibile. Ma la flessibilità può anche giocare a suo sfavore.&lt;/p&gt;
&lt;p&gt;Il punto di forza di Notion è che &lt;a href=&quot;https://www.notion.com/product&quot;&gt;quasi tutto può diventare una pagina, un database, una nota, un documento leggero o uno spazio collaborativo&lt;/a&gt;. Questa flessibilità è ottima per i team. Non lo è altrettanto quando si ha bisogno di forti garanzie sul significato del contenuto, sullo stato in cui si trova e sul fatto che debba essere utilizzato come fonte attendibile da un sistema di intelligenza artificiale.&lt;/p&gt;
&lt;p&gt;Più una piattaforma è libera, più è difficile imporre una semantica affidabile in seguito.&lt;/p&gt;
&lt;p&gt;I sistemi di AI prosperano grazie alla struttura, ai metadati espliciti e ai segnali di fiducia. Gli spazi di lavoro flessibili e generici spesso necessitano di molte interpretazioni prima che il loro contenuto sia sicuro per questo tipo di utilizzo.&lt;/p&gt;
&lt;h2&gt;Niente di tutto questo significa che siano condannati.&lt;/h2&gt;
&lt;p&gt;Sarebbe un&#39;analisi pigra dire che Confluence e Notion non possono adattarsi. Certo che possono.&lt;/p&gt;
&lt;p&gt;Hanno team intelligenti, risorse significative e forti incentivi. Invieranno più funzionalità di intelligenza artificiale. Miglioreranno il reperimento, l&#39;assistenza all&#39;autore, i sommari, la governance e i flussi di lavoro strutturati. Nel tempo, potrebbero colmare gran parte del divario.&lt;/p&gt;
&lt;p&gt;Ma la tempistica è importante.&lt;/p&gt;
&lt;p&gt;Quando si verifica un cambiamento di questo tipo, il vantaggio spesso appartiene a chi è disposto a ricostruire le ipotesi più velocemente. Le piattaforme più recenti possono muoversi con maggiore coerenza, perché non sono in fase di retrofitting. Questo dà loro una finestra.&lt;/p&gt;
&lt;p&gt;Potrebbe non essere una finestra permanente. Ma è reale.&lt;/p&gt;
&lt;h2&gt;La prossima fase delle piattaforme di documentazione&lt;/h2&gt;
&lt;p&gt;La prossima generazione di strumenti di documentazione sarà probabilmente giudicata meno per la capacità di far scrivere pagine alle persone e più per la capacità di gestire la conoscenza come un sistema affidabile.&lt;/p&gt;
&lt;p&gt;Ciò significa che i vincitori faranno probabilmente bene cinque cose:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Modelleranno la fiducia in modo esplicito.&lt;/li&gt;
&lt;li&gt;Distingueranno le conoscenze attuali da quelle obsolete.&lt;/li&gt;
&lt;li&gt;Gestiranno il recupero dell&#39;intelligenza artificiale come una superficie del prodotto principale, non come un componente aggiuntivo.&lt;/li&gt;
&lt;li&gt;Supporteranno la conoscenza multilingue e specifica del pubblico senza frammentazione.&lt;/li&gt;
&lt;li&gt;Offriranno ai team un maggiore controllo su quali informazioni vengono visualizzate, a chi e in quali condizioni.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Si tratta di una categoria diversa dal classico wiki.&lt;/p&gt;
&lt;h2&gt;Perché i nuovi inizi sono importanti&lt;/h2&gt;
&lt;p&gt;Ci sono dei momenti nel software in cui un prodotto pulito ha un vantaggio non perché gli operatori storici sono incompetenti, ma perché la storia è costosa.&lt;/p&gt;
&lt;p&gt;Questo è uno di quei momenti.&lt;/p&gt;
&lt;p&gt;Una nuova piattaforma può decidere, fin dal primo giorno, che i documenti non sono solo pagine. Sono fonti attive per gli esseri umani, gli agenti, i sistemi di ricerca e gli assistenti AI. Questo presupposto cambia tutto a valle.&lt;/p&gt;
&lt;p&gt;Confluence e Notion possono arrivarci. Ma il percorso è più lungo, perché devono trasformare sistemi ottimizzati per un&#39;altra epoca.&lt;/p&gt;
&lt;p&gt;Questa trasformazione richiede tempo. Nel frattempo, le piattaforme più recenti hanno lo spazio per definire come dovrebbe essere la moderna infrastruttura della conoscenza.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Il più grande vantaggio di una piattaforma nuova non è la novità. È la libertà dai vecchi presupposti, proprio nel momento in cui questi presupposti smettono di funzionare.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;em&gt;Questo è un pezzo di prospettiva. Le affermazioni sui prodotti concorrenti si basano sulla documentazione e sugli annunci dei prodotti disponibili al pubblico al marzo 2026. Nutriamo un sincero rispetto sia per Confluence che per Notion: sono prodotti eccellenti che servono bene a milioni di team.&lt;/em&gt;&lt;/p&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="ai" />
    <category term="platforms" />
    <category term="documentation" />
  </entry>
  <entry>
    <title>All&#39;interno dell&#39;architettura Rasepi: Plugin, protezioni d&#39;azione e pipeline</title>
    <link href="https://www.tcdev.de/it/blog/how-plugin-guardrail-and-pipeline-systems-work/" rel="alternate" type="text/html" />
    <id>https://www.tcdev.de/it/blog/how-plugin-guardrail-and-pipeline-systems-work/</id>
    <updated>2026-03-06T00:00:00Z</updated>
    <summary>Un approfondimento tecnico su come funzionano il sistema di plugin, la pipeline di action guard e il motore di traduzione a livello di blocco di Rasepi, con codice reale tratto dalla base di codice.</summary>
    <content type="html">&lt;p&gt;La maggior parte delle piattaforme di documentazione parla di &amp;quot;estensibilità&amp;quot; come le compagnie aeree parlano di &amp;quot;spazio per le gambe&amp;quot;. Tecnicamente presente, praticamente deludente. Volevo che l&#39;architettura di Rasepi fosse veramente estensibile senza diventare imprevedibile, quindi abbiamo costruito tre sistemi interconnessi: &lt;strong&gt;plugins&lt;/strong&gt; per le capacità, &lt;strong&gt;action guards&lt;/strong&gt; per il controllo e &lt;strong&gt;pipelines&lt;/strong&gt; per l&#39;esecuzione deterministica.&lt;/p&gt;
&lt;p&gt;Questo post illustra il funzionamento di ciascuno di essi nella nostra base di codice reale.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.tcdev.de/it/blog/img/architecture-pipeline.svg&quot; alt=&quot;Architettura Rasepi: Plugin, Guardie e Pipeline che lavorano insieme&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Il sistema di plugin: modulare per design&lt;/h2&gt;
&lt;p&gt;Ogni plugin in Rasepi implementa &lt;code&gt;IPluginModule&lt;/code&gt;, un&#39;unica interfaccia che dichiara che cos&#39;è il plugin, di quali servizi ha bisogno e quali percorsi espone:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public interface IPluginModule
{
    PluginManifest Manifest { get; }
    void RegisterServices(IServiceCollection services);
    void MapRoutes(IEndpointRouteBuilder routes);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il &lt;code&gt;PluginManifest&lt;/code&gt; è un dato puro. Descrive il plugin senza eseguire nulla:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public sealed class PluginManifest
{
    public required string Id { get; init; }
    public required string Name { get; init; }
    public required string Version { get; init; }
    public string Description { get; init; }
    public string Category { get; init; }
    public IReadOnlyDictionary&amp;lt;string, string&amp;gt; UiContributions { get; init; }
    public bool HasSettings { get; init; }
    public bool HasEndpoints { get; init; }
    public IReadOnlyList&amp;lt;string&amp;gt; Dependencies { get; init; }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Notare &lt;code&gt;UiContributions&lt;/code&gt;. Questo dizionario mappa i punti di estensione del frontend con i nomi dei componenti, in modo che il frontend Vue sappia quali componenti dell&#39;interfaccia utente contribuisce a ciascun plugin (un pulsante della barra degli strumenti, un pannello della barra laterale, una pagina di impostazioni).&lt;/p&gt;
&lt;h3&gt;La registrazione è una riga per ogni plugin&lt;/h3&gt;
&lt;p&gt;All&#39;avvio, registriamo i plugin attraverso un&#39;API fluente:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;var pluginRegistry = new PluginRegistry();

pluginRegistry
    .AddPlugin&amp;lt;WorkflowPluginModule&amp;gt;(builder.Services)
    .AddPlugin&amp;lt;RulesPluginModule&amp;gt;(builder.Services)
    .AddPlugin&amp;lt;RetentionPluginModule&amp;gt;(builder.Services)
    .AddPlugin&amp;lt;ClassificationPluginModule&amp;gt;(builder.Services);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ogni chiamata istanzia il modulo, lo memorizza nel registro e chiama &lt;code&gt;RegisterServices()&lt;/code&gt; per collegare le sue dipendenze. Dopo la creazione dell&#39;applicazione, una singola riga mappa tutti i percorsi dei plugin:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;app.MapPluginRoutes(pluginRegistry);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sotto il cofano, ogni plugin riceve un gruppo di rotte con uno scope in &lt;code&gt;/plugins/{pluginId}/&lt;/code&gt;, con l&#39;autorizzazione applicata automaticamente.&lt;/p&gt;
&lt;h3&gt;Esempio reale: il plugin Workflow&lt;/h3&gt;
&lt;p&gt;Ecco come appare un plugin reale, il modulo Workflow &amp;amp; Approvals:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public sealed class WorkflowPluginModule : IPluginModule
{
    public const string PluginId = &amp;quot;workflow&amp;quot;;

    public PluginManifest Manifest { get; } = new()
    {
        Id = PluginId,
        Name = &amp;quot;Workflow &amp;amp; Approvals&amp;quot;,
        Version = &amp;quot;1.0.0&amp;quot;,
        Description = &amp;quot;Adds approval workflows to entry publishing.&amp;quot;,
        Category = &amp;quot;Workflow&amp;quot;,
        HasSettings = true,
        HasEndpoints = true,
        UiContributions = new Dictionary&amp;lt;string, string&amp;gt;
        {
            [&amp;quot;entry.toolbar.publish&amp;quot;] = &amp;quot;WorkflowPublishButton&amp;quot;,
            [&amp;quot;entry.sidebar.status&amp;quot;]  = &amp;quot;WorkflowStatusPanel&amp;quot;,
            [&amp;quot;hub.admin.settings&amp;quot;]    = &amp;quot;WorkflowHubSettings&amp;quot;,
        }
    };

    public void RegisterServices(IServiceCollection services)
    {
        services.AddScoped&amp;lt;IWorkflowService, WorkflowService&amp;gt;();
        services.AddScoped&amp;lt;IActionGuard, WorkflowPublishGuard&amp;gt;();
    }

    public void MapRoutes(IEndpointRouteBuilder routes)
    {
        WorkflowEndpoints.Map(routes);
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La piattaforma principale non fa mai riferimento a &lt;code&gt;WorkflowService&lt;/code&gt; o &lt;code&gt;WorkflowPublishGuard&lt;/code&gt; direttamente. Li scopre attraverso il contenitore DI. Questa è la chiave per azzerare l&#39;accoppiamento. L&#39;applicazione principale non tocca mai il codice dei plugin.&lt;/p&gt;
&lt;h2&gt;Guardie d&#39;azione: il livello di controllo&lt;/h2&gt;
&lt;p&gt;I plugin aggiungono capacità. Le guardie d&#39;azione decidono se questa capacità, o qualsiasi azione del nucleo, può procedere. Sono validatori sincroni che intercettano le operazioni prima dell&#39;esecuzione.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.tcdev.de/it/blog/img/action-guard-flow.svg&quot; alt=&quot;Flusso di valutazione delle guardie d&#39;azione&quot; /&gt;&lt;/p&gt;
&lt;p&gt;L&#39;interfaccia è volutamente minimale:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public interface IActionGuard
{
    string PluginId { get; }
    string? ActionName { get; }  // null means guard ALL actions

    Task&amp;lt;ActionGuardResult&amp;gt; EvaluateAsync(
        ActionGuardContext context,
        IServiceProvider services,
        CancellationToken ct = default);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Quando &lt;code&gt;ActionName&lt;/code&gt; è &lt;code&gt;null&lt;/code&gt;, la guardia viene eseguita per ogni azione. Quando è impostato su qualcosa come &lt;code&gt;&amp;quot;Entry.Publish&amp;quot;&lt;/code&gt;, intercetta solo quell&#39;azione specifica.&lt;/p&gt;
&lt;h3&gt;I contratti di contesto e di risultato&lt;/h3&gt;
&lt;p&gt;Ogni guardia riceve un contesto tipizzato con il nome dell&#39;azione, il tenant, l&#39;utente, l&#39;entità e un bagaglio di proprietà:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public sealed record ActionGuardContext(
    string ActionName,
    Guid TenantId,
    Guid UserId,
    Guid EntityId,
    IReadOnlyDictionary&amp;lt;string, object?&amp;gt; Properties)
{
    public T? Get&amp;lt;T&amp;gt;(string key) =&amp;gt;
        Properties.TryGetValue(key, out var v) &amp;amp;&amp;amp; v is T typed
            ? typed : default;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;E ogni guardia restituisce un risultato prevedibile: allow, deny o allow-with-modifications:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public sealed record ActionGuardResult
{
    public bool IsAllowed { get; init; }
    public string? ReasonCode { get; init; }
    public string? Message { get; init; }
    public IReadOnlyDictionary&amp;lt;string, object?&amp;gt;? Modifications { get; init; }

    public static ActionGuardResult Allow() =&amp;gt;
        new() { IsAllowed = true };

    public static ActionGuardResult Deny(
        string reasonCode, string message) =&amp;gt;
        new() { IsAllowed = false, ReasonCode = reasonCode, Message = message };
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il campo &lt;code&gt;Modifications&lt;/code&gt; è importante. Un guardiano può approvare un&#39;azione ma riscrivere parte del contenuto (ad esempio, redigere i segreti prima della pubblicazione).&lt;/p&gt;
&lt;h3&gt;Nomi canonici delle azioni&lt;/h3&gt;
&lt;p&gt;Definiamo tutte le azioni intercettabili come costanti di stringa, in modo che non ci siano ambiguità su ciò che un guardiano può indirizzare:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public static class ActionNames
{
    public static class Entry
    {
        public const string Create  = &amp;quot;Entry.Create&amp;quot;;
        public const string Save    = &amp;quot;Entry.Save&amp;quot;;
        public const string Publish = &amp;quot;Entry.Publish&amp;quot;;
        public const string Delete  = &amp;quot;Entry.Delete&amp;quot;;
        public const string Archive = &amp;quot;Entry.Archive&amp;quot;;
        public const string Renew   = &amp;quot;Entry.Renew&amp;quot;;
    }

    public static class Hub
    {
        public const string Create = &amp;quot;Hub.Create&amp;quot;;
        public const string Delete = &amp;quot;Hub.Delete&amp;quot;;
        public const string TransferOwnership = &amp;quot;Hub.TransferOwnership&amp;quot;;
    }

    public static class Translation
    {
        public const string Create  = &amp;quot;Translation.Create&amp;quot;;
        public const string Publish = &amp;quot;Translation.Publish&amp;quot;;
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Esempio reale: bloccare la pubblicazione senza approvazione&lt;/h3&gt;
&lt;p&gt;Il plugin Workflow registra una guardia che intercetta &lt;code&gt;Entry.Publish&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public sealed class WorkflowPublishGuard : IActionGuard
{
    public string PluginId =&amp;gt; WorkflowPluginModule.PluginId;
    public string? ActionName =&amp;gt; ActionNames.Entry.Publish;

    public async Task&amp;lt;ActionGuardResult&amp;gt; EvaluateAsync(
        ActionGuardContext context,
        IServiceProvider services,
        CancellationToken ct = default)
    {
        var db = services.GetRequiredService&amp;lt;RasepiDbContext&amp;gt;();
        var entry = await db.Entries
            .AsNoTracking()
            .FirstOrDefaultAsync(e =&amp;gt; e.Id == context.EntityId, ct);

        if (entry is null)
            return ActionGuardResult.Allow();

        var workflowService = services.GetRequiredService&amp;lt;IWorkflowService&amp;gt;();
        var check = await workflowService
            .CheckPublishAllowedAsync(entry.Id, entry.HubId);

        if (check.IsAllowed)
            return ActionGuardResult.Allow();

        return ActionGuardResult.Deny(
            &amp;quot;workflow.approval_required&amp;quot;,
            check.Message ?? &amp;quot;Approval required before publishing.&amp;quot;);
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La piattaforma principale non sa nulla dei flussi di lavoro di approvazione. Chiama semplicemente &lt;code&gt;Entry.Publish&lt;/code&gt; attraverso la pipeline e la guardia lo blocca se il flusso di lavoro non è stato completato.&lt;/p&gt;
&lt;h2&gt;La pipeline di azione: dove tutto converge&lt;/h2&gt;
&lt;p&gt;Il &lt;code&gt;ActionPipeline&lt;/code&gt; è il percorso di esecuzione unico per tutte le operazioni protette. Risolve quali protezioni si applicano, le valuta e blocca o esegue l&#39;azione.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public sealed class ActionPipeline : IActionPipeline
{
    public async Task&amp;lt;ActionPipelineResult&amp;gt; ExecuteAsync(
        string actionName,
        ActionGuardContext context,
        Func&amp;lt;Task&amp;gt; action,
        CancellationToken ct = default)
    {
        var result = await EvaluateAsync(actionName, context, ct);
        if (!result.IsAllowed) return result;

        await action();  // All guards passed — execute

        return result;   // Return modifications for caller
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il metodo &lt;code&gt;EvaluateAsync&lt;/code&gt; fa il lavoro pesante:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public async Task&amp;lt;ActionPipelineResult&amp;gt; EvaluateAsync(
    string actionName,
    ActionGuardContext context,
    CancellationToken ct = default)
{
    // 1. Which plugins are enabled for this tenant?
    var enabledPlugins = await _resolver.GetEnabledPluginIdsAsync();

    // 2. Which guards match this action?
    var applicable = _guards
        .Where(g =&amp;gt; enabledPlugins.Contains(g.PluginId))
        .Where(g =&amp;gt; g.ActionName == null || g.ActionName == actionName)
        .ToList();

    // 3. Evaluate each guard
    var denials = new List&amp;lt;ActionGuardResult&amp;gt;();
    var modifications = new List&amp;lt;ActionGuardResult&amp;gt;();

    foreach (var guard in applicable)
    {
        try
        {
            var guardResult = await guard.EvaluateAsync(context, _services, ct);
            if (!guardResult.IsAllowed)
                denials.Add(guardResult);
            else if (guardResult.Modifications?.Count &amp;gt; 0)
                modifications.Add(guardResult);
        }
        catch (Exception ex)
        {
            _logger.LogError(ex, &amp;quot;Guard threw. Treating as Allow.&amp;quot;);
        }
    }

    // 4. Any denial blocks the whole action
    if (denials.Count &amp;gt; 0)
        return ActionPipelineResult.Blocked(denials);

    return modifications.Count &amp;gt; 0
        ? ActionPipelineResult.Allowed(modifications)
        : ActionPipelineResult.Allowed();
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Qui ci sono tre importanti decisioni di progettazione:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Risoluzione per inquilino.&lt;/strong&gt; Il &lt;code&gt;TenantPluginResolver&lt;/code&gt; controlla quali plugin ogni inquilino ha installato e abilitato. Una protezione per un plugin disabilitato non viene mai eseguita.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tutti devono passare.&lt;/strong&gt; Se una guardia nega, l&#39;azione viene bloccata. Si tratta di una posizione di sicurezza intenzionale.&lt;/li&gt;
&lt;li&gt;**Se una guardia lancia un&#39;eccezione, questa viene registrata e trattata come &lt;code&gt;Allow()&lt;/code&gt;. Questo impedisce a un plugin non funzionante di bloccare l&#39;intera piattaforma.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Risoluzione dei plugin per inquilino&lt;/h3&gt;
&lt;p&gt;Il resolver interroga la tabella &lt;code&gt;TenantPluginInstallations&lt;/code&gt; (automaticamente ottimizzata per il tenant corrente dai filtri di interrogazione globale EF):&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public sealed class TenantPluginResolver : ITenantPluginResolver
{
    public async Task&amp;lt;IReadOnlySet&amp;lt;string&amp;gt;&amp;gt; GetEnabledPluginIdsAsync(
        CancellationToken ct = default)
    {
        if (_cache is not null) return _cache;

        var ids = await _db.TenantPluginInstallations
            .Where(i =&amp;gt; i.IsEnabled)
            .Select(i =&amp;gt; i.PluginId)
            .ToListAsync(ct);

        _cache = ids.ToHashSet();
        return _cache;
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Effetti collaterali guidati dagli eventi&lt;/h2&gt;
&lt;p&gt;Le azioni sono sincrone. Gli effetti collaterali non lo sono. Dopo il completamento di un&#39;azione, il servizio pubblica un evento di dominio:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;await _eventPublisher.PublishAsync(
    EventNames.Entry.Created, entry.Id, new { entry.OriginalLanguage });
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Gli eventi vengono inseriti in un canale in memoria ed elaborati da un &lt;code&gt;EventConsumerWorker&lt;/code&gt; in background. Il worker instrada gli eventi a più sistemi:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tracciamento dell&#39;attività.&lt;/strong&gt; Registra chi ha fatto cosa, quando&lt;/li&gt;
&lt;li&gt;Fatturazione delle traduzioni.** Traccia i costi per fornitore&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gestori di eventi dei plugin.&lt;/strong&gt; Qualsiasi plugin può sottoscrivere gli eventi del dominio&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I gestori di eventi dei plugin implementano &lt;code&gt;IPluginEventHandler&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public interface IPluginEventHandler
{
    string PluginId { get; }
    IReadOnlyList&amp;lt;string&amp;gt; SubscribedEvents { get; }

    Task HandleAsync(
        string eventName, Guid entityId,
        Guid? tenantId, Guid? userId,
        string payloadJson, IServiceProvider services,
        CancellationToken ct = default);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il worker invoca solo i gestori il cui plugin è abilitato per il tenant. Ciò significa che gli effetti collaterali del plugin A non si disperdono mai in un inquilino che ha installato solo il plugin B.&lt;/p&gt;
&lt;h2&gt;Il motore di traduzione a livello di blocco&lt;/h2&gt;
&lt;p&gt;Questo è il punto in cui l&#39;architettura dà i suoi frutti in modo più evidente.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.tcdev.de/it/blog/img/block-translation.svg&quot; alt=&quot;Traduzione a livello di blocco: solo i blocchi modificati vengono ritradotti&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Le piattaforme tradizionali traducono interi documenti. Noi traduciamo singoli &lt;strong&gt;blocchi&lt;/strong&gt;: paragrafi, intestazioni, voci di elenco. Quando un utente modifica un paragrafo in un documento di 50 blocchi, solo quel paragrafo deve essere ritradotto. Questa è la fonte del nostro 94% di risparmio sui costi.&lt;/p&gt;
&lt;h3&gt;Come vengono creati i blocchi da TipTap JSON&lt;/h3&gt;
&lt;p&gt;Quando un utente salva un documento, l&#39;editor TipTap invia JSON come questo:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &amp;quot;type&amp;quot;: &amp;quot;doc&amp;quot;,
  &amp;quot;content&amp;quot;: [
    {
      &amp;quot;type&amp;quot;: &amp;quot;paragraph&amp;quot;,
      &amp;quot;attrs&amp;quot;: { &amp;quot;blockId&amp;quot;: &amp;quot;a1b2c3d4-...&amp;quot; },
      &amp;quot;content&amp;quot;: [{ &amp;quot;type&amp;quot;: &amp;quot;text&amp;quot;, &amp;quot;text&amp;quot;: &amp;quot;Hello world&amp;quot; }]
    }
  ]
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il &lt;code&gt;BlockTranslationService&lt;/code&gt; analizza questo JSON e crea singoli record &lt;code&gt;EntryBlock&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public async Task&amp;lt;List&amp;lt;EntryBlock&amp;gt;&amp;gt; CreateBlocksFromDocumentAsync(
    Guid entryId, string language, string contentJson,
    int version, Guid userId)
{
    var doc = JsonDocument.Parse(contentJson);
    var content = doc.RootElement.GetProperty(&amp;quot;content&amp;quot;);

    int position = 0;
    foreach (var node in content.EnumerateArray())
    {
        var blockType = node.GetProperty(&amp;quot;type&amp;quot;).GetString();
        var blockJson = JsonSerializer.Serialize(node);

        // Strip metadata attrs before hashing
        var hashInput = StripBlockMetaAttrs(blockJson);

        var block = new EntryBlock
        {
            Id = ExtractOrGenerateBlockId(node),
            EntryId = entryId,
            Language = language,
            Position = position++,
            BlockType = blockType,
            ContentJson = blockJson,
            ContentHash = CalculateContentHash(hashInput),
            IsNoTranslate = ExtractNoTranslateFlag(node),
            Version = version,
        };

        _context.EntryBlocks.Add(block);
    }

    await _context.SaveChangesAsync();
    return blocks;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Hashing SHA256 per il rilevamento delle stalle&lt;/h3&gt;
&lt;p&gt;L&#39;hash del contenuto è il cuore del rilevamento delle stalle. Eseguiamo l&#39;hash del contenuto del blocco (dopo aver eliminato gli attributi dei metadati come &lt;code&gt;blockId&lt;/code&gt; e &lt;code&gt;deleted&lt;/code&gt;) utilizzando SHA256:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;private string CalculateContentHash(string content)
{
    using var sha256 = SHA256.Create();
    var hashBytes = sha256.ComputeHash(Encoding.UTF8.GetBytes(content));
    return Convert.ToHexString(hashBytes);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Quando un blocco sorgente cambia, il suo hash cambia. Il sistema confronta quindi il &lt;code&gt;SourceContentHash&lt;/code&gt; di ogni blocco di traduzione con l&#39;hash corrente della sorgente, e le discrepanze vengono contrassegnate con &lt;code&gt;Stale&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public async Task MarkTranslationsAsStaleAsync(List&amp;lt;Guid&amp;gt; changedBlockIds)
{
    var affected = await _context.TranslationBlocks
        .Where(t =&amp;gt; changedBlockIds.Contains(t.SourceBlockId))
        .ToListAsync();

    foreach (var translation in affected)
    {
        translation.Status = TranslationStatus.Stale;
        translation.UpdatedAt = DateTime.UtcNow;
    }

    await _context.SaveChangesAsync();
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Adattamento della struttura&lt;/h3&gt;
&lt;p&gt;I traduttori possono cambiare i tipi di blocco tra le varie lingue. Un elenco puntato inglese potrebbe diventare un elenco numerato tedesco, una preferenza culturale. Il sistema ne tiene traccia:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;var translation = new TranslationBlock
{
    SourceBlockId = sourceBlockId,
    Language = targetLanguage,
    BlockType = translatedBlockType,
    SourceBlockType = sourceBlock.BlockType,
    IsStructureAdapted = translatedBlockType != sourceBlock.BlockType,
    SourceContentHash = sourceBlock.ContentHash,
    Status = TranslationStatus.UpToDate,
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Fornitori di traduzione come plugin&lt;/h3&gt;
&lt;p&gt;I servizi di traduzione esterni (DeepL, Google Translate, ecc.) si collegano tramite &lt;code&gt;ITranslationProviderPlugin&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public interface ITranslationProviderPlugin : IRasepiPlugin
{
    string[] GetSupportedLanguages();

    Task&amp;lt;string&amp;gt; TranslateAsync(
        string text, string sourceLanguage, string targetLanguage);

    Task&amp;lt;TranslationBatchResult&amp;gt; TranslateBatchAsync(
        Dictionary&amp;lt;string, string&amp;gt; texts,
        string sourceLanguage, string targetLanguage);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il metodo batch riceve un dizionario di ID di blocchi da contenere, li traduce tutti e restituisce le traduzioni con un conteggio di caratteri. Dato che inviamo solo i blocchi non completi, e non l&#39;intero documento, i costi rimangono minimi.&lt;/p&gt;
&lt;h2&gt;Isolamento degli inquilini: la rete di sicurezza invisibile&lt;/h2&gt;
&lt;p&gt;Tutti i sistemi sopra descritti funzionano all&#39;interno di un rigoroso isolamento degli inquilini.&lt;/p&gt;
&lt;p&gt;Il &lt;code&gt;TenantContextMiddleware&lt;/code&gt; risolve l&#39;inquilino dal JWT su ogni richiesta e verifica l&#39;appartenenza:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public async Task InvokeAsync(
    HttpContext context, TenantContext tenantContext, RasepiDbContext db)
{
    var tenantIdClaim = context.User.FindFirstValue(&amp;quot;tenant_id&amp;quot;);
    var userIdClaim = context.User.FindFirstValue(ClaimTypes.NameIdentifier);

    // Populate scoped context
    tenantContext.TenantId = Guid.Parse(tenantIdClaim);
    tenantContext.UserId = Guid.Parse(userIdClaim);

    // Verify membership — fail closed
    var membership = await db.TenantMemberships
        .Where(m =&amp;gt; m.TenantId == tenantContext.TenantId
                  &amp;amp;&amp;amp; m.UserId == tenantContext.UserId)
        .FirstOrDefaultAsync();

    if (membership == null)
    {
        context.Response.StatusCode = 401;
        return;  // No membership = no access
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I filtri globali delle query di Entity Framework assicurano che, anche se uno sviluppatore dimentica di filtrare per tenant, il livello del database lo faccia automaticamente:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;modelBuilder.Entity&amp;lt;Hub&amp;gt;()
    .HasQueryFilter(h =&amp;gt; h.TenantId == _tenantContext.TenantId);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il risultato: &lt;code&gt;db.Hubs.ToListAsync()&lt;/code&gt; restituisce sempre solo gli hub del tenant corrente. Le fughe di dati richiedono l&#39;aggiramento attivo del filtro di query, che è vietato nella nostra base di codice.&lt;/p&gt;
&lt;h2&gt;Il quadro completo&lt;/h2&gt;
&lt;p&gt;Quando un utente fa clic su &amp;quot;Pubblica&amp;quot; su una voce, ecco cosa succede:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;**L&#39;autenticazione convalida il JWT, &lt;code&gt;TenantContextMiddleware&lt;/code&gt; risolve e verifica l&#39;inquilino.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Il controllore chiama la pipeline.&lt;/strong&gt; &lt;code&gt;IActionPipeline.ExecuteAsync(&amp;quot;Entry.Publish&amp;quot;, context, action)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La pipeline risolve le guardie.&lt;/strong&gt; Interroga i plugin abilitati dall&#39;inquilino e seleziona le guardie applicabili.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Le guardie valutano.&lt;/strong&gt; La guardia del flusso di lavoro verifica le approvazioni, la guardia della conservazione verifica i criteri, la guardia delle regole convalida il contenuto. Tutti passano? La voce viene pubblicata.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gli eventi si attivano.&lt;/strong&gt; L&#39;evento &lt;code&gt;Entry.Published&lt;/code&gt; viene richiesto. Un lavoratore in background registra le attività, aggiorna la fatturazione delle traduzioni e chiama i gestori di eventi del plugin.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verifica delle traduzioni dei blocchi.&lt;/strong&gt; I blocchi obsoleti vengono identificati per essere ritradotti.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Ogni livello svolge il proprio lavoro. Nessun livello si inserisce in un altro. Questa è l&#39;architettura.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Non abbiamo costruito questo perché l&#39;estensibilità è di moda. L&#39;abbiamo costruita perché una piattaforma di documentazione che non può adattarsi al flusso di lavoro di ogni team, alla fine sarà sostituita da una che può farlo. E una piattaforma che si adatta senza guardrail finirà per rompere qualcosa di importante.&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="architecture" />
    <category term="plugins" />
    <category term="ai" />
  </entry>
</feed>
