Domanda

Questo è più di una domanda di carattere generale su quale direzione sarebbe un investimento migliore per l'azienda.

applicazione core business della nostra azienda è scritto in Visual FoxPro e si trova a circa 9+ anni. Il database è enorme 15+ concerti e alla logica di nucleo è complesso e come se non bastasse il modello di dati è terribile. I due ragazzi che hanno costruito e hanno mantenuto in tutti questi anni sono almeno nei loro 50, quindi inutile dire che la pensione o, eventualmente, la morte potrebbe venire entro il prossimo decennio o giù di lì.

Questa applicazione VFP guida tutte le nostre funzioni di core business e richiede Terminal Services e Citrix per accedervi dal mondo esterno. Le nostre applicazioni web devono interfacciarsi con esso tramite ODBC e ci sono sempre avendo problemi di prestazioni con esso. I server che eseguono questo sistema sono anche molto vecchio, come assistente di vittoria 2000 e sono a pezzi.

Recentemente stiamo avendo incontri sull'aggiornamento i sistemi che gestiscono questo app di base così come altri servizi come e-mail e file di archiviazione. La spesa più grande, tuttavia, è l'acquisto di nuovo hardware del server, le licenze del sistema operativo, licenze Servizi Terminal, concessione di licenze Citrix ecc per risolvere alcuni problemi di prestazioni e di accesso al di fuori attualmente stiamo avendo così come solo in genere che ci portano fino ad oggi sui nostri sistemi.

Il prezzo sta per essere nel $ 55K a $ 65K fascia di prezzo. Così come sviluppatore web il mio punto di vista è che questo è un enorme spreco di denaro! La mia soluzione sarebbe quella di investire quei soldi nella riscrittura del sistema centrale per l'esecuzione su piattaforma .Net basato sul web. Questo eliminerebbe la necessità di Terminal Server e Citrix licenza insieme alla gestione della configurazione hardware e costoso di eseguire sul. Non vedo il punto di investire questo tipo di denaro in un sistema antiquato che dovrebbe essere sulla strada giusta fuori in ogni modo.

Sto cercando di ottenere alcuni argomenti convincenti per spiegare perché questo è uno spreco di denaro. Speriamo che ci sia qualcuno qui che ha affrontato questo tipo di situazione prima che mi può dare alcuni punti di vista. L'aggiornamento hardware sembra essere la strada più facile da prendere, perché dovranno semplicemente un consulente entrare e fare tutto. Un progetto di sviluppo software sarebbe necessario più tempo, richiedono più risorse ed eventualmente costare un po 'più soldi.

È stato utile?

Soluzione

Ogni progetto ha bisogno di un'analisi costi-benefici. Se un investimento di $ 60.000 di una volta risolverà tutti i problemi per i prossimi 10 anni, allora è (probabilmente) molto più economico rispetto al noleggio di un team di sviluppatori anche solo per un anno per costruire una più recente del sistema, migliore.

D'altra parte, se è già costato $ 50.000 / anno in manutenzione e questo costo del capitale è solo per mantenere il sistema viva, e avrete bisogno di spendere altri $ 60k in pochi anni da oggi, quindi garantisce una seria considerazione rispetto ad un re-design.

In alternativa è possibile prendere la via di mezzo e iniziare avvolgendolo in qualcosa opaca come un servizio web, poi gradualmente sostituendo i componenti con migliori componenti interni (più efficienti, più gestibile, etc.). Molte aziende seguire questa strada perché rinvia i costi up-front di una riscrittura; Se necessario, è possibile rinviare le risorse IT altrove.

S. Lott è giusto, anche se - è probabile che non sarà in grado di competere sul costo da solo. Devi cercare di quantificare i rischi associati a questi antichi sistemi - per esempio, quanto costerà l'azienda a trovare e formare sviluppatori qualificati FoxPro se i programmatori originali decidono di uscire (o, per usare il gergo di tanti manager I 've incontrato, "investito da un autobus") ...


Basta aggiungere qualche ulteriore prospettiva a questo: prima di .NET (e per alcuni anni dopo) ho condotto la maggior parte dei miei progetti esclusivamente in Delphi. A quel tempo, è stato davvero una grande scelta per lo sviluppo delle imprese. Mi è stato effettivamente la persona che non voleva "upgrade". Dopo un po ', però, è diventato evidente per me e il mio superiore-up che questo ha spaventato la gente al di fuori della società.

Gli investitori, società di revisione, tutti - a loro non piaceva l'idea che la nostra risorsa principale è stato fatto in una lingua "oscura". Naturalmente, non è stato Delphi / non è poi così oscuro; c'è un tag "Delphi" qui su SO, con un conteggio di 3340. Ma cerchiamo di usare così come il nostro esempio - qui ci sono i conteggi correnti:

  • c# - 57293
  • .net - 30577
  • asp.net - 26600
  • java - 31023
  • vb.net - 5996
  • delphi - 3340
  • foxpro - 69
  • vfp - 27

Lasciate che quei numeri affondare dentro per un po '. Delphi, il mio strumento preferito, al momento, ha ora meno del 10% della rappresentazione di C #, e ciò ha reso non-informatici nervoso. Foxpro / VFP non è nemmeno all'1%. Non riesco nemmeno a ricordare quante volte ho dovuto rispondere a domande come:

  • Che cosa succede se il lead developer (me) si chiude o viene investito da un autobus?
  • Come difficile / costoso sarà di assumere programmatori in quel campo?
  • Che cosa succede se il venditore si ferma lo sostiene? (Questo è successo quasi)
  • Che cosa succede se vogliamo ottenere un aiuto esterno? Consulenti? controlli di sicurezza?
  • Come sarà facile per farlo funzionare con i prodotti al di fuori?

Blah blah blah, preoccupazione preoccupazione preoccupazione, è stato come mi sentivo in quel momento, e questo era un prodotto che non è stato davvero che oscura. Nel tuo caso, stiamo parlando di FoxPro qui. FoxPro ha ottenuto di essere quasi come il COBOL; certo, è ancora in giro, ci sono persone là fuori che sa, ma chi inizia un nuovo progetto in FoxPro oggi? E 'noioso, è addirittura ghetto . VB6 sta cominciando a diventare ghetto, e VB / Accesso efficacemente sostituito FoxPro tanti anni fa.

Sono ovviamente essere un po 'melodrammatica qui, ma se fossi in te, questo è l'angolo mi avrebbe preso. Dimenticate l'economia a breve termine, dimenticare l'età, e mettere a fuoco l'oscurità del prodotto. Quante genuini, risposte qualificate Pensano che otterranno se hanno messo un bisogno-annuncio per uno sviluppatore di FoxPro? Che tipo di pagamento avrebbero dovuto offrire per una posizione del genere? Quale sarebbe il fatturato come? Tutto ciò può sembrareremota se questi due sviluppatori sono stati lì per 20 e passa anni, ma quando si sta eseguendo un business da milioni di dollari, si dovrebbe sapere che non è mai una buona idea di mettere in gioco la vostra stessa sopravvivenza su uno o due dipendenti - non se si può farne a meno .

Altri suggerimenti

La riscrittura a breve termine contro argomentazione ri-hardware non può essere vinta. Hardware e le licenze sono sempre più conveniente di una riscrittura. E l'hardware più licenza sembra coinvolgere alcun rischio.

Non si può vincere su argomenti ROI. A meno che il sistema è banale e tu sei un genio, sarà sempre costato $ 100K o più di riscrivere un'applicazione che in realtà fa qualcosa. Pensate più anni persona.

Si potrebbe vincere l'argomento "debito tecnico". Il cambiamento è sempre più complessa, rischiosa e costosa. Quanto più a lungo questo codice si perpetua, più rischi e costi accumula.

La vera domanda è "iniziare a risolvere il problema adesso?" o "attendere finché non si rompe e soffrono più tardi?" E che non ha definito $ -valued risposta.

Non si può competere sul prezzo, in modo da avere a competere sul rischio, le caratteristiche, la crescita, la manutenibilità, l'adattabilità, la conformità agli standard, la sicurezza, la creazione di valore unico per ogni cliente, ecc, ecc.


"Ora stiamo cercando in una base più ampia di clienti e più dati". Questo è un argomento che si potrebbe essere in grado di vincere.

(sono oltre 50, non ho intenzione di morire in qualunque momento presto. Questo argomento non vince i cuori e le menti. A meno che non sono più di 80, non si può davvero usare età ad eccezione di quanto modo per ottenere il vostro argomento ignorato.)

Focus sul costo (e il rischio) di apportare modifiche.

Dimostra di avere una soluzione web-based che apporta modifiche meno costoso e meno rischioso.

Inoltre, scavare in quello che c'è e trovare le parti che possono essere sostituiti da un framework web. Codice non si scrive è meno costoso da mantenere il codice che si scrive.

In generale, integrando un sistema povero questa tonnellate di hardware è un cattivo piano, probabilmente dire che è # s meglio scrivere di nuovo, ma è difficile da dire senza conoscere i dettagli.

Si tenga presente che una riscrittura decente dovrebbe migliorare le prestazioni, l'affidabilità e maintainabilty così i potenziali risparmi sono grandi e non potranno che aumentare di anno in anno, anche se l'investimento iniziale che è un po 'più.

Al fine di capire se vale la pena, si deve calcolare, in aggiunta ai costi di una riscrittura:

  1. Documentare tutto il sistema fa attualmente, e reverse-engineering dei requisiti.

  2. unità di scrittura e test di integrazione per tutto ciò che esiste attualmente. Questo probabilmente doensn't esiste già, ma dovrebbe essere.

  3. Il costo del mantenimento del nuovo sistema. Il nuovo sistema non ha intenzione di eliminare i costi di manutenzione, semplicemente ridurlo. Quanto si risparmia?

  4. Costo di hardware per il nuovo sistema. Il nuovo sistema avrà per funzionare su qualcosa.

  5. i costi
  6. di licenza per il software / etc. che sono necessari per il nuovo sistema. E 'tutto sarà open source? O hai intenzione di bisogno di diversi visivi Edizioni Studio Test per gli sviluppatori e tester?

  7. Costo di assumere nuovo personale per fare lo sviluppo. Oltre ai costi salariali rettilinei, ci sono i costi di ufficio. Il totale potrebbe essere di $ 300.000, per dire 3 sviluppatori, stipendio contando, spazi per uffici, attrezzature, licenze, prestazioni di assistenza sanitaria.

  8. Ora all'orizzonte per il risparmio. Il risparmio non sta per accadere immediatamente. Si sta per verificarsi in futuro. Nel frattempo, devono pagare ancora per la licenza per il sistema attuale, perché qualcosa ha a che fare il lavoro fino a quando il nuovo sistema sia messo in atto.

  9. problemi di cash flow. A causa di quanto sopra, a breve termine che stanno per bisogno di più soldi per finanziare lo sviluppo. I costi effettivi sono più alti, perché hanno in sostanza di ottenere un prestito, aumentare l'equità, o hanno un costo opportunità (che aer andando a rinunciare a qualche altra opportunità di investimento per perseguire la riscrittura).

  10. Il rischio di business. Ci può essere un pericolo che la riscrittura potrebbe costare di più, lavorare peggio,

Due numeri importanti:

  • Numero di posti di lavoro "FoxPro" elencati nel Craigslist di San Francisco al momento: 2.
  • Numero di posti di lavoro ".NET" elencati in Craigslist di San Francisco al momento:. 252

Un sacco di altri punti che sono stati menzionati sono validi. Tuttavia, è possibile spendere tanto quanto si vuole su hardware, ma il fatto è che se qualcosa si rompe e hai bisogno di aiuto, che si sta per avere un mucchio di tempo a trovare più persone per aiutare.

suona come un buon momento per iniziare a parlare di un migration¹ di nuove tecnologie, meglio supportati. (E in 10 anni in cui .NET è vecchio cappello, si può fare tutto da capo:)

[1] e far evolvere il sistema, non riscriverlo. Direi il sistema attuale cresciuto molto organicamente in base alle esigenze del momento. Non c'è modo che sarete in grado di sostituire completamente tutti che (almeno, non senza un paio di anni e qualche miillion dollari).

Come VFP devloper storica (oltre 20yrs con FoxPro / VFP, e hanno ancora persone che mi chiedono di scrivere / aggiornare i loro sistemi con VFP, per una serie di motivi), la sua ancora molto potente. Tuttavia, mentre la ricerca e prendendo gran parte della mia OOP e sviluppo esperienza e di lavoro con .Net, mi trovo alcune cose in .Net molto più facile, in particolare il forte tipo-casting. Tuttavia, facendo un report di base richiede che tutti forti di tipo-fusione al database tabelle / strutture / oggetti, e in molti casi finora, una valle di lacrime da fare.

Il prezzo da pagare per una riscrittura è sempre di considerazione importante, ma lo è anche il crollo di ogni sistema ... a prescindere dal VFP, VB, Access, o altro. Vi consiglierei vivamente di ottenere una società di consulenza per aiutare nella ri-modellazione del sistema e magari fungere da project manager / mentore per il vostro personale interno di programmatori che può essere in grado di offrire il loro talento anche se può richiedere una certa formazione nel nuovo ambiente di sviluppo. In questo modo, è possibile ottenere una buona base di un forte talento nel linguaggio, ma mantenere un po 'i costi utilizzando il proprio staff di programmazione - ma potrebbe essere necessario assumere personale supplementare di programmazione. La curva di apprendimento da VFP a Net è lì, e può essere ancora uno scratcher testa.

Ci sono una serie di società là fuori che erano specialisti VFP che hanno successivamente migrato i propri servizi a mondo .Net e possono offrire un partner perfetto per la vostra organizzazione avere la conoscenza storica e l'esperienza professionale di entrambi i mondi. So che possono agire come mentori troppo per lo sviluppo di tale lavoro.

È solo può dire che è uno spreco di denaro dopo aver analizzato il ROI - dipenderà fortemente da quanto è il costo per riscrivere il sistema

.

errore classico su JOS - "il sistema è un casino, cerchiamo di riscriverla".

Sarà come guardare questo vecchio edificio e di vedere uno stuzzicadenti e si chiede perché è lì. A capire che non è necessario, e tirare fuori.

Improvvisamente l'edificio crolla intorno alla testa:)

Potrebbe essere una migliore idea di

  1. Si consideri riscrivere parti del sistema per una migliore manutenibilità.

  2. L'ottimizzazione del sistema per migliorare le prestazioni.

  3. Astraendo le parti specifiche FoxPro in modo che possa essere più facilmente convertito in qualche altra tecnologia.

Questo approccio incrementale ridurrebbe rischio, e fornire alcuni miglioramenti a breve termine.

Non esiste una bacchetta magica qui per l'azienda. L'unico modo per essere sicuri è quello di prendere il colpo su un nuovo server per ottenere i benefici di stabilità e di velocità che porta al software business-critical esistenti. Poi, una volta che staziona per alcuni anni iniziare a ri-engineering la cosa su una piattaforma diversa, come .NET se è questo che si vuole fare. Tenendo presente che si dovrà migrare i dati VFP nella nuova struttura del database ad un certo punto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top