Cómo ser un buen ingeniero de software junior

Felicidades! ¡Lo hiciste! Te has convertido en un ingeniero de software junior. Hace apenas un año, recibí este mismo honor cuando me uní a AdHawk, y ha sido todo un viaje. En un esfuerzo por transmitir el conocimiento de mis experiencias pasadas, he reunido una lista de consejos y sugerencias sobre cómo usted también puede ser un gran ingeniero de software junior.

Mi equipo (estoy a la derecha) con nuestro gerente de producto Joe (Centro) - Sede de AdHawk 2018

¡Sé vocal!

Si te quedas atascado mientras codificas, no te permitas quedarte sentado demasiado tiempo. Absolutamente trabaje para esforzarse al encontrar soluciones, pero cuando se encuentre inactivo durante demasiado tiempo, comuníquese con un desarrollador desarrollador. Haga todas las preguntas que se le ocurran cuando se empareje con un colega. No hay preguntas estúpidas y aclarar cosas para usted beneficia a ambas partes. No ser vocal puede resultar en una disminución de su producción de crecimiento y desarrollo.

Busca un mentor

Encuentre un mentor interno o externo para su equipo específico. Al reunirse con ese mentor, traiga metas SMART (específicas, medibles, alcanzables, realistas y oportunas) a estos registros e informe a su mentor con cualquier resultado.

Intente también traer fallas a sus registros. Una de las herramientas más fuertes para aprender es la introspección. Discuta cualquier dificultad que tenga y pregúntele a su mentor cómo podría crecer a partir de estas experiencias.

Aventúrate en lo desconocido

Empuje para realizar tareas que puedan sentirse fuera de su alcance de conocimiento. Comprometerse con los desafíos aumentará su volumen de experiencias y profundizará su familiaridad con problemas nuevos y, a veces, comunes para resolver.

Enseñe lo que aprende

Hay muchas formas diferentes de dar la vuelta y enseñar lo que has aprendido. Puede escribir documentación, hacer un video tutorial o escribir una publicación de blog. No importa cuál sea su elección de medio, el acto de enseñar de regreso agrava su crecimiento educativo. Tener que articular claramente cualquier cosa te obliga a analizar un problema y llenar cualquier posible vacío en tu conocimiento.

Establecer un horario de trabajo

Hay un montón de piezas móviles y responsabilidades que tenemos como desarrolladores. En cualquier momento, podría estar escribiendo una nueva función, reparando un error, revisando el código de un compañero, aprendiendo una nueva tecnología, participando en una reunión o cualquier otra tarea. Crear un cronograma que dicte el tiempo para cada tipo de tarea durante una semana laboral específica garantizará que progrese en cada nuevo campo de responsabilidad.

Mi típico día

  1. Revisar solicitudes de extracción (media hora a una hora)
  2. Trabaje en una tarjeta de desarrollo (hasta que se levante, aproximadamente 2-3 horas)
  3. Standup (media hora)
  4. Hora de almorzar)
  5. Continuar trabajando en tarjetas de desarrollo
  6. Empuje hacia arriba una solicitud de extracción de trabajo en progreso y / o revise nuevas solicitudes de extracción

Surgirán reuniones y se intercalarán entre todas estas tareas.

Obligarse a probar

TDD significa desarrollo basado en pruebas. En resumen, TDD significa que primero escribirá pruebas que validan la funcionalidad de una característica o interacción actualmente inexistente. Hacer esto crea un ciclo de retroalimentación de información muy importante que definirá claramente el objetivo y el alcance de su tarea. Un ejemplo de una prueba reciente que escribí sería:

Ahora, cuando se ejecuta este código, el primer error es que la ruta variant_path no existe. Ahora, su narrativa de desarrollo está establecida. Como Junior, Test Driven Development me da la capacidad de establecer un camino hacia una característica específica. Este camino luego me dirige con una ruta de mensajes de error que me ayudan a llenar los vacíos en cualquier solución potencial.

Empuje para emparejar

No hay una forma más rápida de crecer como Junior que emparejarse con más desarrolladores Senior. El entorno creado cuando una pareja Senior y Junior servirá para reforzar los comportamientos necesarios para tener éxito para todas las partes involucradas. Las personas mayores deberán comunicar sus ideas y decisiones de una manera más generalizada y sucinta. Creo que todos los ingenieros pueden escribir código más fácilmente mientras se encuentran en el contexto de encontrar una solución. Sin embargo, cuando se les pide que expliquen o validen sus decisiones, realmente comienzan a comprender el objetivo y el potencial de refactorización.

Los jóvenes, por otro lado, podrán tener decisiones de mayor nivel e interacciones comunes rápidamente canalizadas en su experiencia. Esto les permite omitir algunos de los pasos proverbiales, como tener un recorrido completo sobre cómo construir una prueba primero o manejar los errores de una manera más adecuada. Esto establece hábitos adecuados y mejora la salud de la aplicación a largo plazo.

Lo más importante es que la experiencia del desarrollador para todos los participantes también mejora considerablemente. Me viene a la mente un viejo adagio: "Solo puedes ir rápido, pero juntos podemos llegar lejos". El concepto de fatiga mental o cognitiva por estar "atrapado" no ocurre con tanta frecuencia.

Tener un par para intercambiar ideas o posiblemente cambiar el rol de "conductor" a "navegador" (quién escribe versus quién habla sin escribir) o viceversa puede impulsar los bloqueos cognitivos y aumentar la velocidad de desarrollo. Si bien el emparejamiento tiene un costo inherente (horas pagadas), el crecimiento que se produce y el valor devuelto en la experiencia del desarrollador supera en gran medida la inversión inicial.

Afila tus herramientas

Mucho antes de saber que la ingeniería estaba en el horizonte, tomé una serie de clases durante la escuela secundaria sobre diseño gráfico. La primera prueba que tomamos para esa clase fue para atajos de teclado. ¿Por qué no aprenderíamos la teoría del color o cómo usar correctamente la herramienta de máscara? Bueno, eso es porque mi instructor sabía que uno no puede ser realmente un artista sin primero aprender a administrar sus herramientas. Esta lección se ha quedado conmigo por el resto de mi vida. Era un mensaje simple pero muy poderoso.

Como ingeniero, su mente es una de sus herramientas más fuertes y continuará fortaleciéndose diariamente. Sin embargo, si su entorno de desarrollo no se configura de manera eficiente, eventualmente tropezar con las estructuras de carpetas, usar el cursor en lugar de los accesos directos comunes y las velocidades de escritura lentas pueden dificultar en gran medida la capacidad de traducir sus soluciones a código.

Un puñado de herramientas a su disposición:

  • Conozca los atajos de su IDE (atajos básicos de VSCode)
  • Zsh: un shell de Unix que se puede utilizar para optimizar sus interacciones de shell (comandos de autocompletar, alias de comandos, etc.)
  • Instalar un administrador de ventanas (Spectacle es mi aplicación preferida)

Poder acceder de manera efectiva a mis recursos me ha ahorrado innumerables minutos (que se acumulan con el tiempo). Esto me ha permitido pasar la mayor parte de mi tiempo trabajando para encontrar soluciones en lugar de luchar con mi entorno.

Media Media Media

Muchas de las personas más exitosas de la historia recomiendan programar tiempo para aprender durante toda su semana laboral. Elon Musk, Bill Gates y Oprah son solo algunos de los defensores de esta filosofía, la regla de las 5 horas. La regla establece que una persona que quiera aumentar su éxito general debe pasar al menos 5 horas a la semana aprendiendo algo nuevo.

¡Confiaría en su juicio! No es ningún secreto que hay una cantidad casi infinita de blogs, podcasts, artículos, conferencias, tutoriales y más que uno puede consumir para reforzar su conocimiento como ingeniero de software. Durante su viaje como Junior, se sumergirá en un mar de términos y conceptos desconocidos. No rehuyas esta experiencia. De hecho, sugeriría seguir adelante.

Algunos recursos que he disfrutado el año pasado:

  • The Bike Shed Podcast: podcast de desarrollo de software de la gente de Thoughtbot (contenido de alto nivel que puede parecer sobrepasado pero que será valioso escuchar a largo plazo)
  • Egghead.io - Gran plataforma con video tutoriales muy breves y bien formateados
  • Exercism.io: plataforma centrada en TDD para enseñar muchos lenguajes y marcos populares

Dedicar unas pocas horas a aprender con estas y posiblemente otras herramientas optimizará su crecimiento y lo empujará a convertirse en el mejor desarrollador posible.

Adelante y prospere

Felicidades nuevamente en el viaje que está a punto de emprender. Es uno que no está exento de peligro. Al igual que el software, los hábitos y el éxito no se construyen de la noche a la mañana. Con estos consejos y una generosa cantidad de trabajo duro, estoy seguro de que se convertirá en el mejor ingeniero de software junior que pueda ser.