Noto que a los nuevos les cuesta conseguir su primer trabajo. También he visto que la gente sobrecarga sus curriculums. Y cuando googleo la expresión «primer trabajo programador» encuentro humo. Entonces hoy, en este post, veré de sumar un poco de claridad desde la comodidad de mi pantalla.
¿Posta? No sé, pero voy a intentarlo.
Según observo, la normal de hoy en día pareciera ser una publicación de clamor en LinkedIn usando lenguaje inclusivo. Está Mal. No aguanta dos expresiones lógicas. Ya vi y no hay blanque.1
Verás, como yo no te puedo decir qué hacer, puedo comentarte qué haría yo si hoy debiera buscar mi primer trabajo de programador. Luego vos, parafraseando a Bruce Lee, absorberás lo que te sirva, descartarás lo que no, y sumarás aquello propio a tu persona.
Dado que prácticamente no existen ofertas laborales para Juniors o Trainees,2 yo consideraría mi nivel de desesperación –situación económica– para definir qué tan lejos viajar. En Buenos Aires, la gente suele viajar entre 60 y 90′. Quizás sea positivo ampliar el umbral. Recordemos que la meta es acumular experiencia. Tras seis meses de experiencia todo se vuelve más fácil. Y podrás conseguirte un trabajo más cerca.
Sé también que cada vez hay más personas en el interior metiéndose en esta lucrativa profesión. Eso es bueno. Señala un aumento en la conectividad. Pero debido a que las ofertas se concentran en las grandes urbes, varios deberán mudarse y bien compartir departamento, vivir en las afueras o ranchear en la casa de algún familiar.
En cuanto al salario, no creo que expresar la voluntad de trabajar gratis sume. Si no va a sumar, y puede restar; mejor no decirlo. Lo adecuado es investigar los números del mercado y dispararle con la escopeta a ese rango. Esto sirve para toda la carrera. Hay excepciones. Siempre. Pero no querés pedir algo demasiado bajo, porque tus subsecuentes aumentos serán contextuales a tu salario. Y algo demasiado alto puede ser tomado como indicador de alerta sobre la condición mental del candidato. Ya más adelante, cuando tengas 3 o 4 años de experiencia y sepas muy bien lo que estás haciendo podrás trabajar remoto para EEUU cobrando u$s 20 la hora. A 8 hs por día, 22 días al mes la cuenta da u$s 3500. Y si el dinero lo movés con crypto, lo podés ingresar al país a la mejor tasa del momento.
Ahora vamos a lo fundamental: acumular experiencia. Viendo la tendencia de un mercado enfocado cada vez menos en el título de grado y más en los conocimientos experienciales, le otorgaría más importancia al empleo; especialmente durante el primer año. Es decir, pospondría mis estudios.
¿Y el algoritmo? El título del post queda más lindo con un poco de marketing. Y ahora que tengo tu atención, me tomo el atrevimiento de seguir relatando cómo lo haría yo.
Primero haría la gran agregar-a-todos-los-recruiters en LinkedIn, adonde también entraría habitualmente a relojear. Hace más de un año que cerré Twitter, Facebook e Instagram. Mi tiempo personal aumentó, por lo que me volví más rico. Ingreso a Twitter pero no a través de mi cuenta, sino a ver perfiles particulares. Aunque tentador, no encuentro argumento racional para regalarle mi tiempo a un enjambre de computadoras orquestando complicadas matemáticas con la meta de quedarse con mi tiempo. Si el mejor jugador de ajedrez del mundo no le puede ganar a una computadora, menos le podré ganar yo a un millar de ellas.
Volviendo al tema de los recruiters, también buscaría empresas en ambos extremos: enormes y pequeñas. O en el estado. Y dado que probablemente no sea negocio invertir dinero en un recruiter para buscar Juniors sin experiencia, me metería en cada página de anuncios que exista y filtraría según los puestos que busco. También ojearía la sección de puestos abiertos en la web de cada empresa. De usar google aplicaría etiquetas como «site:piensoluegopienso.com programador junior» cosa de filtrar resultados de un sitio en particular. En cuanto al tamaño de las empresas, escogí enormes y pequeñas porque es donde suele haber trabajo sucio para hacer. Como dijo un antiguo jefe mío: ‘Shit rolls down the hill.’
En tu primer trabajo deberían de ponerte a realizar tareas de mantenimiento. Mi primer trabajo con Java fue así. Pero en mi primer trabajo programando, antes de Java, me pusieron a desarrollar una aplicación de escritorio para un hotel & restaurant. Salió una mierda. La tecla <tab> movía el cursor entre campos de texto de manera aleatoria. Los números de los totales –que son importantes– compartían tamaño y color con el resto de las cosas. Era imposible usar más de un medio de pago. En fin, son cosas que enseña la experiencia.
FF = fast forward == fail fast
El mecanismo por excelencia para filtrar candidatos tiene nombre. Las empresas lo usan con bastante éxito. Me refiero a los ejercicios técnicos, también conocidos como coding exercise.
Afortunadamente para vos, existe la manera de incorporar estos ejercicios a tu búsqueda cotidiana y utilizarlos como fertilizante para promover el crecimiento de tus neuronas profesionales.
Lograr que te asignen un coding excercise es el primer paso. Más abajo veremos como incrementar las respuestas positivas usando un poco de psicología básica; pero primero veamos de qué maneras podemos comenzar a acumular experiencias de referencia (incluso aunque nadie muestre interés por contratarnos).
NEW SKILL #1: SOURCE CONTROL MANAGEMENT (SCM)
Una vez que te asignen un ejercicio, enviarás tu código de alguna manera. En el peor de los casos te pedirán que mandés un archivo zip, y en el mejor lo subirás a GitHub. Y acá es dónde tenés lugar para brillar. Primero porque aprenderás banda de cosas ya que deberás:
- Instalar los binarios de git;
- Configurar tu cuenta;
- Aprender a crear una clave pública y privada (concepto fundamental del mundo cryptográfico y del Bitcoin);
- Subir tu clave pública a GitHub (cosa de no tener que loguearte cada vez que subís o bajás código);
- Hacer un commit;
- Pushear cambios;
- Familiarizarte con el uso de la consola.
- Entender los comandos más usados de Git.
Y luego porque podés sumar puntos a los ojos de tu posible futuro empleador. Cosas que yo haría para ello serían: 1) Crear un .gitignore listando archivos y carpetas que no se deberían monitorear (sólo quedan en tu máquina); 2) un archivo README.md; 3) un branch llamado master con el commit inicial y la versión final, con opcional de commits intermedios mergeados desde otro branch llamado develop3; 4) y de utilizar una base de datos, yo explicaría dentro del README.md los pasos para levantar una BD con un docker run <parametros BD> o, mejor aún, pondría pequeño archivo docker-compose.yml como explican acá que levante la BD al escribir docker-compose up.
NEW SKILL #2: EXCELENCIA DE CÓDIGO
Cosas básicas. Métodos de un puñado de lineas. Si son difíciles de leer, conviene llevar predicados lógicos a otra función. En fin, tu código –y tu curriculum– debe ser elegante. Para eso, sugiero te leas el capítulo 2 del mejor libro para programadores alguna vez creado: Código Limpio, de Bob Martin.
Cada coding exercise que hagas aumentará la calidad de su subsecuente. Y cada coding exercise actual puede ser mejorado a partir de dos cosas. Mejoraría gracias a tus búsquedas en google de buenas prácticas y excelencia que apliquen a tu lenguaje particular. Y también gracias a algo que descubrí al encontrar mi primer trabajo de programador con el lenguaje Elixir.
Ni bien me asignan un coding exercise, aprendí a preguntar si hay algo que en particular les gustaría ver: ¿Rebotan un ejercicio porque no genera logs? ¿Es necesario dejar el código listo para ser instalado en distintos ambientes (máquina del dev, entorno de testeo, etc)? Y acá es un buen momento para preguntar dudas propias. Siempre sin llegar ser un denso.
Además, yo haría lo posible para contar con información privilegiada. Debido a que rara vez, si alguna, conoceremos los criterios de aprobación y rechazo de un ejercicio, mi viveza predilecta es buscar si alguien ya hizo el ejercicio y lo subió a GitHub. Si encontrás resultados, permitime decírtelo: estás de suerte. No sólo tenés una referencia con la cual comparar tu ejercicio y descubrir cosas en las que no habías pensado, sino que tenés la posibilidad de ir a LinkedIn y verificar si el programador ingresó a la empresa. Eso es información privilegiada. Y si no ingresó, lo podés contactar, y de manera amable, comentarle el contexto de tu caso y preguntarle por qué lo rechazaron. Si la empresa es buena seguramente le dieron algún tipo de feedback, y este colega probablemente te lo comparta. Si la empresa no le dio feedback, utilizá ese indicador para ubicarla dentro de una caja mental etiquetada empresas hijas de puta y luego queda en vos hacer el ejercicio (yo no lo haría → son unos hijos de puta).
PSICOLOGÍA DEL TIROTEO
El modelo de ventas se basa en un acrónimo llamado AIDA. Refiere a una serie de pasos secuenciales dispuestos bajo la meta de persuadirnos a tomar acción. Primero se debe llamar la Atención, luego se genera Interés, tras lo cual se construye el Deseo, para luego fomentar la Acción.
El párrafo anterior aplica ese modelo.
También el título de este post; y luego su cuerpo a distintas escalas.
Lo bueno es que podemos aplicar el modelo AIDA para conseguir que las empresas nos manden sus coding exercises. ¿Cómo? Pues pidiéndoselos:
MODELO EMAIL #1:
Destinatario: xxx@empresa.com
Título: Aplicación para el puesto XA quien corresponda,
Su oferta laboral X llamó mi atención.
Entiendo que buscan alguien con XX e YY. Aunque no cuente con todos los requisitos, me gustaría demostrar mis habilidades en un coding exercise de su preferencia.Cordialmente,
Juan Carlos Delasteclas
MODELO EMAIL #2:
Destinatario: xxx@empresa.com
Título: Aplicación para el puesto XBuenas,
Noté que buscan un dev semi-senior.
Aunque todavía no cuento con dicha experiencia, me encantaría demostrar mi conocimiento en un coding exercise de su elección. Soy un fiel creyente en las prácticas de clean coding.
Sea porque necesiten realizar una limpieza en su backlog o porque prefieran liberar a sus programadores seniors de las tareas de mantenimiento, espero serles de utilidad.Muchas gracias,
Roberto Cobotones
No me dejaría intimidar por requisitos exorbitantes. Aplicaría a todas las posiciones donde se pida a alguien con menos de 3 años de experiencia.
La última oración del Modelo #2 utiliza sutílmente las palabras backlog, coding exercise,4 y clean coding con la intención a llamar la atención de entrevistadores técnicos. Básicamente aplica la sabiduría de Dale Carnegie:
“Personalmente, me gustan mucho las frutillas y la crema, pero descubrí que, por alguna extraña razón, los peces prefieren los gusanos. Entonces, cuando fui a pescar, no pensé en lo que quería. Pensé en lo que querían.”
EL CURRICULUM
Al ser mi intención diferenciarme del resto de los aplicantes, lo que buscaría es demostrar coherencia entre mi código limpio y mi CV. Por eso buscaría que el 50% de mi curriculum esté en blanco. Como mínimo.
Además de quitar elementos inservibles como mi dirección y hobbies no técnicos, buscaría agregarle claridad. Resaltaría en negrita las palabras asociadas al puesto. Y dejaría BIEN VISIBLE mi rol profesional. Lo mismo en LinkedIn, tu rol aparece debajo de tu nombre. Pro-tip: el rol “En búsqueda activa” no es un rol.
Se puede hacer espacio para poner experiencia laboral relacionada al tema o se puede poner en una segunda hoja, pero no creo que sume listar trabajos de otras industrias. En caso de listar puestos anteriores, hacerlo ordenados de manera descendente arrancando por el más reciente.
La escuela primaria no suma. La secundaria probablemente tampoco.
No puse Junior adrede. No miente, pero tampoco genera un rechazo inicial (por si aplicás para un puesto de semi).
Ahora vamos a las intenciones transmitidas en este modelo de CV. Quien lo lee debería reconocer su claridad. Es Simple. Conciso. Y limpio. Probablemente quien lo escribió será útil para mi equipo (mentalidad win-win). Idealmente uno no listaría habilidades que no pueda explicar de manera simple. Con frases cortas y precisas. Y menos aún si nunca las probó.
La sección sobre mis intereses apunta a nombrar cosas que –se supone– investigué por mi lado, entiendo son valiosas, y pueden sumar valor tanto a mí como a la empresa. Es un win-win.
En resumen, recomiendo informarse sobre los conceptos nombrados en el CV que no son específicos a un lenguaje de programación, como SCRUM por ejemplo.
Acá te dejo unos contactos para empezar a tirotear. No sé quien lo hizo. Podés encontrar otra lista acá.
ENTREVISTA
Nunca está demás preguntar sobre el código de vestimenta. Las empresas gigantes suelen ser más hinchahuevos con este tema.
Para la entrevista en sí, la preparación debería de ser mínima. Googlear un poco qué hace la empresa (gracias BairesDev por tu continuo flujo de gente hacia mi blog!) y nombrar algo del tema cuando lo pregunten.
También es interesante preguntar sobre las metodologías de trabajo. Encontrarás empresas que tienen un producto propio, como un banco, y encontrarás empresas estilo software factory. Las últimas suelen adoptar buenas prácticas y su nivel de competencia técnica suele ser elevado. Allí, el desarrollo profesional es una característica emergente del ecosistema. Lo malo es que varias suelen estar ajustadas de tiempo ya que los clientes pagan por hora de consultoría.
Las empresas con producto propio son medio una lotería. Te puede tocar algo bueno, como una Fintech ó un MercadoLibre (hoy también una Fintech) o una consultora gigante donde usan tecnologías viejas, pero no importa. Al principio, todo sirve para acumular. Lo bueno de las empresas que tienen un producto propio o desarrollo interno es su blandura en cuanto a la modificación de tiempos de entrega: el blame avoidance no es algo tan presente.
Son temas interesantes para charlar en la entrevista.
Lo que verás mucho también son preguntas abiertas en donde se te invita a pensar críticamente. En sus primeros años, Amazon preguntaba a sus candidatos cómo calcularían cuántas estaciones de servicio existían dentro de Estados Unidos. No hay una respuesta correcta. Lo que sí hay son preguntas interesantes y relevantes que hacerse en el ida vuelta cognitivo.
EN CONCLUSIÓN
Metele pilas que dentro de algunos años quizás trabajemos juntos en la creación de aplicaciones distribuidas, contribuyendo a la desnacionalización del dinero. El modelo monetario actual es anacrónico y la mejor manera de escapar de su debacle es la adquisición de conocimientos técnicos con el fin de producir soluciones altamente creativas, y valiosas. Espero empieces a recibir invaluable feedback con cada coding exercise que envíes y que ello te sirva para mejorar la calidad y la elegancia de tus subsecuentes ejercicios. Como dicen las abuelas “Mil intentos y un acierto”.
Críticas, preguntas pre-pensadas y shares son agradecidos de antemano.
Por último, te invito a descargar Brave, el nuevo navegador del creador de Javascript. Está basado en Chrome, funciona mejor, y bloquea la publicidad de Youtube (todas en realidad). –> Link
- Ya lo cantaba The Clash por el ’82”
- Algunos en la industria los discriminan pero para mí son lo mismo
- Te recomiendo leer sobre gitflow, e intentar aplicarlo en algún ejercicio para aprender a mergear. También te recomiendo aprender el concepto de Pull Request. Si carecés de experiencia, te debería de sumar varios puntos en una entrevista.
- Nótese se escribe con X y no con eXCercise