Prendo spunto da questo articolo consigliatomi dal Dread per trarre alcuni spunti di risposta
Ho letto il post e non posso nascondere che mi abbia toccato nel
profondo. Ho aspettato un po' di ore (e l'una e quaranta di notte) per
riordinare le idee e mettere giu' due righe con un senso logico, in
modo che non potessero generare flame o discussioni orientate verso
una direzione sbagliata. L'argomento mi piace e ne puo' nascere una
bella discussione. Mi spiacerebbe rovinare tutto. Per di piu' penso di
essere uno dei pochi qui dentro che fa un uso spinto di .NET (WPF,
Silverlight, WCF, LINQ, EDM...) e quindi non vorrei rischiare di
ritrovarmi un coro di persone con idee totalmente diverse dalle mie
con cui e' difficile capirsi, semplicemente perche' si guardano le
cose da due prospettive troppo differenti. In questo caso mi scuso e
mi tolgo dalla discussione.
Perche' il brano mi ha toccato? Mi ha toccato la parte in cui si dice
che lavorare in .Net significa cucinare in una cucina del Mac Donald,
e che ogni giorno passato li' dentro e' un giorno in meno passato a
cucinare in una cucina Francese di alta classe. Mi sono sentito in
difetto e mi sono fatto un bell'esame di coscienza per capire se
stessi facendo una cosa sbagliata o no. Specialmente dopo che
all'inizio del post mi sono immedesimato perfettamente in questo:
"See, experience is cheap. All it takes is time. Skill is harder,
but really only requires hard work — a lot of people can get that.
But attitude. You either have it, or you don’t. The right sort of
person is so passionate about coding, they can’t be stopped from doing
it. They typically started before high school — sometimes before
middle school — and never looked back. They write everything from
assembly to jQuery, on PCs to mobile phones, doing hard core computer
graphics to high level social networking. They’ve tried everything."
Quanto e' vero cavolo. Adoro programmare, esprime totalmente la mia
creativita'. Non so comporre musica, non so disegnare, non so
scolpire. Programmare e' la mia arte, e' il mio io. Do' tutto me
stesso nel codice che produco e spesso lo perfeziono per cercare di
migliorarmi costantemente. Mi trovo a ragionare sul modo di rendere un
algoritmo ancora piu' perfetto, ancora piu' "bello".
E questo secondo me prescinde il linguaggio di programmazione o le
librerie o il framework che si usa.
Amo programmare e mi ritrovo spesso e volentieri alle 9 di sera con la
giornata che mi e' volata alle spalle. Stanco ma felice del mio
lavoro. SI ovvio capitano i giorni in cui hai dovuto fixare bug, in
cui hai dovuto lavorare alla cazzo di cane perche' la scadenza e'
vicina e ho prodotto codice osceno perche' buttato giu' con fretta
senza pensarci troppo. Non ci sono cazzi: quella funzionalita' del
programma va implementata entro domani. Hai solo 10 ore. Poi magari ci
ritorno dopo e la modifico, la miglioro. Lo so che e' un modo
sbagliato di lavorare ma trovatemi un BUON posto di lavoro in cui non
fanno cosi' e in cui io abbia possibilita' di essere assunto (a
GENOVA) e mi ci fiondo.
E questo secondo me prescinde il linguaggio di programmazione o le
librerie o il framework che si usa.
Dicevo che sono rimasto toccato e ho fatto un bell'esame di coscienza
per capire se stessi facendo qualcosa di sbagliato. Mi sono reso conto
che alla fine e' vero, c'e' poco da dire: lavorare con .NET (e ancor
"peggio" con Visual Studio) ti lega profondamente a Microsoft e al
loro modus operandi. Lo dico senza troppa vergogna: se dovessi tornare
ai puntatori e a gestire le cose a basso livello penso avrei non poche
difficolta'. Mi sentirei perso senza il mio LINQ con cui posso trovare
un'oggetto in una lista cosi':
Int32 abdulId = list.Where(p => p.Name ==
"Abdul").Select(p=>p.ID).FirstOrDefault();
e mi sentirei perso senza la fottuta facilita' con cui trovo il nome del mio pc:
String myName = System.Environment.MachineName;
Si' e' vero. Probabilmente con questo livello di astrazione rischio di
perdere di vista cosa succede nel sottobosco, e di non avere la
capacita' di portare a compimento tasks che richiedono di fare cose
non previste dal framework .NET (chesso'.. fare una scansione a basso
livello dei bit sulla COM2 ad esempio... anche se secondo me si puo'
fare in .NET... non riesco a trovare cose che non si possano fare
oggettivamente, ma e' proprio di questo che stiamo parlando: io uso
.NET e il resto non esiste, e sono io a essere coscientemente in
difetto. Scusate la parentesi lunga).
Quindi mi rendo conto che certe cose non le so fare, anzi non mi rendo
proprio conto di cosa siano queste cose, che forse e' anche peggio.
Pero' per fortuna non ho lavorato solo con .NET nella mia vita. E
posso dire per esperienza che mi diverto molto di piu' a lavorare con
.NET che con PHP. Riesco a esprimere maggiormente la mia creativita'
con .NET che con JAVA. Negli anni la mia esperienza mi ha permesso di
crescere e di conoscere .NET in maniera molto ampia, e di spremerne le
potenzialita' fino al midollo. Questo mi permette di usare tutti gli
strumenti possibili per fare quello che voglio fare, nel miglior modo
possibile. Sto diventando molto bravo (e lo dico senza superbia, ma
con una punta di orgoglio per i risultati ottenuti dopo tante fatiche)
e alla fine dei conti il mio software viene utilizzato da tantissime
persone che lo usano, lo apprezzano e/o lo criticano. Personalmente
non mi sento minimamente in difetto. Sono contento, sono creativo,
sono pagato, e sono felice. Molte volte mi dico che se avessi dovuto
fare le stesse cose in Javascript sarei diventato scemo e ci avrei
messo 100 giorni invece che 1.
Ci sarebbe tutto un capitolo sui paragoni che io non ho condiviso.
Sono un po' troppo forzati. Non mi sento davvero un lavoratore di Mac
Donald (e non perche' non puzzo di olio). Proprio per il fatto che
riesco a esprimere la mia creativita' mi sento molto piu' vicino a una
casalinga italiana che a un povero cuoco del mac donald. Si magari gli
chef francesi sanno fare i piatti piu' artistici ed estrosi del mondo,
ma io con il mio tiramisu' fatto in casa spacco il culo ai passeri
E poi per quanto a volte ci siano solo scoiattoli, e che una volta
cucinati debbano essere comunque buoni mi viene solo da dire che io ho
la (s)fortuna di avere sempre un supermercato ben fornito sotto casa,
e se ho bisogno di qualcosa faccio la spesa. Mai e poi mai mi
ritroverei solamente con uno scoiattolo. Ne' mai mi vorrei trovare in
quella condizione. E se mi ci ritrovassi.. beh sara' la volta che
moriro' di fame.... Senza contare il fatto che uno scoiattolo per quanto sia ottimo, non e' nemmeno paragonabile alle lasagne, al tiramisu, ai ravioli al cinghiale.
Cazzo mi e' venuta fame. Buon appetito a tutti
Per quanto riguarda la praticità a volte ti trovi in situazioni un po' diverse.
RispondiEliminaUn banale "echo __FUNCTION__;" in PHP, in C# può diventare
"System.Windows.Forms.MessageBox.Show(System.Reflection.MethodBase.GetCurrentMethod().Name);"
Questo commento è stato eliminato dall'autore.
RispondiEliminaQuesto commento è stato eliminato dall'autore.
RispondiEliminaNon ho maneggiato tutte le cose che hai citato, ma una buona parte sì, e anche io lavoro principalmente in .NET, anche se pure io ho visto altro.
RispondiElimina.NET è più "facile"? Sì.. e allora? I chirurghi dovrebbero usare i coltelli di un tempo invece dei bisturi laser o altre belle novità tecnologiche? E' come se un chirurgo della vecchia guardia dicesse che quelli nuovi sono pippe e se non hanno roba all'avanguardia non sanno manco fare un'appendicectomia..
Alla fine quello che conta non è l'abilità con cui usi strumenti minimali, ma la qualità e la rapidità con cui ottieni il risultato finale.
E cazzo, che qualcuno mi venga a dire che con C++ si lavora più rapidamente e con risultati migliori (sia come bachi che interfaccia utente) rispetto a C# e VStudio!
Io sono pienamente daccordo sul fatto che il divertimento non dipende dalla tecnologia! Mi diverto tanto con .NET, che con Java, che con PHP. Il trucco stà nell'utilizzare il proprio estro al meglio!
RispondiElimina@Malhavoc: just no. Il paragone sarebbe se a causa degli strumenti moderni il chirurgo si trovasse nella condizione di fare operazioni "previste" con facilità, ma nella totale impossibilità di fare cose che lo strumento non "supporta".
RispondiElimina