Certificazione SCJP 5.0, la mia esperienza.

Ciao, volevo condividere con voi la mia esperienza su quello che è un passaggio cruciale della carriera di ogni sviluppatore Java, la certificazione Programmer.

Ho cominciato da Marzo 2007 a prepararmi per tale obiettivo; googlando e sotto suggerimento dei colleghi ho trovato le informazioni principali su argomenti e libri su JavaRanch il sito di riferimento per le certificazioni.

Consiglio spassionato è di registrarsi e di utilizzare il forum per qualsiasi domanda/dubbio : troverete persone disponibili adi aiutarvi e a consigliarvi.

Il libro che ho utilizzato per prepararmi è questo, libro di riferimento per la certificazione.

La mia esperienza di Java risale al “lontano” 2002, anno in cui all’università cominciavo a cimentarmi con i primi progetti. Utilizzo quindi accademico fino a Novembre 2004 quando ho intrapreso il lavoro e ho cominciato ad applicare sul campo quello che avevo imparato.

Il mio training è avvenuto all’interno di un gruppo di sviluppo della società per cui lavoro, e quindi ho colmato le lacune di programmazione/sviluppo con l’apprendimento sul campo.

Quando ho intrapreso lo studio per la certificazione (marzo 2007) quindi avevo circa 2 anni e mezzo di esperienza lavorativa su Java, di cui circa 6 mesi su JEE e il rimanente su JSE.

Il primo approccio è stato misurare la mia preparazione rispetto al requisito dell’esame con degli esami mock: e devo dire che mi sono sentito abbastanza impreparato rispetto a quanto richiesto. Se avessi dovuto dare quindi l’esame senza preparazione ma solo con la mia esperienza lavorativa sicuramente non l’avrei passato.

Ho quindi cercato di pianificare una roadmap per la preparazione: come consigliato dagli utenti di JavaRanch, studiando solo nei week-end, ho stimato il tempo necessario in 4/6 mesi e devo dire che la stima è stata accurata.

Più studiavo e più mi sentivo di aver costruito una preparazione lavorativa che teneva conto solo delle cose che mi servivano per raggiungere l’implementazione dei requisiti.

A forza di utilizzare framework vari, applicare design patterns e cercare di disegnare una architettura modulare che tenesse conto dei principi OO mi ero perso le basi.

E in effetti questa è stata l’occasione giusta per riscoprirli.

Gli innumerevoli vantaggi a livello tecnico sono rappresentati dalla maggiore padronanza di tutte le sottigliezze che stanno dietro a un linguaggio di programmazione e in particolare una conoscenza approfondita di argomenti essenziali quali:

  1. IO e Serialization
  2. Collection framework
  3. Generics
  4. Inner Classes
  5. Threads e concorrenza

Il mio approccio per lo studio è stato quello di studiare ogni capitolo facendo i test per argomento che si trovano sul libro di Kathy Sierra. Dopo di che negli ultimi 10 giorni oltre a un ripasso generale ho cominciato a fare prove di esame.

Mi sono appoggiato al kit della Whizlabs che ho trovato ottimo come soluzione: si compone di vari moduli tra cui:

  1. un esame diagnostico per la valutazione della preparazione pre esame
  2. 4 esami pratici di 72 domande sullo stile di quello della Sun
  3. 1 esame finale

Devo dire che costa leggermente, ma sicuramente è uno strumento essenziale per prepararsi adeguatamente.

Ora come passo “obbligato” spero l’anno prossimo di poter proseguire con una delle certificazioni successive; pensavo alla SCJD che tra tutte sembra la più versatile.

Se state leggendo fino a qua probabilmente è perchè cercate informazioni utili sulla preparazione e quindi non mi rimane altro che augurarvi buono studio e in bocca al lupo per la Programmer 🙂

Mazi

Microsoft .NET vs Sun JEE

La mia esperienza presso il nostro grande cliente di TLC italiano sta per volgere al termine, o almeno la mia permanenza nel progetto su cui ho lavorato negli ultimi due anni.

Per l’estate infatti il sistema dovrebbe vedere l’estensione su territorio nazionale ed ovviamente il budget è stato spostato dallo sviluppo verso l’esercizio, con conseguente taglio sul task di development che passerà da 6 persone (1 interna + 5 consulenti) a 1 persona (1 interna) entro giugno.

Ora sembra che mi si presentino due scenari completamente diversi per ambito e tecnologie utilizzate:

Uno presso lo stesso cliente basato su tecnologia .NET con l’utilizzo di RFID e dispositivi mobili basati su Windows Mobile; l’altro presso un altro cliente basato su tecnologia JEE, Oracle ADF, JSP con una architettura tradizionale N-tier.

Le due prospettive sono abbastanza agli estremi e sicuramente la scelta finale coinvolgerà solo in parte la mia propensione per una o l’altra. Ciò non toglie che vorrei chiedere un consiglio a chi legge e a chi ha sicuramente più esperienza della mia.

Il primo progetto sicuramente mi permetterebbe di toccare con mano un mondo mai sperimentato prima per sviluppare (Microsoft e dispositivi mobili) e potrebbe essere un vantaggio in termini di crescita professionale (la vedo solo un pò dura fari girare Visual Studio su Kubuntu :D).

L’altro mi riporterebbe indietro di circa due anni alla mie prima esperienza lavorativa, quando cominciai col mitico dream team. Dovrei rimettere le mani in pasta con Jdeveloper, BC4J, JSP+JSTL e ambito Java Enterprise Edition, temi su cui mi sono decisamente arrugginito…

Su google fight indovinate chi vince tra le due piattaforme? 😀

Pageflakes new style

E’ da poco uscita la nuova versione di Pageflakes.

Avevo già aperto una discussione sulla release beta del servizio di Web Desktop personalizzato. L’avevo trovato subito molto funzionale e personalizzabile rispetto ai concorrenti diretti (Google personalized home), ma purtroppo soffriva leggermente di un problemino riguardo la lentezza di caricamento delle pagine.

Nella nuova release si può notare subito un miglioramento del layout (un pò alla Netvibes) e quello che lascia più felicemente sorpresi è proprio la velocità di caricamento delle pagine.

Quindi se lo avevate abbandonato per la sua leggera lentezza consiglio di dargli un’altra chance. ^_^

Mazi

Folksonomy

E’ un pò di tempo che si sente questo termine, neologisimo che etichetta la categorizzazione mediante attività collaborativa di informazioni tramite parole chiave.

Il termine come dice Wikipedia si riferisce alla metodologia utilizzata da gruppi di persone che collaborano per organizzare le informazioni disponibili attraverso Internet. A differenza della classica tassonomia in cui si ha una organizzazione gerarchica delle informazioni e una sorta di ereditarietà di proprietà dal concetto base, la folskonomia è molto più flessibili e potente.

I servizi più famosi online che offrono un sistema di categorizzazione delle informazioni folksonomy based sono:

Questi sono solo i più famosi e i più in voga, ma ogni giorno nascono migliaia di servizi basati su questo modello.

Consiglio una lettura di questo bell’articolo in cui trovate i pro e i contro e una descrizione dettagliata della folksonomia.

Voglio però fare una considerazione che va oltre.

Tutti questi servizi sono basati su contenuti creati dall’utente finale, in cui il valore aggiunto è composto dalla vita personale dei singoli, sia essa rappresentata dalle sue foto, dai suoi video o dai suoi bookmark o dai suoi post. La vera rivoluzione del web 2.0 secondo me sta proprio in questo, nell’avere cambiato l’origine delle informazioni; non ci troviamo più di fronte a un front-end statico in cui il gestore di un servizio era anche l’autore dei contenuti che arrivavano tutti dall’alto come fossero oro colato. Siamo di fronte a dei gestori di servizi che offrono piattaforme flessibili per la digitalizzazione dei dati. E mi viene in mente il post su Epic 2015 e la Google Grid, “una piattaforma universale che offrirà un illimitato spazio virtuale per salvare qualsiasi tipo di media”.

E’ vero che come dice Berners-Lee “…Il Web 1.0 voleva consentire alle persone di comunicare. Uno spazio interattivo. Credo che il Web 2.0 sia piuttosto una forma di slang, nessuno sa cosa significhi. Se il Web 2.0 per voi sono i blog e i wiki, allora sono persone che si connettono ad altre persone. Ed è questo che il Web fin dall’inizio era pensato per essere…” ma è anche vero che la comunicazione è molto cambiata, e il modello da uno a molti come era pochi anni fa è cambiato nel modello molti a molti.

Quale sarà il prossimo step?

Mazi

Software evolution…

Su Tuttoscienze di oggi c'è un interessante articolo che vi invito a leggere sull'evoluzione del software paragonata a quella dell'hardware negli ultimi decenni.

Per l'hardware viene preso in considerazione come metro di giudizio il numero di cicli (forse era meglio l'ormai classico flops ma tendezialmente l'ordine di grandezza è lo stesso).

E per il software? Come principale dato dell'evoluzione del software viene preso in considerazione la produttività del programmatore, che è rimasta, come viene detto, tendenzialmente inchiodata a 10 istruzioni al giorno.

Sono un pò scettico su questo dati e sul loro significato; cosa vuol dire 10 istruzioni? il termine è un pò troppo generico: 10 istruzioni ad alto livello?

E soprattutto non sono completamente d'accordo con l'assunzione che il metro di giudizio per l'evoluzione del software sia la produttività media di un programmatore: sarei più propenso a vedere l'evoluzione del software come la capacità dello stesso a eseguire "operazioni" non possibili fino a un certo periodo. O piuttosto a permettere all'utente di eseguire delle azioni in campo virtuale che hanno un effetto sul mondo reale.

Ma più ci penso e più mi metto in dubbio, e porgo la domanda: secondo voi come dovrebbe essere valutata l'evoluzione del software?

Segue che come conseguenza del teorema di Godel e Turing la produzione del software è un processo non automatizzabile, come già chi ci lavora si era accorto…. e vari excursus sulla diseconomia del prodotto dovuta alla sua natura non industriale.

Bell'articolo che mi lascia comunque qualche dubbio.

Mazi