Degli sviluppatori italiani molto gentili e competenti sono dietro un sito web per elencare le aziende che assumono lavoratori italiani da remoto. Il frutto della loro ricerca può essere consultato liberamente e comodamente su italiaremote.com, ma essendo dei gran fighi oltre che gentili e competenti, hanno anche condiviso i dati in un repository GitHub pubblicamente accessibile.

Diamo un'occhiata!

I dati sono stati recuperati dal repository il 09.04.2024 e potrebbero essere cambiati sia nel contenuto che nella forma nel frattempo, ma puoi trovare il notebook che ho usato per esplorare i dati con gli strumenti tipici di elaborazione dati in Python in questo repository: FrancescoManfredi/AIRV-analysis.


Come sono fatti i dati?

Il dataset è fornito come un insieme di file json. Ogni file contiene dati per una singola azienda e per ogni azienda abbiamo i seguenti campi (qui riportati con il loro tipo).

id columns type inner_type
0 name str -
1 url str -
2 career_page_url str -
3 type str -
4 categories list str
5 remote_policy str -
6 hiring_policies list str
7 tags list str

Ecco come è fatto uno di questi file:

{
  "name": "Canonical",
  "url": "https://canonical.com/",
  "career_page_url": "https://canonical.com/careers",
  "type": "Product",
  "categories": [
    "cloud_software"
  ],
  "remote_policy": "Full",
  "hiring_policies": [
    "Contract"
  ],
  "tags": [
    "Python",
    "Go",
    "OpenStack",
    "Kubernetes"
  ]
}

Aziende totali e duplicati

metric name career_page_url
count 340 340
unique 339 338

Mentre scrivo questo post ci sono un totale di 340 aziende. In realtà c'erano 339 nomi di aziende unici tra i 340 file ma è emerso che una delle aziende (fastloop) era semplicemente nominata erroneamente.
Inoltre il campo career_page_url mostra solo 338 valori unici, il che significa che alcune aziende condividono lo stesso valore.
Infatti le seguenti due coppie di aziende hanno una sorta relazione e condividono le stesse career page:

id name url career_page_url
146 HACKERSGEN https://hackersgen.com https://www.sorint.com/en/careers/
148 Docplanner https://www.docplanner.com https://www.docplanner.com/career
155 SORINT.lab https://www.sorint.com/en/ https://www.sorint.com/en/careers/
225 Gipo - Ianiri Informatica https://www.gipo.it https://www.docplanner.com/career

Quali sono i modelli di business di queste aziende?

Il type assegnato a un'azienda la colloca in una delle quattro categorie in base al suo modello di business primario o alla clientela. I valori possibili sono "Product", "Consulting", "B2B" o "B2C".

company_types

C'è una forte prevalenza di aziende di prodotto.
Quattro delle aziende non hanno un type.
Solo una delle aziende ne ha più di uno: Consulting e B2B. Essendo l'unica su 430 aziende e considerando che il campo è codificato come stringa invece di lista, sorge il sospetto che questo potrebbe essere un errore, ma d'altra parte ha perfettamente senso che un'azienda ricada in più categorie contemporaneamente.
Lascio i dati così come sono.


Quali politiche di lavoro remoto applicano queste aziende?

Il README nel repository originale fornisce le seguenti descrizioni per i tre valori per la politica remota (tradotte):

  • Full: l'azienda non ha uffici fisici, quindi lavorerai sempre in remoto;
  • Hybrid: l'azienda consente il lavoro remoto ma solo per alcuni giorni;
  • Optional: l'azienda ti consente di scegliere quando lavorare in remoto o in ufficio, ma a volte potrebbe chiederti di andare in presenza.

La distribuzione è la seguente:

remote_policy

Considerando che il dataset esiste specificamente per tracciare aziende che consentono il lavoro remoto, non sorprende che "Ibrido", l'opzione "meno permissiva", sia anche la meno frequente.


Di quali stack tecnologici e competenze hanno bisogno queste aziende?

Non c'è una descrizione esplicita di cosa rappresenti esattamente il campo "tag" per queste aziende. Nel repository ufficiale l'elenco dei tag appare sotto l'intestazione "Stack" in nelle tabelle. Tuttavia, basandosi sui valori osservati, sembra che questo campo venga utilizzato anche (seppur meno frequentemente) per catturare altri aspetti come competenze "generali" richieste o la conoscenza di alcuni settori (ad es. Big Data, Business Marketing, fintech).

I tag disponibili erano estremamente non omogenei: un gran numero di tag riferiti allo stesso concetto veniva spesso reso con casing e stili diversi. È stato eseguito un lavoro di normalizzazione che ha prodotto un mapping dalle forme originali a delle forme normalizzate (disponibile qui come dizionario python) al fine di condurre un'analisi in qualche modo significativa.

tags_wordcloud
Yay! Nuvole di parole!

top25_tags
Una visualizzazione un pochino più seriosa


In quali settori operano queste aziende?

Non c'è una descrizione esplicita per il campo category, ma basandosi sulle opzioni disponibili, queste rappresentano i settori in cui opera l'azienda. Ecco una visualizzazione della distribuzione:

categories

category count proportion
design_ux 45 0.132353
cloud_software 298 0.876471
hr 12 0.0352941
cybersecurity 12 0.0352941
marketing_writing 45 0.132353

Alcune delle aziende operano in più di un settore. Vedi più avanti per i dettagli.


Quali politiche di assunzione applicano queste aziende?

Il README nel repository originale fornisce le seguenti descrizioni per ciascuna possibile politica di assunzione (tradotte):

  • Direct: l'azienda sta assumendo direttamente con un'entità legale in Italia;
  • Contract: l'azienda sta assumendo appaltatori in Italia, è necessario avere partita IVA;
  • Intermediary: l'azienda sta assumendo tramite un intermediario in Italia.

In immagini:

hiring_policies

In numeri:

hiring policy count proportion
unknown 37 0.108824
Contract 55 0.161765
Intermediary 12 0.0352941
Direct 254 0.747059

Un paio di curiosità

Ora che ho esaminato i dati ho un paio di domande:

  • Le aziende in certi settori (come nel campo categoria) sono più inclini a lavorare in settori multipli? O in altre parole: è più comune per le aziende che fanno marketing e scrittura fare solo marketing e scrittura? E per quanto riguarda cloud & software?
  • Cosa serve per lavorare in un'azienda di cybersecurity? I tag ci aiutano a farci un'idea?

Le aziende in certi settori hanno una maggiore tendenza a lavorare in settori multipli?

Per rispondere a questa domanda possiamo eseguire un test di indipendenza del chi-quadro in cui l'ipotesi nulla è che le due variabili che stiamo mettendo in correlazione non sono realmente correlate e i valori osservati sono perfettamente spiegabili come un caso possibile.
In altre parole, stiamo per eseguire un test statistico per verificare, per ciascun settore, se la proporzione di aziende che hanno più di una categoria è abbastanza diversa da quella che ci aspetteremmo da rendere abbastanza raro che si osservi solo per caso. Se troviamo che questo è il caso, possiamo ritenere verosimile che ci sia, in effetti, qualche tipo di effetto tra il lavoro in un settore specifico ed il lavoro in più di un settore.

Prima dobbiamo calcolare una matrice di correlazione per le categorie e "avere molte categorie", poi la inseriremo in una funzione python per eseguire il test del chi-quadro. Questa funzione ci fornirà un p-value, una statistica e una distribuzione attesa sotto l'ipotesi nulla.

contingency_vs_expected

Lo schema qui sopra mostra la differenza tra ciò che abbiamo osservato e ciò che avremmo dovuto osservare se non ci fosse assolutamente alcun effetto tra le due variabili osservate. Un altro modo, più visivo, per visualizzare questa discrepanza sarebbe il seguente:

displacement
È più chiaro così? Non lo so ma mi piace questo grafico!

Il test ha anche restituito p-value = 3.7616354613201274e-26 (praticamente 0) che ci farebbe rifiutare l'ipotesi nulla (indipendenza delle variabili) per qualsiasi scelta sensata del livello di significatività alfa.

Osservando le direzioni degli spostamenti rispetto alla distribuzione attesa possiamo dire che le aziende di Cloud & Software hanno la tendenza a lavorare solo nel cloud e nel software, mentre le aziende in altre categorie hanno la tendenza a diversificarsi di più.
È opportuno menzionare che questo potrebbe essere il risultato del fatto che "Cloud & Software" è un ambito di lavoro molto ampio che potrebbe essere suddiviso in molte sottocategorie mentre le altre quattro sono abbastanza ben definite.
Un'altra spiegazione possibile potrebbe essere che essendo un dataset pensato principalmente per i lavoratori del settore IT la presenza di altre categorie è più facilmente dovuta ad attività secondarie di aziende IT che erano di interesse dei curatori.

Cosa serve per lavorare in un'azienda di cybersecurity?

Per rispondere a questa domanda possiamo guardare ai tag delle aziende nella categoria cybersecurity. Ignoreremo anche le aziende che appaiono anche in altre categorie in quanto non avremmo un modo per sapere perché è presente ciascun tag.

tags count
Penetration Testing 2
Hardware Security 2
ACSIA 1
Vulnerability Assessment 1
IT Managed Services 1
Digital Transformation 1
Security Research 1
Application Security 1
Red Teaming 1
Rust 1
Go 1
Solidity 1
Blockchain 1
Cryptography 1
Distributed Systems 1

Vedere questo elenco di tag potrebbe essere in qualche modo utile, ma non possiamo dire lo stesso per le frequenze. Il fatto è che filtrando per le aziende solo in cybersec abbiamo finito per avere solo 4 aziende (4Securitas, Infor srl SB, Shielder, Codezen).
Mi vengono in mente alcune cose guardando ai tag:

  • Penetration testing era piuttosto facile da immaginare;
  • Hardware security? Era qualcosa a cui non avevo pensato;
  • Dovremmo considerare Red Teaming e Vulnerability Assessment la stessa cosa di Penetration Testing? Non lo so (forse anche per questo non lavoro nel settore).
  • Cos'è ACSIA? A quanto pare si tratta di una soluzione di cybersecurity sviluppata in Italia.
  • Mi sarei aspettato che Python apparisse almeno una volta per la sua versatilità ma invece vediamo Rust e Go nella lista.

È stato un esercizio carino con un dataset interessante.
Ecco alcuni link correlati a questo post:

  • italiaremote.com il sito web dove si possono cercare e consultare i dati con un'interfaccia conveniente e chiara;
  • Awesome Italia Remote il repository per i dati degli autori originali;
  • Il mio repository contenente il lavoro di analisi (vedi il notebook workbench.ipynb).

Per domande o commenti non esitate a contattarmi attraverso il canale che preferite (vedere About Me).