• Skip to main content

Pienso Luego Pienso

Ocio al mejor postor

Algoritmo Para Tu Primer Laburo Como Dev

marzo 7, 2020 By Facundo

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 X

A 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 X

Buenas,

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

  1. Ya lo cantaba The Clash por el ’82”
  2. Algunos en la industria los discriminan pero para mí son lo mismo
  3. 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.
  4. Nótese se escribe con X y no con eXCercise

Relacionado

Filed Under: Uncategorized

Reader Interactions

Comments

  1. Uber says

    marzo 8, 2020 at 02:33

    Este post es una guia excepcional para el dev principiante. Gracias por tomarte el tiempo de hacerlo y de compartirlo con la comunidad. Grandisimo aporte.

    • Facundo says

      marzo 8, 2020 at 18:19

      Gracias, esperemos que le sirva a la muchachada!

  2. Lyon says

    marzo 14, 2020 at 22:33

    Excelente post, algunas cosas lo descubrí por mi mismo y es tal cual es post, funciona muy bien. Lo mejor es dejar el resto de tu información para la entrevista, demostrar interés en la empresa desenvolverte y soltarte, así te das a conocer mejor, siempre tirando a un perfil proactivo y con ganas de aprender.

  3. EapRules says

    marzo 16, 2020 at 23:43

    Que agradable es volverte a leer! Este tipo de post son los que realmente ayudan! Gracias por el tremendo aporte! Ahora lo comparto !

    • Facundo says

      marzo 18, 2020 at 05:51

      Gracias Enzo querido! Un abrazo por allá en Tucumán!

  4. Alejandro Marin says

    abril 7, 2020 at 19:43

    Muy buen post! Te queria hacer una consulta si no te molesta. Soy estudiante avanzado de Ing en Sistema y me fascina lo que es Machine Learning con Python. Lastimosamente en Argentina casi no hay empresas que recluten juniors en dicho puesto y la verdad que el web development (si bien hago boludeces con Django) no me llama mucho la atencion.
    Que harias en mi lugar? Busco a toda costa trabajos de Data Analisys o me rindo y arranco como un web developer? Gracias

    • Facundo says

      abril 8, 2020 at 18:28

      Lo que yo haría en tu lugar es ser testarudo. Insistiría en conseguir lo que quiero. Estiraría lo que me quede de ahorros viviendo en la casa de mis viejos. Ahora, lo que funciona, probablemente sea mandarse como web developer y una vez que tenés unos meses de experiencia, hacer el cambio. Pero yo sería testarudo, y negociaría conmigo mismo.

      • Alejandro Marin says

        abril 8, 2020 at 18:29

        Gracias viejo. Y en tu experiencia trabajando por el mundo, que pensas sobre el Machine Learning? Es realmente el trabajo del futuro o es una gran venta de humo cómo piensan algunos? Es algo que lo hacen los estadisticos que aprenden a programar o los programadores que aprenden de estadística? Gracias y perdón si la pregunta es media zonza.

        • Facundo says

          abril 9, 2020 at 17:42

          Todo lo que es probabilidad y estadística me parece de lo más importante. Pero conozco muy poco… me copié porque quería un título.
          La tendencia es que haya más datos, y por lo tanto más ruido. No veo porqué escasearía trabajo de ese palo.
          Noto que hay gente de ramas raras (ing. bioquímica) que la mueven con matematica y terminan laburando con DS. Me parece más común eso, que programadores que terminen con DS, pero es mi experiencia personal y puedo estar sesgado. De todas maneras no creo que impacte tanto el título sino la trayectoria. Si te gusta eso, a meterle. Spark me parece super interesante. Sé que también se está usando Rust para hacer cosas relacionadas a nivel distribuido
          Un abrazo y agregame a linkedIn si querés así me voy enterando como te va

          • Alejandro Marin says

            abril 9, 2020 at 23:59

            Por supuesto, mándame tu usuario y te sigo. Te aviso por las dudas que te voy a hinchar un par de veces las pelotas con preguntas; todo en pos de crecer. Abrazo!

          • Facundo says

            abril 12, 2020 at 06:08

            LinkedIn

    • Diego_Barboza says

      julio 29, 2020 at 13:43

      Hola Alejandro! En mi empresa se está laburando con Phyton y ML para modelos predictivos, hay un sector de analítica avanzada. Si te interesa ese tema, te recomiendo familiarizarte con plataformas de visualización de Business Intelligence (Tableau, PowerBI, Qlik, etc…) también aprender SQL y una vez que entres en el mundo de la consultoría de BI tradicional, vas a poder empezar a laburar con lo mas nuevo.
      Sobre todo, ahora con la pandemia, le estan metiendo fichas a esto aprovechando que no hay proyectos urgentes.

      • Alejandro Marin says

        julio 29, 2020 at 14:18

        Muchas gracias hermano. Ahora estoy laburando como full stack en una software factory, pero no descarto más adelante poder trabajar en algún lindo proyecto relacionado, sobre todo porque me encanta laburar con PostgresSQL y análisis de dato.
        Lo que me la “baja” un poco es que mayoritariamente contratan a estadísticos que aprenden a programar y no a programadores que aprenden de análisis de datos (y tampoco me interesa ser el típico programador que sube archivos panda)

        • Diego_A says

          julio 31, 2020 at 13:51

          Es muy cierto: por lo general buscan a gente que entienda de estadistica y tratan de darle un marco técnico para apoyarlos, pero la verdad es que son dos perfiles diferentes: el científico de datos no es un programador ni un desarrollador per se, aunque utiliza herramientas de programación es un perfil radicalmente distinto.
          Si te interesa meterte en un proyecto de ese tipo, lo mejor que podés hacer es capacitarte como Data Scientist y hacer bombo en linkedin con proyectos de ese tipo: hace un tiempo participé como mentor del hackaton de Datos de Argentinos por la Educación (gran evento, por cierto) y ahí se vieron cosas muy copadas, y eso después te sirve como tarjeta para presentarte con ese perfil, marcando propuestas por ese lado. Otra es también ir haciendo contacto con Head hunters diciendoles qué buscas, te recomiendo buscar gente de Ergo Renova, ya que ellos son los cazatalentos de ML, y hoy en día ML en argentina es quien mas está invirtiendo en Data Analytics.
          Una cosa que también vas a tener en cuenta, es que si querés cambiar a Data Scientist, primero vas a tener que hacer un paso por Data Analyst, y eso paga menos que FullStack Dev, así que pensalo…

  5. leon says

    julio 29, 2020 at 15:09

    yo tambien llegué por bairesDev! ,ja, lo del empleo creo que es cuestión de suerte, yo estudio hace 5 años, saqué el titulo de analista, busco laburo hace 2 años, me mudé a capital unos meses inclusive, pero sigo navegando entre procesos de selección, entrevistas, y rebotes, es cierto que en Machine Learning no toman a juniors, yo tengo conocimientos de big data, ML, pySpark,sql, etc. pero no sale nada, tampoco me toman para web menos para ciberseguridad, la verdad, el estudio no significa nada, la suerte es todo, hacele caso a tu sed, Sprite. Saludos

    • Facundo says

      julio 29, 2020 at 15:33

      jajaaaa que grande!!
      Yo jugaria a pedir coding exercises, sirven como experiencia encubierta. Ademas, muchos no tenemos ganas de ponernos a codear si no esta el incentivo.

Licencia de Creative Commons
Este obra está bajo una licencia de Creative Commons Reconocimiento 4.0 Internacional.

 

Cargando comentarios...