lunedì 26 ottobre 2020

Documentare le API: ci sono diversi tipi di API...

Nei primi 3 articoli di questa serie, ho provato a definire "la cornice" di una tematica complessa:

  1. Api "economy": quale impatto sulla Comunicazione Tecnica?
  2. Documentare le API? Le risposte nascono dalle domande...
  3. Documentare le API: per quale audience?

Ora provo ad analizzare "il quadro", che è composto da diverse aree in relazione tra di loro, come in un quadro di Mondrian:


Prima di tutto, cominciamo a distinguere tra i diversi tipi di API che potremmo ritrovarci a dover documentare.

Riprendiamo lo spunto dal report di SmartBear.

Il grafico indica i tipi di API oggetto di attenzione tra i partecipanti al sondaggio:


CLASSIFICAZIONE DELLE API

Di seguito, vi fornisco una breve panoramica delle tipologie di API più diffuse.
Se volete approfondire ogni singola area, potete trovare del materiale in rete a partire dai link che vi segnalo.

In un prossimo blocco di articoli andrò ad approfondire le questioni di documentazione inerenti alle REST API, che sono oggi prevalenti sul mercato. Ma vedremo che i concetti generali e le best practice sono applicabili anche fuori dal perimetro delle REST API, con eventuali adattamenti.

REST API

Nell'architettura REST (REpresentational State Transfer), il server non memorizza lo stato della sessione del client. Ogni richiesta HTTP dal client al server deve contenere tutte le informazioni necessarie (payload) e lo stato della sessione è mantenuto lato client. Il server non si basa sulle informazioni provenienti da richieste precedenti. Il client è responsabile dell'archiviazione e della gestione di tutte le informazioni relative allo stato dell'applicazione.

Le REST API utilizzano diversi formati di dati tra cui TXT,  XML e JSON. L'utilizzo di formati di dati più semplici rende i payload più leggeri, il che rende le API REST più adatte a una gamma più ampia di applicazioni.

Ad esempio, REST API con payload JSON sono molto utilizzate in integrazioni IoT, dove diversi tipi di dispositivi, non sempre dotati di grandi capacità di memoria e di calcolo, devono scambiarsi informazioni.

Attraverso una REST API ci si relaziona con una "risorsa", identificata da una URL. I "consumatori" inviano richieste GET per accedere ad una risorsa e richieste PUT, POST e DELETE per modificarla o cancellarla.

SOAP API - WSDL

Le SOAP API (Simple Object Access Protocol) sono servizi Web che si basano su un protocollo XML per definire il formato dei messaggi delle richieste e delle risposte. Il formato dei messaggi XML di SOAP viene solitamente definito tramite un file WSDL (Web Services Description Language) che specifica gli elementi e gli attributi consentiti nello scambio di messaggi. 

Il file WSDL è leggibile dalla macchina e utilizzato dai server che interagiscono tra loro per facilitare la comunicazione. 

Un file WSDL può potenzialmente descrivere un formato del messaggio di notevole complessità.
Questo è il motivo essenziale per il quale le REST API stanno soppiantando le SOAP API in tutte le applicazioni dove non necessita una comunicazione particolarmente strutturata, quindi dove si può anche fare a meno dell'XML.

RPC API

Le RPC API (Remote Procedure Call) sono servizi Web che chiamano un metodo su un server remoto fornendo un messaggio codificato in HTTP. Il formato del messaggio codificato potrebbe essere XML (API XML-RPC) o JSON (API JSON-RPC), in entrambi i casi via HTTP come altri servizi web. Queste API sono agnostiche rispetto la linguaggio di programmazione (Java, Python, C ++, ...) con cui viene realizzato il metodo remoto.

gRPC API

Le gRPC API, sviluppate da Google, sono servizi web simili alle RPC API basate su RPC. gRPC definisce i messaggi non in formato XML o JSON ma attraverso un buffer, specificato attraverso un file con estensione .proto. Il buffer.proto  consente di definire la struttura dei dati e il modo in cui serializzare i dati che devono essere consumati dal server ricevente. Il formato "protobuffer" è considerato più leggero efficiente rispetto ad XML.

GraphQL

Le GraphQL API sono servizi web sviluppati da Facebook che consentono un'interazione dinamica basata su un unico endpoint. La query GraphQL recupera solo i dati necessari, consentendo richieste e risposte veloci.

Async API

AsyncAPI è uno standard open source mirato alle architetture basate su eventi (Event Driven Architecture). Simile alla specifica OpenAPI, consente di definire un'interfaccia comune per le interfacce EDA e consente una gestione multicanale. Quindi la stessa specifica può essere utilizzata per un API basata su MQTT o per una API Kafka.

AsyncAPI si basa su due concetti:

  • i messaggi guidano la maggior parte delle interazioni API
  • questi messaggi descrivono azioni o eventi. 

In sostanza, AsyncAPI crede che tutto possa essere rappresentato come un sistema di messaggi, con un'intestazione e un payload facoltativi o non richiesti. In questa visione, AsyncAPI cerca di abilitare la definizione di API utilizzando definizioni basate sul canale indipendenti dal protocollo.

Librerie di API

Le "API basate su libreria", si riferiscono a librerie di codice (ad esempio, file JAR) che gli sviluppatori aggiungono direttamente ai loro progetti per fornire funzionalità aggiuntive tramite classi e metodi (nel caso di linguaggi ad oggetti come Java, .NET stack, C++) o altre funzioni che possono essere chiamate localmente. Con le API della libreria nativa, le funzioni sono incorporate localmente all'interno del codice per potenziare le operazioni realizzate dall'applicazione. Questo tipo di API sono strutturalmente diverse rispetto alle Web API che abbiamo elencato in precedenza.

Un esempio? OpenSSL API, cioè la più importante libreria crittografica open source.

----------------------------------------------

ABBIAMO FINITO? Ovviamente no. 

Ci sono altri tipi di API che potremmo dover documentare? Certo.

Allora diciamo che sono abbastanza confidente di avervi fornito "una mappa di base" per iniziare ad orientarvi rispetto alle caratteristiche generali delle API che attualmente coprono, ragionevolmente, il 90% dei casi che potreste dover gestire.

A presto.

Leggi questo articolo...

mercoledì 14 ottobre 2020

Documentare le API? Le risposte nascono dalle domande...

Come detto in precedenza, le API sono la pietra angolare della trasformazione digitale che sta attraversando tutte le aziende. Se non foste convinti di questo assunto, vi basti pensare alle conseguenze della pandemia COVID-19 che stiamo vivendo: quale impatto abbiamo registrato sui processi lavorativi?

Le aziende più efficienti hanno fatto fronte alle difficoltà con meno danni  e sono quelle che dispongono di processi digitalizzati realizzabili senza la necessità che TUTTI i lavoratori siano necessariamente presenti nel perimetro aziendale.

Un esempio? Ai primi di Giugno mi chiama il responsabile della documentazione aziendale di un'importante azienda italiana, di cui non farò il nome.

Il suo problema: a seguito della pandemia, i clienti richiedevano training digitalizzati, da fruire attraverso piattaforme LMS (Learning Management Systems) e lui voleva produrrre degli oggetti SCORM a partire dalla documentazione di prodotto, scritta secondo lo standard DITA.

Prima della pandemia, l'azienda forniva sessioni di training face-to face, ma non era più possibile; tuttavia, la necessità di fornire training ai clienti era pressante. 

Ragionando su questo problema, l'azienda in questione si è resa conto che era conveniente intraprendere questa trasformazione INDIPENDENTEMENTE dalla pandemia!

Al netto della soluzione che ho suggerito, il nocciolo della questione è: possiamo ridefinire e digitalizzare processi non solo perchè siamo obbligati dalle circostanze ma perchè è SEMPLICEMENTE CONVENIENTE! 

E questo fa la differenza nell'era della "API economy".

Se le API sono la spina dorsale dei processi di digitalizzazione, non ci vuole un'intelligenza cartesiana per capire quale ruolo può giocare la Comunicazione Tecnica incentrata sulle API.

Per inizare questo percorso, voglio partire dai dati prodotti da una recente indagine condotta da SmartBear.

Io analizzerò solo alcuni aspetti del report (per una lettura completa, potete accedere da qui).


SETTORI INDUSTRIALI COINVOLTI NELL'INDAGINE











Tutti i maggiori settori industriali sono coinvolti e non solo il settore ICT, che ovviamente fa la parte del leone col 28%.


DA QUANTO TEMPO STATE SVILUPPANDO API?

Questa domanda mostra che solo il 18% delle aziende che hanno partecipato al sondaggio stanno sviluppando API da almeno 10 anni, mentre il 29% sta intraprendendo questa strada da 3-5 anni.

Quindi è un'area di sviluppo ancora molto giovane.









PER QUALI MOTIVI STATE SVILUPPANDO API?

Questa è una delle domande  "chiave" del sondaggio, perchè ci da una panoramica delle motivazioni e ci trasmette un dato essenziale: sviluppare API non è "una moda", una specie di "picco" tecnologico frutto di una momentanea espressione del mercato, ma qualcosa destinato a durare da qui ai prossimi 10-15 anni, che nel campo ICT equivale ad un'era geologica!

Come vedete, prevalgono le motivazioni di interoperabilità tra sistemi diversi (64%) e la capacità di estendere una funzionalità nell'ottica di una logica "a servizi" (53%), sullo sfondo di un più generale processo di trasformazione digitale (43%).

Tutte queste motivazioni (e le altre comprese nel grafico) si alimentano a vicenda, in una sinergia che tenderà a crescere nei prossimi anni.


QUALI PARAMETRI DETERMINANO IL SUCCESSO DI UNA API?

E qui iniziamo ad entrare nell'ambito che più ci interessa, cioè nel delineare come la Comunicazione Tecnica viene coinvolta in questo fenomeno. Nella prossima figura ho evidenziato una voce:










E' evidente che se parliamo di Usability/developer experience, questa voce è largamente influenzata dalla documentazione che accompagna l'API. Ma non cadiamo nel luogo comune per il quale la documentazione delle API è ad uso e consume esclusivo degli sviluppatori: vedremo prossimamente che non è proprio del tutto vero.

Ora tralasciamo altri dati interessanti ma più focalizzati sullo specifico dello sviluppo software e continuiamo ad investigare alcuni aspetti della documentazione delle API, un elemento critico nel ciclo di vita delle API. La documentazione può fare la differenza tra una API di successo ed una inusabile.


IN AZIENDA ESISTE UN PROCESSO PER LA DOCUMENTAZIONE DI API?












Dal grafico si capisce chiaramente che, indipendentemente dalla dimensione dell'azienda, esistono processi dedicati alla documentazione delle API almeno nel 57% dei casi (26-100 dipendenti), per arrivare al 69% nelle grandi organizzazioni. Vi è poi circa un terzo delle aziende "piccole" (e circa un quarto delle aziende maggiori) che sta pianificando l'adozione di processi di documentazione delle API.

Ma ora entriamo a "gamba tesa" sul tema che ci interessa: cosa significa documentare un API?


LE 5 COSE PIU' IMPORTANTI PER DOCUMENTARE UN API














Come vedete esistono almeno 16 "tipologie" diverse di "elementi" attraverso i quali si può articolare la documentazione delle API. E sottolineo ALMENO perchè in realtà potremmo aggiungere qualche altra voce. 

Se un'azienda fornisse ai propri clienti una documentazione strutturata attraverso tutti questi elementi, sarebbe di certo da considerare un'azienda "virtuosa". 

In molti casi, sarebbe ottimale indirizzare anche solo alcuni di questi elementi.

Nel prossimo post, ripartiremo dall'ultimo grafico.

A presto!


Leggi questo articolo...

lunedì 19 ottobre 2020

Documentare le API: per quale audience?

Come promesso, ricominciamo da questo grafico:
























Come vedete, per le API è possibile approntare diversi tipi di "documentazione" o "informazioni per gli utenti" (secondo la definizone indicata nello standard ISO/IEC/IEEE 82079). Ma è possibile stilare una classifica di "priorità"? Cosa è assolutamente necessario e cosa posso considerare un "nice to have"? Dipende...

Da cosa dipende? Dall'audience ovviamente!
Chi è interessato a capire cosa si può fare con le nostre API?

Banalmente, gli sviluppatori che dovranno utilizzarle per scrivere software. 

Ma prima che uno sviluppatore possa utilizzare delle APIs, vi sono almeno altri due ruoli aziendali che devono intervenire per decidere di spendere il denaro necessario per acquisatre le APIs.

Il Product Manager (PM) ed il Chief Technical Officer (CTO) sono due figure chiave che dovremo convincere ad acquisatre le nostre APIs, e visto che ci saranno altri concorrenti che cercheranno di fare altrettanto dovremo fare le scelte giuste.

Ad esempio, fornire una Reference Guide che spiega nei dettagli ogni aspetto di ogni endpoint delle nostre API sarà molto utile per gli sviluppatori, ma di nessun aiuto per il PM ed il CTO.
La mia esperienza professionale mi suggerisce l'opportunità di segmentare l'audience in questo modo:
  • Sviluppatori
    • Sviluppatori Interni
    • Partners commerciali
    • Sviluppatori Clienti
  • PM
  • CTO

SVILUPPATORI

Gli sviluppatori utilizzeranno le API per scrivere applicazioni software e sono ritenuti i principali clienti per un "API vendor". In questo gruppo possiamo distinguere almeno 3 aree.

SVILUPPATORI INTERNI
Le API vengono usate dagli sviluppatori "esterni" (clienti del software vendor), ma vengono realizzate dagli sviluppatori "interni" del software vendor. Ma gli sviluppatori "interni" hanno bisogno della documentazione sulle API che hanno realizzato? 
Ovviamente si, per il banale motivo che ci crea un gran numero di API non è di certo in grado di ricordare a memoria tutte le loro proprietà, i parametri e i codici di ritorno.

Certo, si può aprire il codice sorgente ed investigare al suo interno... e molti sviluppatori sono abituati ad agire così, ma non è di sicuro il modo più comodo e veloce.

Per gli sviluppatori interni, una Reference Guide è di solito sufficiente.
Molte delle voci che sono presenti nel grafico precedente, fanno parte della Reference Guide.
Ovviamente è necessario anche un Sandbox Environment, cioè un'area dove si possono testare le API e verificarne il funzionamento, ma per gli sviluppatori interni questo è un elemento "nativo".

In sintesi, per gli sviluppatori interni può essere sufficiente definire:
  • Reference Guide
  • Sandbox Environment

PARTNER COMMERCIALI
I nostri partner commerciali di solito sono sviluppatori esperti che hanno confidenza con le nostre soluzioni e usano le nostre API per progetti di system integration.

In questo caso è necessario fornire gli stessi documenti utilizzati anche dagli SVILUPPATORI INTERNI, ma anche degli esempi di codice che illustrano alcuni casi d'uso tipici e, per ogni API (che può racchiudere diversi endpoint) sarebbe opportuno almeno uno Use Case.

Lo Use Case descrive uno scenario concreto in cui dobbiamo risolvere un problema e indica la soluzione adottata attraverso gli strumenti disponibili; in questo caso, le API che possono essere utilizzate per indirizzare il problema descritto. 

Nello Use Case si indica la sequenza delle operazioni fondamentali da eseguire (per i dettagli si rimanda alla Reference Guide) ed anche un esempio eventuale di codice che utilizza le API in questione.

Se non si dispone della documentazione di uno Use Case, bisogna fornire ALMENO una Getting Started Guide.

Inoltre, i nostri partner devono essere informati quando apportiamo variazioni alle caratteristiche delle nostre API, quindi dobbiamo aver cura di pubblicare un Change Log che sia in grado di descrivere qualsiasi variazione significativa sulla struttura e i parametri delle nostre API.

Ricapitolando, dobbiamo fornire almeno:
  • Reference Guide
  • Sandbox Environment
  • Sample Code
  • Use Case
  • Getting Started
  • Change Log

SVILUPPATORI CLIENTI
Questi sono i nostri interlocutori più preziosi, quelli che possono determinare il successo effettivo delle nostre API. E questi hanno bisogno di TUTTO quello che gli possiamo dare.

Oltre a tutti i documenti già disponibili per i PARTNER COMMERCIALI, per i clienti può essere necessari predisporre un Software Developmnet Kit (SDK) cioè uno strumento software e di documentazione che serve a velocizzare lo sviluppo di applicazioni software.

Ma anche una Troubleshooting Guide, per indirizzare tutte quelle situazioni in cui le nostre API presentano dei limiti applicativi oltre i quali l'applicazione potrebbe non funzionare correttamente.

Ovviamente, va fornito anche un glossario. Le nostre API fanno riferimento a concetti, algoritmi, standard ed acronimi che per noi non hanno segreti, ma per gli sviluppatori dei nostri clienti potrebbero essere criptici. 

Finito? Probabilmente no, ma se siamo riusciti a fornire tutte le informazioni appena descritte, siamo a buon punto. Ricapitolando:
  • Reference Guide
  • Sandbox Environment
  • Sample Code
  • Use Case
  • Getting Started
  • Change Log
  • SDK
  • Troubleshooting Guide
  • Glossary
  • ... ALTRO?...

PRODUCT MANAGER
Che lavoro fa il Product Manager? Non semplice da definire in due righe. 

In estrema sintesi, è uno che "indica la via" soprattutto dal punto di vista della collocazione del prodotto sul mercato, e contribuisce (insieme ad altre figure aziendali) a definire le linee guide fondamentali (tecnologia, UX, competition, comunicazione, ...) lungo le quali si deve sviluppare il prodotto; inoltre deve avere una "visione" coerente di tutto ciò (e anche di altri fattori) almeno di medio periodo. 

Bello vero? Si, ma non semplice.

Restringendo il perimetro al nostro caso, il PM deve capire se la tecnologia che gli stiamo proponendo porta un vanataggio nello sviluppo del prodotto e della relativa offerta commerciale, tenendo conto dei diversi fattori sopraindicati. Quindi è chiaro che per lui una Reference Guide o un SDK non sono di nessun interesse.

Se vogliamo conquistare la sua attenzione dobbiamo spiegare il Return of Investement (ROI) Scenario  che può ottenere dalle nostre API. Quali sono gli Use Case sensibili per lui? Quali sono le aree dove le aziende concorrenti sono in questo momento più attrezzate? Noi dobbiamo essere bravi ad assistere i suoi punti deboli, dimostrare che le nostre API vanno a chiudere "il buco" e colmare la distanza rispetto ai concorrenti. O anche che le nostre API sono dei "differenziatori" rispetto a quanto possono offrire i concorrenti.

Un esempio classico  potrebbe essere il White Paper "comparativo", di cui ho scritto nel 2010; si ok, ok, adesso i "puristi" saltano sulla sedia e mi fanno notare che il White Paper è un "documento di marketing" e non è "documentazione tecnica". 

Se siete ancora ancorati a questi schemi, rischiate di non cogliere il punto.
Qui il problema non è attenersi a delle schematizzazioni di maniera, ma risolvere il problema: convincere il PM che le nostre API saranno un valore aggiunto.

Un documento che potrebbe avere punti di contatto con il ROI Scenario, ma più ad "alto livello"  e in una prospettiva di medio periodo potrebbe essere il White Paper "di scenario"

Ricapitolando:
  • ROI Scenario
  • Use Case
  • White Paper "comparativo"
  • White Paper "di scenario"

CTO
Il CTO è la massima autorità tecnico-manageriale di un'azienda ed è il responsabile della strategia di medio-lungo periodo nell'evoluzione del prodotto. Di solito è un manager con un robusto back-ground tecnico. Quindi per convincere il CTO dobbiamo offrire una visione tecnica completa delle nostre API, ma di alto livello.

Quali tecnologie utilizziamo? Quali aree applicative andiamo a coprire? Quali standard tecnici vengono implementati attraverso le nostre API? Quanti potenziali clienti possono giovarsi delle nostre API? Quali difficoltà di integrazione possiamo abbattere? Se possiamo fornire un API Portal quali caratteristiche espone il nostro portale?

Queste sono alcune delle principali domande a cui potremmo dover rispondere per convincere il CTO delle nostre buone ragioni.

Un documento che potrebbe rispondere a questa esigenza è il White Paper "tecnico".

In generale, dovrà essere un documento breve, intenso, con dentro tutti i dati tecnici salienti che dobbiamo trasmettere al CTO per convincerlo a comprare le nostre API. Poi potete accompagnare questo documento con uno Use Case "ad-hoc" che metta in evidenza tutti gli aspetti sopracitati, immersi in un caso concreto.

*****

In questo post ho citato diversi concetti senza spiegarli, ma nei prossimi post di questo ciclo andrò a chiarire con maggior dettaglio. 

A presto!

Leggi questo articolo...

domenica 27 settembre 2020

API "economy": quale impatto sulla Comunicazione Tecnica?

Chi realizza informazioni per gli utenti che devono usare una piattaforma software, almeno una volta nella vita si è trovato a dover produrre documentazione relativa alle Application Programming Interface (API).


Le API sono interfacce che espongono le funzionalità di applicazioni software.

Per interagire con una certa funzione dell'applicazione, non dovete conoscere i dettagli di quest'ultima, ma solo alcuni parametri che dovete "passare" ad una certa API, la quale vi restituirà il risultato previsto da quella funzione.

Volendo generalizzare, un API è formata da un insieme di metodi di comunicazione chiaramente definiti. Attraverso tali metodi è possibile richiedere servizi alla piattaforma software, che sia un sistema operativo o altra applicazione.

Io ricordo di aver iniziato a "documentare API" per la prima volta nel 2003, quindi non sono una novità. Ma perché oggi sono diventate così importanti?

Perché oggi lavoriamo normalmente in ecosistemi digitali complessi ed eterogenei, ospitati da architetture Cloud e basati su standard e tecnologie diverse, attraverso applicazioni web che devono cooperare per scambiare un grande volume di dati.

I sistemi IoT (Internet of Things) producono un grande volume di dati che alimentano i repository di Big Data. I motori di intelligenza artificiale (AI) devono essere addestrati da grandi volumi di dati strutturati e non, estratti dai Big Data. Tutti questi flussi informativi devono essere gestiti da solide politiche di Information Security. 

IoT, Big Data, AI, Information Security e altre aree tecnologiche devono lavorare insieme, collegate attraverso reti di grandi dimensioni e completamente integrate per ottenere funzionalità sempre più sofisticate.

Come realizziamo queste architetture complesse? 

L'unica possibilità è fornire insiemi di API che possano essere utilizzate per integrare diversi sistemi digitali, senza che vi sia la necessità di conoscere la struttura dei singoli sistemi.

L' "API Economy" sta diventando il principale motore dell'attività di digitalizzazione, in qualsiasi settore industriale.

Puoi pensare a un'API come a un "livello" che nasconde la natura del sistema sottostante.
È possibile attivare un'API tramite un breve set di parametri.
Questo set di parametri (numerici o testuali) consente di eseguire un'azione precisa sul sistema.

Non è necessario conoscere il motore interno del sistema o tutti i dettagli sui diversi algoritmi implementati. È sufficiente conoscere il set di API di sistema per gestire tutte le interazioni necessarie.

Oggi scrivere la documentazione che accompagna una piattaforma software significa, principalmente, scrivere la documentazione delle API, cioè tutto quello che serve all'utente per utilizzare le API.

Chi è il nostro utente target in tal caso? Di solito, un programmatore.
Perché le API servono a scrivere il codice che permette di costruire gli strati d'integrazione tra due sistemi eterogenei, e questo lavoro è il lavoro degli sviluppatori software.

Questa osservazione non è banale, perché se dovete scrivere per un programmatore, allora sarà bene avere confidenza con l'attività di scrittura del codice e con i più diffusi linguaggi di programmazione.

E qui si apre un primo fronte nell'eterno conflitto tra due posizioni:
  1. Quelli che... "chi scrive la documentazione del prodotto deve essere un esperto del prodotto..."
  2. Quelli che... "un Comunicatore Tecnico può scrivere la  documentazione di qualsiasi prodotto... anzi meno è esperto di una certa tecnologia e meglio è..."
Non sono mai stato un manicheo e non inizierò oggi.

L'esperienza mi ha insegnato che se non hai confidenza con la tecnologia che devi descrivere, puoi comunque fare un buon lavoro, ma probabilmente impiegherai una quantità di tempo superiore a quella che sarebbe stata necessaria se avessi avuto "le mani in pasta" con quella tecnologia.
E LA VELOCITA' è un valore!
Ma questa è un'altra conversazione che riprenderemo più avanti.

Certamente, nel caso della documentazione di API, è opportuno avere una "profonda confidenza" con la programmazione software e questo è un punto da tenere a mente.

A presto.
Leggi questo articolo...

sabato 1 maggio 2021

Documentare le API: le aziende cercano l'Unicorno!

Ieri nella mia mail-box è arrivata questa offerta di lavoro (ho camuffato o tagliato informazioni che la rendessero troppo facilmente riconoscibile e i nomi di alcuni ben noti tools...):

Position

At XXXXXXXXXXXXXX, we create software that will enable our team to manage thousands of vehicles and customers on a daily basis. As an API technical writer, you play a key role in building our product by creating useful and engaging software documentation. You have the chance to join this team early on and...

Objectives

Best software to support business: Together with your team, you ship new features.... delivering the best software possible for our customers and business units

Strive for excellence: You strive to deliver the best possible experience for our users...

Providing beautiful software documentation: You help your engineering colleagues by writing high-quality and easy-to-understand documentation for the appropriate audiences

Your qualification

You have a Bachelor’s degree or equivalent. 3+ years creating API documentation in an agile development environment. Passion for creating useful and engaging software documentation with a strong customer-centric focus. Ability to work with API documentation tools such as..., or other docs-as-code approaches. Comfortable understanding codes in one or more programming languages, such as NodeJS or Python...JavaScript...

Experience in relevant product areas (e.g. eCommerce or B2C, SaaS platforms). Usability and testing skills with patience in problem-solving and troubleshooting. Talent in creating visual content using... Meticulous attention to detail and joy in precise working. You have a “never-stop-learning” attitude and a desire to develop and grow. You are fluent in English.

In un precedente articolo vi avevo indicato quali dovessero essere le migliori caratteristiche di un API Technical Writer.

Se rileggete l'articolo e lo confrontate con l'annuncio, vi accorgerete che non vi ho mentito!

Aldilà delle battute, la "API economy" richiede una figura professionale NUOVA o forse potremmo dire una "SPECIALIZZAZIONE" nel campo della Comunicazione Tecnica. I fondamentali classici del technical writing hanno ancora un ruolo ovviamente, ma sono solo LA BASE su cui costruire un nuovo asset di competenze.

Se avete fatto caso, questo annuncio di lavoro è rivolto ad un profilo sostanzialmente junior, che però si è già "infarinato le mani" in questo ruolo. In realtà, non esiste "una scuola" per diventare API Techcnical Writer. 

In Italia non esiste nemmeno un percorso degno di questo nome per imparare le basi del technical writing, ma questa è un'altra conversazione.



In altri termini, le aziende hanno bisogno di Unicorni... che come ben sapete, non si trovano facilmente!

Io mi sono occupato per la prima volta di documentare delle API nel 2005, ma io non faccio giursiprudenza, perchè parto in vantaggio: sono un Ing. Informatico che poi è diventato un Tech Writer.
Tanto per avere un'idea, io sono allineato con tutte le caratteristiche dell'annuncio... tranne le gioventù!

Presto inizierò un nuovo ciclo di articoli sulla API economy e su come si documentano le API.
A presto.

Leggi questo articolo...

venerdì 6 febbraio 2026

Cara AI, ma sei sicura che mi puoi sostituire? Cosa NON PUO' FARE l'AI - Parte 2.

Nel post precedente vi ho mostrato come uso l'AI nel mio quotidiano lavorativo.

Ho in mente di fare ulteriori esperimenti, che però richiedono tempo, perchè stiamo usando uno strumento PROBABILISTICO: spesso, a parità di input, ho ricavato risposte anche drammaticamente scorrelate. Non fatevi prendere in giro da chi vi racconta che la soluzione è tutta nel prompt: non è vero.

Se usate buoni prompt, avrete risultati migliori. Ma ci vogliono anche guard-rail robusti. E bisogna testare le risposte.

Non vi ho fornito i dettagli, non ho citato il nome dell'AI engine che uso per uno scopo o quello che uso per fare altro. Non è importante questo. 

Perchè? Perchè l'AI engine è solo uno strumento. Nel prossimo mese si affacceranno sul mercato nuove soluzioni o magari 2/3 nuove versioni per ogni AI engine che usate ogni giorno.

Il problema non è rincorrere l'ultima feature dell'ultima versione dell'ultimo engine.

Il problema è capire il processo END TO END che può, EVENTUALMENTE, trarre vantaggio da una ridefinizione del processo stesso con l'aiuto dell'AI. 

L'AI Gen può aiutarti a fare proficuamente alcune cose, non tutto.

AGGIORNARE/DEFINIRE LA DOCUMENTAZIONE ASSOCIATA AD UNA GUI

Quando emerge una nuova logica di business che può arricchire il prodotto, magari si decide di aggiornare la Graphic User Interface (GUI) che implementa quella logica. O addirittura viene definita una GUI completamente nuova, progettata da zero.

Quando questo accade, io devo:

  1. Parlare con il Product Manager per capire la logica di business.
  2. Parlare con gli sviluppatori per capire la logica della GUI.
  3. Usare in autonomia la GUI e capire i flussi operativi fondamentali da documentare.
  4. Scrivere, da tutto quello che ho capito e sperimentato, la documentazione per l'utente della GUI.

In questa lista, i verbi fondamentali (quindi le azioni da svolgere) sono capire, usare/sperimentare.

Queste cose non possono essere affidate all'attuale AI Gen. Perchè? Perchè l'attuale AI Gen non accede alla SEMANTICA di nessuna cosa.

Certo, dopo aver scritto la prima versione della documentazione, l'AI mi può aiutare nei modi che ho illustrato nel post precedente. Ma prima no.

AGGIORNARE/DEFINIRE LA DOCUMENTAZIONE ASSOCIATA AD UNA API

Ho scritto diversi articoli relativi alla documentazione delle API.

Oggi esistono tool e standard che dalla definizione dell'API sono in grado di realizzare un'ottima documentazione di tipo reference. Ma se poi volete documentare uno use case specifico, in  cui l'uso di quella API può aggiungere valore in modo determinante, vi trovate a dover gestire un ciclo di lavoro (e quasi sempre a dover iterare quel ciclo) simile a quello in 4 passi illustrato in precedenza.

Perchè? Sempre per lo stesso motivo. L'AI Gen può leggere lo schema di definizione della API, potete anche dargli in pasto il codice sorgente, ma non può descrivere uno use case completo e specifico che possa essere "di valore" per il cliente che si appresta a comprare quella API. Perchè l'AI non accede alla SEMANTICA della logica di business che vi ha indotto a produrre quella API.

QUALITY ASSURANCE (TEST) DEL PRODOTTO

Soltanto usando e testando il prodotto si può essere "ragionevolmente" sicuri che il prodotto faccia esattamente quello per cui è stato creato. Dico "ragionevolmente" perchè nella mia esperienza ho lavorato con prodotti molto potenti e ampiamente configurabili.

Dalle diverse combinazioni delle diverse configurazioni poteva essere generato un numero elevatissimo di possibili comportamenti del prodotto. Ogni comportamento, in teoria, da testare.

Da molti anni abbiamo procedure di test automatizzate a vari livelli (dal test della singola classe di codice, al test end to end per uno use case significativo, al test di casi limite che possono comunque verificarsi, ai test di regressione, etc.).

Ma per definire una procedura di test bisogna capire cosa vuoi testare, cioè la semantica del test.

Una GUI può ospitare un numero di componenti anche molto elevato (basta guardare la GUI di Microsoft Word).

L'utente è libero di seguire flussi di lavoro anche molto complessi e quei flussi vanno testati. E il modo in cui un utente interagisce con una nuova GUI è spesso poco prevedibile. Spesso gli sviluppatori rimangono sorpresi nel vedere come l'utente finale interagisce con la GUI. Discipline come il Design Thinking sono nate proprio per questo: per progettare qualcosa "intorno all'utente", cercando di definire al meglio le sue esigenze.

Tutta questa "complessità" risiede nel rapporto dinamico tra l'uomo e il software e ad oggi l'AI Gen non può governare tutto questo.

Quando navigo in una GUI e mi metto nei panni dell'utente, l'AI Gen non può aiutarmi. Quando scelgo la combinazione dei parametri in input ad una API e verifico la correttezza (by design) dell'output, l'AI Gen non può aiutarmi. Certo, potrebbe tentare di farlo... se io potessi trasferire all'AI la semantica del design, la configurazione sottostante, la semantica delle strutture dei dati che quella API deve gestire, i log di sistema. Certo. Tutto molto bello. Ma per fare questo bisogna trasformare i processi aziendali (cosa non banale) e dovete consentire all'AI l'accesso ai sistemi aziendali, il che implica anche notevoli considerazioni legali e di sicurezza su quali informazioni si possono condividere con l'AI e quali no. 

Ancora una volta, non ci sono pasti gratis nell'adozione della AI.

E se la GUI o la API hanno una "regressione"? Cioè se la nuova versione, che aggiunge un comportamento desiderato, "rompe" un altro comportamento, che prima funzionava ed ora non funziona più? Nella produzione del software questo può capitare, i test di regressione si fanno per questo.

Io, che conoscevo la logica e la semantica del comportamento precedente mi posso accorgere della regressione: l'AI Gen no.

SCOPRIRE REQUISTI IMPLICITI, CASI LIMITI, CARENZE NON PREVISTE

Al netto delle "narrazioni consolatorie", non esiste nessuna progettazione "perfetta", indipendentemente dal fatto che si applichino i principi della progettazione Waterfall,  Agile o qualsiasi altra cosa. 

Quando il prodotto va in staging e prima di portarlo in produzione, emergono dei casi limite che non erano stati individuati nella fase di progettazione.

O ci si accorge di un "buco" (di sicurezza, di usabilità, o nella logica di business) che solo il test condotto da un utente umano può far emergere. E spesso i Technical Writer si fanno carico di  questa parte del lavoro, perchè DEVONO mettersi nei panni dell'utente.

Oppure ci si accorge che va specificato un pre-requisito essenziale, che non era stato individuato prima.

Anche per questi motivi le metodologie Agile hanno preso piede: perchè l'N-esima iterazione dello sviluppo aiuta, progressivamente, a raffinare la soluzione e filtrare quello che non era emerso all'iterazione N-1.

In tutti questi aspetti, ancora, è richiesta conoscenza della semantica della funzione che si sta indagando, del contesto (la configurazione? O i dati in input e la configurazione? O altro ancora?), dello use case e del modo in cui l'utente procede, che non è necessariamente univoco (spesso, usando un software si arriva allo stesso risultato attraverso procedure diverse).

Anche questo fa parte del mio lavoro, perchè poi devo spiegare all'utente come gestire tutto questo. E l'AI Gen, che non capisce la semantica di nessuna cosa, non mi può aiutare.

GARANTIRE CONFORMITA' LEGALE/REGOLATORIA

La documentazione del software da questo punto di vista non deve rispettare obblighi cogenti.

Ma in altri settori, è necessario scrivere documentazione tecnica che sia perfettamente "conforme" alle norme di settore.

Non entro nel dettaglio, ma di certo l'AI Gen non vi può assicurare che quello che scrivete sia conforme ad un qualsiasi regolamento europeo o norma specifica. O meglio... se gli chiedete un parere, vi fornirà una risposta, magari rassicurante, ma sarà comunque a carico vostro il lavoro di verifica della conformità. 

Perchè? Perchè l'AI Gen non capisce la semantica di quello che scrivete e non capisce la semantica del regolamento a cui vi dovete attenere. 

Certo, vi può avvertire se nel vostro documento manca una specifica sezione (ad esempio, quella delle avvertenze di sicurezza), nel caso in cui dovete essere conformi ad un regolamento che vi obbliga ad inserire tali avvertenze nel manuale del prodotto. In tal caso vi sta aiutando nel rilevare un buco nella STRUTTURA del documento, e abbiamo già detto che in tal caso l'AI Gen può aiutare.

Ma per molti altri aspetti, è ancora impotente. 

Nel 2025 ho scritto alcuni articoli sull'EU AI Act. Non perdo tempo ad elencare le clamorose inesattezze che ho rilevato quando mi sono rivolto all'AI Gen per fare un po' di brainstorming&filtering dell'AI Act. Ad un certo punto, si è lanciata in una notevole dissertazione sull'articolo 142... vi assicuro molto convincente. Peccato che nell'AI Act non è presente alcun articolo 142!

Immaginate situazioni in cui la vostra documentazione deve rispettare regolamenti potenzialmente concorrenti o in parte sovrapponibili.

Ad esempio, immaginate i produttori di macchine industriale che presto dovranno conformare la loro documentazione al nuovo Regolamento Macchine ma che nel periodo transitorio potevano ancora riferirsi alla vecchia Direttiva Macchine. Sarei curioso di sapere se qualche collega si è affidato all'AI Gen per gestire qualche aspetto del periodo transitorio. Ma a lume di naso, direi che in tutte queste attività non ci si può ancora fidare dell'AI Gen.

L'AI NON CAPISCE LE COSE, QUINDI NON PUO' FARE DOMANDE

Due delle fasi fondamentali del mio lavoro consistono nell'usare il prodotto e fare domande. Le stesse domande che potrebbe fare un utente disorientato davanti ad una nuova GUI o una nuova API. Le domande che servono per entrare dentro la logica di business di una nuova feature. Le domande che servono per individuare i pre-requisiti o i casi limite. 

Fortunatamente, solo gli umani possono formulare domande, individuare nuovi problemi e analizzare vincoli critici.

----

Come vedete, ci sono molte aree del mio lavoro che ancora non possono trarre vantaggio dall'AI.

Su altre cose ci sto lavorando.

Ne parliamo nei prossimi post.


Leggi questo articolo...

giovedì 29 ottobre 2020

Documentare le API: bisogna avere un background tecnico?

Il post precedente ha iniziato ad indagare più in profondità la tematica di come documentare le API.

Se avete avuto la pazienza di leggerlo, secondo me nella vostra testa si è accesa una lampadina, la tipica lampadina che precede la formulazione di una serie di domande:

  • Chi documenta le API deve avere confidenza con lo sviluppo software? 
  • Deve saper leggere un frammento di codice scritto in Java o in C++ o in Phyton? 
  • Deve saper leggere dentro un oggetto JSON o protobuffer? 
  • Deve saper navigare agevolmente dentro un XML? 
  • Deve conoscere i codici di ritorno del protocollo HTTP?
  • Deve aver confidenza con la gestione di processi di sviluppo Agile e Continous Delivery?
  • E, più in generale, deve avere un background tecnico solido?
  • In altri termini: deve governare almeno i fondamentali della programmazione o essere addirittura un ex-programmatore? 

La mia risposta è SI!

Mentre un technical writer della "scuola classica" potrebbe sostenere che "il technical writer non deve essere esperto della tecnologia da documentare, anzi proprio per questo sarà più efficace nel suo lavoro".

In teoria, possiamo amabilmente discutere di tutto.

In concreto, la mia esperienza mi dice che in certi ambiti tecnologici, il comunicatore deve avere "le mani in pasta" rispetto alla tecnologia. Forse è eccessivo sostenere che debba addirittura essere un ex-programmatore, ma deve di certo padroneggiare tutte le necessarie conoscenze.

Questo è tanto più vero quanto più siamo immersi dentro flussi di lavoro Agile, che alimentano processi di Continous Delivery, dove i tempi di sviluppo della documentazione sono indistinguibili dal ciclo di sviluppo del software e sono estremamente "strettti". 

In tali contesti, con cicli di lavoro di 3 settimane, non c'è molto tempo per "intervistare gli SME", produrre 2 o 3 draft da validare, fare la review linguistica/terminologica, sviluppare la grafica a supporto ed altri passaggi classici dei processi di documentazione.

O meglio: si DEVE FARE tutto questo ma molto più velocemente, in "presa diretta", senza rete. E con molta più "qualità intrinseca", proprio perchè c'è meno tempo anche per rimediare agli errori.

Questo ci obbliga a dover avere una certa "conoscenza" della tecnologia che stiamo documentando, perchè questo ci permette di essere più veloci... e la velocità è un valore.

Non siete convinti? 
Mi avvalgo ancora del report di SmartBear per darvi ulteriori elementi.

QUALI SONO I MAGGIORI OSTACOLI ALLA PRODUZIONE DI API DI QUALITA'?



Le prime due risposte, con il 52% e il 48% delle risposte, vanno a coprire esattamente la mia tesi.
Se non foste convinti, anche la 3^ e la 4^ risposta vanno nella stessa direzione.
Le prime 4 risposte influenzano notevolmente anche i processi di documentazione tecnica.
Le risposte dalla 5^ alla 7^ invece sono più incentrate sull'integrazione di tools, sistemi e processi aziendali.

Tutte queste risposte evidenziano che la qualità delle API prodotte nel nostro processo aziendale, che coinvolge anche la relativa documentazione, ruotano su due elementi principali:
  • La competenza e l'esperienza tecnica specifica.
  • La velocità di esecuzione del delivery (o se preferite i tempi di realizzazione sempre molto ridotti tra due rilasci successivi).
Se volete avere un primo contatto con il paradigma "Docs as Code" che sintetizza le idee che vi ho illustrato in questo post, date un occhio a questa miniera d'oro di spunti.

A presto.
Leggi questo articolo...

lunedì 19 gennaio 2026

Diàtaxis: un framework per la Comunicazione Tecnica

Nel mio continuo lavoro di ricerca nel campo della Com Tecnica, sono capitato per caso sul sito di Canonical e da lì mi sono imbattuto in Diátaxis, un framework per la realizzazione della documentazione di prodotto ideato da Daniele Procida. Questo il suo sito.

Diátaxis è un termine che deriva dal greco antico: dia (“attraverso”) + taxis (“disposizione, ordine”). L’idea di base è che la documentazione deve essere organizzata in modo che gli utenti trovino ciò di cui hanno bisogno in funzione del loro scopo.

Diátaxis divide la documentazione in quattro tipi:

  • Tutorial: guide per apprendere facendo, passo dopo passo.
  • How-to: contenuti focalizzati sulla risoluzione di use case specifici.
  • Reference: descrizioni tecniche, specifiche, tabelle, parametri, API, etc.
  • Explanation: contenuti concettuali, background, contesto, per aiutare a comprendere più a fondo.

Diátaxis si pone l’obiettivo di aiutare gli utenti a trovare più facilmente ciò che cercano, perché l’organizzazione dei contenuti è basata sui loro obiettivi.

Quindi possiamo dire che il framework cerca di assumere “il punto di vista dell’utente”, e questa è una tendenza conforme ad altre discipline che si sono imposte negli ultimi 25 anni (vedi Design Thinking).

I principi di fondo che possiamo individuare sono sostanzialmente 2:

  1. Fornire un modello coerente per organizzare la documentazione di prodotto.
  2. Netta separazione di contenuti diversi, finalizzati per utenti diversi che le utilizzano in momenti diversi: le spiegazioni concettuali (Explanation) servono per dare una base ed un contesto, ma gli How To sono le vere procedure operative per risolvere problemi specifici.

Analizziamo sinteticamente le 4 tipologie di documentazione.


TUTORIAL

Sono finalizzati ad insegnare attraverso la pratica. L’obiettivo è “imparare facendo”, non “capire leggendo”.

Guidano l’utente passo dopo passo nel completamento di un compito, per acquisire nuove abilità in modo esperienziale. Un buon tutorial porta l’utente a fare un percorso di apprendimento, in cui ogni passaggio costruisce comprensione e fiducia.

Non confondete il Tutorial con l’How To:

  • Secondo Diàtaxis, un Tutorial guida l’utente per imparare (la definizione di una configurazione, il disegno di un modello, etc)
  • Un How To aiuta a risolvere uno specifico use-case (come faccio a fare QUESTA cosa?)

Un Tutorial efficace dovrebbe:

  1. Dichiarare l’obiettivo: cosa avrò imparato al termine?
  2. Prerequisiti: cosa serve sapere prima di iniziare.
  3. Istruzioni passo passo:  ogni passo, istruzioni brevi e una sola azione (un solo verbo) per ogni passo.
  4. Un risultato tangibile: qualcosa di concreto da mostrare. 
  5. Un riepilogo e i prossimi passi: come continuare a imparare o approfondire.


EXPLANATION (concetti e spiegazioni)

Le spiegazioni servono a fornire contesto, comprensione e concetti, al fine di rispondere alla domanda: “Perché funziona così? In base a quali concetti o principi?”

A differenza dei Tutorial, le spiegazioni non sono istruzioni. Il loro scopo è aiutare il lettore a capire, non a fare.

Un Explanation efficace include:

  1. La definzione del concetto: cosa si sta spiegando e perché è rilevante.
  2. Principi chiave: le definizioni.
  3. Contesto e background: come si collega ad altre parti del sistema o della Teoria.
  4. Dettagli, esempi e controesempi: per chiarire il funzionamento e i limiti.
  5. Collegamenti ad altri concetti o decisioni progettuali: come si è arrivati a una certa scelta?
  6. Riepilogo finale e suggerimenti per approfondire: testi, documenti o sezioni correlate.

In Diàtaxis, le spiegazioni non vanno messe nel Tutorial o nell’How To

Se un Tutorial inizia a spiegare teoria, o un How To si dilunga in riflessioni, significa che quelle parti dovrebbero essere spostate nella sezione Explanation.


REFERENCE (riferimenti tecnici)

I documenti di riferimento sono la parte più tecnica e dettagliata della documentazione. Servono a descrivere in modo preciso e completo come funziona il sistema o il prodotto. Non insegnano, non spiegano concetti e non risolvono problemi concreti: descrivono. 

Una Reference ben fatta è esaustiva e facilmente consultabile. È utile per chi sa già cosa vuole fare, ma ha bisogno di conoscere i dettagli esatti per riuscirci.

Elementi tipici di una buona Reference includono:

  1. Descrizioni complete di funzioni, comandi, classi o API.
  2. Tabelle di parametri, argomenti, tipi di dati e valori di ritorno.
  3. Esempi per illustrare come utilizzare correttamente una funzione o un’opzione.
  4. Diagrammi o schemi strutturali, per capire la relazione tra elementi.
  5. Collegamenti incrociati verso sezioni correlate (es. verso guide o spiegazioni).

La Reference deve essere organizzata in modo coerente ed ogni elemento documentato (una funzione, un comando, un endpoint API, ecc.) dovrebbe seguire lo stesso schema informativo.

Essa richiede un approccio descrittivo e non dovrebbe essere presente all’interno di un Tutorial o di un Explanation.


HOW TO

Servono a completare un compito specifico e rispondono alla domanda: come faccio a fare QUESTA cosa? 

Un How To definisce una procedura specifica che consente di ottenere un risultato preciso.

Un How To deve:

  1. Definire l’obiettivo: cosa si otterrà al termine della procedura.
  2. Elencare i prerequisiti.
  3. Fornire istruzioni step-by-step.
  4. Includere esempi concreti.
  5. Concludere con un riepilogo e collegamenti utili (ad esempio ad altre guide o sezioni di riferimento).

----

Potrebbe essere interessante valutare l'eventuale correlazione tra Diàtaxis e altri standard/framework/metodi per la documentazione tecnica, quali DITA, S1000D e Information Mapping.


DITA vs Diàtaxis

DITA è uno standard aperto basato su XML per strutturare, creare e pubblicare contenuti modulari che possono essere facilmente riutilizzati su piattaforme diverse, consentendo una gestione efficiente della documentazione tecnica, attraverso la creazione di contenuti basati sulla specializzazione dei contenuti. 

E' forse lo standard tecnico più utilizzato nel mondo, e non solo per la documentazione dei prodotti software come erroneamente molti pensano.

DITA organizza le informazioni in piccoli “topic” autonomi tipizzati per Concept-Task-Reference-Troubleshooting.

Tali topic sono assemblati utilizzando un organizzazione gerarchica (DITA Maps), promuovendo la coerenza, la scalabilità e la riduzione dei costi nella gestione di grandi volumi di documentazione. 

Qulcuno intuisce un qualche punto di contatto?

"Concettualmente" si. Analizziamo la seguente tabella.


Ma è importante capire che queste "similitudini" sono solo apparenti.

DITA lavora a livello di "topic" che può essere un frammento di informazione "piccolo a piacere", da poche righe a pochi pararagrafi. Inoltre, ogni elemento della struttura del topic è associato ad un tag XML preciso. E ci sono topic che possono contenere solo un certo insieme di DITA tag e non altri.

Invece in Diàtaxis un How To può essere un documento anche molto esteso, purchè coerente con i principi sopra indicati. Gli elementi informativi di un How To in Diàtaxis non sono legati a nessuno tipo di tag XML e quindi non presentano una struttura pre-definita.

DITA parte con l'idea di organizzare i contenuti dal punto di vista della loro "struttura tecnica interna".

Diàtaxis parte del punto di vista dell'utente che deve consultare i documenti.

Quindi la tabella è un classico caso di "correlazione ingannevole": sia DITA che Diàtaxis indicano alcune "tipologie" di contenuto, ma la correlazione è debolissima, perchè la classificazione tipologica si applica ad oggetti diversi.


S1000D vs Diàtaxis

S1000D è anch'esso uno standard tecnico XML largamente utilizzato in tutto il mondo, in special modo nell'industria navale (civile e militare), in quella ferroviaria e in quella avionica/aeronautica (civile e militare). La sua "tipizzazione" è molto più dettgliata e raffinata di quella di DITA.

Un oggetto S1000D è definito da una specifica estremamamente precisa in ogni dettaglio informativo.

Direi che possiamo certamente concludere che S1000D e Diàtaxis sono imparagonabili.


Information Mapping vs Diàtaxis

Information Mapping (IM) è un metodo strutturato e modulare per scrivere contenuti in modo che siano facilmente comprensibili e riutilizzabili, concentrandosi sulla granularità e sull'uso di elementi visivi come le "mappe di contenuto" (content maps).

IM si focalizza sulla struttura fisica del contenuto (blocchi di testo, dati, immagini) che sono auto-contenuti, coerenti e riutilizzabili (tabelle, liste).

IM prescrive la rigorosa modularità dei contenuti, utilizzando principi di design per creare blocchi di informazione che possono essere riassemblati.

IM non è uno standard XML aperto.

Diàtaxis, come abbiamo visto, è un framework molto più incentrato sul COSA e sul PERCHE', che parte dal punto di vista dell'utente: non prescrive regole rigide sulla struttura fisica dei contenuti, e nemmeno sui blocchi informativi da presentare all'utente.

Tuttavia, sia IM che Diàtaxis hanno in comune l'aspirazione di promuovere l'organizzazione logica dei contenuti e la scomposizione di informazioni complesse, al fine di migliorare la comprensione e ridurre il carico cognitivo per chi legge. 


IN CONCLUSIONE

Diàtaxis è un framework interessante, con pochissimi punti di contatto con gli standard tecnici XML più usati nel mondo (DITA ed S1000D), mentre presenta qualche affinità con una metodologia come IM.

Come sempre, non esiste la soluzione perfetta per ogni contesto.

Pe grandi volumi di dati, che devono essere aggiornati di frequente, customizzati in N modi diversi e tradotti in dozzine di lingue, la potenza tecnico-organizzativa di DITA è difficilmente contrastabile. 

S1000D lo potete pensare come DITA elevato all'ennesima potenza, non a caso si usa in contesti e per prodotti spesso "mission-critical" dove la standardizzazione e la precisione dei contenuti sono imprescindibili.

Ma per altri contesti, adottare DITA ed S1000D potrebbe essere paragonabile ad andare a caccia di fagiani con un missile terra-aria.

Diàtaxis ha il grande pregio di essere focalizzato sulle esigenze degli utenti, con un'organizzazione semplice ed elegante. E non è un pregio trascurabile.


Leggi questo articolo...

domenica 23 gennaio 2022

E' stata pubblicata la nuova versione dello standard ISO/IEC/IEEE 26514:2022

Come vi avevo preannunciato alla fine di Novembre, è ora disponibile la nuova versione dello standard ISO/IEC/IEEE 26514:2022.

Tale standard è il principale standard di riferimento per la produzione delle informazioni per l'uso di un prodotto software.

Una prima osservazione: come nello standard ISO 82079, che è lo standard orizzontale di riferimento per qualsiasi tipo di prodotto (e quindi anche per i prodotti software), anche qui scompare il concetto di "documentazione/documento/manuale" ma si parla di "informazioni per l'uso/per gli utenti".

Può sembrare una banalità formale, in realtà è una conquista concettuale ottenuta dopo anni di dibattito: non esistono più i "documenti" o i "manuali", cioè i "contenitori" in cui vengono organizzate le informazioni, ma esistono fondamentalmente "le informazioni".

Il focus deve essere sulle "informazioni" ed eventualmente sui meta-dati che sono associati alle informazioni; le informazioni devono essere "modulari", di granularità abbastanza fine, devono essere i nostri "mattoncini Lego" che possiamo profilare e assemblare nei modi più opportuni in diversi contenitori, che sono ciò che chiamiamo "documenti".

Ma i documenti sono solo l'output di un processo.

Spesso tali contenitori non assumono più nemmeno una forma cartacea, ma rimangono prevalentemente in forma digitale.

Come sapete, anche il nuovo Regolamento Macchine (ancora in via di definizione) si sta orientando in tal senso, dando finalmente più spazio e libertà alla definizione delle informazioni in formato elettronico/digitale.

Ma ritorniamo allo standard 26514.

Il nuovo standard è organizzato in 64 pagine, meno della metà della versione precedente (2008, 143 pagine).

Sono state eliminate molte inutili sovrapposizioni con altri standard che nel frattempo si sono evoluti e consolidati, facendo esplicito riferimento a tali standard quando un argomento, presente nella vecchia versione 26514:2008, era meglio delineato nello standard specifico.

Molti i riferimenti allo standard 82079 ma anche agli altri standard del blocco 265xx; attraverso tali riferimenti è stato possibile "tagliare" le parti ridondanti e che potevano creare fraintendimenti.

Lo standard è sostanzialmente suddiviso in due parti.

PRIMA PARTE - Gestione del processo di sviluppo delle informazioni (Cap. 5 e 6)

Qui ci sono tutti gli aspetti di Project Management e Information Architecture applicate allo sviluppo delle informazioni. In particolare, il Cap. 6 può essere preso come punto di riferimento per la gestione del "processo redazionale" che può essere applicabile a TUTTI I TIPI DI PRODOTTO, quindi non solo ai prodotti software.

Nella precedente versione questi concetti erano diluiti in 5 capitoli (5,6,7,8,9), rendendo oggettivamente un poco troppo pesante lo sviluppo dell'argomento.

ATTENZIONE per tutti coloro che, specialmente negli ultimi due anni di pandemia, hanno scoperto la necessità di DIGITALIZZARE I PROCESSI AZIENDALI... perché non sarete mai in grado di digitalizzare nessun processo se prima non digitalizzate i vostri contenuti! 

E per digitalizzare i contenuti avete bisogno di un'Architettura delle Informazioni.

Il Cap. 6 di questo standard vi fornisce le linee guida per indirizzare questo lavoro. I principi espressi si possono usare non solo per la gestione delle informazioni di uno specifico prodotto software ma, ad esempio, anche nel caso in cui vogliate strutturare una Knowledge Base aziendale.

SECONDA PARTE - Definizione delle informazioni (Cap. 7, 8, 9)

Qui trovate molte novità. 

Il Cap 7. fornisce le linee guida per definire la Qualità delle informazioni; nel precedente standard questi concetti erano citati e spezzettati in diversi capitoli, ma qui è stato fatto uno sforzo di sintesi per fornire i riferimenti essenziali di base su un argomento rispetto al quale si dibatte da almeno 30 anni.

Nel Cap. 8 trovate le linee guida sulla strutturazione delle informazioni.

Inoltre trovate alcuni nuovi contenuti, completamente assenti nella versione precedente.

Ad esempio, come definire le informazioni relative alle API (vi ho già parlato dell'importanza delle API nelle moderne architetture software, presto ritorneremo a parlarne), o l'analogo per quanto riguarda i Chatbot.

Nel Cap. 9 un'estesa trattazione sui formati che potete definire per confezionare le informazioni.

Poi ci sono 2 appendici, relative agli aspetti generali più propriamente linguistici e di traduzione delle informazioni per l'uso. Ovviamente non si entra nel dettaglio perché ci sono altri standard su questi argomenti, ma si forniscono alcuni principi generali che non bisogna mai dimenticare.

A mio parere è stato fatto un gran lavoro, che si è sviluppato nell'arco di circa 30 mesi.

Sono contento di aver dato il mio contributo all'innovazione di questo standard, sia come rappresentate per l'Italia in seno alla JTC 1/SC 7/WG 2 Committee, sia come membro dell'ABLS della tekom EUROPE.

A presto!


Leggi questo articolo...

giovedì 15 gennaio 2009

Esercizio di riscrittura n° 1

Vi propongo un primo testo abbastanza ostico, che necessita di una riscrittura.

L'integrazione Like Real Time è una proprietà della maggioranza dei connettori disponibili per Global Control Identity Manager.
Si intende con Like Real Time il fatto che il singolo connettore effettui un polling a frequenza elevata (tipicamente tra i 5 secondi e il minuto e comunque configurabile) delle variazioni avvenute sul sistema integrato.
Questo modello viene applicato solo per i sistemi per cui è disponibile una forma di Change Sheet su cui rilevare direttamente le differenze.
In ogni caso implica l'assenza di snapshot e comparazione della stesse ma solo l'integrazione via API o protocollo standard alla forma di Change Sheet disponibile sui vari sistemi.

La modalità di integrazione Like Real Time permette di avere molte e frequenti elaborazioni delle sole variazioni eventualmente intercorse dall'ultima esecuzione.
L'esistenza della modalità di integrazione Like Real Time garantita dai connettori, permette di gestire sulla base puntuale della singola entry la propagazione delle eventuali modifiche senza dover effettuare comparazioni o elaborazioni massive.
Sul piano architetturale la presenza dell'integrazione Like Real Time svincola la performance del sistema dal numero di entità complessive gestite lasciando solo la dipendenza dal numero di entità nell'unità di tempo modificate.
Questo è rilevante in quanto molti sistemi di provisioning di altri vendor si basano sulla comparazione di snapshot successive prelevate dai sistemi periferici ad intervalli regolari o schedulati. La comparazione di snapshot successive determina l'elenco delle modifiche da consolidare.

Questo testo presenta diversi difetti: punteggiatura imprecisa, ripetizioni farraginose, periodi poco chiari e soluzioni inessenziali al fine dell'illustrazione di una modalità, denominata Like Real Time, utilizzata per verificare le variazioni dei dati contenuti in un sistema informatico.
Chiunque lo esamini, dovrebbe essere scosso da un fremito di ribellione creativa!
Di seguito, suddividiamo il testo in 4 parti e proviamo a riscriverlo.

------------------------------------

PARTE 1

L'integrazione Like Real Time è una proprietà della maggioranza dei connettori disponibili per Global Control Identity Manager.

Si intende con Like Real Time il fatto che il singolo connettore effettui un polling a frequenza elevata (tipicamente tra i 5 secondi e il minuto e comunque configurabile) delle variazioni avvenute sul sistema integrato.
Questo modello viene applicato solo per i sistemi per cui è disponibile una forma di Change Sheet su cui rilevare direttamente le differenze.

L'integrazione Like Real Time (LRT) è una proprietà della maggioranza dei connettori disponibili per Global Control Identity Manager.
Con il LRT, il singolo connettore effettua un polling a frequenza configurabile (tipicamente tra i 5 secondi e il minuto) delle variazioni avvenute sul sistema integrato, laddove il sistema preveda una forma di Change Sheet su cui rilevare tali differenze.

Nella PARTE 1, l'aggetivo elevata "sa di marketing"... rispetto a cosa la frequenza di polling sarebbe "elevata" ? Quello che invece è veramente importante sottolineare è che la frequenza è configurabile entro un certo intervallo.
Anche il termine direttamente non risulta essenziale alla comprensione del concetto che vogliamo comunicare.


PARTE 2
In ogni caso implica l'assenza di snapshot e comparazione della stesse ma solo l'integrazione via API o protocollo standard alla forma di Change Sheet disponibile sui vari sistemi.
La modalità di integrazione Like Real Time permette di avere molte e frequenti elaborazioni delle sole variazioni eventualmente intercorse dall'ultima esecuzione.
L'esistenza della modalità di integrazione Like Real Time garantita dai connettori, permette di gestire sulla base puntuale della singola entry la propagazione delle eventuali modifiche senza dover effettuare comparazioni o elaborazioni massive.

La modalità LRT permette di avere frequenti elaborazioni delle sole variazioni eventualmente intercorse dall'ultima esecuzione; l'analsi è incentrata sulla base della singola entry e consente la propagazione delle eventuali modifiche senza dover effettuare comparazioni o elaborazioni massive.

All'inizio della PARTE 2, la parte in rosso è semplicemente poco chiara e non è utile alla comprensione del lettore: ho eliminato l'intero periodo. Nella parte finale ho "asciugato" il testo ed eliminato qualche fastidiosa ripetizione, ricorrendo anche all'acronimo LRT al posto della locuzione estesa Like Real Time.


PARTE 3
Sul piano architetturale la presenza dell'integrazione Like Real Time svincola la performance del sistema dal numero di entità complessive gestite lasciando solo la dipendenza dal numero di entità nell'unità di tempo modificate.

Il meccanismo LRT svincola la performance del sistema dal numero di entità complessive gestite, enfatizzando solo la dipendenza dal numero di entità modificate nell'unità di tempo .

All'inizio del terzo brano, la parte in rosso viene sostituita dal più snello Il meccanismo LRT.


PARTE 4
Questo è rilevante in quanto molti sistemi di provisioning di altri vendor si basano sulla comparazione di snapshot successive prelevate dai sistemi periferici ad intervalli regolari o schedulati. La comparazione di snapshot successive determina l'elenco delle modifiche da consolidare.

I sistemi di provisioning di molti altri vendor, si basano invece sulla comparazione di snapshot successive, prelevate dai sistemi ad intervalli schedulati; la comparazione tra due snapshot successive determina le modifiche da consolidare.

Il fatto che i sistemi coinvolti siano periferici, nulla aggiunge alla comprensione del concetto di LRT.
La locuzione "regolari o schedulati" è fuorviante; la schedulazione implica la possibilità di definire intervalli, sia regolari che irregolari.
In altri termini "schedulati" implica anche "regolari", non sono concetti alternativi.


------------------------------------

Adesso, mettendo insieme le 4 parti riscritte, si ottiene un testo piu' asciutto, snello ed essenziale rispetto a quello di iniziale. L'attenzione ad "asciugare" e "snellire" i testi verrà ossessivamente perseguita in questa sede... siete avvertiti!
Ovviamente potevo seguire altri criteri nel riscrivere il testo e non è detto che la soluzione indicata sia in assoluto la migliore... ogni writer può seguire un approccio personale in tal senso. Il risultato finale mi sembra comunque migliore rispetto al punto di partenza... se avete tempo e voglia, fatemi sapere cosa ne pensate.




Leggi questo articolo...