Ir al contenido principal
Lugares Virtuales

Cómo conseguir un trabajo como programador autodidacta en 2022

‚ÄĒ Alexandra Ardelean

He estado en la industria tecnológica desde 2016, y he visto que ha cambiado mucho. En 2016, pude conseguir un trabajo de codificación a tiempo parcial con poca experiencia. No tenía un título en ciencias de la computación, y solo había estado codificando durante unos seis meses. Avance rápido hasta 2022, y es mucho más difícil para los programadores autodidactas encontrar trabajo.

Conozco a alguien que tiene un título en ciencias de la computación y una pasantía en Meta (Facebook) en su currículum, y le cuesta conseguir llamadas de los reclutadores.

En este artículo, te voy a mostrar lo que necesitas hacer para conseguir un trabajo como programador autodidacta en 2022. No es fácil, pero definitivamente es posible si pones el trabajo.

Networking y destacar

La cosa más importante que puedes hacer como programador autodidacta es hacer networking. Necesitas destacar del resto. Hay tanta gente intentando entrar en la industria de la tecnología que necesitas hacer algo para diferenciarte.

Una forma de destacar es construyendo proyectos. Pero no solo cualquier proyecto, necesitas construir proyectos que sean √ļnicos y resuelvan problemas del mundo real. Tambi√©n necesitas hacer networking con personas de la industria. Ve a meetups, √ļnete a comunidades en l√≠nea y con√©ctate con personas en LinkedIn.

Saturación del mercado

Una de las razones por las que es tan difícil para los programadores autodidactas encontrar trabajo en este momento es porque el mercado está saturado. Hay tantos bootcamps de codificación por ahí, y hay influencers promocionando la programación como una carrera.

Esto ha llevado a una sobresaturación de roles de desarrollador junior. Simplemente hay demasiadas personas solicitando los mismos trabajos, lo que hace que sea difícil para los programadores autodidactas destacarse.

Análisis hipotético de una oferta de trabajo

Echemos un vistazo a una publicación hipotética de trabajo de nivel de entrada para un puesto de desarrollador de React de pila completa:

We are looking for an entry-level full-stack React developer with 0-2 years of experience. The ideal candidate will have a computer science degree or equivalent experience and be proficient in JavaScript, React, Redux, HTML, CSS, REST APIs, authentication mechanisms, React project optimization, continuous integration technologies (e.g., GitHub Actions), Agile and Scrum knowledge.

Responsibilities:

- Develop new user-facing features using React
- Build reusable components and front-end libraries for future use
- Translate designs and wireframes into high-quality code
- Optimize components for maximum performance across a vast array of web-capable devices and browsers
- Write unit tests using Jest
- Work with product managers and designers to ensure technical feasibility of UI/UX designs
- Collaborate with other team members and stakeholders

Qualifications:

- Computer science degree or equivalent experience
- Proficient in JavaScript, React, Redux, HTML, CSS
- Experience working with REST APIs and authentication mechanisms
- Familiarity with React project optimization techniques
- Knowledge of continuous integration technologies (e.g., GitHub Actions)
- Understanding of Agile and Scrum methodologies

Nice-to-haves:

- Experience with TypeScript
- Familiarity with AWS services (e.g., Lambda)
- Knowledge of MongoDB or other NoSQL databases

Como puedes ver en esta oferta de trabajo, est√°n buscando a alguien con 0-2 a√Īos de experiencia. Esto es bastante est√°ndar para un trabajo de nivel de entrada. Sin embargo, tambi√©n mencionan que quieren a alguien con un t√≠tulo en ciencias de la computaci√≥n o experiencia equivalente.

Aqu√≠ es donde las cosas se ponen dif√≠ciles para los programadores autodidactas. Si no tienes un t√≠tulo en ciencias de la computaci√≥n o experiencia equivalente (que generalmente se define como dos a√Īos de experiencia profesional), entonces es posible que ni siquiera pases la primera pantalla de tu curr√≠culum.

¬ŅC√≥mo te presentas como alguien con dos a√Īos de experiencia? Una forma es a trav√©s de tu curr√≠culum. Puedes listar tus cursos relevantes o experiencia en boot camp en la parte superior de tu curr√≠culum bajo "Educaci√≥n" o "Habilidades".

Habilidades Técnicas Requeridas

Basado en la oferta de trabajo anterior, aquí hay algunas habilidades técnicas que necesitarás como desarrollador de React de nivel de entrada:

  1. JavaScript: Deberías ser competente en JavaScript ya que es el lenguaje utilizado para el desarrollo de front-end con React.

  2. ReaccionarComo se mencionó en la publicación del trabajo, deberías sentirte cómodo trabajando con React ya que es la biblioteca principal utilizada para construir interfaces de usuario.

  3. ReduxMuchas empresas usan Redux para la gestión de estado en sus aplicaciones de React. Si bien no siempre es necesario para los roles de nivel de entrada, tener algo de familiaridad con Redux puede ser beneficioso.

  4. HTML/CSSEstas son habilidades esenciales para cualquier desarrollador front-end ya que se utilizan para crear la estructura y estilo de las p√°ginas web.

  5. APIs RESTDeberías entender cómo funcionan las APIs RESTful y cómo hacer peticiones desde tu aplicación front-end.

  6. Mecanismos de autenticación: Muchas aplicaciones requieren autenticación de usuario (por ejemplo, funcionalidad de inicio de sesión / cierre de sesión). Debería estar familiarizado con métodos de autenticación comunes como tokens JWT u OAuth.

  7. Optimización del proyecto de ReactEsto podría incluir cosas como la división de código, la carga perezosa de componentes o el uso de técnicas de memoización para mejorar el rendimiento.

  8. Tecnologías de Integración ContinuaLa publicación de trabajo menciona GitHub Actions específicamente, pero otras herramientas de CI/CD como Jenkins o CircleCI también podrían ser relevantes.

  9. Conocimiento de Agile/ScrumMuchas empresas utilizan metodologías ágiles como Scrum para la gestión de proyectos.

  10. Licenciatura en Ciencias de la Computación o Experiencia Equivalente: Aunque no es técnicamente una "habilidad técnica", tener un título en ciencias de la computación o experiencia equivalente es a menudo listado como un requisito para roles de nivel de entrada.

Como puedes ver en esta lista, hay un montón de habilidades técnicas necesarias incluso para un puesto de nivel de entrada. Esto puede ser desalentador si estás empezando como programador autodidacta.

Usar las ofertas de empleo como plantillas

Una forma de construir tu portafolio es usando ofertas de trabajo como plantillas para tus proyectos. Por ejemplo, digamos que encuentras una oferta de trabajo que requiere conocimiento de Redux y TypeScript.

Podrías construir algo como una simple aplicación de gestión de tareas usando Redux para la gestión de estado y TypeScript para la seguridad de tipos. Esto te daría experiencia práctica trabajando con esas tecnologías y algo concreto para mostrar a los posibles empleadores.

Adaptando tus proyectos para que coincidan con los requisitos de trabajo específicos, puedes empezar a construir tu portafolio con ejemplos relevantes que demuestren tus habilidades como desarrollador.

Construyendo aplicaciones del mundo real

Otra estrategia es construir aplicaciones de casos de uso del mundo real de pila completa que le dará experiencia práctica en proyectos del mundo real que le ayudará a ganar confianza en sus habilidades, mientras que también la creación de currículums fuertes que le ayudarán a destacar de otros candidatos que pueden tener antecedentes más tradicionales (por ejemplo, títulos de informática).

Por ejemplo: Digamos que queremos construir una aplicación similar a Goodreads donde los usuarios pueden revisar los libros que han leído y compartirlos con otros:

  1. FrontendPodríamos construir esta aplicación usando React + TypeScript + Redux + Material UI + AWS Amplify (para autenticación) + AWS S3 (para almacenar imágenes de libros) + AWS AppSync (para GraphQL API) + AWS Lambda (para funciones sin servidor) + AWS DynamoDB (para base de datos NoSQL).

  2. BackendPodríamos usar Node.js + Express.js + TypeScript + MongoDB (para base de datos NoSQL) + AWS Lambda (para funciones serverless) + AWS API Gateway (para API RESTful) + AWS Cognito (para autenticación).

Al construir esta aplicación desde cero utilizando tecnologías modernas como React/TypeScript/Redux/Material UI/AWS Amplify/AWS AppSync/AWS Lambda/AWS DynamoDB/AWS S3/AWS Cognito/Node.js/Express.js/MongoDB/GraphQL/RESTful API, obtendríamos experiencia práctica trabajando en proyectos del mundo real, al mismo tiempo que creamos currículums sólidos que nos ayudarán a destacar entre otros candidatos que pueden tener antecedentes más tradicionales (por ejemplo, títulos en ciencias de la computación).

Este enfoque nos ayudará a ganar confianza en nuestras habilidades, mientras que también la creación de fuertes currículums que nos ayudarán a destacar de otros candidatos que pueden tener más antecedentes tradicionales (por ejemplo, títulos de informática).

Idea de Proyecto de Ejemplo

Aquí tienes una idea de proyecto basada en Goodreads:

Nombre del proyecto: Crítico de libros

Descripción: Una aplicación CRUD donde los usuarios pueden revisar los libros que han leído y compartirlos con otros

Características:

  1. Autenticaci√≥n de usuario: Los usuarios pueden registrarse / entrar / salir usando correo electr√≥nico / contrase√Īa o cuentas de redes sociales como Google / Facebook / Twitter / GitHub, etc., los usuarios pueden restablecer su contrase√Īa si la olvidan haciendo clic en "Olvid√© mi contrase√Īa" enlace que les enviar√° un correo electr√≥nico que contiene el enlace de restablecimiento de contrase√Īa

  2. Gesti√≥n de libros: Los usuarios pueden a√Īadir / editar / eliminar los libros que han le√≠do junto con detalles como t√≠tulo / autor / editorial / a√Īo publicado / g√©nero / calificaci√≥n / revisi√≥n, etc, los usuarios tambi√©n pueden subir la imagen de la portada del libro al a√Īadir / editar detalles del libro

  3. B√ļsqueda y filtro: Los usuarios pueden buscar / filtrar libros basados en t√≠tulo / autor / editor / a√Īo publicado / g√©nero / calificaci√≥n / revisi√≥n, etc., Los usuarios tambi√©n pueden ordenar libros basados en varios criterios como t√≠tulo / autor / editor / a√Īo publicado / g√©nero / calificaci√≥n / revisi√≥n, etc., Los usuarios tambi√©n pueden paginar libros si hay demasiados resultados devueltos por operaciones de b√ļsqueda / filtro / clasificaci√≥n

  4. Compartir libros: Los usuarios pueden compartir los libros que han leído a través de correo electrónico / enlaces de medios sociales como Facebook / Twitter / LinkedIn, etc, los usuarios también pueden copiar / compartir enlace directo de la página de detalles del libro que permitirá a otros ver los detalles del libro sin iniciar sesión / registrarse

  5. Dise√Īo adaptable: la aplicaci√≥n debe funcionar bien en todos los dispositivos, incluyendo escritorio / tableta / tel√©fonos m√≥viles, etc., la aplicaci√≥n debe ser accesible a trav√©s del navegador web sin necesidad de ninguna instalaci√≥n de software adicional

  6. Modo oscuro: la aplicaci√≥n debe admitir el tema del modo oscuro que los usuarios pueden alternar entre el modo claro / oscuro seg√ļn su preferencia

  7. Notificaciones: La aplicación debe enviar notificaciones cuando se agreguen nuevos libros por otros usuarios o cuando los libros existentes sean actualizados/eliminados por otros usuarios, etc., Las notificaciones deben ser enviadas a través de correo electrónico/notificaciones push/notificaciones del navegador, etc., Los usuarios deben ser capaces de configurar la configuración de notificación basada en sus preferencias

  8. Analytics: App debe seguir las interacciones del usuario como vistas de p√°gina / clics / b√ļsquedas / filtros / acciones, etc., App debe generar informes basados en datos anal√≠ticos que nos ayudar√°n a entender mejor el comportamiento del usuario para que podamos mejorar las caracter√≠sticas de la aplicaci√≥n en consecuencia

  9. Pruebas: La aplicación debe tener pruebas automatizadas escritas con herramientas como Jest / Mocha / Chai / Sinon / Cypress / Puppeteer, etc., Las pruebas deben cubrir tanto el código frontend / backend, incluidas las pruebas de unidad / integración / extremo a extremo, etc., Las pruebas deben ejecutarse automáticamente cada vez que se envía un nuevo código al sistema de control de versiones como GitHub / GitLab / Bitbucket, etc., Las pruebas también deben ejecutarse periódicamente a través de tuberías CI / CD como GitHub Actions / CircleCI / TravisCI / Jenkins, etc., Las pruebas deben generar informes de prueba que nos ayudarán a identificar problemas rápidamente para que podamos solucionarlos antes de implementar nuevos cambios en el entorno de producción

  10. Despliegue: la aplicación debe ser desplegada en un entorno de producción utilizando plataformas en la nube como AWS/GCP/Azure/DigitalOcean/Heroku/Netlify/Vercel, etc., la aplicación debe ser escalable/fiable/rápida/segura/fácil de mantener/fácil de usar/fácil de desplegar/fácil de monitorizar/fácil de depurar/fácil de actualizar/fácil de escalar/fácil de integrar/fácil de personalizar/fácil de gestionar/fácil de soportar/fácil de solucionar problemas/fácil de optimizar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de mejorar/fácil de

Al construir esta aplicación desde cero utilizando tecnologías modernas como React/TypeScript/Redux/Material UI/AWS Amplify/AWS AppSync/AWS Lambda/AWS DynamoDB/AWS S3/AWS Cognito/Node.js/Express.js/MongoDB/GraphQL/RESTful API, obtendríamos experiencia práctica trabajando en proyectos del mundo real, al mismo tiempo que creamos currículums sólidos que nos ayudarán a destacar entre otros candidatos que pueden tener antecedentes más tradicionales (por ejemplo, títulos en ciencias de la computación).

Este enfoque nos ayudará a ganar confianza en nuestras habilidades, mientras que también la creación de fuertes currículums que nos ayudarán a destacar de otros candidatos que pueden tener más antecedentes tradicionales (por ejemplo, títulos de informática).

Ganar experiencia a través del desarrollo de proyectos

Al construir esta aplicación desde cero utilizando tecnologías modernas como React/TypeScript/Redux/Material UI/AWS Amplify/AWS AppSync/AWS Lambda/AWS DynamoDB/AWS S3/AWS Cognito/Node.js/Express.js/MongoDB/GraphQL/RESTful API, obtendríamos experiencia práctica trabajando en proyectos del mundo real, al mismo tiempo que creamos currículums sólidos que nos ayudarán a destacar entre otros candidatos que pueden tener antecedentes más tradicionales (por ejemplo, títulos en ciencias de la computación).

Este enfoque nos ayudará a ganar confianza en nuestras habilidades, mientras que también la creación de fuertes currículums que nos ayudarán a destacar de otros candidatos que pueden tener más antecedentes tradicionales (por ejemplo, títulos de informática).

Por ejemplo:

  1. Al construir esta aplicación utilizando React+TypeScript+Redux+Material UI+AWS Amplify+AWS AppSync+AWS Lambda+AWS DynamoDB+AWS S3+AWS Cognito+Node.js+Express.js+MongoDB+GraphQL+RESTful API etc.. ganaríamos experiencia práctica trabajando en proyectos del mundo real mientras también creamos currículums sólidos que nos ayudarán a destacar entre otros candidatos que pueden tener antecedentes más tradicionales (por ejemplo.. títulos en ciencias de la computación).

  2. Al construir esta aplicación utilizando tecnologías modernas como React+TypeScript+Redux+Material UI+AWS Amplify+AWS AppSync+AWS Lambda+AWS DynamoDB+AWS S3+AWS Cognito+Node.js+Express.js+MongoDB+GraphQL+RESTful API etc.. ganaríamos experiencia práctica trabajando en proyectos del mundo real mientras también creamos currículums sólidos que nos ayudarán a destacar entre otros candidatos que pueden tener antecedentes más tradicionales (por ejemplo.. títulos en ciencias de la computación).

  3. Al construir esta aplicación utilizando tecnologías de vanguardia como React+TypeScript+Redux+Material UI+AWS Amplify+AWS AppSync+AWS Lambda+AWS DynamoDB+AWS S3+AWS Cognito+Node.js+Express.js+MongoDB+GraphQL+RESTful API etc.. ganaríamos experiencia práctica trabajando en proyectos del mundo real mientras también creamos currículums sólidos que nos ayudarán a destacar entre otros candidatos que pueden tener antecedentes más tradicionales (por ejemplo.. títulos en ciencias de la computación).

  4. Al construir esta aplicaci√≥n utilizando las √ļltimas tecnolog√≠as como React+TypeScript+Redux+Material UI+AWS Amplify+AWS AppSync+AWS Lambda+A...

Al construir esta aplicaci√≥n utilizando las √ļltimas tecnolog√≠as como React + TypeScript + Redux + Material UI + AWS Amplify + AWS AppSync + AWS Lambda + AWS DynamoDB + AWS S3 + AWS Cognito + Node.js + Express.js + MongoDB + GraphQL + RESTful API, etc. ganar√≠amos experiencia pr√°ctica trabajando en proyectos del mundo real, mientras tambi√©n creamos curr√≠culums s√≥lidos que nos ayudar√°n a destacar entre otros candidatos que pueden tener antecedentes m√°s tradicionales (por ejemplo, t√≠tulos en ciencias de la computaci√≥n).

Por ejemplo:

  1. Al construir esta aplicaci√≥n utilizando las √ļltimas tecnolog√≠as como React + TypeScript + Redux + Material UI + AWS Amplify + AWS AppSync + AWS Lambda + AWS DynamoDB + AWS S3 + AWS Cognito + Node.js + Express.js + MongoDB + GraphQL + RESTful API, etc. ganar√≠amos experiencia pr√°ctica trabajando en proyectos del mundo real, mientras tambi√©n creamos curr√≠culums s√≥lidos que nos ayudar√°n a destacar entre otros candidatos que pueden tener antecedentes m√°s tradicionales (por ejemplo, t√≠tulos en ciencias de la computaci√≥n).

  2. Al construir esta aplicación utilizando tecnologías de vanguardia como React...

Al construir esta aplicación utilizando tecnologías de vanguardia como React...