2015-10-18

Programmare - Rant

Nella mia vita professionale, ho lavorato in molti progetti, ciascuno con la sua impostazione caratteristica. Alcuni progetti da solo, altri progetti in collaborazione con colleghi/soci e in altri ancora con persone sconosciute (nel senso che mettevo le zampe nel codice scritto da altri).

Quando iniziai con gli IDE c'era VS6, usavo Windows, programmazione in C/C++ (entrambi i linguaggi).
Non conoscevo ancora programmazione al di fuori di MS-DOS (Basic e Pascal, principalmente) e Windows (Basic, C e C++).

Mi ricordo che quando passai dal Borland Turbo Pascal 7, che usavo a scuola, a VS6 rimasi molto sorpreso dalle potenzialità e da ciò che era possibile fare.
Però

Già in quel periodo sentivo che c'era una nota stonata, infatti per molti lavori mi trovavo a scrivere direttamente nei file DSP e DSW per fare tutto ciò che l'IDE non riusciva a fare. La nota stonata non era tanto il fatto che accedessi a questi file quando in teoria avrebbero dovuto rimanere opachi, quanto i motivi che mi spingevano a codeste operazioni. Motivi neppure tanto esotici quali la clonazione di un progetto per avere più eseguibili con le stesse impostazioni di base.

In quel periodo la mia esperienza era ancora limitata, quindi avevo bollato la cosa come semplice sensazione.

Più avanti ho iniziato ad ampliare la mia base di esperienza lavorando sempre più con altri linguaggi (e altri sistemi al di fuori di Windows) e approfondendo metodi di sviluppo quali l'uso dei makefile che avevo visto solo marginalmente poiché Visual Studio già faceva tutto quello che serviva. O almeno così pensavo.

Se sei abituato a camminare usare la bicicletta è un salto notevole, ma se sali in sella ad una moto e impari a guidarla, ritornare alla bicicletta risulta estremamente traumatico.

La nota stonata che sentivo ha iniziato a diventare un rumore assordante di decine di strumenti che vengono suonati a caso da altrettanti musicisti che non si ascoltano tra loro.

Per questioni di lavoro sto lavorando su dei progetti sotto Windows con Visual Studio (2010 e 2008). La versione poco importa perché quello che in questo momento funge da palla al piede è il concetto alla base degli IDE, ossia che chi li ha sviluppati ha pensato ad un tipo di utilizzo e se tu hai bisogno di un metodo differente devi imprecare non poco e scontrarti con una serie di malfunzionamenti in alcuni casi oltre il livello del ridicolo.

Ad esempio la condivisione dei file sorgente tra i progetti di uno stesso lavoro, l'organizzazione in directory dei file sorgente (necessaria quando lavori con 50+ file), l'impossibilità (ancora) di poter fare un confronto delle impostazioni dei progetti se non guardando i file XML o cliccare come un ossesso tra varie finestre (almeno rispetto a prima non sei obbligato a chiudere e riaprire le finestre), l'impossibilità di lavorare con codice generato perché non sono state previste regole di dipendenza personalizzate aggiuntive, il fatto che l'IDE ha delle discrepanze logiche per cui cerca file collaterali (come i resx) nella directory dove si trova il sorgente principale, ma se lo vuole scrivere lo mette nella directory base del progetto per poi impazzire e non riuscire né a trovarlo (non è dove si aspetta) o crearlo (si trova già dove lo vuole creare, che è diverso da dove lo andrà a cercare).

Cancelli un file usando l'IDE stesso, non puoi ricrearlo perché lo vede come se ci fosse ancora.

Insomma, su un'ora di lavoro con Visual Studio più di mezz'ora se ne va per fermare, modificare a mano file, riavviare l'ambiente, click a profusione per includere un file come link a 5 progetti (saranno di più e rabbrividisco). Con tutto quello che impatta sul discorso concentrazione.

Il tutto senza considerare le cache che l'IDE si tiene in pancia.
Infatti modificando un file comune (che tutti linkano) il progetto principale vede le modifiche nell'Intellisense, gli altri no e generano una serie di falsi errori fintanto che non si procede con una compilazione completa (che non è a tempo zero).

Però il cliente richiede Visual Studio e non posso lavorare in altro modo.
Per fortuna, in tutto questo mi viene in aiuto git e una marea di backup che faccio prima di particolari operazioni (per alcune delle quali mi scrivo programmi ad-hoc usa e getta, impiegando un ottavo del tempo che impiegherei per fare la stessa operazione attraverso l'IDE).

Firmato:
Campagna per l'abolizione degli IDE