lunedì 11 aprile 2016

Competenze Digitali - Digital Divide ? - Parte 2

Nella parte 1 dell'articolo abbiamo parlato di "competenze digitali per tutti" e per i "manager ed imprenditori". Adesso ci occuperemo delle competenze digitali per chi lavora nel mondo ICT.

Nel mondo ICT parlano e trattano di competenze digitali tutte le principali associazioni imprenditoriali del settore (Assintel, Assinform) e organizzazioni come AICA, Agenzia per l'Italia Digitale, assinteritalia. Ne parla anche l'Unione Europea.
Il risultato è che ci sono diverse visioni ma quasi tutte offrono la descrizione dei profili professionali con le relative competenze ed una modalità di certificazione delle competenze.

Adesso sembra che l'ECF (European e-Competence Framework) stia diventando uno standard accettabile e definisce ben 40 competenze. Chiaramente queste competenze appena definite diventano obsolete, comunque sono sempre un buon punto di partenza.



Il nostro approccio è però molto pragmatico e cerca di rispondere alle esigenze delle aziende italiane di ICT che cercano disperatamente giovani ed esperti Analisti, Analisti Programmatori, Sistemisti e Amministratori di Data Base. Queste figure professionali debbono avere delle conoscenze di base su tecnologie e prodotti che vengono comunemente usati nella realizzazione di sistemi informatici aziendali o nella realizzazione di prodotti e varie tipologie di sistemi.
Un modo per suddividere queste conoscenze è quello per produttori o per cultura di riferimento. In quest'articolo ne considereremo due Oracle con Java e Microsoft con C# e dot net. Si vedrà però che all'interno delle conoscenze ce ne saranno diverse che possono essere considerate trasversali e sono adatte a costruire applicazioni per il Web o per dispositivi mobili (Smart Phone, Tablet, ...) con diversi sistemi operativi a bordo o per altri tipi di aplicazioni.



Competenze digitali di base per Programmatori 

I programmatori nell'era della quarta rivoluzione industriale debbono almeno avere le seguenti competenze.


  1. Possedere le "Competenze digitali di base per tutta la popolazione".
  2. Utilizzare i sistemi operativi più diffusi lato cliente e lato server , le macchine virtuali e gli ambienti Cloud
  3. Essere in grado di usare il paradigma Object Oriented per risolvere problemi specifici dei Clienti che riguardano nuovi componenti software, software di base tecnico, nuovi sistemi informatici, integrazioni tra sistemi informatici realizzando attraverso l’Analisi Object Oriented e la descrizione UML (Unified Modeling Language) i modelli di soluzione da realizzare.
  4. Essere in grado di utilizzare gli ambienti di sviluppo dell’ultima generazione con i Framework aggiornati per realizzare i modelli di soluzione definiti in analisi, implementando sia le funzionalità di Back Office che di Front Office con interfacce indipendenti dal dispositivo utilizzato dal Cliente ed in grado di operare con sicurezza su Internet.
  5. Essere in grado di partecipare attivamente al ciclo di vita di un sistema software;
  6. Essere in grado di: auto aggiornarsi velocemente e contemporaneamente all'aggiornamento dei Framework utilizzati, individuare sul Web nuovi ambienti e/o Framework da utilizzare proponendoli in azienda giustificandone la proposta di adozione.
  7. Essere in grado di reperire sul Web soluzioni preconfezionate o indicazioni su “come fare …” per risolvere problematiche nuove o situazioni di errore.
  8. Essere “social” partecipando sia in azienda che in rete a discussioni e producendo articoli sugli argomenti della propria attività professionale.

Le competenze su esposte sono generali e possono essere applicate con l’uso di tecnologie in ambiente Oracle Java o in ambiente Microsoft .NET ed SQL Server(o anche con altre tecnologie).

Ma per essere concreti di seguito elenchiamo le conoscenze di base che chiediamo ai nostri programmatori neo assunti.


Conoscenze di base Programmatore ambiente Microsoft  dot net SQLServer.


  1. Paradigma Object Oriented: definizione delle classi, uso degli oggetti, incapsulamento, ereditarietà, polimorfismo, relazione tra le classi, modellazione in UML e realizzazione in C#.
  2. Uso naturale di Visual Studio con  C# e dei name space principali, creazioni di librerie di classi e programma principale con interfaccia a carattere, set di istruzioni principali del linguaggio, gestione delle eccezioni, gestione e generazione eventi.
  3. Metodologia agile Object Oriented per la progettazione di soluzioni che soddisfano le richieste del Cliente.
  4. Architettura applicativa a n livelli: per il Web e per realizzare App nei vari dispositivi.
  5. Differenze e comportamenti delle interfacce di sistema e delle interfacce utente.
  6. Unit test e ciclo di vita del software;
  7. Programmazione lato client con buona conoscenza di HTML 5, CSS 3, Javascript, Ajax, Boostrap, JQuery, JQueryUI, JQuery Validation, AngularJS, "responsive and adaptive design".
  8. Entità Relazioni ed SQL (DDL, DML).
  9. Microsoft SQLServer - T-SQL, Ado.Net.
  10. Microsoft Asp Net MVC: funzionamento e ciclo di vita del modello MVC,  Classi Annotation; Partial Class;  Validazioni;  Partial View e Child View, ... .
  11. Uso di Microsoft Entity Framework come ORM (Object Relational Mapping) per la gestione della persistenza dei dati: modelli Code First e Data First, Linguaggi LINQ to Sql e Entity SQL.

Conoscenze di base Programmatore ambiente Java Oracle.

(ricordiamo che Java è stato creato da Sun Microsistem poi acquistata da Oracle)


  1. Paradigma Object Oriented: definizione delle classi, uso degli oggetti, incapsulamento, ereditarietà, polimorfismo, relazione tra le classi, modellazione in UML e realizzazione in Java.
  2. Uso naturale di Eclipse con Java e dei package principali, creazioni di librerie di classi e programma principale con interfaccia a carattere, set di istruzioni principali del linguaggio, gestione delle eccezioni, gestione e generazione eventi.
  3. Metodologia agile Object Oriented per la progettazione di soluzioni che soddisfano le richieste del Cliente.
  4. Architettura applicativa a n livelli: per il Web e per realizzare App nei vari dispositivi.
  5. Differenze, ruoli e comportamenti delle interfacce di sistema e delle interfacce utente.
  6. Unit test e ciclo di vita del software;
  7. Programmazione lato client con buona conoscenza di HTML 5, CSS 3, Javascript, Ajax, Boostrap, JQuery, JQueryUI, JQuery Validation, AngularJS, "responsive and adaptive design".
  8. Entità Relazioni ed SQL (DDL, DML).
  9. Oracle PL/SQL, Jdbc.
  10. MVC: funzionamento e ciclo di vita del modello MVC in Spring o Struts o Java Server Face;
  11. Hibernate come ORM (Object Relational Mapping) per la gestione della persistenza dei dati: Linguaggi HQL e ,JPA.

[Continua in "Competenze Digitali - Digital Divide ? - Parte 3"]


2 commenti:

  1. Dopo aver letto. ...mi rendo conto che l'unica cosa che so ...è che computer ha 8 lettere...grazie comunque delè informazioni

    RispondiElimina
  2. Dopo aver letto. ...mi rendo conto che l'unica cosa che so ...è che computer ha 8 lettere...grazie comunque delè informazioni

    RispondiElimina