Newsgroup: it.lavoro.informatica
Titolo: schifezze totali

Qual'č il peggior progetto sw su cui avete messo le mani?
Io sto lavorando da ormai anni (in modo discontinuo perň, per fortuna) su
uno che secondo me batte tutti i record. E' stato sviluppato da
quell'individuo idiota che si spaccia per analista/programmatore e che ora
fa da mio PM, se cosě si puň dire. Si tratta di un'applicazione web non
molto complessa ma neanche banale che č cresciuta negli anni e che ora per
manutenzioni ed evoluzioni č stata appioppata a me. Sembra scritto da uno
studente di istituto tecnico, e neanche troppo bravo, alle prime armi (non
me ne vogliano gli studenti).
Alcune perle:
- variabili globali a centinaia, a livello di sessione e di applicazione,
che assumono significati e vengono usate in modi completamente diversi a
seconda del punto del codice.
- query sql da eseguire direttamente sul database costruite in *javascript*
e passate come parametri della get request ad una servlet che le esegue (In
pratica un utente sgamato puň fare quello che gli pare sul database,
leggere, scrivere su tutte le tabelle e droppare, semplicemente con delle
get request preparate ad hoc).
- parametri di funzionamento (di business logic, chiamiamola cosě) non solo
hard-coded nel codice ma in molti punti diversi e spesso con *valori*
diversi. Non vi dico quando č da configurare dai clienti... ci vogliono
settimane per farla non dico funzionare (perchč non funziona) ma
funzionicchiare.
- *qualunque* pezzo di codice non č mai duplicato, ma triplicato,
quadruplicato, ecc. quasi sempre in versioni piů o meno diverse tra di loro.
- ovviamente nessun commento nel codice
- ovviamente nessun tipo di design ad oggetti
- ovviamente nessun tipo di test automatico (non che l'autore di questo
schifo sappia cosa sia un test automatico)
- lato interfaccia web non ne parliamo, l'html/css č talmente incasinato che
basta cambiare la lunghezza di un'etichetta per incasinare il layout di
tutta la pagina.
Io ho tentato di mettere un po' di ordine, ma ci si perde in un mare di
schifo, bisognerebbe riscrivere tutto da zero.

 schifo, bisognerebbe riscrivere tutto da zero.
hahahhahahahahahahaah dipende... quante righe di codice e' il prj?
come dice un mio amico l'unico modo e' riscrivere pian piano ogni 
pezzo... ovviamente alcuni progetti son talmente orrendi che non si puo' 
fare! :-D
cya
-- 
http://www.evilripper.net
http://www.flickr.com/photos/evilripper/

 schifo, bisognerebbe riscrivere tutto da zero.
Se è recuperabile, inizia a scrivere unit test e vai di refactoring,
ma a volte non c'è nulla di recuperabile (una volta lavoravo su un
software dove c'era un pezzo di codice scritto in India eoni prima, 25
mila righe di seguito in un unico metodo, quando qualcuno ne parlava
anche a 10 metri di distanza io andavo in bagno, mi buttavo dalla
finestra, evaporavo, mi teletrasportavo, ...)
--
ale
http://ale.riolo.co.uk

 semplicemente con delle get request preparate ad hoc).
Si tratta di un attacco di SQL Injection: sono una fra gli attacchi più 
devastanti e diffusi.
Non si possono fermare con i normali firewall.
Se hai intenzione di metterla aperta al pubblico trova il modo di 
proteggerla, perchè è pieno di bot che scannano le web application per 
trovare le sql injection.

 fa da mio PM
Almeno l'ha scritto una persona sola.
Dovresti provare a mettere le mani su un mastodontico dinosauro (nel
senso di molto grande e molto vecchio) rappezzato mille volte da persone
con idee evidentemente molto diverse.
A me viene da piangere, sul serio.
Quando ci devo mettere le mani mi chiedo perchè non ho fatto altro nella
vita.
Shift

 Qual'č il peggior progetto sw su cui avete messo le mani?
il mio primato personale (in negativo) era un programma con DB in SQLserver 
e client in java, veramente tanti anni fa; vi risparmio i dettagli ma ... 
non avevo mai visto una cosa cosě lenta ! questo primato č stato battuto 
proprio con uno dei software in uso dove lavoro ora (oramai e' piu' di un 
anno): scritto in navision, ma con l'intenzione (se si puo' dire cosi') di 
usare Navision come fosse un 'ambiente di sviluppo, e quindi con tabelle, 
form, moduli, ecc ... tutto personalizzato (e quando scrivo tutto, intendo 
proprio tutto) in un modo che rende impossibile applicare gli aggiornamenti.
Tabelle con centinaia e centinaia di campi (non sto esagerando, a volte si 
passa il migliaio), query che gridano vendetta, campi chiave di cui non 
parlero' per vergogna, parametri scritti nel codice, commit chiuse male a 
centina (di nuovo, non sto esagerando), dati quadruplicati in tabelle 
diverse, DB che cresce a dismisura e (per finire) effettiva impossibilita' 
di effettuare una qualsiasi storicizzazione.
E anche qui, codice copiato e incollato ovunque, zero commenti.
Dopo aver finalmente mollato la software house originale, ci stanno 
lavorando con un po' di metodo: corretti gli errori piu' eclatanti, 
sistemato un po' di tabelle, aggiunto commenti nelle parti di codice di cui 
si e' capito il significato ... ma e' da buttare. 7 anni di lavoro :  3 di 
sviluppo, 2 in live da 'bagno di sangue', i seguenti 2 in live 'senza troppi 
errori di runtime' (perche' un programma funzionante e' un altra cosa) 
completamente inutili.
my 2 cents
Andrea
PS: si fa presto a dire "molti imprenditori non si fidano degli informatici, 
non investono nell'informatica"; visto certi prodotti / consulenti che 
girano, come si fa a dargli torto ? sempre colpa degli imprenditori ?
PPS: e si fa presto a dire anche "c'e' crisi per gli informatici, non 
trovano lavoro"; personalmente non auguro "del male" a nessuno (leggi 
"rimanere disoccupato, o senza soldi, ecc) ma spero vivamente che personaggi 
di questo tipo non si occupino mai piu' di informatica per tutta la loro 
vita. 

 Io sto lavorando da ormai anni (in modo discontinuo per�, per fortuna) 
su
cut...
Da come lo descrivi sembra un accrocchio dell'ultimo posto dove ho fatto 
il dipendente. Non è che lavori a TN? :D
Anche grazie a simili perle ho deciso di aprire partita IVA
Adesso sto facendo un frontend php ex-novo per un progetto universitario
Unit testing, Design patterns, ORM
Guadagno poco, ma non farei a cambio per il doppio dei soldi :D
Marco
-- 
Nulla è vero, ma non tutto è lecito

 storicizzazione.
Per curiosità lavori per un'azienda toscana?
Mi ricorda il software sviluppato (appunto in Navision) dalla mia ex-
azienda.
Usate il db nativo (ho i brividi solo a pensarci) o MSSQL?

 significato [...]
LOL :-)
-- 
Enos 

 vita.
sono quasi certo che i software-abomini siano presenti non solo in 
italia anche se forse da noi sono più concentrati e scritti talmente 
male che non si possono manco mettere a posto! :-D


 Se è recuperabile, inizia a scrivere unit test e vai di refactoring,
Oppure ti licenzi e proponi un prodotto alternativo scritto da te,
così non potrai prendertela che con te stesso :-))

 Qual' il peggior progetto sw su cui avete messo le mani?
A volte le cose sono fatte da gente incapace, come dici tu. A volte è
purtroppo questione dello scorrere inesorabile del tempo, che in
informatica ha più o meno la stessa misura dell'età dei cani: 1 anno
umano = 5 anni cane/informatica :-))
Quindi quel che 10 anni fa sembrava valido ed allo stato dell'arte
oggi facilmente è ultrasuperato. Oppure deprecato, perchè c'è anche
questa piacevole situazione. Ad esempio, il codice del tuo progetto
potrebbe essere stato prodotto da un generatore di codice sulla cresta
dell'onda X anni fa, e poi raffazzonato a mano .

 Qual'è il peggior progetto sw su cui avete messo le mani?
Il peggior progetto che ho visto, su cui per fortuna non ci ho dovuto 
mettere
le mani in quanto responsabile IT (o edp come dicevano loro ... :-)
è stato un sw logistico scritto da swhouse "specializzata" nel settore.
Tralascio linghaggio e piattaforma per pietà !
Emerge un problema  che chiameremo baco1.
L'indomani viene il programmatore e passa un'attimo al telefono col
collega esperto per capire se i sorgenti da modificare
sono quelli sotto \source \source1 \source_new \source_bck o sotto 
\source_bck_new ...
no, erano quelli sotto una directory nascosta su di un'altro disco,
stratagemma resosi necessario per "EVITARE CASINI"  .... :-(
e poi modifica ! Una compilata e tutto funziona !
Poi tutto fila liscio per settimane, finche si arriva a fine anno al 
famigerato
appuntamento con l'inventario ...
Le quantità erano meno sballate se passava uno tsunami !
Qui di sorgenti almeno ce n'erano, forse qualcuno di troppo e non si sapeva 
quele fosse
l'ultima versione ...
Ma il peggio è quando mi è capitato di subentrare a gestire dei sistemi in 
cui era presente solo l'eseguibile
ma non i sorgenti , ed ho detto tutto !
GxM 


In realtà sarebbe "ti dimetti". Ad ogni modo non vedo il nesso. Perché
mai ti dovresti dimettere in casi come questi?
--
ale
http://ale.riolo.co.uk

finestra, evaporavo, mi teletrasportavo, ...)
Non penso che sia recuperabile, cioè ci vorrebbe più tempo che a riscriverlo 
da zero. Anche qui ci sono metodi lunghissimi in cui c'è accorpato tutto, 
dall'accesso al database, alla produzione dell'html alla logica, ecc. 
Mancano anche i fondamenti della programmazione, tipo che quando una serie 
di comandi sono ripetuti in più punti del programma è necessario accorparli 
in una funzione e richiamare la funzione. Qui invece no, tutto è duplicato, 
triplicato, n-plicato e in versioni diverse.
Il guaio è che quando mi metto a fare un po' di ordine nel codice (impresa 
quasi disperata) mi viene detto di non perdere tempo in queste cose e 
limitarmi allo sviluppo delle nuove funzionalità!

 ha scritto nel messaggio 
news:35b1d408-bc70-49f3...@z27g2000prz.googlegroups.com...


In questo caso quando è stato iniziato lo sviluppo le tecnologie, seppur non 
allo stato dell'arte, non erano vecchissime (oggi lo sono). Ma qui il punto 
non sono le tecnologie in sè, è che bisogna saperle usare. 

 il dipendente. Non è che lavori a TN? :D
No :-) 

mai ti dovresti dimettere in casi come questi?
Se non mi dimetto è solo perchè non riesco a trovare altro, nonostante i 
diversi cv inviati. Ma bisogna stare attenti, perchè questo tipo di realtà a 
bassissimo livello qualitativo sia molto diffuso, almeno qui in italia. So 
che ci sono anche sw house e aziende che producono buon software, ma sono 
pohe e difficili da trovare!

 Le quantità erano meno sballate se passava uno tsunami !
Purtroppo non esiste un modo per determinare anche solo indicativamente la 
qualità di un software. Bisognerebbe andarci a vedere dentro, ma ci vuole 
una preparazione informatica che il cliente di solito non ha. Ed ecco che 
vengono venduti, magari anche a caro prezzo, degli obbrobri che poi si 
rivelano per quello che sono solo dopo anni.
C'è anche da dire che spesso chi ci rimette di più da un codice scritto da 
cani non è il cliente, ma è il programmatore che ci deve mettere le mani!

 triplicato, n-plicato e in versioni diverse.
Hai provato a dargli una passata di Simian?
--
ale
http://ale.riolo.co.uk

 pohe e difficili da trovare!
Mah. Io ritengo che fare le modifiche a software fatti da altri è
sempre peggiorativo che iniziare un progetto da zero.
Basta guardare certi sorgenti opensource, per convincersi che è meglio
evitare di metterci le mani.

 Usate il db nativo (ho i brividi solo a pensarci) o MSSQL?
no, niente toscana: lavoro in Veneto. Il DB è MSSQL. Però qualsiasi 
operazione tipo creazione di una tabella, aggiunta di un campo, creazione di 
un indice, ecc viene fatta sempre e solo da Navision 

 ecc viene fatta sempre e solo da Navision
La mia vecchia azienda aveva un paio di clienti Navision proprio in 
Veneto...
Anche quello immagino facesse schifezze del genere; io mi occupavo della 
parte sistemistica ed ero di continuo alla ricerca di ottimizzazioni 
dell'hardware/sistema operativo/db per far fronte alle lamentele di 
lantezze degli utenti.

no, niente toscana: lavoro in Veneto.
Comincia per A? 

 saperle usare.
concordo . Se costringi il programma a ciclare con delle IF scritte male, se 
utilizzi le variabili di tipo sbagliato per cui somme e sottrazioni 
riportano risultati sbagliati, se scrivi le query nel peggior modo 
possibile, se non sai come chiudere una transazione ... non ci sono 
tecnologie che tengano: non sai programmare, non conosci SQL, non e' il tuo 
mestiere. Punto e basta. 

 Comincia per A?
Sì, 5 lettere....

 limitarmi allo sviluppo delle nuove funzionalità!
poi gli porti una copia del libro di Fowler "Refactoring" o anche solo 
degli estratti e poi forse cambieranno idea, se quel prodotto è 
"strategico"...


 L'ultima che mi hanno raccontato e' quella di un'azienda
di distribuzione, cui hanno venduto un gestionale costoso (75K),
 di cui non funziona  praticamente NULLA...
ne' la contabilità, ne' le spedizioni, ne' la fatturazione, ne' il magazzino
... e via dicendo.
Chi  mi raccontava la cosa, e' un ex edp manager
di grande azienda, che, dopo varie vicissitudini, e' approdato
a questa aziendina e cerchera' di sostituire completamente
sia l'hardware che il software.
Si parla di una fase di transizione di almeno sei mesi.
Gli ho consigliato la massima prudenza.
A prescindere dalle sue indiscusse doti organizzative e di
pubbliche relazioni  IMVVHO  ci sono forti possibilità di
 un ulteriore fallimento.
E poi dicono che l'informatica ormai non e' credibile ...
ciao
fm 

 Qual' il peggior progetto sw su cui avete messo le mani? [...]
A proposito... qui a Novara l'azienda dove lavoro sta cercando un junior 
Java: TD rinnovabile con stipendio base. Se qualcuno è interessato 
(naturalmente *non* mi riferisco ai senior), mi mandi qualche riga di codice 
scritto di proprio pugno.
Non sparate sul pianista ;-)
Bye
-- 
Enos 

 Non sparate sul pianista ;-)
tseh...
ce l'hai il giubbotto antiproiettile, pianista? :P

 ce l'hai il giubbotto antiproiettile, pianista? :P
Hehe.. non servirebbe a nulla contro i proiettili da 30mm di uranio 
impoverito che si sparano da queste parti. Se proprio devo lasciare questo 
mondo, preferisco farlo stando comodo :-)
-- 
Enos 

 buoni pasto?
non credo, ma ci sono saletta e microonde a disposizione
ciao
-- 
Enos 

 Ho anch'io gli stessi "benefit" :)
Ssssh altrimenti si accorgono che io e te siamo la stessa persona :-P
Ciao :-)
-- 
Enos 

 fa da mio PM, se così si può dire.
[CUT]
Soluzione: gira questo post come email in forma anonima ai capoccia
dell'azienda.

 dell'azienda.
certo, così se lo sente bussare alle spalle "senti, anonimo dei miei
stivali, cos'hai da dire sul software che ho scritto io?"

 Si tratta di un attacco di SQL Injection
Mi sa che siamo ben oltre: nessuna injection, qui passa tutta la query se ho capito bene.

ho capito bene.
Si, esatto.
Ora ci sto lavorando praticamente a tempo pieno su questa merda e buona 
parte del mio tempo ci va nel trovare correggere gli strafalcioni clamorosi 
che ci sono dentro (mi stupisco continuamente come faccia a 
funzionicchiare), e di conseguenza mi trovo spesso in imbarazzo a riportare 
al mio collega quello che faccio:
"L'hai risolto? Qual'era il problema?"
"Ci ho messo qualche ora a trovarlo... ehm.. QUALCUNO... aveva scritto 
questa $cazzata..."
"Ma dai? che strano! chissà come ci è finita dentro.."
"Eh già, guarda, non so..ehm..ehm"
Che situazione pietosa... :-( 

 che ci sono dentro
regola vuole che, merda o non merda, il pregresso si lascia com'è
(paradossalmente anche con i suoi bug) mentre le migliorie
tecnologiche e architetturali si applicano sul nuovo sviluppo. se il
software bene o male "funzionicchia" bisogna prenderne atto e amen,
anche se l'intento di correggere gli strafalcioni è nobile il rischio
che smetta anche di funzionicchiare è reale e le pedate nel culo
conseguenti fanno più male di quelle meritate.
che non sia bello lavorare così è lapalissiano, ma tutti almeno una
volta abbiamo ereditato un progetto da qualcuno che ne sapeva meno di
noi e almeno una volta abbiamo lasciato in eredità un progetto a
qualcuno che ne sapeva di più. se la situazione persiste cambia aria
ma nel frattempo è bene stare tranquilli e costruttivi,  pure moderati
con le polemiche che oltre una certa misura diventano sterili e
espongono chi le fa a delle controcritiche a cui poi bisogna avere
l'autorevolezza di saper rispondere.


Occhio a tenere un backup dello stato "iniziale". Perché se poi 
succederà un casino fra qualche mese sarà colpa tua che c'hai lavorato 
tu... e prima era perfetto...