Cosas que aprendí como ingeniero senior (2021)
(luminousmen.substack.com)- Un ingeniero de datos con 10 años de experiencia escribió, en estado de ebriedad, una reflexión honesta sobre carrera, tecnología, colegas y la vida; es una copia preservada de una publicación originalmente subida a Reddit r/ExperiencedDevs
- Más que el stack tecnológico en sí, importan las 10~20 ideas fundamentales de cada área, y el stack no es más que una herramienta para facilitar eso
- La forma más efectiva de crecer en la carrera es cambiar de trabajo, y no hay razón para quedarse en un empleo insatisfactorio
- El buen código es código que hasta un ingeniero junior puede entender, y el mejor código es el que no existe
- No conectes tu valor personal con la compensación o el nivel de puesto; la amabilidad y el esfuerzo terminan cambiando tanto tu carrera como tu vida a largo plazo
Estoy borracho y probablemente me voy a arrepentir, pero aquí va mi ranking etílico de las cosas que he aprendido como ingeniero durante los últimos 10 años.
- La mejor forma de hacer avanzar mi carrera fue cambiar de empresa
- El stack tecnológico no importa tanto — en datos hay como 15 patrones básicos, y en toda área hay entre 10 y 20 principios fundamentales; el stack es solo una herramienta para hacer eso más fácil, así que no te preocupes demasiado
- Si la gente recomienda cambiar de trabajo, es por algo — si no estás contento en tu trabajo, es hora de irte
- Hice muy buenos amigos para toda la vida en el trabajo, pero eso no tiene por qué ser requisito en todos los empleos — tuve trabajos donde fui feliz sin amigos, y trabajos donde tenía buenos amigos y aun así era infeliz
- Aprendí a ser lo suficientemente honesto con mi manager — sin pasarme, pero sí lo bastante como para mantener cierta autenticidad en el trabajo. ¿Peor escenario? ¿Que me despidan? En 2 semanas consigo otro trabajo
- Si te despiertan de guardia a las 2 a. m. más de una vez por trimestre, hay un problema serio, así que hay que arreglarlo o renunciar
sirviéndome otro trago
- Las cualidades de un buen manager se parecen mucho a las de un buen ingeniero
- Cuando empecé, me fascinaban la tecnología, la programación y las ciencias de la computación, pero ya pasé esa etapa
- El buen código es código que un ingeniero junior puede entender, el gran código es el que hasta alguien de primer curso de CS puede entender, y el mejor código es no tener código en absoluto
- La habilidad más subestimada para un ingeniero es la documentación — si alguien me enseñara de verdad a escribir buena documentación, le pagaría con gusto; incluso pagaría un curso de mil dólares si me garantizara que voy a poder escribir buenos docs
- Relacionado con eso, también es una gran habilidad saber escribir una buena propuesta de cambios
- Casi todas las guerras de religión (vim vs emacs, mac vs linux, etc.) no importan… excepto una. Ver más abajo
- Mientras más envejezco, más aprecio los lenguajes dinámicos. Sí, lo dije. Vengan por mí
- Si alguna vez sientes que eres la persona más inteligente del cuarto, es hora de irte
- No entiendo por qué a los desarrolladores full stack web les pagan tan poco — tienen que entender frontend, backend, compatibilidad de navegadores, redes, bases de datos, caché, diferencias entre web y móvil, y además los nuevos frameworks que salen sin parar. Deberían ganar por lo menos 500 mil dólares base
- Deberíamos contratar más practicantes — traen energía e ideas. Los mejores son los que saben preguntar y cuestionar
un sorbo
- Nunca conozcas a tus héroes — tomé un curso de 5 mil dólares de uno de mis héroes, y sí, es una gran persona, pero al final estaba improvisando igual que el resto
- El stack tecnológico sí importa — si piensas en un desarrollador Python vs uno C++, te imaginas cosas completamente distintas, porque ciertas herramientas están especializadas para ciertos trabajos. Si no sabes qué hacer, usa Java — no es un gran lenguaje, pero sirve decentemente para casi todo
- El mejor lenguaje de programación es Lisp. Hay que aprender Lisp
- El lenguaje más rentable para principiantes es SQL — ni siquiera necesitas los demás. Solo con SQL puedes ganar dinero. Encargado de nómina 50k → encargado de nómina que sabe SQL 90k. Godín promedio organizado 40k → si además sabe SQL, lo llaman PM y gana 150k
- Las pruebas importan, pero TDD es un culto
- Un empleo estable en el gobierno no es tan bueno como parece (al menos en etapa temprana/media de carrera) — 120k + prestaciones + pensión suena bien, pero terminas vendiéndole el alma a tecnología propietaria. Por algo el promedio de edad de los ingenieros ahí es 50+. No aplica a contratistas del gobierno
- Los reclutadores third-party son parásitos — pero si encuentras uno bueno, cultiva esa relación. Si alguien lleva más de 3 años como reclutador third-party, normalmente no es tan bueno; los buenos terminan pasándose a ser reclutadores de grandes empresas
- Las stock options son basura o te vuelven millonario — si la empresa no tiene más de 100 ingenieros, normalmente no valen nada
- Trabajar desde casa es lo máximo. Pero extraño la falta de pizarrón
- Nunca he trabajado en FAANG — no sé qué me pierdo, pero he entrevistado y contratado gente de FAANG y ellos tampoco parecen saber mucho más qué están haciendo
- Tu valor personal no tiene nada que ver ni debería tenerlo con tu compensación total — el capitalismo no es una buena métrica para medir tu valor como persona
- Los managers tienen muchísimo menos poder del que parece — si no despiden a alguien, muchas veces es porque no pueden
- Los títulos casi nunca importan — da igual si eres Principal Distinguished Staff Lead Engineer en cierta empresa. Lo que importa es qué hiciste y qué lograste
- Más sobre títulos: al inicio de la carrera (menos de 10 años), subir de nivel es bueno — crecen tus habilidades y responsabilidades. Más adelante, bajar de nivel puede convenir — ganas lo mismo y todavía puedes obtener aumentos al volver a ascender
- Aporta al máximo a tu 401k
- Sé amable con todo el mundo — no porque ayude a tu carrera (aunque sí ayuda), sino porque la amabilidad ya es una recompensa en sí misma
- Si en el último mes no has aprendido algo de un ingeniero junior o de un practicante, es que no estabas poniendo atención
Maldición, se acabó el vino.
- Vale la pena gastar dinero en clases, libros y conferencias — invertí en varias conferencias, cursos de 1.5k, muchos libros y suscripciones, y sí valió la pena. También ayuda a fingir mejor que sabes lo que haces
- En serio, ¿por qué a los desarrolladores web no les pagan más? ¡Saben de todo!
- El síndrome del túnel carpiano y los problemas de espalda no son broma — gasta mil dólares ya mismo en un buen equipo
- La persona más inteligente con la que trabajé tenía un doctorado en matemáticas — aprendí muchísimo de él. Ojalá le esté yendo bien
- La historia de una amiga muy cercana de la preparatoria — cuando corrió el rumor de que andábamos, empezó a ignorarme. Me dolió, pero no le guardo rencor, y yo debí haberlo manejado mejor
- En octavo grado quería terminar con mi novia, pero no se lo dije y empecé a ignorarla — fue algo realmente horrible. Perdón, Lena
- Lo mejor de ser ingeniero de software es poder conocer y hablar con personas que piensan los problemas de la misma manera. No el mismo hobby: la misma forma de pensar
- No hay suficientes mujeres en tecnología — animo y apoyo a las ingenieras dentro de la organización, pero no sé qué más debería hacer
- Lo mismo con los ingenieros negros
- Nunca he odiado una tecnología antes de conocerla a fondo — si la odias y al mismo tiempo igual se la puedes recomendar a un cliente, probablemente es una buena tecnología. Jenkins es terrible, pero recomendarlo no sería mala praxis profesional
- git es terrible, pero no hay opción — las herramientas GUI son el infierno y la línea de comandos es mejor. Solo hay que memorizar como 7 comandos; el resto se googlea
- Ya que soy ingeniero de datos, aquí va una lección de datos. No uses Pandas
- Tener analistas semi-técnicos en el equipo hace el trabajo más fácil — gente que entiende programación pero no ingeniería de software. Si ellos no lo entienden, el diseño está mal. He crecido más gracias a los analistas que gracias a los ingenieros más brillantes
- El modo oscuro duele cuando te fuerzan a volver al modo claro — por eso uso modo claro
- Lo que sé de seguridad es básicamente saber que no sé mucho de seguridad
Maldición, se acabó el vino.
- Un buen ingeniero sabe cuáles son las mejores prácticas; un ingeniero senior sabe cuándo romperlas
- Si estás en un entorno donde buscan echar culpas por bugs o incidentes, es hora de irte
- Las empresas progresistas, sobre todo startups, dicen “trae tu yo auténtico”, pero — ¿y si tu yo auténtico solo ve porno? Es importante mantener límites sanos entre trabajo y vida personal
- Me gusta tomar algo con colegas en el happy hour, pero prefiero pasar tiempo con mis hijos, mi familia y mis amigos
- El mejor ejemplo de liderazgo que he visto: un líder que asumió la culpa de un error que fue 100% suyo — por alguien así me metería al fuego
- En la misma línea, los mejores líderes no solo defienden su opinión, también explican otras opiniones en conflicto. Intento parecerme a ellos
- Manda al demonio los side projects — si te gustan, adelante; yo estoy demasiado ocupado escribiendo posts borracho en Reddit
- Los algoritmos y estructuras de datos importan — pero hasta cierto punto. Así como no le haces un examen de química orgánica a un farmacéutico en una entrevista, hay algo roto en el proceso de entrevistas de la industria
- Los ingenieros DevOps son realmente muy inteligentes. Al menos a ellos sí parece que les pagan más o menos como corresponde
- Más importante que hacer lo que amas es hacer algo que no odies
- Mientras más cerca estés del producto y más cerca del ingreso, más sientes que valoran tu trabajo — sin importar tu nivel técnico, incluso en las empresas más progresistas
- Linux sí importa — incluso si trabajas en Windows. ¿Por qué? Porque al final igual terminas usando Linux. Benditas esas horas del fin de semana instalando Arch por diversión
- Hay que desconfiar de buzzwords vagas como “big data” — he visto streaming de 10 mil filas cada 10 minutos con Spark/Kafka, y batch de mil millones de filas por hora con Python/MySQL; la etiqueta no significa nada
- Hay buenos trabajos fuera de Silicon Valley, pero muchos buenos trabajos sí están en Silicon Valley
Encontré cerveza. Sigamos.
Sobre los lenguajes de programación
- Empecé a usar un lenguaje que antes odiaba (C#) y, aunque todavía no me gusta, reconozco que es útil
- Dejé y luego retomé ese lenguaje (C#), y había mejorado muchísimo
- La mayor ventaja de los lenguajes funcionales es que las funciones son ciudadanos de primera clase, y que todos los programadores lo saben
- No importa qué tan elegante o superior sea un lenguaje si nadie lo usa
- Aprender un lenguaje no es difícil — lo difícil es aprender su ecosistema
Sobre los colegas
- La programación en pareja es excelente, pero consume mucho tiempo — y normalmente la empresa no quiere gastar ese tiempo
- Trabajar con ingenieros inteligentes te vuelve mejor programador. Trabajar con colegas inteligentes no técnicos te vuelve mejor ingeniero
- No trabajes fuera del horario 9 a 5 — salvo que haya un proyecto increíble y estés en estado de flow. Eso sí está buenísimo
- El 99% de los happy hours y tiempos sociales entre equipos es puro chisme. Pero el 1% termina siendo una conversación importante sobre código importante de un proyecto importante, y una vez evité un problema grande por sacar el tema del trabajo en un contexto social. No es que haya que socializar con otros equipos por obligación; más bien uno busca vínculo, y a veces eso trae efectos secundarios útiles
Sobre trabajar desde casa
- En un entorno mitad remoto/mitad oficina, hay que revisar si los empleados remotos están siendo tratados como ciudadanos de segunda — si las decisiones importantes se toman “mientras van por agua”, hay que cambiar la cultura de la empresa (difícil) o irse a otra empresa donde traten a los remotos como ciudadanos de primera
- La segunda peor desventaja del trabajo remoto es no tener pizarrón
- La peor desventaja del trabajo remoto es que es más difícil aprender de tus colegas — si no puedes hacer preguntas con confianza y si la cultura no trata al remoto como igual que al presencial, entonces durante los primeros 5 años de carrera habría sido mejor trabajar en oficina
Sobre la tecnología
- Todos sabemos que la tecnología cambia, pero aunque en los últimos 10 años ha cambiado muchísimo, los principios básicos no han cambiado tanto — sobre todo los principios fundamentales de cada área
- Hacker News y r/programming solo sirven para tener ideas generales y seguir tendencias; los comentarios son casi inútiles
- Hay muchos amateurs con opiniones fuertes, y lo mismo pasa con artículos en revistas y blogs “respetados” — está bien enterarse de los rumores, pero hay que juzgar por cuenta propia
- Trabajo en una startup de punta, pero no usamos la última tecnología XYZ que presentó la empresa ABC de punta — lo que presentan es una parte minúscula de su ingeniería; la mayor parte también usa tecnologías como las nuestras
- Aun así, hay que leer las señales — si quieres trabajar con tecnología moderna y tu empresa sigue construyendo principalmente sobre jQuery, ya es hora de reevaluar
Sobre ingeniería de datos
- Como soy ingeniero de datos, agrego algunos consejos/experiencias específicas de datos
- SQL es rey — MySQL, Postgres, Oracle, SQL Server y SQLite siguen siendo lo más fuerte. Aunque uses tecnología nueva, casi todo se transfiere
- La mayoría de las empresas no hace streaming — es difícil y complejo. Aunque tengas 10 años de experiencia y no puedas manejar 10 mil eventos por segundo, igual hay trabajo
- Airflow no es gran cosa, sí. Hay otras opciones, pero Airflow es la más usada
- Los proyectos de machine learning tienen muchas probabilidades de fracasar — son complejos y difíciles de implementar. ¿No me crees? Piensa qué tan fácil sería escribir unit tests para un modelo de ML
- Este campo todavía es nuevo — no hay buenos libros sobre ingeniería de datos, simplemente hay que hacerlo. Un bootcamp no basta. Quizá eso cambie en 10 años
Sobre la vida
- La gente muere — si quieres que tu legado sea código legacy, dedícale tiempo. Pero si, como yo, tu legado son tu familia, tus amigos y la gente a tu alrededor, entonces no te obsesiones demasiado con el código
- La gente buena, la gente inteligente y los buenos programadores también escriben mal código — no hagas de la calidad del código una variable dependiente de tu valor personal
- Cuando algo que empezó como hobby se convierte en trabajo, el hobby desaparece — acepta que la tecnología ya no es tu hobby y busca otro, o si quieres seguir disfrutándola, tendrás que dejar el trabajo
- La programación y CS son una disciplina de unos 80 años — comparado con otras ingenierías, todos seguimos medio improvisando
- Gano un dinero bastante bueno — sé agradecido, cuídalo y ahorra
Varios
- He creado plataformas y librerías grandes que varios equipos usaron durante años, pero el código del que me sentí más orgulloso fue un script pequeño que solo yo usaba
- El logro del que más orgulloso me siento en mi carrera es haber ayudado a otras personas a hacer mejor su trabajo — quizá porque nací para ser people manager, y tal vez a otros esto no les sirva
- Cuando buscaba trabajo, hice y actualicé LinkedIn, pero solo recibía respuestas malas y lo borré. Ahora busco candidatos por LinkedIn — está lleno de ruido, y solo vale la pena porque parte del trabajo consiste en contribuir a ese ruido
- En la universidad supe que le gustaba a una chica — no lo creía por mi baja autoestima, pero me invitó a salir. La rechacé con respeto, y el haber podido decir “no” con madurez a los 19 años sigue siendo uno de los momentos de mi vida que más orgullo me da
- r/cscareerquestions es un pantano de ego y desinformación — me dan ganas de sacudir a esa gente y explicarles cómo es el mundo real, pero no me creerían
Cómo me siento ahora
- Estoy borracho y normalmente no tomo, así que siento que todo lo que dije fue vergonzoso o terrible
- Siento fuertemente que la gente debería ahorrar e invertir — si ganas un salario de seis cifras, maximiza tu 401k
- Me convertí en eso que siempre odié — trabajo en tecnología, pero evito la tecnología en la vida real. Supongo que eso pasa con la edad
- r/ExperiencedDevs es una comunidad bastante buena. Gracias a los moderadores. Reciben mucho menos agradecimiento del que merecen
- Le debo mi carrera, mi salario y mi vida a Reddit — pasé de ganar salario mínimo en una gasolinera a aprender Linux, SQL, Python, C#, etc., y llegar hasta aquí. A Reddit lo critican mucho, pero sus comunidades ayudan a la gente a salir de la pobreza
- Los niños son geniales — yo no tengo hijos por elección. Amo a los niños, pero me da miedo el tipo de padre que sería. ¿Ya me puse demasiado personal en este post?
- Una vez alguien me preguntó a quién admiraba y respondí Conan O'Brien, y se rieron. Pero lo decía en serio — en su último programa de Tonight Show dijo: “sé amable y trabaja duro”, y escuché eso en un momento muy difícil de mi vida; como no tenía nada que perder, decidí hacerlo tal cual. Llevo más de 10 años siendo amable, y por eso conocí gente increíble; además, por trabajar duro e intentar cosas nuevas, mi vida mejoró infinitamente. Puede sonar ridículo decir que una comedia nocturna me dio plenitud en la vida, pero es mi vida, y diré sin vergüenza que cualquier éxito que haya tenido se lo debo a un comediante de late night TV
Estoy completamente borracho, así que ignoren todo lo que dije. Perdón por el rant larguísimo.
4 comentarios
¿El contenido del texto principal está un poco raro, no? Lo que debería aparecer reunido aparte como comentarios de Hacker News está metido en el cuerpo del texto... ¿cambió la dirección editorial?
Estos últimos días anduve inestable porque estaba mejorando los prompts. Ya lo corregí ;_;
Coincido con lo de ser
generalist. Yo también cuando era junior pensaba “debo convertirme en generalista”, peroOpiniones en Hacker News
Eso de que al trabajar en ingeniería de software uno conoce a personas con una forma de pensar parecida fue bastante distinto a mi experiencia. De cada 50 personas que conocí, apenas 1 daba la impresión de hacer este trabajo por espíritu artesano; la mayoría solo quería su 9-to-5, visibilidad y proyectos de impacto, sin compartir a fondo sus problemas e ideas
Eso de “conseguí trabajo nuevo en dos semanas” realmente se siente muy de esa época. En ese entonces el mercado estaba del lado de los empleados, así que todos andaban en modo experto
Coincidí por completo con la idea de “no conozcas a tus héroes; después de tomar un curso de 5 mil dólares, vi que esa persona también improvisaba igual que nosotros”
Sobre la idea de que la habilidad más subestimada en un ingeniero es documentar, yo agregaría que en la documentación, ante todo, hay que dejar claro el por qué. El código se puede leer, pero lo que quiero saber es por qué existe una función de 200 líneas como
invert_parameters, qué problema resolvía, por qué existía ese problema y cuánto tiempo se supone que este código va a seguir vivo. A veces hasta dejo comentarios de disculpa diciendo que se hizo así por presión de tiempo o por algún problema raro de upstream. Sobre todo en código que no es obvio, hay que dibujar la forma de pensar del momento para que sobreviva un contexto que no se ve solo leyendo el código. Ojalá tanto juniors como seniors hicieran esto más seguido en el trabajoSi alguien gana más de 100 mil dólares al año en sus 20, me parece realmente importante el consejo de llenar primero al máximo el 401k y el HSA, y luego también el IRA. También suena razonable la regla básica de ponerlo todo en un target date retirement fund y guardar entre 6 y 12 meses de gastos de vida en una high yield savings account. La idea era que si empiezas a los 23, podrías incluso retirarte a los 45; y que si lo dejas para después, podrías encontrarte con la realidad de llegar a los 45 y aún tener que trabajar otros 20 años
La lección más útil que aprendí fue que las restricciones que no elegí suelen llevarme a mejores decisiones de producto que las restricciones que me impongo a propósito. Tengo un acortador de enlaces corriendo en hosting compartido, sin SSH, con despliegue solo por FTP, y sin workers en background ni Redis. Cada vez que intenté meter una cola de verdad, WebSockets o una capa de caché, el hosting no lo soportaba, así que simplemente no lo hice. Por eso, las notificaciones de clics se envían con un cron que pega a un endpoint de PHP una vez por hora. No hay cola, ni lógica de reintentos, ni workers: o se envía o falla, y solo queda el resultado en logs. Después de seis meses de uso, funcionó bien. Si hubiera tenido un VPS desde el inicio, probablemente habría construido algo mucho más grande que todavía tendría que mantener; en cambio, el hosting compartido me marcó el límite de “te doy cron y base de datos”, y gracias a eso aprendí que con eso bastaba
Vi bastantes problemas en el texto original. Tomar vino solo me parece algo algo inusual; normalmente lo más típico sería whisky, vodka o cerveza. Una ortografía como ‘ever thing’ parecía más bien una idea desordenada de alguien ebrio, y hasta encajaba con esa atmósfera. Tampoco me parece que webdev represente al experto por excelencia, y el dark mode muchas veces se resuelve con una extensión del navegador. Ser farmacéutico es una profesión que requiere título, años de estudio, exámenes y química orgánica; y decir que los comentarios de HN no valen nada también me parece exagerado. Aunque algunos textos sean malísimos, muchas veces los comentarios son mejores que el post
Me vino a la mente un texto relacionado, de mayo de 2021: Drunk Post: Things I've Learned as a Sr Engineer. Era un post con 494 comentarios
Me sorprendió que esto fuera de 2021. Todo el ambiente alrededor de SQL o de cambiar de trabajo en dos semanas se sentía muy 2014
Sobre la frase “HN y r/programming sirven para captar ideas generales y tendencias recientes, pero los comentarios casi no valen nada”, yo casi dejé de leer comentarios después de que los moderadores de HN me pusieran rate limit. Como solo podía responder unas cuantas veces al día, ya no podía participar de verdad, y se me fueron quitando las ganas de leer. Como no era un ban directo sino una forma de bajarte la velocidad, se sentía de manera más sutil como si fueras un invitado no deseado. Me preocupaba estar perdiéndome mucho, pero terminé pensando que quizá no estaba tan mal cortar con ese impulso habitual de revisar comentarios