Software nello sviluppo web (e dintorni)

hands-desk-office-working (Large)

Una delle cose che spesso fa un po’ scervellare è la scelta corretta più adeguata del software da utilizzare in quelle che sono le quotidiane prassi, sia lavorative che organizzative.

Molti degli strumenti che solitamente nello sviluppo web mi è capitato di scegliere sono volti a migliorare quello che è il flusso di lavoro. Che fosse un’ottimizzazione di tempo o di risorse.
Vediamone alcuni.

Disclamer: avendo sempre utilizzato Android (per scelta) i rimandi al software per smartphone sono di parte, non me ne vogliate. Volentieri invece fatemi sapere quali ritenete siano alternative che utilizzate, anche in casa della mela o della bandiera colorata (Apple & Microsoft).
Disclamer 2: i software sotto elencati sono gratis o liberamente utilizzati. Certamente esistono a pagamento altri software che fanno le cose bene bla bla bla.

Tempo

Un primo strumento che torna utile dal inizio giornata è un calendario per la gestione degli appuntamenti e delle to-do. Ancora meglio se questo strumento ha un’integrazione con eventuali smartphone o simili dispositivi che ci portiamo appresso e che ci permettono quindi di ricevere adeguate notifiche su appuntamenti e scadenze.
Essendo Android-fornito la scelta obbligata è stata Google Calendar e Google Keep. Il primo è un calendario a tutti gli effetti, disponibile oltre che nelle integrazioni per smartphone, anche nella classica e sempre comoda versione desktop. Google Keep invece è molto utile per la gestione di note veloci, liste to-do o simili, appunti vocali, ecc. Di recente è stato completato con la tanto richiesta possibilità di condivisione dei contenuti.
Con questi due strumenti l’organizzazione temporale, perlomeno in una fase iniziale, è più che coperta.

Comunicazioni

Ovviamente verificate le cose che ci sono da fare (e sorseggiato il giusto caffè) entra quasi subito in gioco la necessità di comunicare (esatto, prima il caffè, poi si comunica). Che sia con clienti, collaboratori o amici.
Il panorama è ovviamente ampio, sia per scelte personali sia per abitudini dei clienti. Skype è ovviamente tra i più gettonati nonostante la poco chiara gestione delle informazioni personali e l’assurda lentezza nel trasferimento di file anche in rete locale me lo hanno reso sempre poco gradito. Indubbia la sua comodità e qualità nelle conferenze (sia vocali che video) o nelle condivisioni desktop.
Da un po’ di tempo, sempre anche grazie alla nativa presenza sul mio smartphone dal robottino verde, Hangouts sta dimostrando non poche qualità in termini di voice & video call, molto migliorati nel tempo anche alcuni bug che lo rendevano poco reattivo (ritardi nei messaggi, problemi nella condivisione di file). Telegram e Whatsapp ovviamente meritano la giusta nota, nonostante personalmente sia poco avvezzo ad utilizzarli per lavoro.

In campo e-mail, vuoi per possibilità di configurare praticamente ogni aspetto o ampliarlo con estensioni e plugin, sia per la politica open-source che proprio male non fa, Mozilla Thunderbird è da anni ormai il compagno fedele nel gestire la posta elettronica. Da poco tempo inoltre è stato integrato con Lightning sempre di casa Mozilla, comodo calendario con varie integrazioni con servizi di terze parti.

Browser

Qua la scelta (ricordo non nel normale utilizzo, ma nel lavoro e sviluppo) ricade spesso su Google Chrome e a “giorni alterni” su Mozilla Firefox. Questo di base sia per una maggiore leggerezza nella richiesta di risorse e velocità di Chrome in ambiente Microsoft, sia per quella che ritengo una più comoda suite di strumenti di analisi e sviluppo, sia perché scelto uno strumento e imparato quello mi ci sono trovato meglio. Non nego che spesso Firefox (specialmente nella versione Web Developer) mi ha tentato ma non ho mai avuto l’adeguato tempo per dedicarmici.
Alcuni degli strumenti più utili sono già disponibili nel comodo inspector (F12 oppure click con il destro e poi “Ispeziona elemento”). Lo stesso gode di una vasta integrazione con estensioni di terze parti per analisi e sviluppi con framework specifici (come AngularJS, jQuery, ecc) o per l’utilizzo combinato con editor e IDE (tramite LiveReload, Emmet, Netbeans Connector, ecc).

Editor e IDE

Provati molti, come ogni sviluppatore. Piaciuti altrettanti nel tempo. Questo perché sia i software cambiano (e scompaiono [e nascono]) sia perché sono cambiate nel tempo le esigenze.
A livello di velocità e integrazioni quelli che al momento sono risultati la scelta vincente sono Netbeans e Sublime Text 3.
Netbeans è un IDE completo, con tanto di gestione dei server web e db, auto completamenti, connessioni con i browser, analisi del codice, versionamento (Git al momento come scelta preferenziale), workflow con Grunt, Bower e NodeJS. Rispetto ad altri strumenti sia a pagamento (Zend Studio, PhpStorm, ecc) sia gratis (Aptana, Komodo, ecc) lo ritengo più veloce, leggero, rapido in avvio e con la giusta combinazione di strumenti. Oltre che essere gratis ovviamente.
Sublime Text 3 invece è per l’utilizzo veloce. Il “click click scrivi”. Tempo di avvio si e no 1 secondo. Possibilità di estensione notevole tramite un comodo Package Control che permette l’installazione di ogni sorta di moduli e lo rende, dopo un po’ di adeguata configurazione, un potenziale sostituto totale anche per la parte IDE. Sulla stessa linea troviamo Adobe Atom che però quanto a lentezza e spreco di risorse risulta più spesso fastidioso che utile.

Trasferimento file

Oltre ai succitati Skype e simili per l’invio veloce o alle eventuali integrazioni dei protocolli FTP di Netbeans e Sublime Text 3, strumento essenziale è FileZilla. Comodo client FTP e SFTP, configurabile in praticamente tutti gli aspetti. Abbinato a Sublime è un comodo e veloce gestore dei trasferimenti con possibilità di editazione e caricamento veloci delle modifiche ai siti.
Da citare la possibilità tramite 3 icone di attivare la navigazione sincronizzata tra remoto e locale, il confronto di cartelle e file (non il contenuto dei file, ma data e dimensioni), filtri e ricerca, sia locale che remota.

Per trasferimenti più grandi o solitamente dei materiali da e verso il cliente (e quindi più semplici da gestire) trova il suo posto WeTransfer, comodo portale dove è possibile inserire la propria e-mail, quella del cliente, un messaggio e degli allegati (max 2GB nella versione free ma solitamente più che sufficienti). I link hanno una scadenza temporale dopo la quale non sono più disponibili. Al caricamento del file il link viene mandato al cliente, così facendo le caselle email restano libere da email enormi con allegati infiniti.
Altrettanto comodo, specialmente con i collaboratori è Dropbox che permette di definire un tot di cartelle locali da condividere (tramite cloud crittografato) con chi vogliamo, o semplicemente averceli sempre disponibili e sincronizzati tra i nostri vari dispositivi sia desktop che mobile.

Workflow

Ormai sempre più di moda dato il loro indubbio merito nel migliorare e automatizzare molte fasi del lavoro troviamo Bower, Grunt, Yeoman e tutta la famiglia di derivati e figli di NodeJS.
Non entro nei dettagli dato che qua il campo si amplia parecchio.
Bower è un comodo gestore delle dipendenze. Vuol dire che invece di dover andare su web, cercare ad esempio Bootstrap, andare sulla pagina Download, scaricarlo, scompattarlo, caricarlo nelle cartelle corrette, ecc semplicemente lancio un comando come “bower install bootstrap –save” e lui in automatico mi scarica la versione più recente, le eventuali dipendenze (jQuery in questo caso), le scompatta e le colloca dentro la cartella “bower_components”. Praticamente con 3-4 comandi vi ritrovate tutto l’assett pronto.
Grunt permette l’automazione di molti processi sempre tramite sotto componenti come ad esempio l’accodamento dei file JS e CSS, la compilazione di LESS, SCSS e SASS, la minificazione degli stessi, la compressione, l’ottimizzazione delle immagini, la pulizia delle cartelle, ecc.
Yeoman è un po’ una comoda interfaccia testuale ai due ragazzoni di cui sopra. Solitamente si installa (cercandolo direttamente da Yeoman) un “generatore” che prepara tutto quanto ci serve per una determinata tipologia di progetto (che sia un sito WordPress, un tema, una plugin, un’applicazione, ecc).
NodeJS……
Koala
è un interfaccia grafica a tutta una serie di sotto strumenti di compressione e ottimizzazione per CSS, JS e immagini. Molto comodo, ma oggettivamente poco pratico appena il progetto inizia ad ampliare.

Quasi quotidianamente escono fuori nuove estensioni ed evoluzioni di questi strumenti, la community è decisamente attiva e gli sviluppi si stanno rivelando utili e interessanti.

Console

Diretta conseguenza della necessità di aver una linea di comando a disposizione nel utilizzo degli ultimi 4 strumenti segnalati abbiamo Cmder. Tab, interfaccia stile Quake che scende da sopra in semi trasparenza (molto comoda), possibilità di avvio di cmd, PowerShell, bash e chi più ne ha più ne metta oltre che tutta una serie di configurazioni e personalizzazioni disponibili l’hanno reso uno strumento incredibilmente comodo e sempre disponibile.

Tool grafici

Non ne uso molti ma alcuni tra tanti meritano la giusta luce.
ColorMania. Semplice e pratico color picker con in più la possibilità di regolare a posteriori il colore pescato, salvarlo, recuperarlo, ecc.
Handbrake invece è un comodo software per la compressione dei video prima di integrarli nelle pagine web o caricarli su un social.
Gimp permette in stile (quasi) Photoshop di editare le nostre immagini, mentre Inkscape torna utile quando le immagini da modificare sono vettoriali (AI, SVG, PDF).
Icecream Screen Recoder è un registratore video di quello che fate sul desktop. Comodo se dovete creare dei tutorial o segnalare ad esempio comportamenti anomali di siti.

Database

La maggior parte delle volte mi capita di aver a che fare con MySQL o Postgres. Per poterli al meglio gestire segnalo tre client, due per MySQL ovvero MySQL Workbench di casa Oracle (utilizzato per un po’ poi peso e interfaccia inutilmente elaborata lo hanno fatto passare al secondo posto) e HeidiSQL (molto veloce e intuitivo) e uno per Postgres ovvero pgAdmin III.

Debug

Per questa spesso fastidiosa parte mi affido a BrowserSync che permette di sincronizzare la navigazione su un sito internet tra più dispositivi. Potete aprire una pagina web, lanciarlo e tramite comodi link aprire la stessa pagina su altri dispositivi, desktop o mobile. Le azioni che fate su uno dei dispositivi come ad esempio scrollare la pagina sono in automatico eseguite in tutti gli altri dispositivi.
Tramite cavetto USB e Google Chrome (attivo sia su smartphone che su desktop) avete la possibilità poi di eseguire dal desktop il debug e analisi (e modifica) di quanto accade sul browser presente sullo smartphone tramite l’inspector.

Ufficio

La scelta solitamente ricade tra Libre Office (attualmente in uso) e Open Office, entrambe valide e sempre più complete alternative al poco rimpianto Office di casa Redmond.
Scribus vi torna utile quando invece volete impaginare testi, immagini o PDF per opuscoli o presentazioni. Non è certo come InDesign (anzi è più simile per certi aspetti a Quark-Xpress) ma fa il suo e più di una volta mi ha salvato dal impazzire nel creare libretti o brochure.
Lavorare bene in ufficio richiede l’adeguato sottofondo musicale. In questo caso Foobar2000 e VLC  si rivelano ottimi strumenti. In realtà non solo per l’aspetto ambientale, ma anche per verifica di file audio e video o per la gestione di un archivio musicale.

 

Conclusioni

Non ce ne sono, il software ormai cambia a velocità tali che tempo di scrivere questo articolo e probabilmente già qualcosa è cambiato. Molto dipende dal tipo di lavoro che fate. Molto da che strumenti avete ormai imparato ad utilizzare e avete incastrato al meglio tra di loro per ottimizzarvi il flusso di lavoro e aiutarvi in quelli che sono i compiti quotidiani.
Tempo per provarli tutti non c’è, questo il motivo di questa condivisione del software che attualmente utilizzo e con il quale ormai mi trovo a mio agio. Ben vengano vostre esperienze e suggerimenti.