Me fascina la codificación. ¡Está por todas partes! Cada una de las experiencias digitales que disfrutamos es el resultado del código.
Pero honestamente, no sé casi nada sobre cómo funciona o cómo las personas detrás del código (ingenieros de software) hacen lo que hacen. Para averiguarlo, hablé con Lindsey Redd. Lindsey ha codificado algunas de las compañías tecnológicas más geniales del mundo: Slack, Lyft y ahora Stripe. Ella compartió conmigo los detalles sobre su viaje, desde querer ser médico, hasta estudiar informática en Stanford, hasta prosperar en los mejores escalones de la ingeniería de software. También hablamos de algunos conceptos erróneos comunes sobre los ingenieros de software, cómo es trabajar en una industria predominantemente blanca y masculina, y cómo clavar una entrevista para un trabajo como el suyo.
¿Me puedes contar un poco sobre lo que implica tu trabajo? ¿Qué aspecto tiene el día a día?
Puede ser diferente según el día. Pero, por lo general, empieza por mirar lo que tengo que hacer durante el día. Sé que muchos equipos de software utilizan herramientas de administración de tareas. Mi equipo utiliza específicamente a Jira como sistema de venta de entradas y tenemos sprints.
Un sprint durará una o dos semanas. En esa cantidad de tiempo, se supone que debes hacer «x, y y z». Revisaré esas tareas pendientes y me aseguraré de que estoy en el buen camino: mire las tareas que debo hacer durante el día y las haré.
Luego codificación, por supuesto. Pero la ingeniería de software tiene mucho más que la codificación. Tu código. Pruebas. Implementa tu código. Supervisas el código y te aseguras de que las cosas funcionen correctamente. Sin embargo, también puede haber muchas reuniones sobre desarrollo de productos o nuevas funciones que deben crearse en el equipo y cómo vamos a crear esas funciones. Me reúno mucho con los ingenieros sobre el plan de implementación. También hay mucha programación en pareja o trabajando junto con otro codificador para resolver problemas.
¿Siempre sabías que querías ser ingeniero de software?
No, para nada. Ni siquiera sabía qué era hasta que estuve en la universidad. Quería ser médico en el instituto o ingeniero biomecánico. Mi padre es médico. Mi madre es ingeniera química. Así que algo con STEM, lo sabía, iba a ser mi camino. Pero no me sentí súper inspirado por la pista de pre-medicina ni en muchas de mis clases de ingeniería; no podía ver cómo se aplicarían esas habilidades ni ninguna de las cosas que estaba aprendiendo. Estaba buscando otra cosa en el campo STEM que me resultara un poco más interesante y motivador.
Fui a Stanford. Y Stanford es una enorme escuela de informática. Muchos de mis amigos estaban tomando cursos introductorios de informática. Nunca había codificado. Es que no sabía qué era. Pero todo el mundo se lo estaba pasando muy bien y parecía que lo encontraba realmente interesante. Así que en mi segundo año, decidí tomar una clase de informática. Mi mentalidad era que si me gusta esta clase, tomaré la siguiente clase. Y después de eso, si me gusta esa clase, me especializaré en ella. Y eso es básicamente lo que pasó. Fue en ese momento que me di cuenta de que esto es lo que quería hacer.
¿Cómo fueron esas clases? Cuando empezaste a hacerlo, ¿era algo que te asustaba o te intimidaba? ¿O era más accesible?
Si no hubiera visto a otros niños tomando clases, a otras personas que no sabían codificar, me habría sentido mucho más intimidado. Pero los cursos introductorios de informática de Stanford son súper accesibles. Incluso creo que están disponibles públicamente. De verdad parten de lo básico. No tienes que saber cómo codificar para tomar la clase. Los profesores fueron realmente geniales y te guiaron a través, desde lo más básico, de lo que necesitas saber para codificar.
Disfruté las clases porque muchas de ellas están codificando. Y eso es lo que hago ahora mismo en el trabajo. Me gusta esa aplicación directa de habilidades. Estoy aprendiendo cosas que usaré eventualmente en mi carrera.
Al principio son muchos rompecabezas. Codificas un pequeño robot que navega por un laberinto. Es algo sencillo. Creo que mi proyecto final en mi primera clase fue crear un «Facebook» extremadamente básico. Te inician de forma sencilla y poco a poco incrementan la intensidad.
Cuando estabas en la universidad, hacías pasantía tanto en Lyft como en Slack. ¿Puedes hablar un poco sobre cómo conseguiste esas pasantías y cómo fue la experiencia para ti?
Tuve un camino muy interesante hacia mi primera pasantía. Stanford realiza muchas ferias de trabajo específicamente para estudiantes de informática en las que las empresas tecnológicas de Silicon Valley se presentan y reclutan. No tenía ni idea de cómo navegar por esos espacios. No tenía ni idea de cómo conseguir una pasantía en informática.
Recibí una entrevista para desarrollo web front-end, cosa que nunca había hecho. Muchos de los cursos introductorios de Stanford se centran en el trabajo back-end, como algoritmos y estructuras de datos. Así que me hacían preguntas sobre desarrollo web que no pude responder. Fue terrible. Estaba realmente perdido. No tenía ni idea de cómo iba a conseguir trabajo para el verano.
Luego, recordé que algunos de mis amigos estaban solicitando a una organización llamada Code2040. Code2040 es una organización que ayuda a los estudiantes negros y latinx que estudian informática a entrar en el campo de la tecnología de ingeniería de software. Tienen asociaciones con empresas que asumen pasantes de Code2040. Y es un proceso bastante intenso. Tienes que hacer una entrevista técnica para entrar en el programa Code2040. Tienes que hacer una entrevista de escritura y una entrevista en vídeo, también.
Una vez que hayas entrado en Code2040, en ese momento puedes empezar a entrevistar con sus empresas asociadas. En ese momento, Lyft era una empresa asociada de Code2040. Me entrevisté y el proceso de entrevista fue muy difícil. Pero Code2040 definitivamente te ayuda a navegar por ese proceso, también. Así que fue un buen programa para mí, como alguien que no tenía ni idea de cómo entrar en tecnología en absoluto.
Entrevisté con Lyft y luego me dieron una oferta de trabajo. Code2040 es un programa de verano. Vas a talleres, te conectas con muchas otras personas que están en el programa, trabajas con otras empresas que también son empresas asociadas. Slack es una empresa asociada con la que trabajé en red durante mi primera pasantía de verano y luego pude usar esa conexión cuando se trataba de obtener una pasantía el próximo verano.
Cuéntame más sobre el proceso de entrevista. ¿Qué tiene de difícil? ¿Cómo fue ese proceso?
Ahora, después de haber trabajado en Lyft a tiempo completo, sé que su proceso de entrevista es muy diferente. Pero en ese momento, era muy similar a muchas otras empresas tecnológicas, donde te hacían preguntas de codificación aleatorias que no simulan lo que es ser ingeniero de software en el trabajo. No puedo decírtelo la última vez, en el trabajo, usé un «algoritmo de búsqueda en primer lugar». Pero estoy bastante seguro de que esa fue una de mis preguntas de entrevista para Lyft. Y tienes que codificar en una pizarra blanca, cosa que nunca hice en realidad; por lo general, toda tu codificación ocurre en una computadora.
La prueba de entrevista no era muy indicativa de lo que haría en el trabajo. Y tuve que estudiar para ello. Creo que estudiar para entrevistas de ingeniería de software es todo un calvario en sí mismo. Y en ese momento, no lo entendía, así que no estudié bien. Por suerte, tenía algunas habilidades en mi haber que me sirvieron en mi entrevista. Pero lo hizo difícil porque estaba muy confundido acerca de cómo se iba a traducir esto en mi trabajo.
¿Tienes que estudiar para entrevistas de ingenieros de software? ¿Qué aspecto tiene eso?
El mejor consejo que me dieron fue comprar este libro llamado «Cracking the Coding Interview», que básicamente pasa por todos los diferentes tipos de preguntas que utilizan muchas de las grandes empresas tecnológicas, como Google, Facebook y Microsoft. Muchas empresas medianas y pequeñas basan sus modelos de entrevistas en esas grandes empresas tecnológicas.
Hay muchas innovaciones nuevas que están ocurriendo en ese espacio, lo que hará que el proceso sea menos una prueba para la que tienes que estudiar. Pero normalmente lo haces. Y hay muchos recursos en línea, como Meetcode. Básicamente, tienes que hacer problemas de práctica, como problemas matemáticos como si estuvieras estudiando para una prueba, excepto que son preguntas de codificación práctica las que te ponen a prueba tus conocimientos sobre estructuras de datos y diferentes tipos de algoritmos, todo tipo de cosas que tienes que analizar para poder realizar las entrevistas.
Conozco a mucha gente que se dedica varios meses a estudiar para entrevistas antes de comenzar el proceso con cualquier empresa. En la universidad, estuve estudiando durante al menos dos meses antes de entrevistarme. Cuando se trataba de entrevistar a tiempo completo, también comencé a estudiar unos meses antes de empezar a entrevistar.
Entonces, ¿tienes que empezar a estudiar antes de saber si tienes una entrevista preparada?
Sí, y muchas empresas entienden que eso es parte del proceso. Según mi experiencia, los reclutadores son muy flexibles para ofrecerte todo el tiempo que quieras para estudiar. Para mi trabajo actual, recuerdo preguntarle a mi reclutador si podía tener cuatro o cinco semanas para estudiar antes de hacer la entrevista. Y dijeron: «Oh, sí, lo entiendo totalmente». Pero mucha gente, una vez que deciden que van a cambiar de trabajo, saben que eso significa que es hora de empezar a estudiar.
Cuando respondes a estas preguntas, ¿estás codificando en directo frente al entrevistador?
Sí, en la mayoría de los casos. Lyft hace una entrevista en la que tienes una hora para codificar un pequeño proyecto por tu cuenta. El entrevistador no tiene que estar ahí, así que puedes concentrarte. Pero creo que en todas las demás entrevistas en las que he estado, estás codificando delante de alguien o empareja la programación con alguien durante la entrevista. Es mucha presión.
Usted empareja el programa en el trabajo. Así que las entrevistas que implican programación en pareja, creo que son realmente geniales. Pero codificar con alguien mirando y juzgando tu desempeño no es típico en el trabajo. Mucho de eso lo haces solo por tu cuenta. Definitivamente es algo a lo que acostumbrarse porque no es algo que hagas normalmente mientras estudias ciencias de la computación o trabajas como ingeniero de software.
Cuéntame más sobre la programación de pares. ¿Es solo programar con otra persona de tu equipo?
La programación en pareja es cuando trabajas con alguien de tu equipo u otro equipo en un problema en el que necesitas ayuda o que los dos están resolviendo juntos. Normalmente hay alguien que es el «conductor» y luego alguien que está en el «asiento del copiloto».
El conductor es el que está escribiendo. Pero están resolviendo problemas juntos. Es una experiencia muy colaborativa, que me gusta. Creo que he aprendido mucho haciendo ese proceso, incluso en entrevistas. Tiendes a resolver los problemas un poco mejor y más rápido cuando trabajas con alguien de esa manera.
Así que te pasaste en Lyft y luego pudiste hacer un concierto a tiempo completo allí. ¿Cómo pudiste convertir esa pasantía en un puesto de tiempo completo?
En general, si te va bien durante tus prácticas, la compañía te dará una oferta a tiempo completo. Así que la gran pregunta es, ¿cómo te va bien durante las prácticas?
Hay muchas piezas en eso. Mi idea errónea fue que necesitaba hacer mi proyecto a la perfección y por completo, cosa que no hice cuando estaba haciendo pasante en Lyft. Creo que lo que realmente busca la gente cuando eres pasante en un equipo es tu capacidad de comunicación, comunicación verbal y escrita, y tu capacidad para resolver problemas y trabajar a tu manera en torno a un problema abstracto. Por lo tanto, incluso si no puedes terminar el proyecto, demostrar esas habilidades de comunicación, organización y gestión de proyectos, y descubrir cómo implementarlas, eso es mucho lo que la gente busca cuando eres pasante.
¿Qué tipo de preguntas haces? ¿Te aseguras de hacer preguntas para resolver tus problemas? ¿Con qué rapidez puede aumentar y aprender nuevas tecnologías, habilidades e idiomas rápidamente? ¿Qué tipo de energía aportas al equipo? ¿Qué se siente trabajar contigo?
Ahora, estar del otro lado y haber sido mentor interno, definitivamente ayuda cuando tu pasante está súper emocionado y muy curioso. Eso es lo divertido de tener pasantes. No solo estás ayudando a atraer a más personas a la empresa, sino que quieres asegurarte de que esas personas sean positivas y divertidas para trabajar con ellas.
Exudando que durante tus prácticas, esa curiosidad, esa especia y pasión por lo que estás haciendo, definitivamente ayuda a dejar una impresión positiva y duradera en tu equipo. Si tienes eso, además de poder resolver problemas y hacer cosas, estás bastante preparado para obtener una oferta a tiempo completo al final de la misma.
Sé muy poco sobre lenguajes de codificación. ¿Cuántos idiomas de codificación has aprendido a lo largo de los años? ¿Y cuánto tiempo lleva aprender un nuevo lenguaje de codificación?
En la universidad, estábamos aprendiendo C y Assembly, que son lenguajes de sistemas informáticos de nivel extremadamente bajo que normalmente no necesitas saber. También aprendí Java y C++. Pero ya no los uso muy activamente.
En mi carrera profesional, he aprendido Python, Golang, PHP, React y Ruby. Pero cada empresa usa algo un poco diferente. O introducen nuevos lenguajes que hacen cosas diferentes. Y por eso mencioné durante tu pasantía que es bueno que puedas demostrar que puedes aprender rápidamente.
Cuando comencé mi pasantía en Lyft, no conocía Python. No tenía ni idea de qué era. Por suerte, Python es un lenguaje bastante accesible. Creo que estoy aprendiendo estos idiomas para siempre. Es como aprender un idioma hablado real de esa manera, donde hay cosas que cambian todo el tiempo. Hay una enorme mezcla de cosas que estos idiomas pueden hacer, por lo que estás aprendiendo constantemente cuáles son esas cosas nuevas.
Para mí, codificar activamente en un idioma y sentirme cómodo en él probablemente lleva cuatro semanas. Pero incluso en ese momento, sigues buscando muchas cosas en Google. Siento que busco en Google cómo hacer «bucles for» en ciertos idiomas, lo cual es algo muy básico. Pero cada lenguaje tiene una sintaxis diferente incluso para cosas sencillas. Por suerte, Google o cualquier motor de búsqueda son un excelente recurso para aprender a hacer lo que necesites hacer en cualquier idioma.
Busco en Google las cosas más simples todo el tiempo. Recuerdo que recientemente hubo un hilo de Twitter en el que muchos ingenieros sénior estaban tuiteando las cosas que aún tienen que mirar hacia arriba. Y me ayudó mucho con mi propio síndrome de impostor, sabiendo que estas personas a las que admiro mucho porque son ingenieros realmente geniales también están buscando cosas muy simples.
¿Cómo conseguiste tu trabajo actual en Stripe?
LinkedIn, honestamente. Sé que LinkedIn no es para todos. Pero definitivamente lo uso como herramienta para mi carrera. Mantengo actualizado mi LinkedIn. Tengo mi correo electrónico ahí. La gente puede llegar a la mano.
Mi actual gerente de Stripe se comunicó conmigo en LinkedIn. Me acaba de enviar un mensaje y me dijo: «Oye, estoy contratando. ¿Tiene algún interés?» Y Stripe siempre había estado en mi radar. No planeaba dejar Lyft cuando lo hice. Pero siento firmemente que si hay una oportunidad que te parece interesante, al menos deberías tener la conversación. Así que lo hice, y me fue muy bien.
A partir de ahí, pensaba, voy a entrevistar y ver a dónde va. Tal vez no salga bien, y está bien. Así que empecé a estudiar. Hice la entrevista. Realice una entrevista de pantalla telefónica, que suele ser solo una o dos preguntas con una persona. Y luego haces una obra in situ, que ahora es totalmente virtual. Pero la entrevista in situ incluye unas cinco entrevistas. Después de eso, averigua si consiguió el trabajo o no, y luego entra en negociaciones.
Creo que la parte más difícil la mayor parte del tiempo es poner el pie en la puerta, conseguir que se reconozca su currículum. Definitivamente uso LinkedIn para ayudarme a hacer esas conexiones.
¿Tienden a que los reclutadores te contacten mucho?
Definitivamente hay más funciones de ingeniería de software abiertas que ingenieros de software. Esa brecha seguirá creciendo a menos que hagamos mucho más para que más personas se formen en ciencias de la computación. Mucha gente se comunicará conmigo sobre sus papeles abiertos. Cuando buscaba empleo, era muy proactivo para llegar a empresas que me parecieron interesantes, aunque no me hubieran contactado. Así que no todo es entrante.
Pero, soy muy privilegiado en el sentido de que tengo mi título en Stanford. Tengo Lyft, Slack y ahora Stripe en mi currículum. Y se trata de organizaciones e instituciones muy respetadas. Creo que recibo mucho tráfico entrante debido a estos nombres que están en mi LinkedIn y en mi currículum. Sé que ese no es necesariamente el caso de muchos otros ingenieros, grandes ingenieros; mejores ingenieros que yo, solo porque no tienen estas marcas en su currículum. Así que, si bien hay muchos roles abiertos, creo que también hay mucho elitismo en la industria.
Conozco empresas que dicen: «Oh, solo contratamos a las cinco mejores escuelas de informática», lo cual es ridículo. Creo que sigue habiendo esa extraña tensión en el sentido de que en realidad hay mucha gente que puede hacer este trabajo. Hay muchos roles abiertos. Pero entonces la gente tiene expectativas irreales de cómo se supone que debe tener un currículum.
Y, por supuesto, las entrevistas son intensas, como estaba describiendo. No todo el mundo tiene los recursos para prepararse durante tres meses para una entrevista. Así que, en mi opinión, tiene que superar esas brechas.
Cuando tienes un montón de oportunidades como ésa, ¿cómo decides cuáles merecen tu tiempo?
Creo que depende mucho de lo que quieras hacer. Hay muchos tipos diferentes de ingeniería de software. Así que cuando mi gerente de Stripe se puso en contacto conmigo, era para desempeñar un papel de ingeniería de productos más completo. Estaba haciendo mucha ingeniería de infraestructura en Lyft y me interesaba cómo sería trabajar en un equipo de productos.
Stripe también es muy conocida y tiene fama de ser un buen lugar para ingenieros y desarrolladores. Era una combinación particular que me resultó interesante. Pero alguien que quiera trabajar en muchas cosas de IA y aprendizaje automático podría no estar muy interesado en un papel de producto en Stripe. Así que cuando recibo solicitudes entrantes para la nueva startup de IA, no va a despertar tanto mi interés porque eso no es necesariamente donde se encuentran mis intereses.
Hay todo tipo de factores, como en qué tamaño de empresa quieres trabajar? ¿Te interesa una startup de tamaño Google o de cinco personas?
Las decisiones de compañía que he tomado hasta ahora están muy a la par entre sí. Slack, Lyft y Stripe tienen un tamaño similar y tienen organizaciones de ingeniería de tamaño similar. Las valoraciones se encuentran en un ámbito similar. Todos estaban previos a la OPI cuando empecé a trabajar en estas empresas, algo que buscaba particularmente.
En el futuro, eso podría cambiar. Puede que busque algo completamente diferente. Y creo que probablemente debería en algún momento ampliar mi gama de experiencias.
Pero así es como lo reduzco. Tengo una idea bastante clara de lo que estoy buscando cuando comienzo una búsqueda de empleo. Así que voy a filtrar según los requisitos que tengo.
¿Ha mencionado algunos tipos de ingeniería de software? ¿Me puedes contar un poco más sobre los diferentes tipos?
Existen muchos tipos diferentes de ingeniería de software. Probablemente ni siquiera los conozco a todos. Estoy aprendiendo para siempre sobre nuevas áreas en las que la gente está innovando.
Lo básico es el front-end, que se parece más al desarrollo web o a lo que ves en la pantalla de tu ordenador. El back-end se parece más a servidores y algoritmos y cosas que no ves como usuario pero que ayudan a potenciar el front-end. Y luego hay gente que está llena, que hace ambas cosas.
Existe ingeniería de infraestructura, que está desarrollando servicios, como microservicios, servidores, servidores monolíticos o canalizaciones de observabilidad, elementos que deben situarse debajo de la capa back-end para que funcione. Muchas herramientas para desarrolladores se consideran infraestructura, cosas que mantienen a las capas superiores funcionando. Eso es mucho de lo que hice en Lyft.
Hay ingenieros de aprendizaje automático e inteligencia artificial. Hay ingeniería de datos. Hay SRE, que son ingenieros de confiabilidad del sitio: mantienen las luces encendidas y se aseguran de que todo funcione correctamente. Hay ingenieros de control de calidad que prueban la calidad de las cosas que otros ingenieros están construyendo. Y crean sistemas automatizados para probar la calidad de los productos. Y hay ingeniería móvil: personas que crean aplicaciones iOS, aplicaciones Android, que son un conjunto de habilidades completamente diferente.
Dondequiera que se encuentre sus intereses, probablemente haya una especie de ingeniería de software que se ajuste a eso.
¿Es difícil cambiar entre esos diferentes tipos?
Creo que lo más difícil es aprender la nueva tecnología. Los gerentes de contratación son bastante abiertos; por ejemplo, si solo has trabajado en infraestructura, están bastante dispuestos a contratarte en un equipo de productos o viceversa. Esto puede ser bueno porque tienen una perspectiva diferente a la de las personas que solo han trabajado en infraestructura.
Lo más importante que tienes que hacer es aprender el nuevo idioma y aprender las nuevas tecnologías. Y hay muchos recursos para aprender. Hay cursos, libros y proyectos o tutoriales en línea de Udemy que puedes seguir para entender cómo hacer algo.
Creo que las partes que son un poco más difíciles de aprender son tal vez la IA y el aprendizaje automático porque requieren una educación muy específica y más basada en matemáticas. De lo contrario, es bastante sencillo inclinarse en un área diferente de la informática o la ingeniería de software.
Si quería convertirme en ingeniero de software, ¿cuáles son las habilidades más importantes que debería desarrollar ahora mismo?
Definitivamente, crear, probar y mantener software es el conjunto de habilidades principales. Llegar el pie a la puerta y conseguir un trabajo consiste en desarrollar esas habilidades para entrevistas, que también existen muchos recursos para desarrollar esas habilidades. Diría que muchas de las habilidades de las que la gente no habla realmente y que necesita ser un buen ingeniero de software son más de las habilidades blandas, como la comunicación verbal y escrita, la organización y las habilidades de gestión de proyectos.
¿Puedes hablar un poco sobre algunos de los conceptos erróneos de esta trayectoria profesional?
Un gran error es que los ingenieros de software solo codifican, lo cual no es cierto. Gran parte de mi trabajo consiste en escribir documentación para explicar cosas a la gente o comunicar o presentar ideas. Muchas de ellas son reuniones en las que descubrimos la dirección de un software o producto en particular. Y todas ellas implican muchas otras habilidades que no están codificando.
Creo que la gente tiene esta visión de los ingenieros de software de que estamos en un cuarto oscuro codificando nosotros mismos todo el tiempo, lo cual es el ambiente a veces. No voy a mentir. A veces hay un problema que debes resolver con el código. Pero gran parte del trabajo es muy colaborativo y no es trabajo en solitario, mucho planificar, ser jugador de equipo, comunicar lo que estás haciendo y haciendo preguntas que puedas tener para que la gente te pueda ayudar.
Otra pieza que es enorme que la gente no considera realmente es lo importante que es la tutoría en la ingeniería de software. Esto puede significar asesorar a personas que son más jóvenes que tú o simplemente personas que son nuevas en tu equipo. La ingeniería de software es un deporte de equipo, y creo que una gran habilidad es asegurarse de que las nuevas personas que se presentan en lo que esté trabajando puedan trabajar en ello, sean productivas y sean un miembro activo del equipo. Esto implica aumentar a la gente, ayudarles, responder muchas preguntas y poder comunicar sus ideas.
La ingeniería de software y la industria tecnológica en general, es predominantemente blanca. Es predominantemente masculino. ¿Te importaría hablar un poco sobre lo que es navegar por una industria así?
Es difícil. Definitivamente es una lucha. Tengo un gran privilegio en que puedo navegar por el campo con la escuela a la que fui y los trabajos que he tenido anteriormente. E incluso con eso, definitivamente obtienes personas que dudan de tus habilidades, dudan de tu conjunto de habilidades y socavan tu trabajo, lo cual es un asco. Es difícil y no justo y definitivamente necesita cambiar.
Mucho navegar por él, para mí, ha sido mi propio trabajo interno de mantenerme seguro, seguro de mí mismo, seguro de mis habilidades, de mi educación y de todo lo que traigo a la mesa, aunque no todo el mundo lo vea. Está claro que muchas personas, empresas y equipos ven las habilidades que todos pueden aportar a la mesa a pesar de sus antecedentes o de la escuela a la que asistieron o la empresa en la que trabajaron anteriormente. Pero dependiendo de la cultura de la empresa, de la composición específica de la empresa y de su gerente, es definitivamente una moldeada diaria hacerlo. Creo que es más trabajo del que tiene que pasar el ingeniero de software blanco para encontrar un equipo y encontrar una empresa que trabaje para ti.
Una de las cosas que pregunto cuando estoy investigando empresas y equipos es, ¿qué aspecto tiene la diversidad en la compañía? ¿Cómo piensa o trata su empresa la diversidad y la inclusión? ¿Hay otras personas en la compañía que se parecen a mí que están bien y se sienten bien? Es definitivamente parte de mi investigación. Y es un trabajo duro por sí mismo investigar esas cosas y resolverlas. Pero es necesario para que sea el mejor empleado o ingeniero que puedo ser.
¿Cuáles son algunos de los otros obstáculos y desafíos de esta trayectoria profesional?
Puede ser diferente dependiendo de quién seas y con qué lucha en particular. Para mí, lucho contra el síndrome de impostor. Así que una de mis luchas diarias es sentir que estoy haciendo un buen trabajo. Me ayuda mucho cuando la gente me da comentarios para que sepa cómo me va. Y también me ayuda cuando recibo refuerzo positivo.
Debido a que la ingeniería es un espacio dominado por los hombres y dominado por los hombres blancos, a menudo puede parecer que no estoy midiendo porque creo que muchas personas a veces no reconocen las habilidades que tengo debido a mi identidad diferente. Por lo tanto, mantener la confianza y estar seguro de mí mismo ha sido un desafío especial para mí en ingeniería de software.
También existe esta noción del ingeniero 10 veces: el ingeniero que acaba de hacer el trabajo de otros 10 ingenieros y es súper productivo. Es un ideal que la gente espera de los ingenieros. Pero no es cierto y no es realmente alcanzable, y puede afectar el equilibrio entre la vida laboral y la vida personal. Mantener esos límites, entender lo que puedes hacer en un día y saber que eso está bien también es algo que se alimenta del síndrome de impostor. Es algo con lo que he luchado y con lo que he tenido que lidiar.
Lo que realmente ayuda es tener una comunidad de personas que están haciendo lo que estás haciendo, ya sea en tu empresa o fuera de ella, o idealmente ambas cosas, con las que puedes hablar sobre cualquier lucha que tengas. Porque 10 de cada 10 veces, cuando le pregunté a alguien más de mi comunidad o en mi grupo de apoyo de otros ingenieros de software: «¿Ha tenido problemas con esto?» la respuesta es sí.
Y ya hayan descubierto la solución o no, es mejor saber que otras personas están lidiando con las mismas cosas que tú. Lo sugiero para cualquier trayectoria profesional, ya sea ingeniería de software o no. Tener a tu gente, tener tu comunidad, ayuda con cualquier tipo de lucha que puedas enfrentar.
Hablemos de dinero. ¿Qué debo esperar que me paguen en una función de ingeniería de software?
Depende de muchos factores diferentes. Su ubicación: si es ingeniero de software en Alabama, su salario tendrá un aspecto diferente al de un ingeniero de software en San Francisco debido a los diferentes costos de vida. El tamaño de la empresa también importa y en qué etapa de crecimiento se encuentra. Google y Facebook tendrán las ofertas más altas. Las empresas que tal vez estén previas a la OPI y que están experimentando un gran crecimiento, también tendrán altas ofertas. Las empresas que tal vez sean startups pre-sembradas o startups seed-Stage/Serie A tendrán salarios más bajos. Pero hay muchas ventajas cuando piensas en el capital y las acciones.
Si te encuentras en uno de los lugares costeros (San Francisco, Nueva York, LA) algunos de estos centros tecnológicos más grandes y establecidos, si no ganas 100.000 dólares fuera de la universidad, probablemente te estén pagando mal o al menos podrías encontrar una empresa que te pague más. No estoy seguro de qué se ve si estás buscando trabajo en Atlanta, por ejemplo. Puede que parezca muy diferente.
Hay recursos en línea para ayudarlo a averiguar si acaba de recibir una oferta, si es justa, según su ubicación, su nivel y el tamaño de la empresa. Recomendaría mirar sitios web como Levels.fyi y Glassdoor para averiguar la información salarial.
También diría que hables con tus amigos. La gente no habla de cuánto ganan lo suficiente, lo que creo que lleva a una gran desigualdad salarial en la industria. Preguntaría directamente a la gente: «¿Cuánto ganas?» Cuando he visto a la gente darse cuenta de que no se les paga de manera justa, es porque la gente a su alrededor ha sido honesta sobre lo que hacen y se dan cuenta de que algo no va a sumar. Así que me gustaría hablar con las personas y animarlas a ser transparentes porque es lo que tiene que suceder para que estas empresas sean, que muchas veces no quieren pagarle de manera justa, responsable.
¿Qué te encanta de la ingeniería de software?
Es la combinación de trabajo en equipo, colaboración, programación en pareja y resolución de problemas con la capacidad de hacer mucho trabajo en solitario y resolver problemas por su cuenta. Me gusta el proceso de codificación y no saber qué está pasando realmente, pero probando y resolviendo un problema, buscando en Google lo que necesite y luego llegar a una solución. Esa sensación, esa gratificación de averiguar cómo hacer algo o resolver un error, no tiene igual.
Disfruto de mis equipos. Me gusta trabajar con gente y me gusta hacer lo mío un poco. Definitivamente, la ingeniería de software le permite hacer ambas cosas y, dependiendo del tipo de empresa en la que trabaje, le permite hacer más de una u otra en función de lo que desee. También hay mucha flexibilidad en ese sentido.
¿Hay algo que desearías haber sabido sobre esta trayectoria profesional antes de empezar?
Cuando comencé y me especializé en informática, no sabía la intensidad de las entrevistas y cuánto tenías que estudiar para ellas. Incluso si tienes 10 años de carrera, si quieres cambiar de trabajo, tienes que estudiar. No lo sabía.
También desearía haber conocido todos los diferentes tipos de ingeniería que puedes hacer. Cuando comencé mi trabajo a tiempo completo en Lyft, no me importaba en qué parte de la pila estaba trabajando. En mi cabeza era igual. Mis dos primeras prácticas fueron diferentes en lo que estaba trabajando. Pero no era eso a lo que estaba prestando atención en ese momento. Solo intentaba hacer un buen trabajo pero sin pensar realmente, ¿en qué quiero trabajar? ¿Cuáles son los tipos de problemas que creo que son interesantes y quiero resolver? ¿Se trata de problemas de infraestructura? ¿Son problemas de producto? ¿Es front-end? ¿Es back-end?
Por ejemplo, desearía haber invertido más tiempo en aprender ingeniería móvil. Podría cambiar a hacerlo y probablemente lo haré en algún momento porque me parece interesante. Pero ni siquiera pensé en ninguna de esas cosas. Realmente puede cambiar tu día a día. Realmente puede cambiar el tipo de trabajo que realice, dependiendo del tipo de equipo en el que se encuentre, el aspecto de su pila y el tipo de producto que produzca. Ojalá hubiera sabido esas diferencias y cómo difieren esos tipos de equipos en cuanto a su funcionamiento.
Vale, última pregunta: ¿Quién es tu enamoramiento de tu carrera?
Realmente admiro a Erica Joy Baker. Es ingeniera de software. Trabajaba en Slack en el momento en que yo estaba internando allí, y yo había conocido de ella antes de eso. Estuvo en Google durante mucho tiempo. Y ahora ha pasado a la dirección y es la directora de tecnología del Comité de Campaña del Congreso Demócrata. Me gusta mucho la forma en que aparece. Tuve la oportunidad de hablar con ella hace unos años sobre su trabajo y sobre cómo aborda su trabajo. También escribe mucho en línea para darte más información sobre cómo está pensando.
Ella es alguien que se lleva a trabajar y usa sus cualidades únicas para liderar. Realmente lo admiro y me encantaría exudar más de eso en el trabajo. Parece estar súper confiada en sí misma y en sus habilidades. Y la gente está súper confiada en ella debido a eso. Y también lo admiro.
Además, la transición a la gestión y ascendiendo a esa escala profesional hasta convertirse en director de ingeniería también es algo que me resulta súper interesante y creo que algo que eventualmente perseguiré. Creo que están resolviendo un nivel superior de preguntas de ingeniería sobre la organización y cómo las personas trabajan juntas, lo cual es muy interesante para mí.