Para Nuevos Programadores: Recomendaciones y Mi vida laboral


Teniendo el mercado laboral dificil, me gustaria hacer algunos ejemplos de stacks, consejos que he ido haciendo en mi vida para que encontreis un poco de recursos y un poquito mi experiencia (que son como 5 años programando laboralmente y 2 haciendo proyectos propios) y aunque tampoco que tengo la vida resulta ni mucho menos, si que creo que mi introspeccion puede ayudar a alguien.

En cuanto a sugerencias son estas, algunas los que planteo:

Contexto y Expectativas

Yo tengo que decir que venia de unos conocimiento de usar GNU/Linux con 11 años (Es mas tengo CD de Ubuntu 6.04 por mi libreria), estuve experimentando con Raspberry Pi cuando estaba en 4 de Secundaria con Servers de Descarga y VPN y tal experiencia que he cuando ya empece mi VET/FP.GM ya venia de varios años usando Arch Linux y pude terminar examenes de Administracion de Sistemas 1-2 minutos (cuando mis compañeros completaban la hora entera) y animar a mi profesor a pillarse a Raspberry Pis, Hice que Gnome 2 funcionara dentro de Mac OS X

Cuando termine mi Grado medio, Tenia inquietud por el tema de la programacion de videojuegos y a pesar de que mis profesores mi dijieron “ufff, eso va a ser muy dificil porque tiene mucha matematicas y tal” porque nunca se me habia dado bien las matematicas.

Es mas hice varias veces la prueba de acceso al Superior (Cuando las habia), Sa que Ingles con 8, Lengua Española con un 6 y Matematicas con un 3 (y me hicieron media con la nota de la FP que era un 8 redondeando)

Hice mi FP GS (High National Diploma para Birtanicos, EQF5/ISCDE5 para normantiva europea/internacional) DAM pensando que programaria C++ con DirectX o OpenGL.

(Justamente en aquel verano de 2015 preparé mi N2830 con un sistema Gentoo super optimizado para su arquitectura con mínimos recursos con distcc con i5-4670 y preparando VPNs pensando que me venía hacer proyectos gordos)

En Formación

En mi caso, Aprendi programar en Java (que no es que sea mala eleccion pero personalmente no me sirvio de nada laboralmente) lo intente juntar con libGDX con pocos resultados.

Al año siguiente tuvimos una asignatura donde en teoria no deberiamos aprender lenguajes de programacion (porque era interfaces de usuario) pero aprendimos C# (y honestamente eso me sirvio para mi segundo trabajo) y como trabajo de final de curso, hice algo que nunca de mis compañeros de anterior grado, hacer un propio Motor en C# usando MonoGame (como librerias), con su propio lenguaje Script (UsagiScript) y varias mierdas. (que me dio como medio ataque de panico porque lo hacia mientras hacía las prácticas),

Me gustaría decir que intente hacer el Erasmus y fracase, debido a que un examen habia que guardar el documento en un Doc y ese DOC se me corrompio y quitaron el derecho al Erasmus. (Tambien os digo, me cago en el profesor, en su momento y a este dia).

Empresa A

Me gustaria hablar de mi practicas que fue en cierta compañia derivada de la gran azul, trabajando para ciertos centros comerciales, (Que llamare [A])

De lo que estuve aqui, hay poco que hablar y extrapolable a pocas cosa, Hay ciertas cosas dignas de hablar sobre tecnologias como:

  • SOAP / REST
  • Paradigmas de Publish-Subscribe (llamase IBM MQ [A], Microsoft Azure MessageBus [C] o FastDDS [D] y probablemente [E] en un futuro)

Me gustaria comentar que hay un control de version en [A] que no pensaba verlo otra vez por lo nicho que es, lo volvi a ver en [E] que seria: IBM JAZZ (Tenerlo en cuenta si buscais empresas españolas de cierta antiguedad)

Y si alguien tiene curiosidad usabamos ESQL con todo el entorno de IBM WebSphere

Empresa B

Y Esto honestamente, Os va a servir a pocos pero por ser transparente, Mi Padre tenia un contacto de su juventud britanica con estrecha vinculacion al mundo de teatro (nivel empresarial) que me referire como Miss R.

En un principio ella tenia un contacto con gente de Epic Games pero obviamente me denegaron el acceso por no saber ni puñetera idea de Unreal Engine.
(Asi que pensar podeis pensar que en el intervalo de Septiembre de 2017 a 2019 estuve haciendo cursos de Unreal Engine que tiene que ver como me meti en la industria naval en Sept. 2023, pero no nos adelantemos)

que me permitio trabajar en una subcontrata en una startup de email filter & management y mitad IT Technician,

Eso si, Por unos 1500 Libras que se quedaban en 1100 por seguridad social. Y teniendo en cuenta que la vida en Londres es cara, Eso no servia para nada.
Afortunadamente me quede en la casa de Miss R. durante el periodo de empleacion (Unos 6 meses).

La tarea era curiosa cuanto menos, continuar un Remake de un webapp que venia de Silverlight y ya habia un medio proyecto de una consultoria india hecho en node.js, ExpressJS y sobre infrastructura REST existente. y que a falta de comunicacion me ofrecieron usar Fiddler contra el plugin suyo de Outlook (Que tambien hacer ingeniería inversa sobre el mismo plugin en búsqueda de strings que me pudieran ayudarme)

Y está fue mi primera experiencia en el desarrollo web tuve que aprender ir aprendido cosas más avanzadas que un simple Document.GetElementById, Como los callbacks, sistemas de plantillas o configurar medianamente lo que me faltaba del sistema de routing.

Y me creo que está fuera la primera empresa que empecé seriamente a usar debuggers y tal (porque donde aprendí la FP es para echar para otro dia)

Aparte de integrar cosillas como Exchange Web API para que fuera funcional a la hora de manejar e-mails.

Y bueno, como no hay docker me hice un scripts para hacer builds de rpm.

Empresa C

Cuando empecé en la segunda empresa era una subcontrata empresa de reserva de entradas de teatro en Inglaterra que ya fue desde España como freelance.

Se trabajaba en C#, principalmente me contrataron para migrar un monton de codigo que estaba en .NET Framework a .NET Core/Standard (y intentar mitigar el codigo faltante en .NET Framework) ademas de cambios necesarios para la estructura del negocio.

Cosas que me dieron caña era temas de:

  • Codestyle,
  • Linters,
  • Unit Tests,
  • Dependecy Injection
  • Sistema de plugins (Prism Framework)
  • Creacion de Servicios
  • Microsoft Azure
  • Nuget
  • T4 Template
  • Sistema de Alarmas
  • Sistemas de gestion de estadisticas (Gatherer)
    • Programacion web en ASP.NET Classic con JS Vanilla y Charts

Tengo que reconocer que esta empresa es donde más aprendí de lo demás y la más que cague. (por ejemplo, Tardar mas tiempo de lo que debiera optimizando un EnumFlag, o cuando me atascaba me daba un cague enorme haciendo que me desconectara del equipo y tal, vamos no voy a negar que cada vez ya me daba ataques de panico)

También que a pesar que me ofrecieron 17€/hora, en realidad nunca superaron los 20k/y

Haciendo Porfolio

Cuando empezó 2020, Ya estaba con una bajada de ánimo de 3 pares de narices, y me anime hace dos años dedicados a hacer un portfolio en Unreal Engine 4 con VR partir de la base que tenía del curso de Unreal Engine.

También estuve desarrollando herramientas en el que usé

  • ImGUI
    • Para la creación de utilidades en runtime (Como un triggeador de eventos o para ver ciertos valores de algunos objetos en runtime)
  • FMod para temas de Audio Authoring, mientras
    • Desarrolle herramientas de parseo de scripting en GoLang y C# para integracion de dialogos en Unreal usando Arrow (Una herramienta de diseño de narrativa que exportaba en JSON) y despues integracion con el propio FMOD con StringTables,
    • Ademas de implementacion de gestion de carga asincrona de mapas pensadas para VR
  • Subtitulos estilo HL: Alyx (3D), mejoras de visiblidad y Anime (de los fansubs de colorines)
  • Captura de movimientos (Con ayuda de ViveTrackers y usando Animation Retarget, usando VirtualMotionCapture, su protocolo y tal)

En un principio pensaba hacer implementación de internaciones y físicas por mi cuenta pero se me quedó muy grande provocando meses de retrasos. (Sobretodo relacionado a físicas de puertas, que habían muchas y tal) En un movimiento a la salva con posibilidades graves de cagarla (a ver no tanto porque usaba git pero los nervios no me lo quitaban) lo moví a VRExpansión, cosas que salió a la mil maravillas y me sirvió como (How Know que lo llevaría a mi siguiente trabajo)

Para aprender alguna cosilla mientras estaba en ello, también empecé cosillas como web portfolio. (Que realmente cogi el código de un pavo que tenía en Vue2, aunque tengo que decidir que cuando hice el remake de mi web en React la estructura de datos es de esa página )

Y termine en Junio de 2022

Post-Portfolio, Pesadilla

Aquí fue empezar a enviar currículum a mansalva, estudiar, rezar Y aprender lo que sea a cualquier costa,

También me dedique a limpiar las librerías que hice en BP para transportarla en C++ (porque los BP tiene una cosa graciosa en el que si actualizas el engine, los ficheros no puedes downgradearlo si cambias de version), React por clases. (Que es gracioso porque al año siguiente cambiará el paradigma a componentes/funcionales)

Que intente entrar en estudios de videojuego nacionales, alguno internacional y alguno se simulación. (Como por ejemplo CARLA)

EstadoContador
Technical Interview1 (Como IT Technican)
HR Interview6
Initial Status13
Ignored8
Rejected3
Total32

Fue 2023 cuando empecé a meterme en GameJams (por el consejo de un recrutier de Hangar 17) en esa ilusión de meterme en la industria de videojuego.

Y en ese año, me metí en MalagaJam Summer de ese año. (Porque la Global se me pasó) Y me dedique el tiempo restante a practicar cursos de Unity a full time.

Y probablemente podría contar alguno blog en detalle pero básicamente hicimos un juego allí con un equipo casi gaditano. (Curiosamente uno de los integrantes es Ex- empleado de la compañia [D] y cliente de la compañía [D] y [E] que pensándolo a posteriori podria haber sido un motivo que LinkedIn mostrará a gente del sector de la empresa que trabajaría a posteriori y una de ellas, ya más adelante, Fundadora de la Sevilla GameJam)

Y también entremedias me anime hacer un servidor de publicaciones para el juego que hice en la GameJam con c#, grpc y Protobuffs porque tenía curiosidad porque salía mucha veces recomendados en plantillas de C# (No me espere usar este conocimiento sobretodo el segundo en otros ámbitos del trabajo lol)

Y también participe en la SpainGameJam IV con un grupillo con el motor Unreal con Wwise llegando a mi pico en cuanto a la realización de videojuegos.

(También debería comentar, que en el femanca conocí a gente que formariamos la Cadiz GameDev pero honestamente, tampoco ha influido mucho mi trabajo, así que es un poco sidenote)

Empresa D

Justo cuando estaba a punto de comenzar la SpainGameJam IV, Recibí un mensaje de LinkedIn como no quiera la cosa, ya antes había hecho alguna entrevista por la zona de Polígono de mi ciudad local pero no sabía lo que me esperaba.

Y me querian pagar 18k, pero al final se quedaron en 21k (probablemente vieron que montaron en multiplayer en menos de una semana y sintieron verguenza), pero eso pensando que fuera 1 proyecto y no al final que estuve en todos los proyectos del universo con el mismo salario de mierda.

En esta empresa fue de la primeras que entre sin recomendación de nadie, buscando a alguien que supiera de Unreal Engine y VR para una herramienta de visualizacion de buques y herramienta colaborativa para ingenieros navales.

Curiosamente nunca había tenido una entrevista tan fácil en mi vida. (Debería ser de las únicas personas que encontraron en la localidad donde vivo que pudiera trabajar con Unreal)

Muchas de las cosas aprendí ahí (de la práctica porque nadie era más senior que yo en ese campo, excepto en C++ para cierta compañía naval estatal cough que también me tocaría mi dosis)

Ciertas cosas que fui haciendo son:

  • Editor Scripting (cosillas en python)
  • headless editor processing (bootstraps en Python y Código en C++)
  • Generación de paquetes
  • hacer más mapas genéricos al environment,
  • optimization de IO (suena tonto pero los mapas originales tardaban 10 minutos en cargar un cacho que era parcial)
  • Multiplayer/Replication
  • Crear una librería con entry points en C de forma que pudiera ser consumida desde un frontend en Qt/C++ o un servidor grpc en C# para todo el tema del headless editor processing.
  • Con cosillas de C++ (que reimplemente mucho y optimice de código inicial en BP), Scripting con python, una pipeline desde la workstation del ingeniero hasta los cascos de VR (usando un server para accelerar el proceso y ofrecer diferentes cosas)

(Y entremedias, me metí en la MalagaJam Global de 2024 y hice el juego de pollos en VR)

Este trabajo duro unos 6 meses porque hubo restructuración y me movieron a hacer software generalista.

Se empezó a trabajar en un proyecto que estaba en C# WinForms para el departamento de ILS habia hecho antes unos compañeros Que era todos unos Juniors de cuidado o gente con conocimientos un poquito que necesita un refresco, Y empecé a meter test unitarios meter funciones de conversión de XML (Si buscáis trabajo rápido sin ser programación podríais mirar S1000D ) de documentos de un lado para otro. (Con Data Scraping y tal),

Como imaginaréis aplique muchas cosas que aprendí en [C] Pero Ya a mi mando ya era frecuente el uso de programación funcional y funciones Arrow. (Algo que estuve prácticando mientras encontraba trabajo), Tambien la inclusion de OpenXML (porque mucho trabajo de ILS se hace en Excel).

Hubo un momento en la empresa que buscaban a alguien que le mantuviera la web corporativa que quien no quiera la cosa, metí también. Era básicamente un WordPress de 2020, con un plugins y WebBuilder muy básicos que habria que darse 3 hostias, probablemente pirata o con de licencia de un tercero que no tendríamos. (Qué para cosas como cambiar la Red Twitter a X o para implementar cosas era un dolor de cuello por si mismo porque estaba hardcoded) Pero se hacía como se podía.

En medio de ese año caótico, hubo un proyecto de un CRUD que se comenzó, se puso, empezó con QT y después se fue a C# (pero sin ASP.Net ni nada, a lo bruto), a cargo de los mismos Juniors que fue leer un

[HttpGet("/")]
public Bytes[] GetHomePage()
{
 return File.ReadAllBytes("index.html");
}

Y quería arder con fuego ese código. Y todo para hacer una web que hacía login y después apenas podías tocar nada (Spoiler: Eso lo reimplemente en 1 semana)

Entonces se dijo de rehacerlo todo y hacerlo bien en un stack que gustará a todos y funcionara (que al final, pa que, para esperar 5 meses y al final me comí todo el desarrollo que por cierto, tarde solo 1 mes en tenerlo listo la base inicial que ya incluía la introducción de todos los datos que se deseaba y tal.)

Que tambien hubo una cosa que habia funciones librerias que habia desarrollado para aplicacion de escritorio en C# y que no pensaba re-escribirlo en node.js (y mantener dos versiones de la misma libreria) hice un servidor con comunicaciones por IPC usando Unix Sockets usando grpc como mensajeria y protobuff como sistemas de mensajes (que ya lo habia reusado para la implementacion del enviador de modelos para post-procesamiento del proyecto de Unreal) que daba acceso a la mismas librerias que despues serian compartidas con la aplicacion de escritorio

Pero la gente (que eran mitad software mitad ILS forzado) estaba ocupada porque estaban haciendo cosas de puro ILS, así que yo estuve haciendo otros proyectos, y como para practicar para lo peor que pudiera ocurrir (que ocurrio) practique mis habilidades de front-end haciendo un remake de la página web principal en React. (Usando Next.JS)

Que un principio solo hice un remake de la portada original, se lo presenté a la de relaciones empresariales y se lo vendí como que podría encontrar más gente a trabajar que con el web builder que no lo conocía ni su madre y ya le estaba pasando facturas desorbitadas por el aprendizaje (en sus palabras) y también una forma de pensar en futuro. (Y graciosamente ocurrió la polémica del fundador del WordPress pero tampoco me imagino que ella se enterará.)

Y ya de paso, como la web server era Una mierda de server 1&1 de peor presupuesto, pensé que era mejor que no procesará una mierda (que ya le costaba el backend de la web) así que static web generator y arreando.

Qué a pesar que la web de la compañía era una landing page, que no tocaba nadie excepto el que le tocara (con lo cual, daba igual WordPress que “inserte cualquier cosa”) solo había dos problemas.

  • Migración de las web existentes y la detección de idioma para que llevase a la versión que toca
    • que al ser una web estática, la web no se puede programar así que me encargué de configurar los redireccionamiento a mano con .htaccess con arte milenario (aka con Apache y mod_rewrite)
  • Hacer funcionar el formulario web de envío de currículums.
    • para eso, Al ver, que la mayoría de tutoriales de PHP estaba pensando para que lo construyese sobre la Ravel, le pillé los PHP de un pavo de GitHub y lo edite para adecuarlo al proyecto. (Y downgradear la librería de yml, porque el web server era tan basura que usa PHP 7.3 en 2024) Y para esta gilipollez no pensaba aprender PHP. (Aunque adaptadolo aprendí indirectamente xD)

Para todos los proyectos basado el React (se omiten cosas para la web corporativa las cosas relacionadas con base de datos):

  • typescript
  • motion (Antiguamente Frame-Motion se vivio la transiccion)
  • next + React (Los dos proyectos se quedaron entre el 14 y 15)
  • next-intl (principalmente para la web corporativa)
  • Primsa (para ORMs)
  • flowbite-react como starter pack para los componentes mas basicos
    • Aunque hubieron algunos form components que hice yo, en combinacion de los de arriba.
  • gts
    • Como conjuntos de reglas de linter, y code style (usando prettier y eslint)
  • grpc como interconexion entre el Backend C# y el backend en node.

A lo largo del caótico año, Se fueron y se siguieron saliendo más gente, de los 14 quedamos 5 (+4 movidos a ILS), literalmente éramos 4 en un proyecto para un cliente (que olía un poco a clasismo Universitario) y después yo, que hacía lo demás (y a lo tonto me comí 4 proyectos),

Fueron yéndose la gente que trabajaba para el cliente hasta que solo quedaron 1 persona de software (+1 de electronica), y básicamente llego el momento que me enfrascaron el proyecto teniendo solamente 2 meses para terminarlo.

El proyecto era encarnamos del sistemas de comunicación del barco no tripulado entre los diferentes sensores y el sistema principal. Cosas así:

  • Qt (Para Facilidad de types y threads)
  • NMEA 0183 & 2000
  • Protobuffs
  • ZeroMQ
  • FastDDS

Y en contra cualquier pronóstico, conseguimos echar para adelante el proyecto y sacarlo a tiempo. Incluso antes que alguna empresa colaboradora.

Que hay tener en cuenta que por el estado del departamento, ni el cliente ni las empresas socias no nos daba ningún duro.

Viendo que cumplimos, me apartaron del proyecto y dejaron a los dos terminar la documentación.

Esto fue a Diciembre pero el departamento estaba condenado a dejar de existir a final de febrero, estando en una especie de limbo raro por ser de ILS pero realmente desarrollando software que era solamente yo, trabajando en todo.

Empresa E

Tras finalizar el barco no tripulado, y unos meses continuando uno de los Proyectos internos para ILS, Mi Software Manager (el mismo que me contrato en la D, que se fue 6 meses antes de que terminara el proyecto aunque no muy presente porque estaba hospitalizado durante 4 meses) me ofreció a la empresa que se fue.

En este proyecto me involucraba más en lo que vi superficialmente cuando estaba en el departamento de documentación logística,

Y está vez me tocó trabajar en el core de los proyectos de defensa/guerra y honestamente tampoco es que me agrade porque al final, son cosas feas pero no se está mal, así que hasta que no haga otro salto de industria me quedaré aquí (excepto que me paguen burradas y tenga teletrabajo pleno )

Y cosas que vi ahí, sobretodo lo relacionado:

  • GStreamer (Mas C que C++)
    • GObject
  • libX11 (Mas C que C++)
  • QT
  • QML
  • C++ sin Ayudas y usando algunas veces como C

Por supuesto software/librerías que no voy a mencionar porque

  1. No se puede acceder públicamente
  2. aunque lo mencionara lo mismo acabo con tanques en mi casa.