Lo que aprendí al pasar de becario de Twitter a ingeniero de software de Twitter a tiempo completo

¡Más codificación y crecimiento!

* Mirando el calendario * ¡Vaya! ¿Han pasado ya seis meses? El primer día de mi pasantía en Twitter, supe que me llevaría una eternidad ver el final del túnel, pero aquí estamos. ¡Soy un ingeniero a tiempo completo en Twitter! ?

Definitivamente fue un sprint y aprendí más de lo que podía imaginar. Estoy feliz de haber podido absorber la mayor parte del conocimiento. Ahora quiero tomarme el tiempo para escribir sobre mi experiencia al completar el programa. Sé que la mayoría de los programas de pasantías tienen caminos sencillos hacia el empleo a tiempo completo. Así que quiero resaltar algunas de las fases por las que pasé, los escollos que enfrenté y reflexionar sobre todo lo que aprendí. Si puedo ayudar a una persona en su viaje de codificación desde esta publicación, entonces →? !!

Nota: Si tiene curiosidad sobre cómo obtuve la pasantía en Twitter, esa historia se puede encontrar aquí: Cómo pasé de alistado de la Fuerza Aérea a ingeniero de software interno @Twitter

La emoción

Tan pronto como supe que estaría haciendo una pasantía en Twitter, me sentí como el motor más grande del mundo. Lleno de energía y listo para conquistar cualquier proyecto que fuera lo suficientemente desafortunado como para aterrizar en mi camino.

Excepto que un motor no es nada sin el resto del automóvil, y es poco probable que aparezca como un automóvil completo. Incluso si ha trabajado antes como ingeniero, hay cosas que varían de una empresa a otra. Pero la capacitación en el trabajo será su nuevo mejor amigo. ¡Con un poco de esto estarás navegando en poco tiempo!

El primer paso para construir el resto del automóvil fue la Orientación para Nuevos Contratos. Fue aquí donde me di cuenta de que Tech Company XYZ no basa su pila en el proyecto de calculadora FreeCodeCamp.

Durante la semana de orientación en Twitter, los ingenieros reciben una descripción general de cómo funciona Twitter y detalles sobre cómo se unen las piezas para que esto suceda.

Al principio, evoca un tipo de emoción "woah-this-is-insanamente-compleja". ? Una vez que empiece a trabajar realmente, tendrá mucho más sentido. De repente estarás trabajando en un proyecto y te encontrarás con cosas que recuerdas haber escuchado durante la orientación. M Åke seguro de que no se siente, piensa acerca de, desea, o considerar la necesidad de sumergirse en cada pieza de la pila.

Aún así, estas explicaciones de alto nivel son útiles. Le ayudan a ver el panorama general y cómo su equipo contribuye a la misión de la empresa. Entonces, aunque estaba ansioso por comenzar, ¡darme el tiempo para instalarme me habría permitido avanzar mucho más sin problemas!

El novato

Comenzar en una nueva empresa en una industria completamente nueva y hacer un trabajo completamente nuevo fue un cambio enorme para mí. De repente me sentí como si estuviera en un entrenamiento básico de nuevo. Cuando comencé, ni siquiera sabía cómo usar una Mac. ? He sido una persona de PC toda mi vida. Es una sensación bastante aterradora porque, como nuevo empleado, desea aportar valor y, en cambio, a veces puede sentirse bastante inútil. Ten paciencia contigo mismo. No tener esta paciencia fue una de las cosas más difíciles con las que lidiar cuando comencé.

Como dije, tienes este motor que está listo para hacer todo lo posible. ¡Pero hay un poco de trabajo que debe realizarse antes de que puedas conquistar el mundo! Ser paciente lo ayudará a ser productivo más rápido. También te ayudará a no sentirte como una pérdida de oxígeno mientras aprendes. ?

La acumulación

Para aumentar las habilidades que necesitaba para ser productivo, sabía que tendría que dividirlas en etapas. Primero quería aprender las habilidades más necesarias, algunas habilidades para aumentar la productividad, etc.

El problema que tuve al principio fue averiguar qué habilidad en estas etapas aprender primero. La cantidad de cosas que se podían aprender era abrumadora. ¡Había tanta novedad a mi alrededor! Sin embargo, sabía que solo una pequeña fracción sería pertinente para lo que estaba tratando de lograr.

Como referencia, nunca había usado la mayoría de las tecnologías que usaría en los próximos seis meses. Ok ok, excepto Git, pero aparte de eso, ¡me sentí como en un nuevo planeta!

Finalmente, hice que aprender a usar el nuevo IDE fuera mi primer objetivo. El editor que estaría usando se llama IntelliJ y tiene una gran cantidad de botones, y anteriormente estaba usando Atom. ¡Otro gran cambio!

Cuando finalmente estaba listo para escribir algo de código, mi primer instinto fue averiguar cómo hacer un pequeño proyecto con el que estaba familiarizado. Básicamente haciendo un proyecto de traducción con mis nuevas herramientas. Entonces, aquí estaba tratando de llegar a un programa helloWorld Scala (¿Sí, cuento esto como un proyecto pequeño?) Para imprimir en la consola. Me sentí como si fuera el primer día de FreeCodeCamp nuevamente.

Después de que ese proyecto funcionara, recibí un proyecto de práctica más grande. El único problema era que no sabía cómo construir y probar este proyecto con mis nuevas herramientas. Lo que fue aún más loco fue que había construido este proyecto de práctica antes (El acortador de URL estilo Bit.ly). Entonces sabía cómo implementar la lógica e incluso podía conservar los datos. Pero, sin Atom, NPM, MongoDB y NodeJS, ¡estaba perdido! Al menos, era decente navegando por la Mac en este punto.

Aprender un nuevo idioma (Scala) e IDE (IntelliJ) al mismo tiempo me ralentizó un poco. No hace falta decir que fue un proceso lento para que me "sintiera" productivo.

Mirando hacia atrás, he aprendido que clasificar y priorizar qué temas aprender ahora y cuáles profundizar más adelante es inmensamente útil. En realidad, puede ser más fácil eliminar todas las cosas que no necesita aprender y concentrarse en lo que queda.

Había al menos dos o tres cosas en las que investigué, mirando hacia atrás, no tenía por qué dedicar tiempo. Si pudiera comenzar de nuevo, habría comenzado exclusivamente con algunos tutoriales de IntelliJ. De esta manera, podría haber ejecutado al menos programas simples y modificarlos para experimentar con el entorno. Sé que esto puede parecer una obviedad, pero cuando te bombardean con cincuenta cosas de las que nunca has oído hablar, es un poco difícil analizarlas.

No importa qué ruta tome, todo se unirá con el tiempo. Simplemente no te detengas. ¡Es solo una cuestión de cuán eficiente quieres ser! (¿Prius o Hellcat?) ¡Antes de darme cuenta, en realidad estaba construyendo proyectos! La alegría que sentí fue asombrosa. Estaba escribiendo código Scala, usando IntelliJ e incluso usando mi Mac sin buscar en Google cómo usar funciones simples. Definitivamente una "W", ¡pero aún no es el momento de descansar!

El impostor

Esta sección toca un tema que muchos pueden haber experimentado. Si no lo ha hecho, aquí hay un pequeño aviso en caso de que lo haga algún día. Este tema es el síndrome del impostor. Tiene bastantes formas, pero todas vuelven a no sentirte capaz. La parte extraña es que puede experimentar esto mientras tiene un historial de hacer las cosas o demostrarse a sí mismo repetidamente.

Lo experimento casi cada vez que comienzo a trabajar en un nuevo proyecto. Rápidamente me doy cuenta de que hay mucho que hacer para casi todos los proyectos, sin importar cuán pequeños sean. Este vacío de conocimiento que tengo antes de cada proyecto me hace sentir inadecuado. Esto naturalmente me lleva a la pregunta "¿Pertenezco aquí?" estado mental. ¡Y creo que finalmente he descubierto por qué!

El hecho de que no tenga una educación formal en informática o incluso un entrenamiento de campo de entrenamiento de código es una parte de eso. Quiero decir, sé que no soy un principiante total, pero también sé que me faltan fragmentos de conocimientos básicos de informática. Por un momento, mi conocimiento de informática se sintió como un trozo de queso suizo. Sin embargo, con el tiempo, llené muchas de esas lagunas de conocimiento y gané más confianza.

¡Pero esto no quiere decir que fuera el final de sentirse como un impostor! Casi cada vez que me encontraba cara a cara con un nuevo proyecto, resurgía el síndrome del impostor. ? Con el tiempo me enteré de que este resurgir se debía a que tenía entre un 0% y un 25% de familiaridad con un proyecto o código base determinado. Esto suena como un tipo de cosas "Bueno, duh", pero cuando me asignaban un proyecto, mi cerebro simplemente comenzaba a correr para averiguar cómo lo iba a abordar. Mi cerebro está pensando en la línea de meta y, al mismo tiempo, sabe que no entiendo todas las partes intrincadas del proyecto. Entonces mi cerebro dice algo como "Hermano, no tenemos ni idea de lo que está pasando aquí, ¿cómo vamos a hacer esto?".

Después de profundizar en el código y leer la documentación, estaríamos de vuelta en "¡Lo tengo!". Por favor, deje que los demás se pongan al día. ? Para mí, la analogía anterior es la razón principal por la que me sentiría y, a veces, todavía me sentiría como un impostor. Ahora que entiendo mejor esto, puedo discutir con mi cerebro y luego relajarme para ponerme al día. Cualquiera que experimente el síndrome del impostor sabe que siempre nos “ponemos al día”.

Mi consejo

¡Ahora mi pasantía fue increíble! Aprendí mucho Pero estaría haciendo un flaco favor a todos si omitiera los comentarios más importantes que recibí. ¡Por supuesto que no soy perfecto! ? Así que aquí hay una lista de los comentarios más comunes que recibí durante mis seis meses de pasantía.

  1. Toma notas (tengo buena memoria, pero después de reuniones sobre diferentes cosas puedes olvidar algunas cosas). Fue increíble hablar con mis compañeros de equipo en Slack. Siempre podría desplazarme hacia arriba 24/7 y ver los detalles. Si tan solo pudiera tener eso para cada conversación. ? Oh, sí, un cuaderno o un documento de Google.
  2. Brinde a los compañeros de equipo más contexto al hacer preguntas. Siento que este es un problema común para los nuevos ingenieros. A veces hacía preguntas como si la otra persona hubiera estado trabajando en el mismo archivo y en la misma línea de código en la que yo había estado trabajando. Y como era de esperar, generaría confusión, si no una respuesta incorrecta a mi pregunta. Es casi como llamar a alguien por teléfono y decirle “¡Oye! ¿Puedes darme direcciones a casa? ”. (Antes de Google Maps, GPS y cosas por el estilo, por supuesto) Pero si dices "Estoy en la intersección de Blah y Blah en dirección oeste e intento llegar a casa, ¿puedes ayudarme?" ¡Definitivamente pueden ayudar mucho más! ¡Si tienen un mapa, también conocido como su cerebro de ingeniería superior!
  3. ¡No seas gladiador! El desarrollo de software es un deporte de equipo. Sin embargo, no pude evitar la sensación de que tenía que demostrar mi valía. No es que no quisiera trabajar en equipo, pero sentí que necesitaba demostrar que podía manejar un proyecto por mi cuenta. El único problema era… .. No necesitaba hacer esto. Esta obsesiva misión de probarme a mí mismo solo me hizo recibir lo que considero el único comentario negativo importante en mi segunda pasantía. Quiero decir, a menos que estés creando una startup, ¡tendrás un equipo para apoyarte! ¡Trabaja con ellos y todos se benefician!

Bonificación: además de ser más específico al hacer preguntas, asegúrese de hacer todas y cada una de las preguntas que pueda tener. Este es un consejo muy útil para nosotros aquí enseñándonos a codificar.

Simplemente no es necesario realizar un cuestionario para ver si sus conocimientos se comparan con los de los ingenieros de software junior actuales. Así que, francamente, no sabes lo que no sabes. Y siento que la mayoría de nosotros acepta esto como cierto .

Este no es un problema hasta que escuche algo que sonidos como el conocimiento común de ingeniería. Si alguna vez escuchas hablar a otros ingenieros y piensas: "¿Probablemente debería saber eso?" esto es de lo que estoy hablando.

Resulta que está TOTALMENTE bien si no lo sabe. De hecho, algunos de los ingenieros más experimentados hacen la pregunta exacta en la que estaba pensando. Entonces te das cuenta de que todos los ingenieros no lo saben todo. Entonces ves que cada miembro del equipo sabe una buena cantidad es lo que hace que el equipo sea poderoso. ¡Y las preguntas y el compartir hacen el resto! No te sientes por miedo a que el tema sea algo básico que debes saber. Pregunte !!

La conclusión

Para ser totalmente honesto, de cara a esta pasantía no tenía idea de qué esperar. Solo que escribiría código en algún momento. Nunca había trabajado en tecnología ni en equipo desarrollando software.

En general, creo que salió perfectamente. De los éxitos que tuve junto con los comentarios constructivos que recibí. ¡Viniendo del ejército definitivamente lo hizo interesante! Especialmente después de estar capacitado para seguir órdenes durante años y, de repente, tiene que decidir la mayor parte de su flujo de trabajo diario.

Sin embargo, como siempre, sabía que lo resolvería. Al igual que el entrenamiento militar básico cuando estábamos calvos y confundidos y teníamos que resolver cosas al azar en 1,5 segundos. Solo que ahora no soy calvo.

De hecho, hay muchas cosas que aprendí de los militares que siento que me ayudan mucho en tecnología. Sin embargo, lo guardaremos para otra publicación. También quiero agradecer a todos los que me ayudaron en mi viaje y a mi familia por lidiar con el tiempo que pasaron lejos de ellos. Literalmente, sentí que tenía un pequeño pueblo que me crió para ser un gran ingeniero. Estoy muy agradecido y afortunado por el sistema de apoyo que tengo. ¡Gracias por leer!