lunedì 12 settembre 2011

A che servono i certificati Java

Duke - la Mascotte Java
Finora ho lavorato molto piú spesso con Java che con altri linguaggi di programmazione.
Ho iniziato l'università nel 1998 a Roma Tre quando un giovane Prof. Cabibbo ha insegnato per la prima volta agli studenti del primo anno della facoltà di Ingegneria Informatica i fondamenti di Programmazione Object-Oriented attraverso lo studio delle basi di Java.
Era quasi un gioco. Semplice, intuitivo e divertente, il linguaggio mi ha subito preso. E mi ha accompagnato in seguito anche nella vita lavorativa.
Nonostante sia un buon programmatore, forse mi manca un po' di quel perfezionismo e la pulizia che ad alcuni viene quasi spontaneamente, ma cerco nel tempo di migliorarmi.
Anche per questo e per voler dimostrare di aver raggiunto un certo livello, mentre lavoravo a Dublino nel 2007-2008 per il supporto di WebSphere Portal ho deciso di studiare per l'esame SCJP che in quel momento era alla versione Java 6 SE (solo da pochissimo è arrivata la 7, d'altra parte).
Dopo aver sostenuto e superato l'esame con Prometric (da giugno Oracle usa invece La Pearson VUE) ho ricevuto con orgoglio la tessera e il certificato timbrato ufficiale del livello raggiunto. Un paio d'anni piú tardi ho anche conseguito il certificato Java per applicazioni web SCWCD e ho aggiunto quel certificato al mio curriculum.

Quello che ho ottenuto con questi esami:
Ho tenuto viva la passione per Java. Lo studio deve continuare anche durante la vita lavorativa e per quanto ci siano persone che hanno una propensione per lo studio, impostare un obiettivo come quello di un esame mi ha certamenete aiutato a studiare di piú attraverso strumenti come Java Black Belt (ora http://knowledgeblackbelt.com ) o i fantastici libri della serie Head First.
Ho aggiunto degli argomenti di discussione per i miei colloqui lavorativi. Per quanto col passare degli anni, gli argomenti di conversazione abbondino grazie alle esperienze lavorative pregresse, è fondamentale dimostrare di essere capaci di qualcosa di piú che il semplice lavoro impiegatizio. Un certificato simile voluto e ottenuto privatamente durante il tempo libero è un buon esempio.
Ho superato i momenti difficili trovando l'orgoglio. Non tutti i periodi a lavoro possono essere interessanti e come li vogliamo. Durante quelle fasi, un progetto personale di studio può dare soddisfazioni che momentaneamente a lavoro non si trovano e magari aprire anche orizzonti per un prossimo futuro.

Quello che non ho ottenuto con gli esami:
Non sono diventato un programmatore migliore per questo. Lo studio per un esame a risposta multipla non insegna a essere un programmatore migliore. E' piuttosto con la pratica che si possono avere quei risultati applicando lo studio ad esempio del codice prodotto da programmatori piú esperti e piú portati di noi.

martedì 6 settembre 2011

Safari Books Online

Oggi, dopo un anno di silenzio, volevo parlare di Safari Books Online
Proprio pochi giorni fa questo servizio ha compiuto 10 anni.

L'idea è semplice: sono eBook disponibili online. Si paga circa 30 dollari al mese per il pacchetto intermedio che comprende l'accesso completo a tutte le anteprime dei libri e un limite di 10 libri al mese da tenere nel proprio scaffale virtuale.
10 libri al mese sono tanti. Soprattutto considerando che si tratta di tomi di volume (virtuale) non indifferente e di contenuto che necessita di tempo e possiblmente di pratica per essere assimilato.
Se non fosse abbastanza comunque è disponibile un pacchetto con un prezzo maggiore ed accesso illimitato.

I vantaggi:
1) La libreria che si ha a disposizione è immensa. 16000 libri di ogni genere legati al mondo professionale dell'IT.
2) La libreria è a portata di internet. Se hai internet, hai anche il tuo libro. Quindi a lavoro sul pc, ma anche sul tuo tablet preferito e perfino sul tuo smartphone (se hai occhi buoni). Pare che anche il kindle sia abilitato a leggere - data una connessione - il contenuto ma io alla data di oggi non sono ancora in grado di effettuare l'accesso.
3) La libreria è ricercabile. Questo viene col formato elettronico ma se i libri sono 16000 di roba da cercare ce n'è parecchia ed è difficile rimanere senza documentazione su un qualunque argomento.

Gli svantaggi:
1) Ogni mese si paga, anche se non ogni mese magari si legge. Se siete persone che non fanno affidamento a manuali per documentarsi, se non avete tempo regolarmente di continuare la formazione, questo pacchetto probabilmente non fa per voi ed è meglio comprare PDF quando necessario.
2) La libreria è a portata di internet. Se non si è in possesso di una connessione 3G e quantomeno di uno smartphone per usarla, il 50% del valore del pacchetto si perde per strada. Se a lavoro l'accesso a internet è molto ristretto, il valore potrebbe perdersi del tutto.
3) La documentazione è in inglese. Ancora non sai l'inglese? Allora prima spendi i soldi per un corso serio di lingua e poi torna a leggere questo post. :)

Detto questo, la mia esperienza è positiva e al momento sto leggendo (e provando a mettere in pratica) le basi di Scala, dopo aver finito di leggere un bel libro pieno di consigli per programmatori e sfogliandone altri 2 o 3 di temi non vicini al mio lavoro di tutti i giorni.

Il servizio offre anche pacchetti per gruppi di lavoro o aziende, che possono risultare interessanti per la vostra azienda.
L'idea è che bisogna continuare a incuriosirsi di ciò che fa parte del nostro mondo lavorativo, fratelli informatici!

martedì 17 agosto 2010

Gmail Zero-eMail-Zen



Per lavorare in modo efficiente cerco di configurare la mia casella di posta in modo efficace tramite l'applicazione di pochi piccoli accorgimenti che il client web di Gmail rende semplici ma che si possono usare anche tramite altri client di posta.

L'accorgimento più importante per tenere una casella di email il più possibile pulita (almeno per ora) è cercare di non lasciare le email ad attendere nell'inbox.
Seguendo anche i consigli di Merlin Mann, ad esempio di questo video (e seguendo i consigli di GTD),

Ogni email deve finire il prima possibile (subito!) in uno dei seguenti modi:
1) essere cancellata / archiviata
2) ottenere una risposta
3) essere inoltrata / delegata a qualcuno
4) essere rimandata a più tardi senza rimanere nell'inbox
5) causare un tuo lavoro - ogni tanto purtroppo bisogna lavorare - ed eventualmente una risposta a riguardo


Alcune di queste azioni hanno bisogno di una persona attiva - non ho ancora capito se lo sono davvero - ma altre per fortuna possono essere almeno in parte automatizzate.
Fra le cose che ho configurato nel mio ambiente Gmail, le più importanti sono (fra parentesi segnalo l'obiettivo che aiutano a raggiungere):
a) Le email che arrivano da indirizzi di lavoro vengono etichettate come tali in modo che si possano più facilmente ritrovare, archiviare all'occorrenza per nasconderle anche come non lette e poi essere facilmente recuperate la mattina successiva. (1, 4)
b) Le email per le quali aspetto una risposta, le etichetto con una label "waiting" e le mando in copia nascosta anche a me, in modo che tramite un filtro possa archiviarle e tenerne traccia nella vista "waiting". (3)
c) Gli appunti che scovo in giro per il web cerco di salvarli tramite l'ottimo strumento gratuito springpadit.com ma se mi trovo ad avere accesso solo alla posta, mi mando una email con subject "memo" e filtro tale email archiviandola ed etichettandola pronta per essere letta più tardi.
d) Sto anche usando un prodotto in beta che aiuta molto, si chiama boomerang4gmail, e anche se non è fondamentale avere un tool del genere, aiuta molto poter rimandare o delegare stando attenti a verificare se si è ricevuto una risposta. Vale la pena farci un giro. (3, 4)
e) Uso un gran bel gruppo filtri per cancellare / archiviare molte newsletter et similia non richieste che non voglio nemmeno mettermi a controllare o su notifiche da social web che voglio controllare solo quando decido io. (1)

Tutto questo dovrebbe servire a passare meno tempo sulla posta e più tempo sul proprio lavoro e sulle cose che più interessano, senza però lasciare in uno stato disastroso la propria inbox

venerdì 29 gennaio 2010

Metriche del software

Obiettivi possibili delle metriche:
1) Provare a predirre la quantità di nuovi moduli o modifiche da sviluppare
2) Valutare lo sforzo impiegato per svilupparlo

E' da valutare prima di tutto quanto tempo si può impiegare nella misura delle metriche per non generare un overhead nella generazione di queste statistiche.



Predirre la quantità di nuovi moduli o modifiche da sviluppare


Predirre in base ai requisiti
Per il primo caso ci si può basare sui Punti Funzione.
Questo metodo è difficile da usare e può portare a valutazioni disparate a seconda delle interpretazioni dei requisiti, della variabilità dei requisiti stessi [4][5].

A parte il peso, comunque, la valutazione delle interfacce da costruire e la valutazione di tutti gli input e output da implementare può avere un valore ma deve essere considerata la volatilità dei requisiti che si vanno a implementare, per cui gli Unadjusted Function Points (UFP) possono risultare differenti a seconda della variabilità dei requisiti esposti.

Calcolo dei punti:
I punti vengono calcolati in base a interfacce interne (come tabelle di un proprio database), interfacce esterne (web services o interfacce gestite dal di fuori dei confini dell'applicazione - più comuni nelle nostre applicazioni) e tre tipi di processi che elenco di seguito:
EI - External Input: processo elementare di input di dati dall'esterno, ad esempio tramite un form o tramite un file xml esterno (come quelli di alfresco)
EO - External Output: processo elementare di output verso l'esterno (in genere verso l'utente) che necessitano di una logica più o meno complessa per la generazione dei dati
EQ - External Inquiry: come EO ma non necessita di logica nell'applicazione per il calcolo dei dati da mostrare. Questi vengono solo recuperati e dati all'esterno.

Gli UFP possono poi essere pesati in base a un indice VAF che ripende da varie considerazioni sul software che si sviluppa. Questo indice può variare considerevolmente il risultato dei punti funzione e spesso è criticato per la sua soggettività. I pesi da valutare sono fondamentali per la giusta pesatura e dipendono anche molto dalla esperienza del valutatore.
Più una metrica dipende dall'esperienza del valutatore, più non si può considerare una metrica ma una stima. [7]

Purtroppo la fonte principale [A] è una fonte chiusa, a pagamento, probabilmente anche per i corsi e certificazioni che propone.





Alcune considerazioni a prima vista

Le nostre interfacce interne sono poche. La maggior parte dei processi prendono dati da fonti esterni alle nostre applicazioni e non abbiamo nostri database.

In generale i punti funzione non valutano gli interventi non funzionali e il lavoro di alcuni può essere meno facilmente valutato tramite questo strumento (interventi sulla performance, sullo stile di visualizzazione, etc.)

Il processo è molto incentrato sugli output e gli input e la valutazione di processi Machine to Machine, processi schedulati e altri processi non funzionali devono essere valutati in modo speciale (ad esempio come output non verso l'utente).

Gli interventi di manutenzione (evolutiva o correttiva) possono essere valutati ma hanno un valore molto relativo. Per la misura di questo tipo di interventi si può valutare una funzione più ragionata come [9] ma risulta poi quantomeno difficile il confronto con i punti calcolati per nuove funzioni.





Valutare lo sforzo, le ore impiegate per sviluppare software


Per valutare il codice sviluppato si possono usare varie metriche.
Avendo la fortuna di lavorare con Eclipse ci si può avvalere di plugin come quello a [2] per calcolarle senza troppi sforzi.

Probabilmente la cosa migliore e più utile sarebbe pesare vari criteri per il calcolo dello sforzo totale (S):
1) Il numero di classi create e modificate ha un peso (CC)
2) La complessità del codice sviluppato (tramite ad esempio la complessità ciclomatica di McCabe) ha un peso (McC)
3) Le linee di codice vanno pesate in una valutazione (LOC)
4) Si deve quindi pesare in base al numero di punti funzione valutati (UFP)
es di funzione per un intervento:



S = UFP  \times \alpha CC  \times \beta LOC  \times \gamma McC



Il risultato può essere pesato in base a dei feedback dovuti a parametri quali quelli che seguono.
A) Le ore dichiarate dalla persona come lavorate su un certo task possono essere valutate eventualmente per un confronto nel tempo col risultato ottenuto dalle metriche.


B) Allo stesso modo, il numero delle ore previste per la lavorazione di una certa funzione possono essere confrontate eventualmente nel tempo con i risultati delle metriche per la correzione delle previsioni stesse e per la valutazione delle metriche ottenute.


Nota: per una valutazione più giusta, bisognerebbe prendere in considerazione nel lavoro svolto, la mantenibilità del codice prodotto, in modo da favorire la tendenza verso un codice più mantenibile che garantisce meno lavoro la volta successiva. [3] Purtroppo gli strumenti che ho trovato per eclipse che calcolano l'indice di mantenibilità sono a pagamento.


Sarebbe auspicabile avere un modulo software che calcola quanto sopra in modo da non dover impiegare tempo nella valutazione ma il calcolo dei punti funzione probabilmente implica per forza una valutazione della persona in base ai requisiti e si può arrivare solo all'uso di un form da riempire online [6].




Riferimenti:

martedì 24 novembre 2009

Un semplice robot per Google Wave

Ho ricevuto ieri un invito per Google Wave e mi sono divertito a verificare come si possa estendere il suo funzionamento. Molte estensioni sono già state sviluppate e si possono trovare ad esempio qui.

Quel che ho sviluppato io è un semplice robot di test che trasforma una shortcut del tipo
g::simple+query
in un link a google per la ricerca "simple+query".
Il robot si può usare aggiungendolo come partecipante a qualunque wave (tramite l'indirizzo automaticlinks@appspot.com) e qui sotto mostro in un breve video il suo funzionamento semplicissimo.

A chi volesse provare a creare un robot per google wave, consiglio di andare sul sito
http://code.google.com/apis/wave/extensions/robots/java-tutorial.html

domenica 25 ottobre 2009

Atac Roma - un comando per Ubiquity Firefox

Fra ieri e oggi mi sono divertito con Ubiquity e la sua estendibilità a nuovi comandi.
Per chi non conosce Firefox Ubiquity, può farsi una idea a questo link:
http://labs.mozilla.com/ubiquity/

Qui sotto metto la presentazione che ho preparato con screentoaster, per spiegare cosa fanno i comandi. Crearli è abbastanza immediato, conoscendo un po' di javascript e avendo un minimo di esperienza con le callback di ajax. Si possono raggiungere veramente dei risultati interessanti.

martedì 6 ottobre 2009

Feed reader e Social bookmaring

Google reader e StumbleUpon sono i due strumenti con i quali cerco di tenermi aggiornato sulle notizie di vario genere che mi possono interessare.
Mentre il feed reader di Google mi permette di tenere organizzate le notizie da fonti che conosco, Stumbleupon mi sorprende un 10-20% delle volte con contenuti interessanti che non conoscevo.
E' difficile arrivare a tutto quanto c'è di interessante sul web ma è possibile cercare di essere più informati.
Google reader non ha bisogno di spiegazioni. Si possono aggiungere tutti i feed rss dei siti web che si desidera monitorare: quotidiani online, blog, e-magazines di ogni genere.
Stumbleupon invece permette di configurare gli argomenti che ci interessano, variando dalla cucina alla programmazione web, e ci porta su siti votati dagli altri utenti che cadono in quelle categorie, e che vengono quindi considerati interessanti e degni di nota.
Così ad esempio io che sono interessato all'informatica ho trovato un bell'articolo sulle unità di misura em, un editor wysiwyg per la modifica dinamica del dom tramite javascript e l'attesa demo del Photosketch (ancora non online mentre scrivo).

A Google reader e Stumbleupon aggiungo a volte similarweb e google sidewiki, che al lato della pagina caricata mostrano rispettivamente siti simili e commenti alla pagina che si sta visualizzando, fornendo spunti per ulteriori balzi nella rete.
Ovviamente esistono tanti altri modi per navigare nella rete alla ricerca di contenuti, io uso questi, chissà che non cambi abitudini prossimamente.