Quando le esigenze dei singoli clienti sono così profondamente differenti che la funzionalità condivisa rappresenta meno del 50% delle funzionalità per le esigenze di un determinato cliente, allora ci sono solo due modi principali per gestire questo:
Scrittura di una pagina personalizzata per ogni singolo cliente
Questo tende a essere a volte un'opzione sgradevole sia per la gente tecnica che per gli uomini d'affari e di vendita. Può anche essere sgradevole se il cliente si rende conto che stai eseguendo un sacco di sviluppo personalizzato per soddisfare le loro esigenze.
Considerazioni tecniche
Come sviluppatore, l'alta manutenibilità è uno degli obiettivi centrali che dovremmo sforzarci di realizzare, quindi la scrittura di pagine personalizzate per singoli clienti è in contrasto con questo obiettivo. Supponiamo che debba essere aggiunta una funzionalità comune che dovrebbe interessare tutti i clienti, ora questa modifica deve essere implementata manualmente per tutti i client e testata per ogni client che ha un'implementazione separata per quella pagina. Se hai un numero di clienti, questo può semplicemente essere insostenibile nel tempo.
Considerazioni aziendali
Dal punto di vista del business come ISV, ci piace costruire un prodotto, che in genere è più coinvolto del solo software. La vendita di un prodotto software implica che, in quanto fornitore, disponiamo di un unico pacchetto in grado di soddisfare tutte le esigenze dei clienti con una personalizzazione minima o nulle rispetto al nucleo del prodotto stesso.
Quando è necessario che le personalizzazioni del prodotto avvengano per soddisfare un cliente, il prodotto potrebbe essere inadatto o potrebbe essere stato progettato male. Può darsi che la soluzione che viene venduta non possa in realtà essere considerata un prodotto, ma viene semplicemente commercializzata in quel modo. Il business del software può essere complicato come questo ed è il motivo per cui proprietari di prodotti e addetti alle vendite fanno i soldi grandi perché questa formula vincente per il successo nella vendita di software può essere straordinariamente difficile. Se non lo commercializzi correttamente, o non crei correttamente un'idea di prodotto, allora non puoi vendere o potresti vendere e non essere in grado di mantenere le promesse.
Considerazioni sul cliente
A tutti i clienti piace sentirsi dire che stanno ottenendo un buon affare e quando acquistano un prodotto software vogliono credere che tutti i loro bisogni siano soddisfatti. Questo è il motivo per cui i prodotti software vendono più facilmente e facilmente rispetto allo sviluppo di software personalizzato, anche quando le esigenze del cliente sono così intrinsecamente specifiche che nessun prodotto del genere potrebbe mai esistere dallo scaffale.
Se il cliente scopre che stai eseguendo una buona quantità di sviluppo di software personalizzato solo per le sue esigenze, allora perde la fiducia che il tuo prodotto abbia mai avuto la possibilità di consegnare e che alla fine pagherà a caro prezzo nel lungo termine per coprire i costi di sviluppo personalizzati.
Quando è una buona idea
Se il software si trova in un mercato di nicchia con una piccola quantità di clienti e opportunità di crescita limitate, lo sviluppo di pagine Web personalizzate per funzionalità specifiche è probabilmente la scelta migliore.
Motore di regole e layout basato su XML
Fondamentalmente si identificherebbe la funzionalità di base da incorporare nelle pagine e qualsiasi cosa specifica del cliente dovrebbe essere definita attraverso un layout personalizzato e un motore di regole che consenta di personalizzare le esigenze del client al di fuori della base di codice.
Le considerazioni di progettazione tecnica per questo sono che
Considerazioni tecniche
Il cliente ha bisogno a questo punto di diventare una modifica dello schema tramite XML piuttosto che un costoso incubo di manutenibilità di un cambio di codice. Il controllo dei layout tramite XML per definire la vista, l'XML da legare al modello e le regole per definire il controller consentiranno un'architettura solida che si ridurrà man mano che la tua azienda cresce e mantengono un accoppiamento libero, un'elevata coesione e un'elevata manutenibilità. Questi documenti XML possono essere facilmente mantenuti tramite un NoSQL o anche sistemi RDBMS tradizionali.
Considerazioni aziendali
Limitare le pubblicazioni mirate per soddisfare i clienti rafforza la forza e la scalabilità del prodotto nel suo insieme e lascia il business sicuro di avere la capacità di crescere rapidamente in un mercato selvaggio e volatile. Alcuni svantaggi sono la maggiore complessità dell'applicazione e del prodotto stesso, e le considerazioni sull'aumento dei tempi di sviluppo iniziale e sui costi più elevati associati a questo.
Considerazioni sul cliente
I clienti possono sentirsi sicuri che i loro bisogni siano soddisfatti attraverso il prodotto senza una significativa personalizzazione e che le loro richieste e modifiche possano essere rapidamente soddisfatte.