paint-brush
Opinión impopular: es más difícil que nunca ser un buen ingeniero de softwarepor@jurajmalenica
8,600 lecturas
8,600 lecturas

Opinión impopular: es más difícil que nunca ser un buen ingeniero de software

por Juraj Malenica5m2023/10/15
Read on Terminal Reader

Demasiado Largo; Para Leer

Sobrevivir a la vía rápida de la tecnología: una historia de ingenieros, exageraciones y cómo mantenerse enfocado en lo que realmente importa en un mundo cambiante
featured image - Opinión impopular: es más difícil que nunca ser un buen ingeniero de software
Juraj Malenica HackerNoon profile picture
0-item

Trabajar en un entorno de startups durante casi una década me ha brindado acceso privilegiado a una cultura acelerada de innovación, exploración y un enfoque rápido para fallar. Seguí la escala de progresión estándar: pasante, junior, mid, senior y, finalmente, pasé a la carrera de gestión de ingeniería . Con el tiempo, muchas personas con las que crecí pasaron a trabajar en otras empresas, convirtiéndose allí en colaboradores muy respetados. Sería justo decir que son buenos ingenieros.


Mirando retrospectivamente el viaje de mis compañeros, de mis aprendices y del mío propio, parece más difícil que nunca ser un buen ingeniero.

Definiendo un buen ingeniero

¿Qué significa ser ingeniero? Como ingenieros de software, somos:

  • Responsable de traducir problemas complejos en soluciones eficientes y escalables.
  • Encargado de analizar los requisitos del usuario, diseñar arquitectura de software, escribir código y probar y depurar software.
  • Se espera que se mantenga al tanto de las tendencias, buscando nuevas oportunidades comerciales y formas de mejorar los productos existentes.

Entonces, no: ingeniería no es igual a programación. A veces, esa es la parte más pequeña. Definitivamente aparece así a medida que uno adquiere más experiencia, como se muestra en la siguiente figura.

Distribución del trabajo por rol

¿Qué significa ser un buen ingeniero? Basándome en numerosas entrevistas y apoyando el progreso de mis aprendices, noté que las personas con diferentes niveles de experiencia pueden dar diferentes respuestas.


Alguien que recién comienza podría pensar que es la cantidad de lenguajes y marcos que conoce un desarrollador. Es posible que a un ingeniero con más experiencia ni siquiera le importe el lenguaje que está utilizando, sino que enfatice la calidad del código: cumpla con todos los principios de codificación y realice el control de calidad mientras avanza con rapidez.


Los ingenieros altamente experimentados ponen un enorme énfasis en aportar valor. A veces, escribimos rápidamente código desechable que rompe todas las reglas para probar una hipótesis; A veces, pasamos días escribiendo un par de líneas de código de misión crítica. Pero la mayoría de los días tomamos decisiones arquitectónicas, discutimos temas de misión crítica, mejoramos procesos, etc. ¿Por qué? Porque a menudo, eso aporta el mayor valor.


Aunque siempre hay excepciones a la regla, podemos decir que un buen ingeniero es aquel que enfoca eficientemente su esfuerzo en aportar el máximo valor en la consecución de un objetivo.

Mercados en crecimiento y competencia

El mercado tecnológico está en constante evolución. Todos hemos visto grandes éxitos a lo largo de los años, desde WhatsApp hasta Uber, Airbnb y TikTok. Si bien estas pueden ser excepciones, estos ejemplos a menudo marcan la estrella polar para las personas, algo por lo que deberían esforzarse. Esta forma de pensar supone una presión adicional para los ingenieros. Sienten estrés desde dentro, pensando que están haciendo algo mal, y desde fuera, cuando la gente compara su empresa con muchos competidores.

Capitalización total del mercado tecnológico

Para tener éxito en un entorno así, las empresas necesitaban “moverse rápido y romper cosas”, como dice el famoso lema de Facebook. Hoy en día, esto es más obvio que nunca: casi todas las empresas se están convirtiendo en una " empresa de IA ". Todo el mundo está integrando ChatGPT, a menudo sin ningún motivo real, sin una estrategia sobre cómo aportará valor.


Al alejarnos del principio central (cómo podemos aportar más valor a nuestros clientes) y avanzar hacia vencer a la competencia en el tren publicitario, conseguimos que los ingenieros creen funcionalidades que están condenadas al fracaso.

El mundo es un lugar confuso.

¿Qué debería hacer un entusiasta como yo para convertirse en un mejor ingeniero? Aparte de la opción obvia de perfeccionar las habilidades de codificación mejorando el código limpio y las filosofías de arquitectura, hoy en día hay muchas tentaciones al acecho. Aprender TypeScript y ese último marco que lo cambia todo, sumergirse en el mundo de blockchain y criptografía, experimentar con una gran variedad de productos de inteligencia artificial... Las opciones son infinitas.

Todas las bibliotecas de JavaScript

Para ser honesto, después de tantos años en la industria, todavía me sentía amenazado por la nueva ola de cambios generada por ChatGPT, GitHub Copilot y otras tecnologías emergentes. Mi cerebro empezó a imaginar escenarios en los que estaba fuera de contacto con tantas cosas. ¿Me estoy centrando en las cosas correctas para aportar valor? ¿Estoy utilizando mi máximo potencial?


Después de un tiempo, quedó claro que estábamos entusiasmados. Eso también pasará, dejando sólo a las empresas de IA que estén creando valor a largo plazo. El número de empresas de IA en los últimos cinco años se ha duplicado en los EE. UU., y muchas nuevas empresas acaban de agregar una función además del recientemente lanzado GPT-3. Posteriormente morirían con el lanzamiento de ChatGPT o GPT-4 , que podrían hacer lo mismo pero mejor. Pero eso no impide que el ejército exagerado de Twitter y otras plataformas proclame el nuevo orden mundial.


Incluso con tantos años trabajando en tecnología, me dejé atrapar por el revuelo. ¡Error de principiante!


Los lenguajes de programación y los constantes lanzamientos de nuevos marcos también aumentan la confusión. Tailwind, TypeScript, Haskell y Rust son geniales; cada uno tiene un ángulo que les da una ventaja. Sin embargo, la gente suele confundir aprenderlos con algo que les dará una ventaja. No lo hará, o al menos no debería hacerlo. Son simplemente herramientas que es bueno conocer pero que no pueden reemplazar la experiencia. Es por eso que nunca incluimos requisitos de idioma/marco en nuestras descripciones de trabajo. Sería un tonto si extrañara a un ingeniero talentoso porque no conoce TypeScript, ingeniería rápida o microservicios.


Mi consejo es: no se deje atrapar por las nuevas tendencias y la exageración hasta el punto de perder el enfoque en aportar valor.

Ritmo rápido y altas expectativas.

Cuando se buscan nuevos desafíos, puede resultar difícil esforzarse por lograr el estrés positivo y al mismo tiempo evitar el estrés negativo. El estrés positivo es aquel en el que percibimos una situación estresante como una oportunidad que conduce a un buen resultado, mientras que el estrés negativo es aquel que puede tener efectos perjudiciales para la salud física y mental, como se ve en la imagen a continuación. Ofrecer resultados continuamente en un cronograma apretado es estresante, y crear funciones por razones equivocadas se inclina hacia lo último.

Estrés positivo versus estrés negativo

Como mentor y como gran trabajador, he visto que el estrés conduce al agotamiento. Sin excepción, hacer que alguien sufra agotamiento genera menos resultados que reducir la carga de trabajo, tomar un descanso y optimizar a largo plazo. Es por eso que siempre tratamos de hacer que levantar señales de alerta sea lo más sencillo posible, con actualizaciones periódicas del equipo, uno a uno y una cultura enriquecedora.


Aun así, las cosas saldrán mal. Cuando lo hacen, recortamos el alcance, involucramos a personas que pueden ayudar o nos comunicamos con nuestros clientes para posponer un lanzamiento.


La presión es mayor que nunca, proveniente tanto de dentro como de fuera. Manténgase enfocado y rodéese de un equipo de apoyo que optimice el largo plazo.

¿Cómo podemos hacerlo mejor?

Todos tenemos nuestros momentos malos: sentirnos como ingenieros, mentores o colegas inadecuados. Las cosas nunca serán perfectas ni fáciles, y no deberían serlo. Sin cometer errores y pasar momentos difíciles, no aprendemos. Pero hay algunas cosas que encuentro que pueden aumentar la eficiencia.

Niveles de influencia

Individualmente, manténgase fiel a lo que es realmente importante. Las tecnologías van y vienen, pero lo que cuenta es el valor que aportas al mundo. Es difícil fingir trabajo duro y experiencia.


Como empresa, comience con el por qué al tomar decisiones. Esta es la mejor manera de ofrecer funcionalidades que aportarán valor. Además, asegúrese de que los empleados sepan por qué . En mi experiencia, tomarán mejores decisiones, darán comentarios valiosos y serán más felices.


Culturalmente, establecer procesos que apoyen a los empleados, optimizando el largo plazo. Junto con sus colegas, establezca una cultura de confianza, apoyo y atención. De esa manera, todos sacarán lo mejor de cada uno.