Proyecto: “Big Tech Job Offer” — Parte 1
Tags: webdev, javascript, programming, career
Published: 2023-09-18 00:48:44

FAANG es el acronimo que se usaba para nombrar a las empresas referentes de la industria valoradas en casi o más de un trillon de dolares y significaba “Facebook, Amazon, Apple, Netflix y Google”, actualmente con el cambio de nombre de Facebook y la desvalorización de Netflix, el acronimo migro a “MAMMA” por “Meta, Alphabet (la compañia padre de Google), Microsoft, Amazon y Apple”

Por lo tanto este articulo se trata de una idea totalmente volada que tuvimos con Dani de preparnos para conseguir una job offer de alguna FAANG (en su momento se llamaba asi) que quedo en la nada porque la vida misma, el trabajo, ir a clases, dar clases, etc pero que ahora decidi retomar con el objetivo de conseguir una Job Offer en una de esas cinco empresas.

¿Significa que quiero o voy a cambiar de trabajo? no lo sé, no tengo idea, porque podria decir que no y seguir con la vida misma pero me saque el gusto de elegir y decirles que no.

Si bien a finales de 2022 dije que no a Google, para un rol de desarrollador C++, habia un tercero en el medio asi que personalmente, para mi no cuenta igual que si la oferta venia directamente de Google.

En otras instancias no hice entrevistas con Amazon y no fui al evento de fit cultural, asi como en otra instancia por no relocarme no segui el proceso, con la oferta hablada.

La principal razon y sobre todo en el caso de Amazon, es que creia y creo que si bien tengo un perfil solido tecnicamente, todavia no estoy lo suficientemente preparado para rendir en ninguna de esas organizaciones.

Asi que me arme un plan, que puede llevar varios meses e incluso un par de años con el fin de estar “Job ready” para que me hagan una oferta en Meta, Amazon, Microsoft, Alphabet o Apple y para tener seguimiento o como lo llaman afuera “accountability” voy a armar una serie de post que seran publicados cada dos semanas con el fin de hacer un update del progreso sobre el plan de estudios y los proyectos que estoy trabajando para lograr este objetivo.

Lo mismo va a pasar cuando llegue el momento de postularme, hacer entrevistas, aprender de ellas y en caso de quedar, todos los tips que puedan ser utiles.

Si no entro, no pasa nada, no significa ningún tipo de fracaso y si entro, logro profesional completado.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/olbjh674d23fk2cdrwat.png)

Bueno, despues de esta intro, vamos con el plan de estudios y como me voy a organizar para estudiar con un calendar explotado y cuanto tiempo va a llevar, le voy a dedicar, etc.

Como primera medida se me ocurrio buscar en internet que recursos existen sobre este tema y encontre un par que voy a seguir como parte del programa, que son:

https://workforfang.com/

Este no es un recurso técnico en si mismo, sino que esta orientado a contener recursos y explicarte como aplicar a las diferentes empresas, estimo que sera muy util mas adelante.

El otro recurso que tengo en vista hace varios años y entiendo que ayudo a su autor a conseguir un rol de desarrollador en Amazon es un repositorio de github llamado “Coding Interview University” donde él creo un plan para aprender modelos de datos, algoritmos, redes, manejo de datos, diseño de sistemas, escalibidad de sistemas, etc

https://github.com/jpromanonet/coding-interview-university

Una vez que lei ambos sitios, tenia que pensar un sistema para organizarme entre las responsabilidades laborales, el estudio formal (arranco una nueva carrera en 2024 n.n) y el estudio auto-didacta, sin dejar de cuidar la salud mental y fisica que este año mejoro un monton en comparación con el 2022.

Asi que lo primero que hice fue preguntarme ¿qué tecnologias quiero aprender porque me gustan a mi?

La respuesta fue rapida, clara y muy satisfactoria para quien les escribe

    Python
    C++

Y si bien ya sé y manejo ambas tecnologias, no al mismo nivel que me manejo con Cobol, PHP y Javascript con React, Node, Native, Vue y coso, por lo tanto esas son las dos tecnologias en las que voy a trabajar en los proximos meses o años, arrancando por Python en todos sus sabores disponibles y siguiendo con C++ (tengo una fascinación con llegar a un nivel mucho más avanzado de C++ que el actual, donde me defiendo y me sirvio para dar clases pero siento que me falta)

Por otro lado, siendo profe de Sistemas Operativos, uno creeria que en teoria la tengo clara, lo cual puede ser un poquito para sistemas operativos pero ¿lo demas? ni de cerca, la gran mayoria de mi conocimiento tecnico viene de prueba-error y experiencia pura, no nos olvidemos que soy un programador autodidacta y mi educación formal en desarrollo no la tome para nada en serio porque encontre la forma de cumplir con la facultad sin estudiar ni preocuparme (habia que codear ejercicios simples, existe youtube, ya sabia programar, mi carrera era altamente tecnica y aplicada por lo tanto aprendi escasa teoria de todo.)

Por lo tanto tuve que salir a buscar recursos para aprender teoria, pero ¿donde?

Despues de pasar un buen rato buscando, me acorde de que tengo un sitio especificamente hecho con React y Vite con recursos para aprender a programar de super básico a lo más avanzado que existe (hace tu propia placa de video y sistema operativo) que le comparto a mis alumnes para que no tengan que buscar por ellos.

La lista de recursos esta en http://recursos.jpromano.net

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ng93sxq5ogu5e94tm8mn.png)

De aca, tenemos los libros de Python de Al Sweigart que son online y gratis, asi como los libros de “Teach yourself computer science” que tiene una lista curada de libros fundamentales para aprender ciencias de computación.

El otro punto que me parecio crucial para armar un programa o una guia rustica de pasos a seguir es que si me voy a mejorar mis conocimientos de ambos lenguajes, resolver problemas de Leet Code, o ejercicios de “Cracking the Coding Interview” no va a ser suficiente asi que arme dos repos con “programas” de proyectos a codear tanto para Python (incluye django, pygame, python, tkinter, etc) y C++ (video juegos, aplicaciones de escritorio, y aplicaciones web con C++)

Los pueden ver aca:

Python

https://github.com/jpromanonet/study_plan_python

C++

https://github.com/jpromanonet/study_plan_cpp

Y por ultimo, y esto es absolutamente personal, tuve en consideración como aprendo, que en mi caso no es visualmente sino leyendo, no solo porque siento que el contenido visual me distrae mucho sino porque en el caso de los videos suelen ir lentos (no es culpa de nadie esto) por lo tanto teniendo ChatGPT a mano para ayudarme con codigo y conceptos complejos, libros y videos de youtube que puedo usar en 2x, sin sonido, siguiendo en tiempo real. 

Me falta solamente una forma de darme siguiento/accountability/documentar el aprendizaje y **¿qué mejor forma que sacar un post semanal con lo que voy aprendiendo?** que aparte de generarme contenido sin pensar en que escribir, directamente escribo mis notas y apuntes en el editor de WP, formateo y sale (con crossposting en Medium, dev.to y otras plataformas)

Eso no significa que eventualmente no arme una mini app como la de recursos con todo el track de carrera gamificado para que ayude a alguien más (o no).

Entonces, ¿cómo queda el plan?

Aproximadamente asi:

1. Mejorar en python
    - Hacer proyectos en Tkinter
    - Hacer videojuegos con Pygame
    - Terminado esto, arrancar con Django, creando una app mensual
2. Leer los libros recomendados en https://teachyourselfcs.com
    - Siguiendo la lista sugerida, leyendo un libro cada mes y medio, deberia completarlos en un año
    - Serie “Invent with Python” de Al Sweigart
3. Mejorar en C++
    - Programar los proyectos que ya estan propuestos en: https://github.com/jpromanonet/study_plan_cpp
4. Sumarme a proyectos de software libre en donde pueda aportar lo que sea (no nos vamos a poner picky), como por ejemplo:
    - Library Genesis
    - Free Code Camp
    - Cualquier proyecto libre donde pueda traducir como corregir bugs, como Python.
5. Leer los siguientes libros:
    - “Senior Engineer Mindset” — Swizec Teller
    - ” Hackers & Painters: Big ideas from the computer age” — Paul Graham
    - “The Phoenix Project: A Novel about IT, DevOps, and Helping Your Business Win” — Gene Kim
    - “Cracking the coding interview” — Gayle Laakman McDowell
6. Aca voy a seguir el temario de “Coding Interview University” pero sin usar tarjetas Anki porque soy un desastre con el aprendizaje visual asi que descartamos que me sirva.

7. Por ultimos vamos a seguir el canal de Viktor Engelmann sobre programación a bajo nivel, sistemas operativos y linux, y tomando esto como cierre del plan, vamos a desarrollar los proyectos de su canal en el siguiente orden:
    - Diseñar una red desde los componentes de software
    - Escribir un compilador
    - Programar un kernel linux
    - Construir un LFS (Linux From Scratch)
    - Y por ultimo, completar el proyecto:
      - “Write your own Operating System”

Listo, este es el track de conocimientos que voy a intentar estudiar, pero quedan un par de puntos, en cuanto a la ejecución del mismo, que lo dejo por aca:

Horarios:

- Lunes a Viernes — 2 hs diarias
- Sabados y Domingos — full-time como si fuesen jornadas laborales extensas
- Minimo 30 hs semanales totales

Seguimiento:

- Cada proyecto de codigo se va a subir a github y sobre eso publicar en el portfolio (http://portfolio.jpromano.net)
- 1 post semanal en este blog y otras plataformas sobre lo que estuve codeando o estudiando en la semana
- Publicar los proyectos terminados en redes sociales
- Más adelante armar un sitio con el roadmap que fui siguiendo de este proyecto

Preparación para entrevistas:

- Adaptar el cv a una versión corta y una completa (el actual pero sin recorte alguno) y que los mismos sean ATL que es el tipo de CV que buscan estás empresas
- Actualizar el sitio web actual, no solo con el CV completo sino con más secciones con las diferentes publicaciones que tengo actualmente, proyectos independientes, trabajo como consultor, etc.
- Hacer networking y armar una red de contactos de personas que actualmente trabajen en estas empresas y puedan comentarme su experiencia en el día a día o su proceso de selección (considero que pedir el favor de que me refieran seria un abuso de confianza de mi parte, pero puede ser una opción a futuro)
- Hacer mock inverviews o “simulacros de entrevistas”
- Crear un bot que busque todas las ofertas disponibles bajo ciertos parametros en los portales de empleo de esas empresas asi como en linkedin e indeed, las seleccione y envie el CV.

Extras:

- Volver a instalar Duolingo y dedicar 1 lección diaria de los idiomas que manejo no solo porque me encanta sino para ir mejorando más allá de la lectura que ahora mismo no es tan diaria y de paso abrir las oportunidades a entrevistas u ofertas en donde el idioma por defecto no sea Ingles (como que consiga una oferta en una sede donde inglés no sera el idioma que se habla en el día a día)

Para concluir este post, creo que es importante aclarar que en caso de que no llegue, como explique más arriba no pasa nada, lo importante es todo el aprendizaje en el camino y las nuevas ideas y oportunidades que surjan.

A su vez, creo que me va a ayudar mucho con el sindrome del impostor y a no dudar tanto de cuanto sé o no sé “formalmente” de N tecnología o tema en especifico.

Nos leemos la proxima semana con el update del proyecto, que por ser la primer semana y calculo que la segunda es toda la preparación previa y orden de los horarios que va a requerir.

¡Hasta la proxima!