Por qué a los equipos de ingeniería les encanta Slack (y por qué el tuyo también caerá rendido a sus pies)

El centro de colaboración flexible para la ingeniería de software.

Vaya, cómo pasa el tiempo

En 2009, éramos un pequeño equipo de ingenieros de programas que trabajábamos para crear un juego multijugador masivo llamado Glitch.

Empezamos a utilizar el servicio Internet Relay Chat (¿te acuerdas del IRC?) para coordinarnos entre nosotros. A medida que avanzaba el trabajo del juego, deseábamos que nuestro canal de IRC sirviera para algo más que solo comunicación básica. Así que comenzamos a hacer algunos ajustes, agregamos funciones y creamos nuevas formas de agilizar las tareas.

Finalmente el juego no tuvo éxito, por lo que decidimos centrarnos en este nuevo método de colaboración que habíamos desarrollado.

Fue una sabia decisión, ya que teníamos entre manos un producto perfecto para el mercado: un método verdaderamente eficaz para que los equipos trabajen juntos.

Quizá se deba a que no estábamos intentando "diseñar" nada. No hubo egos, ni especulaciones sobre posibles usuarios de un producto. Nosotros éramos los usuarios.

Así nació Slack.

Actualmente, ha crecido más de lo que podríamos haber imaginado, y la principal causa es la adopción por parte de equipos de desarrollo de todos los tamaños.

Es verdad que Slack se usa en prácticamente todos los departamentos y disciplinas, pero todo comenzó con la ingeniería de software. Y esa sigue siendo la razón de gran parte del entusiasmo de los usuarios, un entusiasmo que nos dibuja una sonrisa en el rostro al venir a trabajar.

Es enormemente gratificante saber que creamos una herramienta que tiene un impacto directo en el trabajo diario de los desarrolladores.

Este libro electrónico es una introducción rápida a algunas de las formas en que Slack ayuda a los desarrolladores.

Esperamos que sirva para explicar el motivo por el cual los ingenieros de software adoran Slack.

Por qué Slack se adapta tan bien a la ingeniería de software

Todos los días, equipos no técnicos de todos los tipos usan Slack. Pareciera que se adapta de forma orgánica al trabajo para el que se usa.

Sin embargo, Slack se ajusta a la ingeniería de software como anillo al dedo. Al fin y al cabo, es un tipo de trabajo muy especializado.

Si lo meditas, todos los tipos de trabajo se parecen cada vez más a esto, aunque la ingeniería de software es el ejemplo de uso ideal. Requiere un tipo de colaboración que simplemente no puede lograrse con correos electrónicos y reuniones en persona. Este tipo de trabajo necesita un nuevo tipo de colaboración.

El centro de colaboración flexible: un nuevo concepto

Los empleados que nunca han usado Slack piensan que es una aplicación de mensajería, pero es mucho más que eso. De hecho, es algo totalmente nuevo que antes no existía.

Decidimos llamarlo "centro de colaboración flexible" porque se adapta a la forma de trabajar de los distintos equipos, a sus opciones actuales de software... y también al cambio.

Un centro de colaboración flexible combina tres cosas en una misma herramienta

  • Mensajería basada en canales

Esto permite que los equipos creen canales dedicados a tareas, proyectos o problemas específicos. Por ejemplo, un canal #desarrollo-sitio-nuevo en el que todos los desarrolladores se reúnen para trabajar en un nuevo sitio web. O un canal #triaje-aplic-móvil en el que los equipos colaboran para eliminar los errores de una aplicación para dispositivos móviles.

Los canales son mucho mejores que los mensajes individuales o las conversaciones de correo electrónico privadas, ya que facilitan la participación de las personas adecuadas en los temas correspondientes y en el momento justo.

  • Una base de conocimiento para búsquedas

Un único lugar en el que todos pueden encontrar documentos, conversaciones y decisiones importantes, tales como las especificaciones de un producto o las discusiones en torno a una nueva función.

Normalmente, los archivos adjuntos de correo electrónico solo son accesibles para los destinatarios del mensaje. El conocimiento tiene valor solo si se puede consultar.

  • Una capa de integración

Un lugar en el que el software que tus empleados utilizan la mayor parte del tiempo (como GitHub, Jira, Jenkins y Trello) se integra allí donde se debate el trabajo todos los días.

De esta forma, se reducen los cambios entre las distintas aplicaciones. En lugar de obligar a los empleados a ir a las aplicaciones, llévalas hacia ellos.

Nota: Cuando estos tres elementos se reúnen en un mismo lugar, todos se vuelven mucho más eficaces. El centro de colaboración es mucho mejor que la suma de sus partes.

Ventajas para los equipos de ingeniería de software

El centro de colaboración adecuado influye directamente en los aspectos de mayor importancia para todos los equipos de ingeniería: un mejor código que se entrega más rápido, una eliminación de errores más eficaz y una mejor experiencia de desarrollador (para que tus talentosos empleados estén satisfechos). Cualquier software que te ayude a conseguir todo esto merece que le eches un vistazo.

Slack es una plataforma dinámica de documentación, y todo en ella es consultable.

Malika Rajvanshy,ingeniera sénior, Slack

IDC nos ayudó a respaldar nuestras afirmaciones con cifras: los equipos de ingeniería usan Slack para ser más productivos.

¿De qué forma optimiza Slack todo el proceso de desarrollo de software?

Sin duda, somos uno de los usuarios de Slack más avanzados en cuanto al desarrollo de software, ya que todos nuestros equipos de desarrollo usan la plataforma. Aun así, todos los días nos enteramos de nuevos ejemplos de uso y aplicaciones e integraciones interesantes que están usando los equipos de software.

Analicemos algunos de ellos, organizados según la etapa en el ciclo de desarrollo de software.

Plan

Slack ayuda a que los gerentes de productos, los diseñadores y los ingenieros lleguen a acuerdos sobre lo que van a crear y por qué.

Información del canal
Hilo de Slack donde se analiza el formulario de comentarios para los usuarios en la
  • Comienza todo el proceso con un solo canal para una función o un producto nuevos

Quizá podrías llamarlo #función-nueva-aplicación.

Así, todas las partes tienen un lugar específico para definir el proyecto, reunir los requisitos de las funciones, debatir alternativas y hacer llamadas importantes sobre la funcionalidad y la experiencia del usuario.

  • Al compartir documentos aquí, permites que todo el mundo los consulte

Para todos los colaboradores y para los recién llegados. Slack se integra a la perfección con Documentos de Google, para que todos los documentos estén a un clic de distancia.

  • ¿Tienes alguna duda? Envíala al canal

Inicia una discusión y llega a acuerdos que todos pueden ver. Ahora existe un registro permanente.

Código

Slack ayuda a que los desarrolladores organicen todas las piezas de una gran base de código, de forma que se agiliza el desarrollo y se mejora la calidad.

Cuando llega el momento de programar, Slack se asegura de que todo el equipo trabaje junto:

  • Un canal #desarrollo-nombre-producto es el punto de partida para todo

Aquí se incluyen las tareas cotidianas de ingeniería y control de calidad, las solicitudes pull, las combinaciones de código, las revisiones del diseño, las reuniones diarias, los debates y más.

  • Una plataforma central para la revisión de código

Slack es compatible con todos los métodos para ramificar, combinar, revisar y publicar código, independientemente de si estás desarrollando en ramas de versión, ramas de función o un maestro combinado (o "merged master").

Las integraciones de Git (con GitHub, Bitbucket o el repositorio de tu elección) envían todas las alertas de cambios a Slack.

  • Un nuevo tipo de reunión

Las reuniones son una parte importante del desarrollo ágil, aunque no es necesario que sean en persona. Los equipos de desarrolladores usan Slack para las reuniones, ya sea todas las mañanas o cada semana, y solo tienen reuniones en persona cuando es realmente necesario (y para la mayoría de los desarrolladores, las mejores reuniones son las que se cancelan).

Las integraciones con software como Standuply envían a Slack informes de resumen de forma automática para que los equipos puedan compartir objetivos y tareas, analizar los parámetros empresariales, publicar notas sobre la reunión y supervisar el progreso y la satisfacción del equipo.

Integración de checkpoint en solicitud pull de publicación de Slack en canal

Fomenta la reutilización del código: La reutilización del código es un principio básico de los equipos de ingeniería eficaces, pero se convierte en un desafío cuando tienes a cientos de desarrolladores colaborando en muchos productos diferentes. Antes de escribir un código nuevo, los desarrolladores pueden buscar en todos los canales de Slack para ver si alguien más ya creó algo similar. Después, pueden preguntar en los canales adecuados: "¿Alguien hizo ya un selector de fechas?". No hace falta que vuelvas a inventar la rueda...

Crea y comparte código mediante fragmentos: Los fragmentos de código facilitan la tarea de compartir código, archivos de configuración y archivos de registro directamente en Slack. Tus compañeros pueden descargar los archivos, ver sus versiones sin formato y agregar comentarios.

Slack en acción

Espíritu de extensibilidad

Slack es un centro de colaboración. Esa es su gran virtud. No intenta hacer el trabajo de los software que ya usa tu equipo, como Trello, GitHub o Jenkins.

En su lugar, Slack simplemente reúne a todas esas aplicaciones distintas y transmite la información pertinente de esas aplicaciones en los canales donde se está conversando sobre el trabajo (e invita a realizar acciones en esas aplicaciones directamente desde Slack).

Cada vez que veo una integración de Slack, la activo. Aporta muchísimo valor y nos permite ahorrar muchísimos pasos extra en el proceso.

Thomas Lawless,ingeniero de software sénior, IBM

Estas integraciones ayudan a los desarrolladores a hacer lo que les encanta: crear sistemas que simplemente funcionan.

Los ejemplos que compartimos en este libro electrónico no son más que eso: ejemplos. Hay tantas formas de usar Slack como equipos de software que lo usan.

Prueba

Las pruebas están integradas en el proceso actual de desarrollo e implementación. Slack ofrece un enfoque de pruebas dinámico, colaborativo y transparente.

La integración continua ejecuta el paquete de pruebas en cada combinación con cada fragmento de código nuevo. Slack optimiza el proceso de muchas formas, tanto grandes como pequeñas:

  • Un canal #pruebas–función coordina el control de calidad

Permite que el equipo de control de calidad colabore con los desarrolladores en un foro abierto.

  • La integración con Jira automatiza los flujos de trabajo de las pruebas

Captura las incidencias desde Slack e incorpóralas al proceso de forma automática. Envía notificaciones personalizables de Jira a los canales. Asigna rápidamente las incidencias a tus empleados y ten la certeza de que se registraron en el lugar correcto.

Algunos equipos usan Slack para transferir automáticamente las solicitudes de cambios a un nuevo canal, lo que actualiza Trello o Asana al mismo tiempo.

  • Crea un canal para cada cliente

Con canales de pruebas dedicados para iOS, Android y web.

Comando de barra diagonal de Jira en Slack

Trabajo con Jenkins

Muchos equipos usan Jenkins como su servidor de integración continua. En poco tiempo, estos equipos idearon nuevas formas de integrar Jenkins con Slack para automatizar toda clase de tareas de desarrollo rutinarias.

Ejemplo: un equipo de software creó una integración de Slack personalizada que inicia un servidor de Jenkins en el que se ejecuta un paquete de pruebas grande cada vez que un desarrollador abre una solicitud pull.

Una vez que se ejecutan las pruebas, se envían notificaciones al canal de Slack correspondiente. Si el código no pasa la prueba, se envía una notificación al desarrollador.

Publicación

Slack ayuda a que el código pase a producción al automatizar los flujos de trabajo y las notificaciones.

La entrega continua siempre requiere de pequeñas publicaciones de código que se implementan periódicamente. Slack ayuda a que los equipos de ingeniería optimicen una parte de ese proceso.

Ejemplo: uno de nuestros equipos escribió una aplicación denominada Deploy Wizard que se integra con las operaciones y comunica el estado del código en un canal. Comienza con una etapa de "valor controlado" (una versión pequeña para detectar errores repentinos) y, después, se implementa en el 10 %, 25 %, 75 % y 100 % de la comunidad de usuarios.

Integración de Deploy Wizard en las actualizaciones provisorias de publicaciones de Slack

Deploy Wizard alerta a los desarrolladores y canales adecuados de Slack a medida que avanza la implementación. Todo el proceso lo llevan a cabo los encargados de implementación en servicio (ingenieros especializados que trabajan en turnos de tres horas).

Si los desarrolladores quieren probar su código en el entorno de ensayo, así lo especifican en la solicitud de combinación. La implementación se detendrá en la etapa de ensayo hasta que un desarrollador informe, en el canal de implementación, que ya probó el código.

Algunos equipos de desarrollo usan comandos de barra diagonal (como /implementar_nombredeproducto_ensayo) para desencadenar una implementación directamente desde Slack. Los mensajes automatizados informan si se realizó correctamente e incluyen un enlace para revisarla (o un botón para pasarla a producción).

Operaciones 

Los equipos de desarrolladores usan Slack para priorizar los tickets de incidencias, debatir los problemas y eliminar los errores.

  • Todas las incidencias pasan por el canal #triaje nombre-producto

Esto incluye los informes de atención al cliente (tanto manuales como mediante integraciones con herramientas como Zendesk).

  • Las integraciones reúnen todas las alertas en un mismo lugar

En vez de esperar que los desarrolladores revisen el correo electrónico o los paneles informativos, Slack se convierte en el lugar central en el que todas las alertas reciben respuesta de los profesionales adecuados.

Al recopilar los eventos de PagerDuty o los tickets de Asana, y publicarlos en los canales pertinentes, los tiempos de resolución disminuyen y se crea un registro de priorización. Los miembros de los equipos pueden colaborar al activar, ver, confirmar y resolver las incidencias directamente desde Slack.

De igual forma, Slack puede recuperar todas las alertas de portales web, transacciones, servidores y celulares desde New Relic, y enviarlas a un canal de Slack para una respuesta más rápida. Cualquiera que tenga curiosidad sobre la incidencia puede entrar al canal e informarse al respecto. De esta forma, se evita que los gerentes interrumpan a los responsables de solucionar las incidencias para obtener novedades constantes sobre cada tema. Ya todo está en el canal.

Los emojis y las reacciones emoji ayudan a priorizar los problemas y a activar flujos de trabajo

Las reacciones emoji son una forma eficaz de recopilar las respuestas de los miembros del equipo; además, son una forma de activar flujos de trabajo automatizados. Una aplicación las recopila para sumarlas, marcarlas y realizar las acciones pertinentes. Las incidencias abiertas (con el emoji de ojos, pero sin marca de verificación) se muestran en PagerDuty.

Un canal automatizado #decisiones: Algunos equipos usan el emoji de martillo para indicar que se tomó una decisión. Después, un bot envía todas estas decisiones al canal #decisiones, en el que la administración puede ver el flujo de decisiones y los miembros del equipo pueden realizar búsquedas fácilmente.

Creamos un bot que recopila estas marcas y nos informa sobre ellas en un canal dedicado.

El lado humano

Existe una gran demanda de ingenieros de software. Para conservar a tus talentosos profesionales, debes ofrecerles la mejor experiencia del empleado posible.

Y el software de colaboración adecuado puede ser un elemento crucial para lograrlo: ayuda a reducir los desacuerdos laborales, fomenta la transparencia, automatiza las tareas rutinarias y facilita la colaboración entre equipos.

Habla con cualquiera de los equipos de ingeniería de software que usan Slack.

Pídeles que te muestren cómo usan los canales, las aplicaciones y las integraciones.

Después, pregúntales qué harían sin ellos.

Incorporación de nuevos desarrolladores

Dos desarrolladores nuevos se unen al equipo. ¿Cómo agilizas su proceso de incorporación?

Método anterior: muchas reuniones de incorporación y un montón de hilos de correo reenviados que deben tratar de descifrar. Buena suerte con eso.

Método nuevo: invítalos al canal #desarrollo–nuevo–producto para que revisen las publicaciones fijadas con un pin, como:

  • Las especificaciones del producto
  • Las especificaciones técnicas
  • Los diseños

(Si son archivos de Documentos de Google, OneDrive o DropBox, siempre estarán actualizados).

También pueden consultar todas las conversaciones y decisiones anteriores, así como a las personas involucradas. Así se incorpora a un nuevo desarrollador.

Así usan Slack los ingenieros de software

Este fue nuestro recorrido rápido sobre cómo Slack ayuda a los equipos de software a optimizar, automatizar y agilizar su trabajo. Esperamos haber explicado bien los puntos más importantes:

  • Es algo nuevo: Un centro de colaboración flexible ayuda a los ingenieros a trabajar de nuevas formas. Es mucho más que una aplicación de mensajería.
  • Es muy flexible: Permite que tus equipos "adapten a gusto" los espacios de trabajo, los canales, las aplicaciones y las integraciones que reflejan sus hábitos de trabajo.
  • Ayuda a aprovechar mejor el software existente: Desde GitHub hasta Bitbucket, pasando por Jenkins, Jira, PagerDuty, New Relic, Zendesk... Sin importar qué usan tus equipos de desarrollo, productos, control de calidad y atención al cliente, usarán esas herramientas de forma más eficaz al colaborar en Slack.
  • Agrega valor a todas las etapas del ciclo de desarrollo: Desde la planificación hasta el desarrollo, pasando por la aplicación de pruebas, la operación, la implementación y la eliminación de errores.
  • A los ingenieros de software les encanta: Eso significa que adoptan la herramienta y extienden su uso con el tiempo (lo que genera más valor para la empresa).

Disponemos de lo que nos gusta llamar una 'canalización de entrega de principio a fin', que se inicia con el código fuente y recorre todo el proceso hasta la implementación de producción. Y ahora hemos integrado Slack en todas las etapas clave de ese proceso.

Thomas Lawless,ingeniero de software sénior,, IBM

Si quieres saber más, programa una demostración o pide a uno de nuestros desarrolladores que te dé un recorrido por nuestra instancia de Slack. Estamos orgullosos de ella.

    Notas al pie

    1. IDC research, The Business Value of Slack, 2017, sponsored by Slack

    ¿Te resultó útil este recurso?

    0/600

    ¡Genial!

    ¡Muchísimas gracias por tus comentarios!

    ¡Entendido!

    Gracias por tus comentarios.

    ¡Uy! Estamos teniendo dificultades. Por favor, inténtalo de nuevo más tarde.