Alexa Serra  ·  July 22, 2022 




Desarrollo Agile De Aplicaciones: Diferencias Clave Entre Scrum Master Y Product Owner


Los equipos de desarrollo de aplicaciones modernos exitosos deben comprender el papel que desempeña cada uno de sus miembros en los procesos de desarrollo Agile.

Los equipos de desarrollo de aplicaciones modernos exitosos deben comprender el papel que desempeña cada uno de sus miembros en los procesos de desarrollo Agile. La colaboración entre las partes interesadas y los miembros del equipo es crucial y la forma en que contribuyen al éxito de un producto depende de qué tan bien se complementen sus diferencias entre sí.

Con la creciente popularidad de los productos móviles, el desarrollo de aplicaciones se está convirtiendo rápidamente en una de las profesiones más solicitadas del mundo. Este aumento en la demanda significa que los desarrolladores de aplicaciones ahora tienen mucho trabajo por delante, y la competencia ahora no es más que feroz. Sin embargo, el desarrollo de aplicaciones es un proceso muy complejo. Implica habilidades, experiencia y habilidades específicas, sin mencionar las largas horas y las innumerables noches de insomnio que se necesitan para entregar un producto exitoso. Por lo tanto, no debe tomarse a la ligera. Es un deporte de equipo en el que si quieres ganar el juego, debes tener un grupo de profesionales capaces de trabajar juntos para generar eficiencia, colaboración y comunicación. La mejor manera de hacerlo es trabajar con un enfoque confiable y eficiente para el desarrollo de aplicaciones. Por lo tanto, las empresas de desarrollo más innovadoras y relevantes han recurrido al enfoque de metodología Agile para automatizar, unificar y mejorar de manera efectiva todos los procesos de desarrollo de aplicaciones.

Para las empresas de desarrollo de aplicaciones, adoptar un enfoque Agile para el desarrollo de aplicaciones es una forma segura de administrar proyectos y optimizar los tiempos de desarrollo de manera eficiente. Implica la colaboración entre equipos y promueve la mejora continua en cada etapa del proceso de desarrollo. Sin embargo, si está trabajando bajo una metodología Agile, debe comprender que sus empleados deben tener muy claros sus roles dentro del flujo de trabajo para que puedan contribuir de manera efectiva al éxito general del producto. La importancia de diferenciar entre estos roles sale a la luz en la metodología Agile con la introducción de dos roles clave: Scrum Master y Product Owner. Desafortunadamente, estos dos roles muy diferentes a menudo se confunden y se usan indistintamente, lo que genera obstáculos en el proceso de desarrollo e incidentes de falta de comunicación que pueden obstaculizar el desarrollo de cualquier producto digital.

En Foonkey Monkey, decidimos resaltar las diferencias críticas entre el Scrum Master y el Product Owner para ayudarlo a evitar costosos errores y malentendidos. Pero antes de continuar, veamos de qué se trata Agile para establecer algo de contexto.

¿Qué es el desarrollo ágil?

¿Qué es el desarrollo ágil?

El enfoque Agile es un conjunto de metodologías de desarrollo que se centran en garantizar la colaboración constante entre los miembros del equipo y las partes interesadas para hacer cumplir la mejora continua durante el proceso de desarrollo. Además, ágil se basa en el principio de desarrollo iterativo, donde los requisitos y la salubridad de un producto giran en torno a equipos de desarrollo multifuncionales que trabajan en conjunto para lograr todos los objetivos y la propuesta de valor del producto de la manera más efectiva y eficiente posible. Como resultado, los equipos ágiles ideales son autosuficientes, autoorganizados y lo suficientemente disciplinados para garantizar un trabajo en equipo práctico y promover un proceso de gestión de proyectos disciplinado.

Agile se puede adaptar a innumerables entornos de trabajo e industrias, desde la construcción hasta la ingeniería. Se está volviendo tan popular que incluso industrias como el marketing y el diseño están comenzando a cosechar sus beneficios. Cuando se trata del desarrollo de aplicaciones móviles y la industria del desarrollo, Agile ha estado en el centro de las empresas más exitosas y eficientes de nuestra industria y está detrás de escena de los productos móviles y de software más populares que existen. De hecho, la adopción de Agile ha crecido tanto que mas del 70% de las empresas de desarrollo de apps ahora están trabajando bajo la metodología Agile, reportando una tasa de falla de solo el 9%. Además, los estudios han demostrado que los equipos ágiles tienen un 25 % más de éxito gracias a que tienen la capacidad de entregar software más rápido, ser más productivos, tener una mejor capacidad para administrar prioridades y producir productos de TI de mayor calidad. Y, dado que Agile se centra en el desarrollo iterativo y adaptativo, aumentando la participación del cliente y la gestión de riesgos receptiva, los productos Agile se alinean perfectamente con los requisitos de los clientes y las expectativas de los usuarios.

Pero te estarás preguntando: ¿dónde empezó todo? La metodología Agile proviene de los métodos, prácticas y 12 principios expresados en el Manifiesto de desarrollo de software ágil escrito en 2001 por 17 desarrolladores independientes. Crearon el Manifiesto Ágil basándose en su experiencia sobre qué elementos, flujos de trabajo y enfoques funcionan y cuáles no funcionan en el desarrollo de software. Desde sus inicios, y gracias a su universalidad, el Manifiesto Ágil original ha sido implementado por industrias y empresas tan dispares como profesionales de marketing, arquitectos y tropas de Boy Scouts.

Y gracias a su complejidad y variedad de aplicaciones, sus autores delinearon diferentes frameworks que los desarrolladores pueden usar: Scrum, Extreme Programming (XP), Feature-Driven Development (FDD), y Kanban. Sin embargo, para el propósito de este artículo, y porque lo hemos usado durante años y lo entendemos mejor que nadie, solo profundizaremos en lo que es Scrum y su alcance dentro del enfoque Agile. Vamos a ver.

¿Qué es Scrum?

¿Qué es Scrum?

Como se mencionó anteriormente, Scrum es un marco de metodología Agile basado en principios y valores que imponen un desarrollo iterativo y progresivo, lo que idealmente resulta en la entrega y sostenibilidad de software robusto y productos móviles. Scrum tiene como objetivo garantizar que los equipos de desarrollo multifuncionales trabajen juntos sin problemas para ofrecer las últimas versiones de productos digitales de forma continua y en ciclos cortos. Cada uno de estos equipos tiene todos los conocimientos y habilidades necesarios para construir y desarrollar piezas de funcionalidad desde la idea hasta la entrega, enfocándose en promover la visibilidad de todo el progreso del desarrollo. En ese sentido, los equipos Scrum trabajan bajo una agenda dinámica para dar vida a un producto con transparencia, inspección constante, rendición de cuentas y responsabilidad colectiva, y adaptación continua. Como resultado, Scrum respalda la retroalimentación rápida, la innovación, la rápida adaptación del producto, la mejora continua y una mayor tasa de satisfacción del cliente.

Al igual que un equipo de rugby, que inspiró su nombre, Scrum alienta a los equipos de desarrollo a trabajar en conjunto para aprender, organizar, analizar, comunicar y dar cuenta de todas las partes del proceso de desarrollo. Y, a diferencia de otras metodologías de desarrollo en las que los desarrolladores construyen un producto en una sola operación, Scrum divide los proyectos en partes, entregando varias iteraciones de un producto para enviar y promover un alto valor comercial en poco tiempo. Estas piezas o “trozos” se denominan sprints y forman iteraciones de Scrum, que generalmente consisten en sprints de dos a cuatro semanas.

Los sprints generalmente requieren una reunión de planificación al comienzo de cada sprint para que los miembros del equipo puedan establecer tareas y compromisos realistas para crear una acumulación de sprint o una lista de las funciones relacionadas con ese sprint específico. El equipo también crea una cartera de productos, generalmente escrita usando historias de usuarios, que determinan las características y funcionalidades que se deben agregar al producto para mejorarlo. Posteriormente, y durante la duración del sprint, se llevan a cabo reuniones diarias para garantizar que el proyecto se mantenga encaminado y para promover la rendición de cuentas, la responsabilidad y el trabajo en equipo. Finalmente, al final de cada sprint, los equipos tienen una retrospectiva donde reflexionan sobre cómo terminó el sprint, qué lograron y qué oportunidades de mejora quedan. El objetivo de cada sprint es proporcionar una variación completa del producto final que incluya las características más importantes y que pueda entregarse al cliente en cualquier momento que lo solicite. En ese sentido, cuando se necesiten más funciones, los equipos de desarrollo de Scrum pueden crearlas en sprints posteriores, incluirlas en el producto y adaptarlas según las solicitudes del cliente y los comentarios de los usuarios.

Los equipos Scrum se autoorganizan y, por lo general, no requieren una presencia de gobierno que los dirija y los jefes. Sin embargo, generalmente cuentan con el respaldo de tres roles específicos: Scrum Master, Product Owner y el equipo mismo. Este último es bastante sencillo y se refiere al grupo de desarrolladores que trabajan en un proyecto en particular. Un equipo Scrum generalmente consta de no más de nueve personas con habilidades de diseño, negocios y desarrollo que trabajan juntas y son conjuntamente responsables de la entrega del producto y el cumplimiento de los objetivos de cada sprint. Sin embargo, los roles de Scrum Master y Product Owner son otra historia. Ambos miembros del equipo trabajan en estrecha colaboración y ambos desempeñan un papel fundamental en el éxito de un proyecto Scrum. Aún así, estos dos roles difieren significativamente, y comprender estas diferencias puede determinar el éxito o el fracaso de un proyecto, que, lo adivinaste, es en lo que nos estamos sumergiendo en este momento.

El Scrum Master

El Scrum Master

El título del trabajo se explica por sí mismo: Scrum Master es el maestro de Scrum. Su principal responsabilidad es garantizar que el equipo se adhiera y siga el marco Scrum y respete todos los elementos que alberga. Como ya aprendimos, Scrum tiene un conjunto particular de roles, términos, componentes y rituales que los equipos de desarrollo Agile deben seguir. Además, el Scrum Master trabaja con cada miembro del equipo de desarrollo para asesorarlos y ayudarlos a navegar por el marco Scrum. En ese sentido, el Scrum Master es responsable de la efectividad del equipo. Sobre sus hombros recae qué tan bien el equipo comprende los requisitos de Scrum y qué tan bien aplican esa teoría a la práctica. Aún así, si bien un buen Scrum Master es el guardián del marco Scrum, también puede permanecer flexible y aprovechar todas las oportunidades para que su equipo aprenda y mejore.

El Product Owner

El Product Owner

El Product Owner es responsable de garantizar que el equipo de desarrollo siempre entregue productos de alto valor. Se especializan en agilizar las prioridades definiendo historias de usuarios y asegurándose de que satisfagan las necesidades de los usuarios mientras crean, administran y priorizan la acumulación de productos. El propietario del producto también es un experto en respaldar la integridad de las características y la funcionalidad del producto al guiar al equipo de desarrollo para discutir y analizar meticulosamente las decisiones y las implementaciones para garantizar que se alineen con los objetivos de la empresa y del cliente. También ayudan a guiar al equipo a establecer una lista de prioridades y características más importantes para evitar direcciones poco claras y prioridades conflictivas que pueden afectar la relación entre la empresa y el cliente.

Además, el Product Owner es la cara de la empresa ante el cliente. Representan tanto al cliente como al equipo de desarrollo, actuando como un puente entre ambos lados para ayudar a transmitir los requisitos y características que el equipo debe incluir en el siguiente lanzamiento del producto. También se comunican con todas las partes del lado comercial para pintar una imagen clara de las prioridades, necesidades, procesos comerciales y los valores más centrales orientados al cliente. En ese sentido, el Product Owner debe conocer y entender al cliente y sus necesidades y equilibrarlas con las necesidades del equipo y demás stakeholders de la empresa. Este equilibrio debe dar como resultado un objetivo de producto claro para desarrollar una visión del valor que el equipo de desarrollo debe entregar al cliente.

Entonces, ¿cuál es la diferencia?

Como dijimos, y como puede ver, ambos roles juegan un papel fundamental en la totalidad del marco Scrum. No obstante, los dos tienen diferencias críticas, y la importancia de establecer esas diferencias va más allá de la simple diferenciación teórica. Si se confunde, se usa incorrectamente o se intercambia, las consecuencias para el funcionamiento de todo el desarrollo de Scrum pueden ser nefastas. Pueden crear confusión, mala dirección y desajustes dentro del sistema y fragmentarlo.

Entonces, para ayudarlo a evitar malentendidos, estas son las principales diferencias entre Scrum Master y Product Owner.

Diferencia 1: Responsabilidades

1. Responsabilidades

Scrum Master

  • Coaching: El Scrum Master es el entrenador del equipo, simple y llanamente. Son responsables de garantizar la ejecución y alineación de todos los principios, prácticas y valores de Scrum. Ellos guían al equipo Scrum en el seguimiento de todos estos principios y toman todas las medidas necesarias para garantizar un desempeño óptimo bajo las pautas de Scrum. El Scrum Master puede realizar sesiones de coaching 1 a 1 o sesiones de equipo en las que se abordan los puntos débiles, las inquietudes, las dudas o cualquier problema que el equipo pueda tener para capacitarlos para que sigan siendo autoorganizados y autogestionados.

  • Facilitar eventos Scrum: El Scrum Master facilita las reuniones diarias de Scrum y standup, gestiona la planificación de sprint, las revisiones y la retrospectiva, y garantiza que estas actividades sean siempre productivas y orientadas a las prioridades.

  • Eliminar impedimentos: El Scrum Master se mantiene al tanto de cualquier obstáculo que pueda obstaculizar el flujo correcto del proceso de desarrollo. Ayudan al equipo a eliminar estos obstáculos y gestionarlos a través de mejoras en el flujo de trabajo.

  • Asegure el flujo de trabajo del equipo: Cuando el equipo Scrum no está floreciendo, el Scrum Master debe identificar el motivo y solucionarlo, ya sea por computadoras lentas, problemas con el termostato, malas habilidades de comunicación o miembros conflictivos. Un buen Scrum Master no evita hacer todo lo posible para ayudar a su equipo, incluso si eso significa hacer bromas o incluso preparar café y bocadillos para todos.

Product Owner

  • Asegurar la satisfacción del cliente: El propietario del producto se asegura de que los requisitos del cliente siempre se prioricen. Deben mantener una comunicación constante con todas las partes interesadas externas y transmitir sus necesidades al equipo Scrum para asegurarse de que siempre haya transparencia entre todas las partes. De esta manera, el proceso de desarrollo sigue siendo relevante y siempre ofrece el valor más alto.

  • Product backlog: El propietario del producto es responsable de crear, editar, administrar y mantener la cartera de pedidos del producto de acuerdo con las necesidades y requisitos del cliente. También son responsables de las historias de usuarios, épicas y otros elementos que ayudan a orientar al equipo con respecto a la visión del cliente.

  • Visión del producto: El propietario del producto debe traducir la visión del cliente al equipo de desarrollo y trabajar en estrecha colaboración con el Scrum Master para garantizar que el desarrollo del producto se alinee con esa visión. Si los objetivos y requisitos del cliente cambian, el propietario del producto debe comunicar esos cambios al equipo.

Diferencia 2: Habilidades

2. Habilidades

Scrum Master

  • Comunicación: El papel del Scrum Master se centra en las buenas habilidades de comunicación. Deben comunicarse diariamente con su equipo, las partes interesadas, el propietario del producto y muchas otras partes externas; por lo tanto, deben poseer habilidades impecables de escucha y comunicación para transmitir adecuadamente los requisitos, ideas, planes y modificaciones del proyecto.

  • Liderazgo: El Scrum Master es el líder de un equipo de desarrollo interfuncional, lo que significa que debe poseer las habilidades de liderazgo que le permitan cerrar las brechas entre el equipo y el cliente. También deben actuar como entrenadores y maestros de su escuadrón, impartiendo sus conocimientos sobre las habilidades y principios de Scrum. Además, deben tomar las medidas necesarias para mantener contento a su equipo y guiarlos para garantizar que completen con éxito todos los proyectos.

  • Experiencia: El Scrum Master debe poseer los conocimientos necesarios, tanto en gestión de proyectos como en Scrum, para abordar y resolver las cuestiones técnicas o teóricas que puedan surgir.

  • Habilidades blandas: Como líder de manada, el Scrum Master debe tener excelentes habilidades interpersonales. Debe ser un excelente comunicador y debe tener una empatía significativa hacia todas las partes interesadas y los miembros del equipo.

Product Owner

  • Entender a los usuarios: El propietario del producto debe tener un conocimiento profundo de los usuarios y el mercado del producto. Saber quiénes son los usuarios del producto, cómo se comportan, sus necesidades y su comportamiento es clave para desarrollar una visión desde el punto de vista del usuario final, una habilidad crucial para un Product Owner.

  • Conocimiento: El propietario del producto debe tener una comprensión clara de las especificaciones del producto, la hoja de ruta, los aspectos técnicos, la gestión de versiones y la acumulación. También deben estar muy versados ​​en la planificación, revisión y retrospectivas de sprints y deben comprender todos los entresijos de la metodología Scrum.

  • Comunicación: El Product Owner debe actuar como puente entre todas las partes interesadas y el equipo, lo que significa que debe tener excelentes habilidades de comunicación. También deben escuchar a todas las partes para garantizar que todas las fases de desarrollo se desarrollen según lo planeado y se puedan ajustar a medida que surjan modificaciones.

  • Buen juicio: El Product Owner debe comprender las necesidades y requisitos de todas las partes interesadas y su equipo y hacerlos compatibles para que todos puedan trabajar juntos. Como resultado, deben ser expertos en la resolución de conflictos y tener la capacidad de tomar las decisiones correctas, especialmente al desarrollar la cartera de productos.

Diferencia 3: Responsabilidad

3. Responsabilidad

Scrum Master

El Scrum Master es responsable de ayudar al equipo a seguir la metodología Scrum, lo que lleva al éxito y la finalización oportuna de todo el proyecto. Además, la calidad del proyecto y el informe y la comunicación del progreso del proyecto al propietario del producto también son responsabilidad del Scrum Master.

Product Owner

El Product Owner es responsable de crear y administrar la cartera de productos, lo que lleva a la finalización exitosa de todo el proyecto. Además, deben ser responsables de comunicar el progreso y las actualizaciones del proyecto al cliente y otras partes interesadas fuera del equipo y la empresa.

¿Son ambos roles necesarios para un proyecto exitoso?

¿Son ambos roles necesarios para un proyecto exitoso?

La respuesta corta es sí. Como ya aprendiste en este artículo, tanto el Scrum Master como el Product Owner tienen responsabilidades diferentes pero esenciales y juegan roles cruciales en el universo Agile. Y aunque no existe una regla establecida que establezca que todos los equipos de desarrollo DEBEN tener un Scrum Master y un Project Owner, nuestra experiencia nos dice que tenerlos puede mejorar significativamente el resultado de un proyecto y la calidad del producto. Por un lado, algunas empresas Agile tienden a pensar que no es necesario tener un Scrum Master ya que el equipo ya entiende los entresijos de Scrum y es consciente de cómo funciona y cómo hacerlo. ¿Entonces cuál es el punto? Ahorremos algo de dinero y no contratemos a un Scrum Master, ¿verdad? Mmmm… no del todo.

La verdad es que, si bien la mayoría de los equipos de desarrollo Agile son autoorganizados, autónomos y multifuncionales, aún necesitan la dirección y el entrenamiento que solo un Scrum Master puede brindar. Algunos equipos sin Scrum Master se quejan de que carecen de métodos de desarrollo orientados a objetivos y no pueden centrarse en la construcción iterativa. También suelen pelear y estar en desacuerdo sobre asuntos cruciales sin nadie que los ayude a navegar y solucionar tales conflictos. Además, sin un Scrum Master, existe un riesgo más significativo de interrupciones constantes, demoras y falta de comunicación con el propietario del proyecto, lo que probablemente conducirá a una relación rota con el cliente y las partes interesadas. Por lo tanto, el papel del Scrum Master es primordial para garantizar que el equipo tenga una dirección clara, funcione sin problemas bajo la metodología Scrum y tenga una vía de comunicación constante con el propietario del producto y las partes interesadas.

Por otro lado, el Product Owner impulsa la visión del producto. Son quienes comunican las necesidades de las partes interesadas al equipo y se aseguran de que la estrategia de desarrollo se alinee con el presupuesto, la visión y la intención tanto del cliente como de los usuarios. También actúan como puente entre el Scrum Master y el cliente. Además, conocen perfectamente al equipo y al cliente y, por lo tanto, tienen la capacidad de comprenderlos, sus industrias, el mercado y cómo opera su negocio. Por lo tanto, son los únicos que pueden expresar los detalles de los requisitos y las modificaciones que pueden ocurrirle al equipo. Sin un Product Owner, el equipo carecería de un enlace con la visión del cliente, y el producto resultante carecería de esencia y sería un completo fracaso.

¿Qué pasa si el Scrum Master y el Product Owner son la misma persona?

¿Qué pasa si el Scrum Master y el Product Owner son la misma persona?

En resumen, no, esta no es una buena idea por un par de razones. Primero, ambos roles son trabajos de tiempo completo. Entonces, cuando un Product Owner actúa como Scrum Master o viceversa, inevitablemente asume nuevas responsabilidades más exigentes, devaluando las originales. Como resultado, hay un aumento en la carga de trabajo, que corre el riesgo de agotamiento y deja espacio para que se cometan errores catastróficos. Fusionar ambos trabajos en uno significa que, tarde o temprano, tendrán que tomar atajos en tareas cruciales, como crear la acumulación de productos, facilitar los eventos y sprints de Scrum y administrar el éxito de todo el proceso de desarrollo. Además, dado que tendrían demasiado en su plato, la presión adicional puede desviar su atención de la visión del producto y tendrán que dedicar más tiempo a concentrarse en completar tareas y cumplir con los plazos para evitar problemas con el cliente.

En segundo lugar, un conflicto de intereses fundamental entre ambos roles hace que sea problemático para una sola persona manejar tal empresa. Una de las principales responsabilidades del Scrum Master es apoyar al Product Owner y viceversa. Cuando el Scrum Master y el Product Owner son la misma persona, ese apoyo es inexistente, dejando que ese empleado se las arregle solo y no tenga apoyo para cumplir con ambos roles con éxito. Esta falta de apoyo también puede crear problemas de enfoque. Imagine entrenar a un equipo mientras resuelve conflictos, establece la visión del producto, se comunica con el cliente, se reúne con las partes interesadas, recopila datos de usuarios, construye historias de usuarios y crea la acumulación de productos, todo mientras implementa y hace cumplir con éxito la metodología Scrum. ¡Suena imposible!

Así que no, incluso cuando cree que fusionar ambos roles en uno suena más eficiente, especialmente en lo que respecta al dinero, la verdad es que ambos roles son cruciales para un equipo Scrum exitoso, y mantenerlos separados no solo es inteligente sino también necesario. Necesita la perspectiva externa y el apoyo del propietario del producto y la visión, el apoyo y la estructura del equipo del Scrum Master. Es demasiado fácil y tentador tomar atajos en este aspecto del desarrollo Agile, ¡así que asegúrese de pensarlo dos veces cuando tome decisiones que puedan afectar el éxito de su producto!

Ultimas palabras

Diferencias entre Scrum Master y Product Owner: la última palabra

Tanto el Product Owner como el Scrum Master son roles esenciales en el esquema de Agile Scrum; no se puede negar eso. Sin embargo, ambos roles pueden confundirse fácilmente y, a menudo, se usan indistintamente, hasta el punto en que hemos visto que uno reemplaza al otro. Esta confusión puede crear mucha confusión dentro de los equipos de desarrollo Agile, lo que da como resultado productos débiles y defectuosos que no cumplen con las expectativas de los usuarios. Por ello, y ante la duda, se hace imperativo comparar ambos roles para entender lo diferentes y necesarios que son ambos. Y aunque los dos comparten similitudes, cada rol es distinto y tiene responsabilidades únicas que reflejan la naturaleza de cada uno y su importancia dentro de la metodología Scrum y el ecosistema Agile.

Entonces, suponga que está trabajando con un equipo Agile o está interesado en la importancia de estos dos roles. En ese caso, debe encontrar una empresa que tenga tanto un Scrum Master como un Product Owner y fomente la colaboración frecuente entre ellos. Además, deben buscar la adaptación constante del producto y hacer cumplir una filosofía de liderazgo en la que cada miembro desempeñe su papel mientras mantiene al equipo de desarrollo autoorganizado y responsable. De esta manera, los errores se reducen significativamente y se establecen las mejores prácticas para garantizar que el producto resultante sea robusto, innovador y siempre satisfaga las necesidades del cliente y del usuario.

En Foonkie tenemos un historial comprobado de trabajo con Scrum, por lo que si desea trabajar con nosotros o tiene alguna pregunta o inquietud, por favor contáctanos ¡Estamos felices de ayudar!

Hagamos algo grandioso