10 lecciones de ingeniería de 6 años en Intercom

Publicado: 2024-02-03

Después de más de seis años increíbles, en tres funciones y en tres grupos de productos diferentes, dejo Intercom por una oportunidad completamente nueva.

Como hemos escrito extensamente en el pasado, Intercom tiene una cultura de ingeniería y producto única, por lo que aquí está mi intento de reflexionar sobre la cultura y resumir las principales lecciones de mi tiempo aquí. Espero que estos conocimientos resulten valiosos para otros ingenieros y gerentes de ingeniería.

Y si está interesado en trabajar en problemas difíciles con personas excelentes, asegúrese de consultar la página de carreras de Intercom para ver si hay un puesto para usted; no se arrepentirá.

1. Apostar sólo al futuro es como acortar el presente y conlleva un coste de oportunidad

Intercom es una empresa extremadamente innovadora y nuestro liderazgo senior es excelente al tener una gran visión de las tendencias que causarán sensación en el mercado. Pero apostar sólo por eso, construir sólo para el futuro, es como acortar el presente y, por tanto, conlleva un coste de oportunidad. En Intercom, tal vez tuvimos ese problema con los correos electrónicos y el teléfono: durante años estuvimos seguros de que estos canales estaban muriendo, solo para darnos cuenta año tras año de que no se estaban reduciendo en absoluto. Lo encuentro un modelo mental útil cuando piensas en las tendencias futuras: ¿estarías en corto en el presente y estarías dispuesto a pagar más si continúas equivocándote?

2. Todo desarrollador necesita tener IA en su caja de herramientas

Cuando trabajamos en Fin, nuestro equipo de IA fue fundamental para que funcionara, no podríamos hacerlo como equipo de producto. Sin embargo, a medida que pasa el tiempo, nuestros equipos de producto han integrado cada vez más funciones excelentes en ese sistema. Es posible que el impulso inicial requiera especialización, pero es importante exponer la IA a su organización lo antes posible. Otro ingeniero compartió conmigo esta anécdota: allá por 2008, las empresas tenían equipos completos que hacían “diseño móvil”. Sólo unos años más tarde era parte del trabajo de todos.

3. Los monolitos pueden escalar muy bien, brindar seguridad de implementación sólida y un alto aprovechamiento de la experiencia y observabilidad de los desarrolladores.

Sigo sorprendiéndome de lo bien que el monolito Intercom Rails escaló a lo largo de los años. Las decisiones de ingeniería excepcionales, el mantenimiento de la sencillez, la gran influencia que tiene nuestro único equipo con experiencia en desarrolladores y el apego a tecnologías de nube comprobadas nos ayudaron a afrontar el crecimiento muy bien.

"Monolith es algo que mantiene nuestra capacidad de realizar envíos muy rápido y con mucha frecuencia"

Monolith también es algo que mantiene nuestra capacidad de realizar envíos muy rápido, muy a menudo (al preocuparse por cosas como reversiones rápidas o CI rápida). En comparación, descubrimos que era difícil trabajar con algunos servicios de nuestra propiedad: los equipos debían ralentizarse manteniendo sus propias dependencias, canales de implementación o actualizaciones de infraestructura. Nunca trabajé en arquitectura de microservicios profesional y de alta escala, pero no puedo esperar a conocer las ventajas y desventajas que existen.

4. La frecuencia con la que realiza los envíos es fundamental. son los latidos de tu corazón

Es posible que no lo envíe a los clientes, pero siempre hay una manera de enviarlo a producción de forma segura. Si no lo encuentras, sigue buscando. Desarrolla músculos para acelerar aún más cuando sea necesario y evita que pierdas la impaciencia culturalmente. Muestre el progreso, idealmente en una demostración periódica para toda la empresa.

5. Cree muchos modelos de sistemas y modelos mentales, y aplique diferentes capas de abstracción.

Mirar el mismo problema desde diferentes ángulos realmente amplía sus horizontes y genera alineación. En Intercom aprendí que la mejor reunión comienza cuando alguien levanta el marcador. Los modelos de sistemas, creados en el momento, adaptados, evolucionados a medida que hablas, todo esto realmente ayuda a mejorar tu comprensión del problema, sus complejidades y dependencias.

“Los modelos mentales compartidos son muy útiles para avanzar rápido”

Escríbelos, muéstralos en tu próxima conversación, pide el modelo mental de otra persona. Hacer este trabajo junto con sus socios y partes interesadas acelera la rapidez con la que colabora y elimina la desalineación. Los modelos mentales compartidos son muy útiles para avanzar rápido.

6. Poseer y conocer tus datos, sin excusas

En el pasado tuve muchas excusas para comprender los datos de los productos sin la ayuda de un analista de datos para elaborar consultas y técnicas de análisis. No tengo piedad de mí mismo desde ChatGPT. La calidad y confianza con la que puedo navegar por el espacio de mi producto sin un analista dedicado ha aumentado dramáticamente y espero que todos, al menos un poco técnicos, puedan hacerlo ahora.

7. La gestión de datos está evolucionando, es dolorosa y es difícil encontrar una solución milagrosa.

Poseíamos una plataforma de datos relativamente flexible y ampliamente utilizada. Fue el área de producto con mayor cantidad de comentarios. Pero lograr un impacto en este espacio fue muy difícil. El mercado está evolucionando rápidamente, con nuevos enfoques como ETL, ETL inversos, integraciones puntuales y CDP. Su base de clientes se distribuirá en múltiples "mejores formas de administrar sus datos" diferentes.

"Para ver cambios y mejoras significativos en la gestión de datos, todo es cuestión de estrategia y coherencia"

Y debido a eso, nunca hubo un solo problema: siempre ha habido largas listas de problemas, similares en algunas formas pero diferentes. Para ver cambios y mejoras significativos en la gestión de datos, todo es cuestión de estrategia y coherencia. Pequeñas inversiones aquí y allá rara vez funcionan.

8. Las integraciones de datos se vuelven más complejas cuanto más te sumerges en ellas.

Aprendí a nunca subestimar las integraciones entre sistemas. Desde la distancia, siempre suenan relativamente fáciles: si es así, sincroniza objetos en el sistema A con los mismos objetos en el sistema B. Pero cuanto más te acercas, más diferencias descubres. Pequeños matices, límites de tasa API, condiciones de carrera, reintentos y falta de idempotencia, y muchos ángulos más. El diablo siempre está en los detalles, y los trabajos que sus clientes intentan lograr con estas integraciones suelen ser similares pero fundamentalmente únicos. Las integraciones son súper complejas cuanto más profundas son y no las subestimes.

9. Crear integraciones fáciles de adoptar elimina la fricción, pero reduce el TAM.

Las integraciones más fáciles de usar son capas de abstracciones además de capacidades centrales (como API o bloques iPaaS). Eliminan mucha fricción y generalmente funcionan desde el primer momento. De lo que me di cuenta a lo largo de los años es que crear integraciones ampliamente adoptables es muy difícil, ya que cada empresa tiene necesidades y configuraciones únicas y su propio desorden interno de TI para navegar.

La creación de estas abstracciones facilita su adopción, pero reduce significativamente el TAM, lo que puede terminar con una menor cantidad de clientes usándolas en comparación con una versión más compleja pero poderosa.

10. La IA cambiará fundamentalmente la forma en que construimos integraciones

Sin embargo, creo que se desarrollará de manera diferente para las integraciones deterministas de gran volumen y para las integraciones dinámicas no predecibles. Las experiencias de copiloto acelerarán drásticamente a los usuarios de herramientas iPaaS como Zapier o Workato y, al mismo tiempo, crearán una automatización de procesos repetible, predecible y de gran volumen.

"Los agentes de IA eliminarán la necesidad de crear integraciones en actividades activadas por humanos"

Esto las acelerará, manteniendo al mismo tiempo la confiabilidad actual y, en última instancia, el comportamiento determinista de estas integraciones. Los agentes de IA que puedan razonar sobre qué herramientas usar y adaptarse a entradas dinámicas e impredecibles eliminarán la necesidad de crear integraciones (fuera de las capacidades de API) en actividades activadas por humanos como informes, exploración de datos o solicitud de ayuda.

Lecciones para la vida

La experiencia de trabajar en Intercom siempre determinará mi forma de abordar la ingeniería y la gestión durante el resto de mi carrera. Quiero agradecer enormemente a todas las personas con las que trabajé y que me ayudaron a formar estas lecciones a lo largo de los años. Intercom es una empresa verdaderamente especial.

Si desea mantenerse al día con los escritos de Kuba, puede ver más reflexiones sobre la gestión de ingeniería aquí.

Carreras CTA - Ingeniería (horizontal)