Soluzioni personali o codice altrui ?
Martedì 8 Novembre 2005 - 11:37
di Gabriele Farina

Sarà un mio problema, ma ogni volta che mi capitano un lavoro o un progetto interessante, mi ritrovo sempre a dibattere con me stesso (o con eventuali altri sviluppatori) sul fatto di optare per soluzioni personali oppure per codice scritto da terzi.
Penso sia un problema (se così lo possiamo chiamare) di tutti o della maggior parte dei programmatori: si è sempre intenzionati a rifare tutto da capo dato che spesso ci si ritiene all’altezza di svolgere il compito richiesto in modo migliore delle soluzioni gà presenti. Non oso neanche immaginare la quantità di CMS (OpenSourceCMS, con la sua continua espansione ne è un esempio) che sono stati sviluppati privatamente dai programmatori di tutte le età e di tutti i livelli di esperienza.
Optare per la soluzione personale ha molti svantaggi, tra i quali l’incremento notevole dei tempi di sviluppo, ma presenta alcuni vantaggi soprattutto per il panorama open source: l’affluire continuo di soluzioni alternative a quelle già esistenti porta un notevole miglioramento del sistema globale ed una crescita che altrimenti non sarebbero possibili in caso mancasse la concorrenza e la sperimentazione.
D’altro canto pare ovvio affermare anche l’opposto: se si decide di utilizzare codice sviluppato da terzi si possono identificare bug, proporre nuove feature e, perchè no, apportare modifiche costruttive al sistema. Spesso infatti i prodotti open source, date le continue modifiche e le rapide evoluzioni a cui sono sottoposti, sono poco testati o comunque non vengono provati in tutti i campi opportuni. L’utilizzo del software open source da parte degli sviluppatori per lavori privati permette invece di comprendere tutte le sfaccettature di utilizzo del sistema dando la possibilità di elaborare strategie di evoluzione efficaci in minor tempo e con migliori risultati.
Qual è quindi la scelta migliore? Non sono stato capace di darmi una risposta e spero che qualcuno sappia indirizzarmi. C’è da dire che implementare soluzioni personali è una delle cose che mantiene vivo ed intrigante il lavoro di noi programmatori …
Categoria: PHP e Open Source | Permalink
Commenti
1
La scelta migliore è quella che si fa caso per caso. :E
A meno che non sia un progetto per passione personale, quando possibile è sempre meglio partire dal lavoro già fatto, se questo è di buona qualità.
2
Normalmente preferisco lavorare su qualcosa che sia una via di mezzo tra un prodotto opensource e uno custom. I CMS sono tanti e spesso è difficile capire da quale di questi si potrebbe iniziare a operare una personalizzazione. Se poi proseguendo con la ‘messa a punto’ si scoprono dei limiti (o peggio dei bugs) nel software, il lavoro fatto diventa inutile. Del resto se il CMS è molto complesso non è possibile nemmeno iniziare tutto il lavoro da zero.
Credo che molti sviluppatori, abbiano ormai optato per l’uso di librerie (spesso personali) e classi in modo da assemblare solo ciò che serve per un amministrazione. Questo permette a mio parere un giusto compromesso tra flessibilità del prodotto e velocità di realizzazione.
# - postato da Fabrizio Calderan - 08 Novembre 2005 - 12:30
3
Per quanto mi riguarda, in lin a di massima preferisco scrivermi il codice a manina, ma talvolta utilizzo pezzi di codice altrui, singole classi e/o funzioni (un esempio su tutti: phpmailer)
# - postato da Giancarlo Moschitta - 08 Novembre 2005 - 12:33
4
Visto che si parla di CMS riporto la mia esperienza.
Dato che sviluppare un CMS richiede veramente tanto tempo ho sempre optato per utilizzarne uno già esistente. A mio avviso l’unico caso per cui vale la pena partire da zero è se non si trova nessun CMS che corrisponda alle proprie esigenze (son sempre restio a modificare il core di un cms, si rischiano incompatibilità con i moduli ed aggiornare può diventare un lavoro mastodontico).Per quanto riguarda i moduli da inserire nel CMS invece preferisco svilupparli da solo perchè:
1. trovare un modulo che faccia esattamente quello che si vuole è un terno al lotto, io personalmente non ci sono mai riuscito
2. prendere un modulo già fatto e modificarlo può essere molto difficile, cambiare l’interfaccia è banale ma se è necessario cambiare anche solo leggermente la struttura diventa un lungo lavoro… tra capire la logica del codice altrui e modificarlo senza pregiudicarne il funzionamento ci vuole tempo, a questo punto preferisco rifarlo da zero cosi ho comleta libertà, tanto il tempo è o - lo stessoIn definitiva non esiste una “scelta migliore”, ogni situazione fa a se. Se trovi del codice che fa esattamente quello che serve a te perchè non usarlo?
5
budget e tempi di consegna … sono questi i fattori che mi portano solitamente ad optare per una cosa gia’ fatta che al 90% odio ma che puo’ permettermi di smaltire velocemente il lavoro.
Poi ci sono casi in cui quell’ applicazione la vogliono in un altro modo … e li la scelta tra impararsela e riadattarsela o riscriverla da zero e’ sempre ardua! Solitamente preferisco la seconda soluzione, soprattutto perche’ potrei creare ( o anche rimediare ) falde nell’ applicativo non avendolo sotto controllo al 100% ( quindi anche eventuali e future manutenzioni / implementazioni diventerebbero piu’ complesse o laboriose scegliendo il pronto all’ uso ) … ma anche qui la scelta la faccio sempre rapportando i tempi con il budget.
Alla fine penso che nessuno rifaccia un phpBB ( solo un esempio ) per pochi euro o in poco tempo, pero’ sapere di aver creato un qualcosa di unico credo sia il traguardo di qualunque sviluppatore, per ogni problematica che si presenta.
Ci piace affrontarle e risolverle con la nostra skill, il “copia e incolla” rende piatto il nostro lavoro, non siete d’accordo ?
Opinioni ovviamente personali :-)
# - postato da andr3a - 08 Novembre 2005 - 12:45
6
Andr3a, sono d’accordo con te al 100%. Creare qualcosa dal nulla è qualcosa di straordinario e poi scatta quella scintilla nel proprio intelletto che porta a migliorare ciò che si è fatto sempre di più, in modo quasi maniacale.
La cosa più bella che ricordo come esperienza lavorativa, nonostante l’impegno e le energie spese, è stata la realizzazione di un CMS molto complesso e relativa base di dati che ha tenuto impegnato me ed un mio ex collega per ben 4 mesi.
# - postato da Fabrizio Calderan - 08 Novembre 2005 - 12:53
7
aggiungo solo che inoltre, affrontando tutte le varie problematiche, si impara molto, a differenza della scelta piu’ semplice e veloce, ma non per questo indolore.
Poi come dice giustamente Arthens, se trovi codice gia’ pronto, testato, affidabile, che fa esattamente quello che ti serve, perche’ tentare di rifarlo ? … e’ proprio questo il bello dell’ Open Source!
Usiamo funzioni e moduli di altri sviluppatori quotidianamente, nessuno si e’ messo a riscrivere il PHP per intenderci, quindi il punto comune credo sia per ogni caso valutare la soluzione migliore :-)
# - postato da andr3a - 08 Novembre 2005 - 12:53
8
Personalmente sto cercando di crearmi una sorta di cms, solo per l’amministrazione dei siti dinamici, in modo da non riscrivere tutto da capo ogni volta, ma allo stesso tempo ogni volta mi ritrovo a modificarla per poterla migliorare.
E’ un lavoro lungo, però se da una parte ci perdo molto tempo, dall’altra ho il pieno controllo della mia applicazione; se c’è qualcosa che non va, bene o male so dove mettere le mani, mentre nel caso di un cms fatto da terzi, il più delle volte bisogna andare a mettere le mani su codice fatto da altri e spesso non chiarissimo.
Inoltre bisogna tenere il conto il fatto istruttivo, utilizzando un cms (ad esempio in php), del linguaggio impari ben poco, e sicuramente non ti istiga a farlo, invece ritengo che costruirsi qualcosa da soli ti dia la possibilità di imparare bene un linguaggio e di vederne molte delle sue problematiche.Poi ovviamente se ti trovi un cliente che spende due lire e che vuole ad esempio un forum, questo non glielo faccio di certo da zero ma ne prendo uno già fatto :-)
# - postato da Alessio Michelini - 08 Novembre 2005 - 13:08
9
@ Fabrizio Calderan
… e poi dire “l’ ho fatto io” non e’ la cosa piu’ bella ? :Dultimo appunto di riflessione personale:
se compriamo una macchina, nonostante abbia tutti i pezzi provenienti da aziende e posti differenti, quando qualcosa non va ce la prendiamo con il marchio, la casa, il concessionario, non andiamo ad insultare uno per uno tutti i fabbricanti dei vari pezzi … questo e’ un altro aspetto secondo me fondamentale di questo lavoro, dobbiamo prenderci molte responsabilita’ … se usiamo una scorciatoia che un domani puo’ avere bugs spaventosi, chi e’ che ci rimette oltre al cliente ? noi … e spiegare che quello era un applicativo esterno, l’altro era un pezzo di un altro applicativo … quello non andava perche’ “loro” avevano fatto errori … e’ solo un inutile tentativo di non perdere la faccia ( ovviamente sempre che non abbiamo gia’ avvisato il cliente di tutti i rischi che avrebbe corso scegliendo quel tipo di soluzione, perche’ se l’ abbiamo fatto son cavoli suoi che non ha scelto la soluzione migliore ) … se invece il lavoro e’ nostro, possiamo sia rimediare in fretta che evitare di perdere tempo dietro tutti gli updates di tutti i componenti esterni utilizzati per fare fare il prezzo migliore nel minor tempo possibile.Forse il concetto di Open Source andrebbe rivalutato … io l’ho sempre inteso come un qualcosa da poter studiare al fine di imparare o condividere esperienze e conoscenza di un linguaggio e non un qualcosa di gratis da sfruttare e basta … ma i furbi sono sempre la percentuale piu’ alta … e poi sono sempre quelli che non sono in grado di risolvere i problemi se la loro pappa pronta non va :-)
viva l’ Open Source :D
# - postato da andr3a - 08 Novembre 2005 - 13:08
10
Prendo spunto dalle giuste riflessioni di Alessio per portare un caso concreto.
Per un cliente abbiamo optato l’uso di un cms opensource abbastanza noto (ne tacerò il nome) e che consente una gestione semplicissima di un sito (aggiungere pagine, modificare i template, multi amministrazione). Ne ho visti pochi di cms così scarni ma completi. L’ideale per quel progetto insomma.
Quando abbiamo deployato l’applicazione sul server (una macchina dedicata in una web farm!) l’amministrazione non partiva. Abbiamo scoperto dopo una settimana che si avviava solo se la macchina aveva 512 Megabyte di RAM! (Mezzo giga). Fate due conti quanto può costare ad un cliente l’affitto di una macchina del genere (all’anno).
Questo per ricordare che quando si usa qualcosa che non è lavoro proprio bisogna sempre attendersi qualche sorpresa. E spesso, poco piacevole…
Cmq l’opensource deve essere un fuoco inestinguibile ed è giusto che i programmatori lo alimentino con idee e progetti nuovi per non farlo morire.
# - postato da Fabrizio Calderan - 08 Novembre 2005 - 13:26
11
A mio avviso le motivazioni variano di caso in caso, ci sono parecchie variabili che consentono di optare per l’una o l’altra soluzione.
Si deve pensare ai tempi di sviluppo, ai costi, all’esperienza, ma sopratutto alle reali esigenze richieste.
A volte usare software di altri, se pur ben fatto richiede una manutenzione o comunque uno sforzo notevole nel semplificare o ampliare le funzionalità inutili o mancanti, così come scrivere tutto di sana pianta comporta tempi ben più lughi, funzionalità essenziali e conoscenza esatta dell’applicazione, a tutto vantaggio della correzione di eventuali bug.
12
A mio avviso le motivazioni variano di caso in caso, ci sono parecchie variabili che consentono di optare per l’una o l’altra soluzione.
Si deve pensare ai tempi di sviluppo, ai costi, all’esperienza, ma sopratutto alle reali esigenze richieste.
A volte usare software di altri, se pur ben fatto richiede una manutenzione o comunque uno sforzo notevole nel semplificare o ampliare le funzionalità inutili o mancanti, così come scrivere tutto di sana pianta comporta tempi ben più lughi, funzionalità essenziali e conoscenza esatta dell’applicazione, a tutto vantaggio della correzione di eventuali bug.
13
Credo che non esista una strada che in assoluto sia la migliore. E’ chiaro che se devi fare un forum partendo da zero ti conviene prenderne uno già fatto.
Proprio ieri mi è capitato che la responsabile di un sito gestito da Mambo mi ha chiamato perché non riusciva più a mettere a posto un modulo di breaking-news in home page. Si era persa in un mare incredibile di funzioni (molto belle e funzionali) e non riusciva più a capire da che parte mettere le mani. Il suo webmaster non era più rintracciabie.
Probabilmente se la signora avesse avuto a disposizione un mio CMS, per quanto rudimentale e primitivo rispetto a Mambo, non avrebbe avuto alcuna difficoltà in quanto la funzione analoga a quella che stava cercando, si gestisce semplicemente con un check-box.
Quindi meglio il CMS scritto in proprio o Mambo? Dipende, in primo luogo dalle funzioni che sono richieste e in secondo luogo (ma non per importanza) dal cliente che hai di fronte.In alcuni casi però, almeno per quanto mi riguarda, non ci sono possibilità di scelta. Se il prodotto che devi sviluppare deve essere interamente accessibile, allora penso che la strada sia una sola, il blocco note! Se avete notizie diverse fatelo sapere…
14
Salve a tutti, mi sento al quanto preso in causa in questa discussione anche perche’ io sono tra quegli sviluppatori che hanno realizzato un proprio CMS. Il nostro cms “non per fare pubblicita’ma per essere chiari e, openasp”.
Vi posso assicurare per esperienza persaonale che realizzare un CMS non e’affatto semplice, tutt;altro, richiede molto molto tempo, utilizzare codice di terzi non e’da considerarsi come una sconfitta, insomma se si usa un CMS fatto da qualcunaltro questo non significa che non si e; in grado di farlo, ci sono tante cose che possono influire… il tempo, la voglia, e tanto altro… credo comunque che aiutare un progetto opensource sia molto piu’giusto che ripartire da zero, insomma, unire le forze, non andarsi contro… alla fine se si realizza qualche cosa di robusto puo’tornare utile a tutti non trovate???
15
Sempre usati cms e moduli già fatti… fedemantova@gmail.com fedemantova@gmail.com fedemantova@gmail.com fedemantova@gmail.com fedemantova@gmail.com fedemantova@gmail.com fedemantova@gmail.com fedemantova@gmail.com fedemantova@gmail.com fedemantova@gmail.com fedemantova@gmail.com fedemantova@gmail.com fedemantova@gmail.com fedemantova@gmail.com fedemantova@gmail.com fedemantova@gmail.com fedemantova@gmail.com fedemantova@gmail.com
# - postato da fedemantova@gmail.com - 10 Novembre 2005 - 18:33
16
Io proporrei di NON reinventare mai la ruota…è frustrante. Si impara molto di più spendendo tempo nel modificare e capire il codice altrui (specie se di gente più brava).
Colgo l’occasione per indicarvi Drake CMS, si tratta di una fork dell’ormai deceduto Limbo, completamente riscritta. Adesso le caratteristiche migliori sono la sicurezza, la velocità e il database flatfile (la lista delle caratteristiche ovviamente è molto più lunga). La prima beta verrà rilasciata ad Agosto, vi invito a dare un’occhiata Drake CMS.
Il repository SVN è sempre aggiornato.
Per la cronaca, non siamo ancora su OpenSourceCMS (ci saremo dopo il primo rilascio).
# - postato da Daniele C. - 13 Luglio 2006 - 23:44
17
Se non si hanno le basi o una certa esperienza, secondo me, si perde solo tempo a leggere il codice altrui, al massimo può essere utile capire la logica usata per fare un determinato.
Poi se si fa una propria applicazione, e si verifica un problema, si risolve molto più in fretta sapendo di già come funziona il tutto, invece di andare a capire quello che ha scritto un’altra persona che magari usa una sua logica difficilmente comprensibile a tutti.
E cmq il tuo post mi sembra un po’ spammatorio :-)# - postato da Alessio Michelini - 14 Luglio 2006 - 15:19
18
Beh io allora proporrei di farsi le basi, altrimenti si perde solo tempo a voler creare qualcosa di appena un pò più complesso (come può essere un CMS); e studiare gli altri CMS (con spiritco critico, senza lasciarsi plagiare e confrontando sempre) credo aiuti molto a farsi le basi.
Capire la logica è fondamentale, ma spesso i problemi che si risolvono più in fretta sono sintomo di un malessere che attacca l’intera pianta alla radice…non so se rendo l’idea.
Naturalmente tutte le logiche dei vari programmatori sono diverse, ma non mi sembra un buon motivo per fare milioni di programmi che fanno la stessa cosa ;) So che il discorso è molto più complesso, ci sono sempre pro e contro, io attacco più che altro la testardaggine (la critica vale anche per me) che ci fa spesso riscrivere codice già esistente
Comunque perchè spammatorio? Mi sembra perfettamente on-topic, o magari mi ha tradito l’entusiasmo (ci stiamo lavorando proprio in questi giorni)…# - postato da Daniele C. - 18 Luglio 2006 - 10:07







