COSA POSSO FARE PER TE

Modestia a parte (semplicemente sicuro di sè) sono un ragazzo dotato di talento. Ritengo di avere diverse competenze nonché capacità e molte di esse nascono al momento stesso della necessita’ richiesta. Nell’arco di 11 anni di esperienza lavorativa sono stato messo difronte a molte, tante sfide e fino ad oggi sono sempre stato capace di affrontarle, trovando soluzioni ad ogni problema.

Come proprietario e capo della società ho svolto diversi ruoli, questo succede quando si è CAPI. Mi sono occupato della parte commerciale ( non è il mio ruolo preferito); ho scritto tantissimi documenti e specificazioni tecniche; mi sono dedicato alla programmazione pura; ho aiutato altri a trovare soluzioni; mi sono occupato dell’integrazione del team sia nell’ufficio stesso sia presso la sede principale (in Olanda) che negli uffici all’estero (Turchia); mi sono occupato di management in generale; sono stato project manager; ho dato lezioni di Crystal Reports; Qualsiasi cosa vi venga in mente, l’ho fatta!

Credo di differenziarmi dalla massa perché sono un avido dell’ informazione, un insaziabile studioso della tecnica e della programmazione. Adoro fare ricerca su un determinato argomento e poi mettere in pratica. Credo che non ci sia soddisfazione maggiore di quando messo di fronte a delle situazioni che sembrano impossibili riesci in fine a trovare , valutare e applicare la soluzione più adeguata. Anche se a volte ciò vuol dire dover lavorare con qualsiasi tipo di strumento si ha a disposizione, anche nel caso in cui quest’ultimo sia superato o obsoleto. Maggiori sono i limiti e le difficoltà maggiore e’ la sfida che faccio con me stesso motivandomi sempre di più.

Ho scelto di intraprendere la carriera di freelance perché oramai, i ruoli che avevo precedentemente rivestito non mi stimolavano più. Ciò che realmente voglio fare è Software Development ,e tanto anche! e tutto ciò che ad esso è legato! La classica metodologia waterfall, Agile Programming, Test Driven Development, per me tutto si traduce in : ASSESS/VALUTARE, MODEL/MODELLARE, BUILD/COSTRUIRE.

ASSESS

Assessing è un termine molto generico. Con questo temine io intendo ad esempio ascoltare ed imparare. Valutare il lavoro che deve essere fatto, considerare i presunti limiti, pensare alle tecniche richieste e avere un minimo di visione del lavoro finito. Informazioni incomplete o addirittura la mancanza di informazioni non daranno mai vita ad un buon software. Una buona comunicazione e un buono scambio di informazioni riguardante il progetto prima ancora di iniziare è “uno” se non “IL” fattore principale per un successo garantito.

Esistono sicuramente tante tecniche e metodologie che descrivono con precisione come valutare esaminare richieste tecniche e funzionanti. Io invece tendo sempre a seguire il mio istinto e la mia esperienza scegliendo così il metodo che meglio risponde ad una determinata situazione o a quel tipo di cliente. Per me la metodologia è irrilevante, perché a seconda dei casi a volte uso i metodi predefiniti e a volte seguo il senso pratico.

MODEL

Questa è la fase in cui le richieste funzionali diventano specificazioni tecniche, poi linee guida per poi arrivare al modello banca dati laddove è possibile. Una volta saputo cosa si deve creare e quali elementi sono da prendere in considerazione è qui che la sfida inizia e come dico io, inizia proprio qui una vera e propria ginnastica del cervello.

Come tutti gli ingegneri di software anch’io preferisco iniziare a programmare dopo aver avuto abbastanza informazioni dettagliate al riguardo. A seconda della difficoltà e complessità del progetto e del tempo a disposizione ( bisogna rimanere realistici) la creazione stessa del software può variare. Alcune applicazioni molto ampie possono essere create su dei semplici A4, ciò significa un diagramma con diversi commenti o annotazioni, mentre altri che sembrano progetti piccoli richiedono un maggiore impegno ed anche diversi test di prova per poi diventare delle valide documentazioni di specificazioni tecniche. Come in molti altri casi anche qui vale il concetto “semplice ma buono”.

Con il tempo ho imparato che ci sono ancora situazioni in cui le società hanno problemi ad usare le applicazioni per non aver avuto, a disposizione sin dall’inizio, documentazioni accurate ed una seria pianificazione relativa allo sviluppo del progetto. Cosi che queste applicazioni non vengono più usate per poi essere dimenticate, ma che nel frattempo sono una scocciatura e nessuno vuole toccare. Questo però diventa un problema serio per le società che le usano e ci devono lavorare tutti i giorni. Aggiustare o riprendere questi progetti è molto difficile, ma non sempre impossibile, e devo riconoscere di esserci riuscito con ottimi risultati.

BUILD

Anche se a scuola ho studiato Pascal, C e java diciamo che le tecnologie Microsoft sono quelle che da sempre mi affascinano e interessano maggiormente. Tutto risale a quando, all’età di 17 anni, ho fatto il mio primo stage. Appena arrivato mi sono stati dati floppy Visual Studio 4 chiedendomi di creare il supporto della stampante usando MFC/C++ per un programma di training manageriale(simulazione). Anche se il compito assegnatomi risultava noioso, mi impegnai a capire il concetto e a trovare le giuste direttive, dandomi così la possibilità di sbirciare e apprendere da alcuni guru del linguaggio C++. In quel momento ho capito che questa sarebbe stata la mia strada.
Strada facendo ho sviluppato gli Java Applets ( ve li ricordate?), ActiveX controls, applicazioni PocketPC (su quegli enormi iPaqs), le barre per i browser ( vedi www.findsi.com), tonnellate di classic ASP e libraries (alcune di esse si usano ancora), alcuni COM components usando VB4+ oppure C++….e negli ultimi anni tante, interessanti, applicazioni .NET.

Essendomi occupato per la maggior parte della creazione/sviluppo dei siti web, ho imparato tantissime tecniche e metodi , ecco una lista per citarne solo alcuni:

  • .NET 1.1, 2.0, 3.5;
  • C#;
  • VB.NET;
  • Javascript / jQuery;
  • Windows;
  • IIS;
  • SQL Server;
  • Visual Studio;
  • SEO;
  • HTML, XML, XHTML;
  • CSS;
  • Web Services & SOAP;
  • WCF;
  • REST;
  • ASP.NET;
  • AJAX & JSON;
  • MVC;
  • Subversion;
  • LLBLGen Pro;
  • Cocoa (touch);
  • Microsoft Enterprise Library;
Sicuramente ne avrò dimenticato qualcuno, ne aggiungerò degli altri quando mi verranno in mente o quando ne imparerò dei nuovi.