Un desarrollador que ama programar pero detesta la industria de la programación
(deathbyabstraction.com)- A diferencia del disfrute de programar en sí, el entorno laboral del software se siente como un lugar que exige producir más código en vez de preguntar por el propósito del diseño y los criterios de éxito
- La experiencia de revisar ofertas de trabajo durante varias semanas en 2023 derrumbó la expectativa de encontrar “un lugar mejor”, y en especial la cultura startup muestra de forma explícita la actitud de “hacer menos preguntas y producir más”
- Incluso en las grandes tecnológicas, a los desarrolladores se les trata como números: el tamaño del stack backend, la calificación de entrevistas y la puntuación de evaluación de desempeño, haciendo que el juicio personal sobre cómo escribir código importe cada vez menos
- La actitud de “construir más y preguntar menos” puede aumentar la cantidad de código, pero también lleva a software peor, y las modas tecnológicas junto con la inercia se filtran hasta los lenguajes, bibliotecas, frameworks y patrones de código
- El tipo de trabajo que el autor quiere hacer es resolver problemas de ingeniería que nacen de necesidades ya existentes en la sociedad, donde el “por qué” del sistema debe determinar incluso el lenguaje, el paradigma, la arquitectura y la sintaxis
La desconexión sentida en los trabajos de software
- El autor dice que nunca encajó bien en ninguno de los puestos de ingeniería de software por los que pasó
- Una vez que entendía hasta cierto punto la lógica interna de una base de código, lo técnico empezaba a aburrirle, y entonces quería no hacer más, sino hacerlo distinto
- Seguía volviendo a preguntas sobre las decisiones de diseño y su propósito
- ¿Por qué hacemos esto?
- ¿Por qué lo hacemos de esta manera?
- ¿No hay una manera mejor?
- ¿Qué métricas se usan para juzgar el éxito y por qué se usan?
- No siempre expresaba estas preguntas en voz alta, pero le dijeron que “pensaba demasiado” y que “se preocupaba demasiado”, cuando ese tiempo podría haberse usado para producir más código
- No era solo una cuestión de falta de ajuste entre talento y puesto; también le resultaba difícil estar de acuerdo con la forma en que operan las organizaciones, y quería cambiarla en vez de mantenerla
Las vacantes de startups y el “hacer más y preguntar menos”
- La experiencia de revisar ofertas laborales durante varias semanas en 2023 destruyó la expectativa de que “debe haber un lugar mejor”
- Evalúa que el 90% de las descripciones de empleo parecían referirse a código que la persona contratada escribiría y que estaba desconectado no solo de la humanidad, sino también de cualquier problema importante a nivel personal
- La cultura startup se presenta como el ejemplo más explícito de la actitud de la industria de “producir más código y hacer menos preguntas”
- Muchas startups, critica, se dedican a mover dinero de inversionistas mientras intentan convencer a usuarios de que necesitan productos solo limitadamente útiles para conseguir clientes de pago
- Las startups suelen fracasar, y como resultado queda código espagueti difícil de mantener, escrito bajo presión para salir no en meses sino en semanas
- Ese código rara vez vuelve a verse salvo como ejemplo de malas prácticas de programación; se desperdicia el tiempo de los ingenieros, y el capital de riesgo ya pudo haberse canalizado hacia personas que ya tenían bastante capital para volver a invertirlo en otras startups
- Critica que los anuncios de empleo presentan este trabajo como algo emocionante que enriquecerá la vida de las personas y estimulará el crecimiento de ingeniería
La autonomía que también desaparece en las grandes tecnológicas
- Las empresas tecnológicas establecidas tienen una estructura organizacional y financiera distinta de la de las startups, pero en lo cultural no contrastan tanto
- El código escrito en FAANG puede llegar a usuarios reales, pero las ideas personales sobre cualquier aspecto de cómo se escribe ese código se vuelven todavía menos relevantes
- Critica que el desarrollador termina convertido en un engrane de la máquina de estas maneras
- El producto puede estar automatizando de forma cada vez más siniestra los peores aspectos del capitalismo
- En la práctica, uno se convierte en números como el tamaño del stack backend, la calificación de entrevistas técnicas y la puntuación de evaluación de desempeño
- El problema no es solo esta realidad en sí, sino que además se espera que los ingenieros deseen más que otros trabajadores esta labor repetitiva, vacía y humillante, y que se les reprima con más fuerza para que no cuestionen ningún aspecto de ella
Ingeniería sin espacio para el pensamiento crítico
- Los programadores quedan en una posición donde solo se enfocan en el cómo, rara vez participan en decidir qué construir y casi nunca pueden preguntar por qué se construye
- Incluso a los desarrolladores capaces de criticar los sistemas que producen y dispuestos a hacerlo, se les transmite que esa actitud debe quedarse fuera del trabajo
- El autor siente que al desarrollador se le prohíbe incluso identificar la falta de autonomía y creatividad inherente al puesto, y que tal vez pueda construir más, pero difícilmente pueda construir algo distinto o mejor
Una estructura donde aumenta la cantidad de código pero empeora el software
- La actitud do-more-ask-less de la industria tecnológica puede producir más código, pero al mismo tiempo lleva a software peor
- Incluso cuando el capital y las condiciones externas dejan margen para crear software sostenible, positivo o al menos útil en términos prácticos, muchas veces no se hace por pura inercia
- Seguir la moda y reproducir el estado actual es más fácil y por lo general más viable
- Esa misma inercia impregna todo el stack tecnológico sobre el que se levantan productos socialmente inútiles
- lenguajes
- bibliotecas
- frameworks
- patrones de código
- La preferencia por la novedad y los gimmicks por encima de la innovación real perjudica a toda la industria, y si no se resuelven problemas no convencionales, tampoco hace falta ingeniería no convencional
El criterio para la ingeniería que sí quiere hacer
- Los problemas de ingeniería más interesantes no son los que toman como fin el avance tecnológico en sí mismo ni los que intentan crear artificialmente una demanda de mercado inexistente, sino los que surgen de manera natural dentro de la sociedad
- La necesidad social es el mejor motor de la innovación, y los logros revolucionarios de la computación temprana también ocurrieron en busca de un bien público mayor
- La forma de trabajo que desea es una donde el por qué de construir un sistema guíe todos los cómos
- el lenguaje de programación
- el paradigma
- la arquitectura
- cada línea de código
- los elementos de sintaxis
- Ese “por qué” no debería reflejar métricas de negocio que existen por sí mismas, sino necesidades reales que efectivamente existen
Un pedido para encontrar personas con los mismos valores
- El autor dice que hasta ahora no ha conocido a nadie que comparta de manera significativa estos valores y que quiera hacer este tipo de trabajo de ingeniería
- En su interacción con la industria suele sentir aislamiento, pero está convencido de la importancia de sus valores de trabajo y de lo que tiene que decir
- Pide que, si existe alguien así, se ponga en contacto; quiere saber si ya existe un lugar así, y si no, cree que sería útil construirlo juntos
- Está abierto a trabajo de consultoría en sus áreas de interés siempre que se alinee razonablemente con sus valores
1 comentarios
Opiniones en Hacker News
Lo que no le gusta al OP no es tanto la “industria de la programación”, sino el mundo corporativo. He trabajado con desarrolladores cuyas expectativas sobre lo que la “realidad” exige de un desarrollador no coincidían, y yo también he estado en esa situación
A las empresas no les interesa la elegancia, la abstracción, ni el código ingenioso o bello. Quieren desarrolladores que produzcan funcionalidades según los requisitos del negocio
Las personas dentro del engranaje —gerentes, ejecutivos, colegas— pueden decir que te dejarán practicar el “arte” de la programación, pero si no aportas económicamente a la empresa, al final te tratarán como una carga
Es mejor buscar el placer y el arte de programar fuera de la empresa, y no esperar que la “industria” se preocupe por cómo o por qué se programa. Solo mira si conviertes los caracteres que tecleas en la pantalla en dinero. Si aceptas eso, la vida se vuelve mucho menos frustrante, y hasta puedes encontrar diversión en el trabajo. Aunque no necesariamente sea “arte”
Dicho eso, cuando dicen que “a las empresas no les interesa la elegancia, la abstracción, el ingenio ni el código bello”, me hace pensar si entonces yo soy el mundo corporativo
Lo que quiero decirles a mis colegas es: antes de intentar elegancia, abstracción, ingenio o belleza, primero hagan que funcione según la especificación. Si no, todo eso no vale nada
Solo después de volverse razonablemente buenos en hacer que funcione bien, pueden hacerlo correctamente y, tal vez, también hacerlo rápido
Incluso si conviertes en tu negocio algo que te gusta —por ejemplo, fabricar muebles—, habrá clientes que quieran algo “equivocado” o que no estén dispuestos a pagar materiales raros y mejores
Siempre es mejor hacer aquello que te gusta puramente como hobby, sin los elementos propios del trabajo
Te pagan para entregar. Si es eficiente, si resolvió el problema, si generó dinero o si marcó una casilla no es algo que me corresponda preocuparme ni controlar. Hay que planear el trabajo, hacerlo, tratar bien a la gente y salir a las 5
Eso no significa hacer las cosas a medias escribiendo mal código o no preocupándote por los efectos posteriores de tus decisiones. Hay gente a la que despiden por eso
Lo más importante es no pasarse. No intentes prever cómo evolucionará el producto y cubrir todos los escenarios, no trates de imponer un diseño que obviamente es mejor, no intentes entregar más rápido, y es mejor no ponerte a arreglar otros bugs que encuentres mientras haces tu tarea. Perseguir ascensos fue una de las peores fuentes de estrés que me impuse
Debes entender si el proyecto en el que estás es de alta intensidad, de alto crecimiento, maduro o está por ser recortado, y actuar en consecuencia
Y hay que tomar la pelota y hacerse visible. Haz una demo una vez por trimestre, revisa el código de otros, asiste a reuniones de diseño y haz preguntas, responde rápido los correos o mensajes que lleguen antes de las 5 p. m., y entrega lo que dijiste que ibas a hacer. Muéstrate como un recurso útil, pero ante la más mínima señal de presión por entregar, debes empujarla hacia atrás con acciones
Por último, conviene estar siempre preparado para tener la próxima entrevista en dos semanas
Un trabajo es solo un trabajo. No es una familia ni una agencia de colocación
Que las alas sigan pegadas durante el vuelo no mejora los indicadores clave de desempeño, así que acabas en una lógica de despedir a cualquiera que pierda tiempo en preocupaciones irrelevantes como esa
El objetivo implícito es volverse lo bastante popular como para llegar a un punto en que los programadores acuerden colectivamente que deben tener voz dentro del “mundo corporativo”. Por ejemplo, exigir que se reduzca la velocidad de “producir” nuevas funciones y se invierta más en la calidad del software
Trabajé como desarrollador durante más de 30 años, pero, lamentablemente, no hay mucho en el texto del OP que pueda refutar de forma contundente. Ojalá pudiera
A la gente joven se le enseña que crear tecnología y software es una actividad creativa donde puede desplegar una pasión innata. Este trabajo atrae a cierto tipo de mentalidad, gente a la que le llaman la atención los símbolos, las abstracciones y las actividades repetitivas. Pasan los años y los accionistas engordan
La verdad es que el desarrollo de software es casi por completo una actividad económica, y además tiene un carácter explotador. El entorno de trabajo ciertamente es mejor que extraer oro o bauxita, pero casi todos estamos picando vetas de código para enriquecer a otros. Me refiero a la gente en las oficinas de la esquina, y a los que están por encima de ellos y tienen yates
A ellos no les importa lo que hacemos, ni nuestra pretensión de verlo como arte o artesanía, ni lo que nosotros creemos que es importante. En realidad, la mayoría piensa que somos perdedores que pierden el tiempo https://ribbonfarm.wpenginepowered.com/wp-content/uploads/2009/10/hughMcLeodCompanyHierarchy.jpg
Como dijeron otros aquí, el error fundamental está en intentar encontrar sentido en el trabajo corporativo. Pero las personas necesitan sentido, y como tenemos que dedicarle demasiado tiempo de nuestra única vida al trabajo, no hay muchas alternativas. No sé cuál es la respuesta
Hay al menos dos tipos de personas que ven a la “clase baja” del software como perdedores
Unos creen que el trabajo requiere habilidad, que los trabajadores tienen una experiencia valiosa y que vale la pena escucharlos. Aun así, los ven como perdedores porque no son más que mercancía asalariada, no verdaderos jugadores que, como ellos, son “la persona más inteligente de la sala” o “líderes” y reciben grandes recompensas
Otros creen que el trabajo de software es una tarea rutinaria de baja calificación, que los trabajadores son un mal necesario temporal y que son arrogantes y no saben cuál es su lugar cuando se trata de compensación y lealtad. Consideran que sus opiniones no tienen valor. Por supuesto, en el mundo de los negocios, como los trabajadores de software no pueden moverse como jugadores de verdad ni obtener ganancias personales, los consideran perdedores
La segunda situación es mucho peor
Si lo que construyo enriquece a otros, está bien. Significa que lo que hice tiene valor. Quiero que todo lo que hago tenga valor
Espero que algún día, cuando haya practicado y aprendido lo suficiente, y acumulado experiencia y ahorros, pueda contratar a otros de forma responsable
Si tengo una buena idea y la ejecuto bien, existe la posibilidad de que yo también tenga ese yate. A eso lo llamamos incentivo económico, o motivación
Creo que “la dirección hacia la que va la industria” ha sido, desde hace tiempo, un proceso de infiltración de estafadores. El valor que se puede crear escribiendo software es enorme, y los salarios altos de la industria tecnológica lo reflejan. Esa riqueza atrae a todo tipo de estafadores
Esto se ve con mayor claridad en el juego del gato y el ratón de contratar ingenieros calificados. La proporción entre la parte superior y la inferior del embudo de reclutamiento está más alta que nunca
De forma menos evidente, surgieron roles enteros de “estafadores”, como product managers y scrum masters. Una vez adentro, cuanto más numerosos son, más seguros están, así que traen a más
Las personas inteligentes que podrían innovar ahora tienen que llevar de la mano a personas incompetentes a través de los procesos de creatividad, innovación, investigación, descubrimiento e ingeniería. Porque esas personas incompetentes muchas veces tienen la decisión final sobre en qué usarán su tiempo las personas inteligentes
Si alguna vez estuviste en una reunión donde los ingenieros ya sabían en los primeros 10 minutos cómo resolver el problema del cliente, y luego los product managers se turnaban para ser llevados de la mano hasta llegar a la misma conclusión, eso es exactamente esto
Aparecen problemas de rendimiento, agujeros de seguridad, falta de observabilidad, mala escalabilidad y problemas absurdos de configuración o dependencias
Las empresas FAANG, en particular, están llenas de esta basura. Código escrito para “posts de autobombo” con miras a ascensos, y que luego queda básicamente abandonado cuando la gente se va a otro lado antes de que se noten los atajos baratos
La labia pulida se volvió una habilidad más valiosa para un ingeniero de software que un diseño sólido, y los resultados se ven por todas partes
Después de hacer desarrollo de software empresarial durante más de 10 años, ya no me importa el resultado ni hacia dónde va este circo
Lo único que me importa ahora es el sueldo ridículamente alto que llega a mi cuenta
A esto lo llamo desarrollo de preocuparse exactamente lo necesario ahora para no tener que preocuparse mucho después
Pasé 40 años como programador, pero siempre busqué maneras de usar la creatividad y la imaginación, y traté de no convertirme en alguien que solo teclea código mecánicamente
En mi último trabajo lideré un equipo pequeño y creamos código estratégicamente importante, con éxito. Si ese código no funcionaba todo el tiempo, cada día se enojaban 100 mil personas, y también aparecía una fila de ejecutivos furiosos
Al final me cansé de trabajar demasiado duro y decidí jubilarme
Si el trabajo no te motiva, tienes que encontrar una nueva forma o un nuevo lugar para ser programador. Por ejemplo, iniciar tu propia empresa o probar algo nuevo. O si no, buscar otra profesión
Reinventarse no es fácil, y hoy es mucho más difícil, pero si lo quieres lo suficiente, se puede
Incluso cuando trabajo para los amos corporativos, programar me da energía. No me cansa convencer a las máquinas de que hagan lo que quiero. Podría hacerlo todo el día sin agotarme.
En las raras épocas en que hace falta programar mucho, a veces me doy cuenta después de que pasé 15 horas seguidas sin notar el tiempo. Llevo casi 20 años así.
Por desgracia, programar es solo una pequeña parte del trabajo. Mientras más avanza mi carrera, más evidente se vuelve. A veces el tiempo real de codificación es apenas una o dos horas por semana.
El resto se va en reuniones ridículas, llevar de la mano a gente que no lee, convencer a otros de que convenzan a las máquinas como hace falta, “planificación” y ruidos parecidos. La única parte gratificante es mentorear a programadores jóvenes.
Sigo porque es un camino seguro hacia la jubilación y ya casi llego. Mi plan después de jubilarme es programar lo que quiera construir, por puro gusto.
Creo que parte del problema es que muchos desarrolladores quieren trabajar en proyectos significativos y con buena gente, manteniendo al mismo tiempo el nivel de sueldo que reciben hoy en $FAANG o el nivel de equity que recibirían en $STARTUP.
En la práctica, los empleados tratan el sentido, la autonomía, la iniciativa y el equilibrio entre vida y trabajo como una moneda, e incluso aceptan recortes salariales para conseguir trabajo con sentido.
Existen mejores empleos. Yo encontré uno. Pero si ahora trabajas en una empresa de ad tech o en una startup de IA, casi seguro tienes que prepararte para ver sueldos mucho más bajos que los que conoces.
Crecí en una familia de bajos ingresos y, ya de adulto, varias veces viví con muy poco dinero, así que me resulta natural. En cierto sentido, casi lo prefiero.
Mi salud mental se ve amenazada más fácilmente por el exceso de estrés o la falta de sentido que por un presupuesto ajustado.
Seguir en un trabajo que no se siente nada positivo —o peor, que solo provoca emociones negativas— solo tiene sentido cuando hay un plan muy concreto para el dinero extra que se gana y una probabilidad muy alta de ejecutar ese plan.
Esta forma de vida no es para todos, pero se la recomiendo mucho a cualquiera que sea menos materialista que el promedio o que no le tema a vivir de manera más austera. Sobre todo si últimamente te preguntas al menos una vez por semana cuánto tiempo más podrás aguantar “este buen trabajo” sin derrumbarte.
Con las herramientas que creamos, las personas que construyen cosas reales pueden trabajar de forma más segura y eficiente. Ver cómo se levantan proyectos tangibles y sorprendentes es realmente genial.
Como se dice, la compensación en FAANG es mucho más alta, pero me gusta muchísimo donde trabajo ahora, y es el primer lugar en mucho tiempo donde no siento el impulso de buscar otra cosa después de unos años.
La mayoría no puede pagar grandes sueldos. Necesitan gente interesada y muy automotivada. También hace falta estar dispuesto a ser flexible de varias maneras, y en una empresa pequeña muchas más cosas son negociables.
Estas empresas no aparecen fácilmente frente a ti: hay que salir a buscarlas.
La solución es volverse independiente, crear tus propias ideas y venderlas a consumidores. Puede ser tu propia startup, pero en mi caso fue convertirme en desarrollador indie de videojuegos.
Uno de mis juegos, YOYOZO, fue elegido por Ars Technica como uno de los “Best Video Games of 2023”, así que siento que mi decisión fue la correcta.
Es como que te guste el sexo pero no quieras ser prostituta. Hagas lo que hagas, si no lo haces bajo tus propias condiciones, puede volverte miserable.
Siento algo parecido con LeetCode.
Me gusta la ingeniería de software, pero LeetCode hace que odie la ingeniería de software.
Solo quiero construir cosas geniales. No quiero memorizar e implementar en 40 minutos un caché LRU u otro problema intermedio-avanzado de LeetCode.
Claro, habrá empresas que por eso no quieran hablar conmigo, pero está bien. De todos modos nunca he pasado una entrevista de ese tipo, y siempre he tenido que conseguir trabajos donde no hiciera live coding durante la entrevista.
La expectativa, en la práctica, es memorizar perfectamente la solución óptima. Y probablemente esa solución óptima la encontró alguien con nivel de doctorado investigando algoritmos.
Al final, solo terminas implementando un endpoint para un CRUD con 1.000 usuarios activos mensuales.