Pablo Martín Rodríguez Presidente y fundador Izertis

La falta de talento especializado en transformación digital

Hace un año aproximadamente escribí un post en mi blog personal sobre la situación a la que nos enfrentamos ante el déficit de talento técnico altamente capacitado, tanto en España como en otros países de la OCDE.

¿Por qué existe un déficit tan alto de profesionales tecnológicos?

En dicho artículo, presentaba datos sobre el déficit de vocaciones STEM, que arrojaban las siguientes conclusiones:

  • Que existe una relación directa entre nivel de estudios y nivel de paro (a mayor nivel de estudios menor nivel de desempleo).
  • Que existen unas titulaciones con unos niveles de desempleo muy inferiores a otras.
  • Que las titulaciones con mayores salidas laborales no eran ni muchísimo menos las más demandadas por los estudiantes.

Siguiendo con esta línea, en los últimos meses he mantenido diversas reuniones con instituciones públicas en las que debatíamos sobre uno de los principales problemas de las economías desarrolladas, España entre ellas: el enorme déficit futuro de profesionales altamente cualificados en titulaciones técnicas y científicas, los conocidos como STEAM (Science, Technology, Engineering, Mathematics).

Previsiones de futuro

Las previsiones sobre la evolución de la demanda de personal especialista en STEM son clarísimas. La necesidad de profesionales con estos perfiles se incrementará en Europa un 14% hasta el 2020. El resto de profesiones tan solo experimentará un incremento del 3%, según datos del CEDEFOP (Centro Europeo para el Desarrollo de la Formación Profesional). Hasta el año 2020 hará falta cubrir un millón de puestos de trabajos científicos y tecnológicos en Europa.

Según datos del Departamento de Educación de Estados Unidos, está previsto que en ese país, el aumento de trabajos relacionados con la ingeniería biomédica se incrementen en un 62% en la década del 2010-2020. Los de medicina científica lo harán en un 36%, los desarrolladores de sistemas y software en un 32%, los analistas de sistemas informáticos en un 22% y los matemáticos en un 16%. El resto de ocupaciones se incrementarán un 14%.

Problema añadido: escasez de mujeres en el sector tecnológico

En España, los últimos datos de Eurostat (2012) revelan que solo 15 de cada 1.000 graduados de entre 20-29 años tienen formación en STEM. Las mujeres están infrarrepresentadas en estos ámbitos, como ya hemos visto en anteriores ocasiones, con lo que se está produciendo una gran pérdida de talento.

Conclusión

Las empresas de nuestro sector en general, a pesar de no existir desempleo, tenemos grandes dificultades para encontrar perfiles técnicos generalistas. Lo que significa que, aunque se estén contratando como juniors a todos los recién licenciados que la universidad produce cada año, resultan insuficientes para cubrir las necesidades actuales y mucho menos las futuras. Es más, la realidad nos demuestra que cuando una empresa quiere fichar a un trabajador, debe obtenerlo necesariamente de otra empresa.

Por tanto, ante semejante escenario, cuando la búsqueda se acota a perfiles especializados en las tecnologías más innovadoras y con mayor demanda en áreas como la transformación digital y sus tecnologías habilitadoras base (IoT, Data Science, IA, Blockchain, Robotics…) el reto se convierte en imposible, encontrando escasos perfiles, no siempre con el nivel deseado y con salarios que duplican los de sus compañeros generalistas. Teniendo en cuenta entonces, que la demanda de estos perfiles crecerá exponencialmente en los próximos años, se torna urgente y necesario buscar soluciones y atajar esta problemática cuanto antes.

Whitepaper
¿Cómo tiene que ser un experto en transformación digital?
Descarga gratuita
Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> link  [in template "20099#20135#190900" at line 41, column 47]

----
Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #if !currentUrl?contains(link + "/") ...  [in template "20099#20135#190900" at line 41, column 21]
----
1<#if entries?has_content> 
2 
3    <#assign journalArticleExtLocalService = serviceLocator.findService("com.izertis.internet.journal.ext.service.service.JournalArticleExtLocalService")> 
4    <#assign currentUrl = themeDisplay.getURLCurrent() + "/" /> 
5    <!-- Configuración hardcoded --> 
6    <#assign delta = 4> 
7 
8    <div class="row related-content"> 
9        <div class="col-xxl-11 px-5 pl-xxl-100px pl-xl-5 py-5"> 
10            <div class="title"><@liferay.language key="related-contents-title" /></div> 
11            <div class="row"> 
12            <#assign cont = 0> 
13            <#list entries as curEntry> 
14                 
15                <#assign renderer = curEntry.getAssetRenderer()> 
16                <#assign className = renderer.getClassName()> 
17 
18                <#if className == "com.liferay.journal.model.JournalArticle"> 
19                    <#assign journalArticle = renderer.getArticle()> 
20                    <#assign document = saxReaderUtil.read(journalArticle.getContent())> 
21                    <#assign rootElement = document.getRootElement()> 
22                    <#assign defaultLanguageId = parseXml ("@default-locale", rootElement)> 
23                    <#attempt> 
24                        <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='miniatureimage']")> 
25                        <#assign img = xPathSelector.selectSingleNode(rootElement).getStringValue()> 
26                        <#if isJson(img)> 
27                            <#assign imgJson = jsonFactoryUtil.createJSONObject(img)> 
28                            <#assign imgUrl = "/documents/" + imgJson.groupId + "/" + imgJson.uuid > 
29                        <#else> 
30                            <#assign imgUrl = "/o/portal-izertis-theme/images/publications/" + journalArticle.getArticleId()[journalArticle.getArticleId()?length-1] + ".jpg"> 
31                        </#if> 
32                    <#recover> 
33                        <#assign imgUrl = "/o/portal-izertis-theme/images/publications/" + journalArticle.getArticleId()[journalArticle.getArticleId()?length-1] + ".jpg"> 
34                    </#attempt> 
35 
36                    <#assign title = getField("title", locale, defaultLanguageId, rootElement)!> 
37                    <#attempt> 
38                        <#assign link = "/-/" + journalArticleExtLocalService.getFriendlyUrl(journalArticle, themeDisplay.getLocale()) /> 
39                    <#recover> 
40                    </#attempt> 
41                    <#if !currentUrl?contains(link + "/") && (cont < delta)> 
42                        <#if title != ""> 
43                            <div class="col-sm-6 col-lg-3 pr-5 pb-5 pb-lg-0"> 
44                                <div class="img-cont"> 
45                                    <img alt="" src="${imgUrl}" /> 
46                                </div> 
47                                <#if title != ""> 
48                                    <div class="info"><a href="${link}">${title}</a></div> 
49                                </#if> 
50                            </div> 
51                            <#assign cont = cont + 1 /> 
52                        </#if> 
53                    </#if> 
54                </#if> 
55            </#list> 
56            </div> 
57         
58        </div> 
59    </div> 
60</#if> 
61 
62<#function getField field languageId defaultLanguageId xml> 
63    <#local defaultSelector = "//dynamic-content[@language-id='" + defaultLanguageId + "' and ancestor-or-self::*[@name='" + field + "']]"> 
64    <#local localeSelector = "//dynamic-content[@language-id='" + languageId + "' and parent::*[@name='" + field + "']]"> 
65 
66    <#local selector = saxReaderUtil.createXPath(localeSelector)> 
67    <#local value = selector.selectSingleNode(xml)!> 
68 
69    <#if value?has_content> 
70        <#return value.getText()> 
71    </#if> 
72 
73    <#local selector = saxReaderUtil.createXPath(defaultSelector)> 
74    <#local value = selector.selectSingleNode(xml)!> 
75 
76    <#if value?has_content> 
77        <#return value.getText()> 
78    </#if> 
79 
80    <#return ""> 
81</#function> 
82 
83<#function parseXml xpath xml> 
84    <#local selector = saxReaderUtil.createXPath(xpath)> 
85    <#local result = selector.selectSingleNode(xml)!> 
86 
87    <#if result?has_content> 
88        <#return result.getStringValue()> 
89    </#if> 
90 
91    <#return ""> 
92</#function> 
93 
94<#function isJson json> 
95    <#local value = json?trim> 
96    <#return value?has_content && value?starts_with("{") && value?ends_with("}")> 
97</#function>