Jmix · sviluppo su misura

Costruito dall’inizio alla fine, e consegnato in modo che qualcun altro potesse mantenerlo.

Analisi, costruzione, deployment, documentazione e un passaggio di consegne a chi tiene il sistema dopo — il vostro team, il vostro IT interno o un fornitore completamente diverso. È l’ultimo dei tre quello per cui vale la pena progettare, perché è quello che mette alla prova tutto il resto.

Tutti i fornitori offrono una consegna dall’inizio alla fine, quindi l’offerta non porta informazione. Porta informazione l’uscita: cosa possedete alla fine, in che forma, e se un estraneo può clonare il repository e far funzionare il sistema senza chiamarci. Di questo parla questa pagina.

Proprietà

Cosa possedete davvero, in tre livelli

Il lock-in viene chiesto come una domanda sola. Sono tre, e hanno risposte diverse:

  • Il framework. Apache 2.0. Gratuito, vostro, e non nostro da trattenere. Nessun canone di runtime e nessun canone per utente — il numero di persone che usano il sistema non cambia quello che pagate.
  • La vostra applicazione. Normale Java o Kotlin su Spring Boot, nel vostro repository, leggibile da qualsiasi team Java. È la parte che conta nel 2032, ed è la parte che è vostra senza ambiguità.
  • Jmix Studio. Un abbonamento per postazione di sviluppo, usato in fase di sviluppo. Non è necessario per eseguire l’applicazione. Se l’abbonamento scade, quello che perdete è comodità di sviluppo, non un sistema in funzione.

E la parte con cui la brochure non apre

Alcune funzionalità vivono in livelli a pagamento e non nel framework gratuito. Il livello Enterprise copre cose come mappe e geodati, gestione documentale, funzioni di collaborazione, notifiche omnicanale e l’area di lavoro multi-scheda; il livello BPM copre gli strumenti di progettazione BPMN e il motore di processo. Report e grafici sono gratuiti. Sviluppare su quelli a pagamento richiede un abbonamento attivo corrispondente.

Il che significa che una decisione progettuale presa alla leggera nella seconda settimana può impegnarvi a un livello di abbonamento per tutta la vita del sistema. Siamo noi l’azienda che vende quegli abbonamenti, e preferiamo comunque dirvelo davanti alla lavagna: questa scelta vi costa questo all’anno, e questa è la strada gratuita se esiste. A volte l’add-on a pagamento vale chiaramente la spesa. A volte sono due settimane di codice normale.

La consegna

Cinque cose che un estraneo deve poter fare

Questo è il test di accettazione di un passaggio di consegne, ed è eseguito da qualcuno che non ha mai aperto il progetto — una delle vostre persone, o un fornitore che state valutando. Puntiamo a eseguirlo alla fine di ogni fase e non una volta sola alla fine, perché un passaggio di consegne provato quattro volte è un passaggio di consegne, mentre un passaggio di consegne tentato una volta sola è una speranza.

Il test di accettazione in cinque passi per il passaggio di consegne di un progetto Cinque passi in sequenza, da eseguire da parte di qualcuno che non ha mai visto il progetto. Uno: clonare il repository e leggere il README. Due: compilarlo su una macchina pulita, senza aiuto. Tre: eseguirlo in locale con dati iniziali. Quattro: fare il deploy di un nuovo ambiente vuoto. Cinque: cambiare una cosa e rilasciarla. Ogni passo dovrebbe essere abbastanza breve da finire in una sola sessione, e se uno di essi richiede una telefonata a noi, il passaggio di consegne non è concluso. ESEGUITO DA CHI NON HA MAI VISTO IL PROGETTO 01 Clonarlo e leggere il README In una sessione 02 Compilarlo su macchina pulita Da solo 03 Eseguirlo in locale, con dati iniziali Senza chiedercelo 04 Deploy di un nuovo ambiente vuoto Dal runbook 05 Cambiare una cosa e rilasciarla Dall’inizio alla fine Se un passo richiede di chiamarci, il passaggio di consegne non è concluso — qualunque cosa dica la documentazione. Il quinto passo è quello vero. I primi quattro provano che il progetto compila; il quinto che qualcun altro può farlo suo.
La sequenza è il punto. "È documentato" non è un’affermazione che qualcuno possa verificare, e un README su cui non si può agire è un README che nessuno leggerà due volte. Questo è lo standard a cui lavoriamo, non una promessa su un certo numero di ore: i progetti reali contengono attese, approvazioni e terze parti, e una cifra stampata su una pagina web non può saperne nulla.

Il pacchetto

Cosa arriva insieme al sistema

Non un raccoglitore. Cinque artefatti, ognuno dei quali esiste perché la sua assenza è un modo preciso in cui il team successivo si blocca:

  • Il repository con la sua storia. Commit e branch intatti, non un unico import di un codice finito. La storia è il modo in cui il prossimo ingegnere scopre il perché.
  • Una build che parte da zero. Un comando, su una macchina che non ha mai visto il progetto, con i prerequisiti elencati per versione.
  • Migrazioni del database, da vuoto. Ogni modifica dello schema come script, applicata in ordine, così un nuovo ambiente è un comando e non un esercizio di archeologia.
  • Il runbook. Deploy, rollback, rotazione di un segreto, ripristino di un backup, lettura dei log — scritto come istruzioni che qualcuno può seguire alle due di notte.
  • I registri delle decisioni. Brevi note su cosa è stato scelto e cosa è stato scartato, nel repository. Le opzioni scartate sono la metà di valore.

Tutto scritto mentre il lavoro avviene. La documentazione messa insieme nelle ultime due settimane documenta quello che qualcuno ricorda, che non è la stessa cosa di quello che il sistema fa.

Soldi

Prezzo fisso per quello che riusciamo a vedere

Un prezzo fisso per una fase il cui ambito è noto è un impegno. Un prezzo fisso per un sistema i cui requisiti sono ancora in corso di scoperta è una scommessa, e qualcuno la perde — o il fornitore in margine, o il cliente in un anno di discussioni su cosa volesse dire la parola "compreso".

Perciò il lavoro si fissa a pezzi:

  • Discovery. Da due a cinque giorni, a forfait, e produce l’ambito del primo rilascio. Se produce "non costruitelo", ha fatto il suo lavoro.
  • Primo rilascio. Deliberatamente piccolo: un flusso di lavoro reale, utenti reali, in produzione. Prezzato prima di iniziare.
  • Le ondate successive. Ognuna delimitata e prezzata su quello che ha insegnato la precedente, che è l’unica base onesta per il numero.

Dove la stima sbaglia davvero

Non nelle schermate. In quattro punti, ogni volta: le integrazioni con un sistema di cui nessuno sa dire il proprietario; un modello di accesso scoperto al terzo mese e non nella seconda settimana; "dovrebbe essere bello" che si rivela voler dire approvazione pixel per pixel; e la migrazione dei dati fuori da quello che state sostituendo, che è immancabilmente la voce più sottostimata nel software enterprise.

L’incarico

Come si svolge davvero una realizzazione

01 · Prima la discovery

Da due a cinque giorni con le persone che conoscono il dominio e con quelle che manterranno il risultato. Produce l’ambito del primo rilascio, un elenco dei rischi e una raccomandazione — compresa la raccomandazione di non procedere.

02 · Un primo rilascio piccolo

Un flusso di lavoro, dall’inizio alla fine, usato da persone reali in produzione. Il punto è che sia piccolo: è l’unico modo per scoprire cosa fa davvero l’organizzazione prima che il budget venga impegnato su un’ipotesi.

03 · Ondate, non un big bang

Ogni ondata delimitata su quello che ha insegnato la precedente. Il vecchio sistema, se c’è, continua a funzionare in parallelo finché il nuovo non si è guadagnato il traffico, invece di riceverlo a una data.

04 · La vostra infrastruttura

Un’applicazione Jmix è un’applicazione Spring Boot e sta dove stanno gli altri vostri sistemi, con il vostro monitoraggio e i vostri backup. Possiamo ospitarla durante la realizzazione; andare in produzione sull’infrastruttura di un fornitore crea una dipendenza che nessuno ha scelto.

05 · Passaggio di consegne provato

Il test in cinque passi qui sopra, eseguito alla fine di ogni fase da una delle vostre persone. I problemi trovati nella prima fase sono il lavoro di una mattina. Trovati alla fine, sono una negoziazione.

06 · Assistenza, opzionale

Un ambito definito e un tempo di risposta definito, se lo volete. La misura del lavoro è che potreste scegliere qualcun altro — o nessuno — senza che il sistema ne soffra.

Domande adiacenti

Tre casi in cui questo è lo strumento sbagliato

Avete il team, non le braccia

Se avete già la conoscenza del dominio e la direzione tecnica, comprare un’intera consegna significa comprare qualcosa che avete. Quello che vi serve è capacità — quanti, in quanto tempo e chi dirige cosa

La piattaforma non è ancora scelta

Allora una proposta di realizzazione è prematura e qualsiasi numero al suo interno è decorazione. La prima domanda richiede da due a cinque giorni e a volte finisce con un no — che cosa esamina una revisione e che cosa produce

Usate già CUBA Platform

Allora non si tratta di un sistema nuovo, qualunque cosa dica la voce di budget. La maggior parte si sposta senza modifiche e il costo sta in una parte piccola e identificabile — cosa si sposta, cosa viene riscritto, cosa non ha un sostituto

Domande

Quelle che decidono il contratto

Di chi è il codice alla fine?

Vostro, dal primo commit e non dall’ultima fattura. Il lavoro si svolge nel vostro repository, sotto la vostra organizzazione dove questo è possibile, e nel nostro solo finché il vostro non esiste. Il framework Jmix è Apache 2.0, quindi nelle fondamenta non c’è nulla che possiamo trattenere. Qui non c’è nessun accordo di escrow perché non c’è nulla da depositare.

Cosa succede se a metà strada rompiamo i rapporti con voi?

Prendete il repository, il runbook e i registri delle decisioni, e andate avanti — ed è per questo che il test di passaggio di consegne descritto in questa pagina viene eseguito alla fine di ogni fase e non una volta sola alla fine del progetto. Un fornitore che si può sostituire solo al prezzo di una riscrittura ha un incentivo che preferiamo non avere. Il lato commerciale è un periodo di preavviso e una fattura per il lavoro svolto; il lato tecnico dovrebbe essere un non evento.

Lavorate a prezzo fisso?

Per una fase che riusciamo a vedere, sì, e ci mettiamo un numero prima che inizi. Per un intero sistema i cui requisiti sono ancora in corso di scoperta, un prezzo fisso è una scommessa, e la parte che la perde paga in margine o in un anno di discussioni su cosa fosse compreso. Quindi fissiamo la discovery, poi fissiamo il primo rilascio, poi fissiamo ogni ondata. Se qualcuno quota all’euro un sistema da un anno prima della discovery, chiedete cosa ha assunto — la risposta è di solito "la versione ottimistica di tutto".

Questo ci vincola a Jmix?

Al framework, nella misura in cui qualsiasi framework trattiene il codice che plasma — esattamente come fanno Spring, Django o Rails. Non a noi, e non a un canone di runtime: la licenza è per postazione di sviluppo e vale mentre si sviluppa, non mentre gli utenti usano il sistema. La domanda giusta è più circoscritta, e riguarda gli add-on premium più che il framework. Vedete la sezione qui sopra: alcune funzionalità stanno in livelli a pagamento, e vi diciamo a quali vi impegnerebbe una scelta progettuale finché la progettazione può ancora cambiare.

Chi lo gestisce in produzione?

La vostra infrastruttura, per default e per preferenza — un’applicazione Jmix è una normale applicazione Spring Boot e sta dove stanno già gli altri vostri sistemi, con il vostro monitoraggio e la vostra politica di backup. Possiamo farla girare noi durante la realizzazione se non avete ancora dove metterla, ma un sistema che va in produzione sull’infrastruttura del fornitore tende a restarci, e quella è una dipendenza che non avete chiesto.

Lo mantenete voi dopo?

Se lo volete, con un ambito definito e un tempo di risposta definito, non con un canone a tempo indeterminato. Ma questa pagina è costruita intorno all’esito opposto: la misura di un buon passaggio di consegne è che il contratto di assistenza sia opzionale. L’abbiamo fatto così e lo abbiamo detto pubblicamente — Smart Comune è in funzione dal 2020 e la nostra parte è terminata al passaggio di consegne.