La comunicación en el desarrollo de software distribuido es un área de estudio que considera los procesos de comunicación y sus efectos cuando se aplican al desarrollo de software en un proceso de desarrollo distribuido globalmente . La importancia de la comunicación y la coordinación en el desarrollo de software se ha estudiado ampliamente [1] y la comunicación organizacional estudia estas implicaciones a nivel organizacional. Esto también se aplica a un entorno en el que los equipos y los miembros del equipo trabajan en ubicaciones físicas separadas. La distancia impuesta introduce nuevos desafíos en la comunicación, que ya no es un proceso cara a cara, y también puede estar sujeta a otras restricciones, como equipos en zonas horarias opuestas con una pequeña superposición en las horas de trabajo.
Existen diversas razones que obligan a los elementos de un mismo proyecto a trabajar en áreas geográficamente separadas, desde equipos diferentes en una misma empresa hasta la subcontratación y deslocalización , a las que se aplican diferentes restricciones y necesidades en materia de comunicación. Los desafíos de comunicación añadidos dan lugar a la adopción de una amplia gama de métodos de comunicación diferentes que suelen utilizarse de forma combinada. Pueden ser en tiempo real, como en el caso de una videoconferencia, o de forma asincrónica, como el correo electrónico . Si bien una videoconferencia puede permitir a los desarrolladores ser más eficientes en lo que respecta al tiempo que dedican a comunicarse, es más difícil de lograr cuando los equipos trabajan en diferentes zonas horarias, en cuyo caso puede resultar más útil utilizar un correo electrónico o un servicio de mensajería.
La historia de la comunicación en el desarrollo de software distribuido está ligada al contexto histórico del desarrollo distribuido en sí. Las herramientas de comunicación ayudaron a hacer avanzar el proceso de desarrollo distribuido, ya que la comunicación era el principal componente que faltaba en los primeros intentos de desarrollo de software distribuido [ cita requerida ] . Uno de los principales factores en la creación de nuevas herramientas y en hacer del desarrollo distribuido una metodología viable es la introducción de Internet como una plataforma accesible para desarrolladores e investigadores, facilitando el intercambio tanto de código como de información en un equipo.
Una de las primeras manifestaciones del desarrollo distribuido es la comunidad de código abierto, donde los desarrolladores se unen no por una empresa y sus recursos sino por participar voluntariamente en el mismo proyecto, lo que da como resultado equipos diversos de diferentes ubicaciones geográficas. En estos proyectos hay una creciente necesidad de herramientas de comunicación y colaboración. La historia del software libre y de código abierto muestra que a medida que avanzaba el tiempo, la complejidad de los proyectos y el número de personas involucradas aumentaron. Las mejores herramientas de comunicación y colaboración tuvieron un papel importante en este aumento. Inicialmente, los métodos disponibles eran principalmente formas asincrónicas de comunicación, como el correo electrónico y las listas de correo , o incluso la confianza en publicaciones escritas periódicas para difundir información. La comunicación sincrónica se limitaría principalmente a llamadas telefónicas [ cita requerida ] .
En esta etapa temprana no hay muchos relatos de este tipo de desarrollo distribuido en un entorno empresarial [ cita requerida ] . Sin embargo, los desarrollos y herramientas de los años anteriores fueron pioneros en los medios necesarios para que las empresas comenzaran a investigar y adoptar estas prácticas cuando se pudieran obtener ventajas. Más herramientas como la audioconferencia y la mensajería instantánea aparecieron principalmente para otros fines, pero se adoptaron rápidamente y continuaron impulsando la idea del desarrollo distribuido. Este nuevo movimiento creó un interés en el área de estudio que es la comunicación en el desarrollo de software distribuido para mejorar aún más la eficacia y la calidad del proceso de desarrollo.
El desarrollo de software, en general, requiere un gran intercambio de información [2] y los estudios muestran que un gran porcentaje del tiempo de un desarrollador se dedica a actividades de colaboración/comunicación [3] . Si bien la comunicación formal se utiliza para tareas esenciales como actualizar el estado de un proyecto o determinar quién es responsable de un trabajo en particular, la comunicación informal también es crucial para el proceso de desarrollo [4] . La comunicación informal, o "charla de pasillo", ayuda a los desarrolladores a mantenerse al tanto de lo que sucede a su alrededor, en qué están trabajando otros empleados, quién tiene experiencia en qué área y muchos otros datos esenciales que les permiten trabajar juntos de manera eficiente y crear el "espíritu de equipo". [4] Los estudios también muestran que cuanto más incierto es un proyecto, más importante es este tipo de comunicación [1] .
En un entorno de ingeniería de software global (GSE), la comunicación informal es difícil de recrear. La falta de este tipo de comunicación puede dar lugar a sorpresas, lo que da lugar a desalineaciones y retrabajos. [4] Por esta razón, la comunicación en el desarrollo de software distribuido es importante para cualquier empresa que esté aplicando GSE. Esta área de estudio, entre otras cosas, intenta recrear la comunicación informal en un entorno GSE, con el fin de desarrollar software sin la pérdida de velocidad de desarrollo característica de este entorno. [5]
La comunicación puede verse obstaculizada por diversas barreras, como las socioculturales, lingüísticas, de conocimiento, geográficas y temporales. [6]
Las barreras socioculturales pueden manifestarse en los medios de comunicación. De hecho, un estudio muestra que los clientes estadounidenses y japoneses tienen preferencias distintas con respecto a ellas. Los clientes estadounidenses prefieren comunicarse con frecuencia a través de contactos informales por teléfono y correo electrónico, mientras que los clientes japoneses prefieren la comunicación verbal y el uso menos frecuente, pero formal, de medios electrónicos. [7]
Las barreras lingüísticas suelen manifestarse cuando al menos uno de los participantes en una conversación no habla su lengua materna. Además del hecho de que uno debería poder expresarse mejor en su lengua materna, existen otros obstáculos. Las expresiones idiomáticas y la jerga son ejemplos de estos obstáculos que dificultan la comunicación informal.
Según la curva de Allen , la frecuencia de comunicación entre ingenieros disminuye a un ritmo exponencial a medida que aumenta la distancia entre ellos. En el caso de los compañeros de trabajo de una empresa, la comunicación suele desencadenarse por encuentros aleatorios entre compañeros de trabajo. Cuando existe una distancia significativa entre estos últimos, su comunicación disminuye. De hecho, se realizó un estudio empírico que comparó la frecuencia de comunicación entre compañeros de trabajo de sitios locales y remotos. La mayoría de los encuestados respondió que hablan con la mayoría de sus colegas locales al menos una vez al día, mientras que hablan menos de una vez a la semana con sus colegas remotos. [5]
Las barreras temporales están estrechamente relacionadas con las barreras geográficas. Las barreras temporales suelen estar presentes en un escenario en el que dos o más compañeros de trabajo se encuentran en diferentes zonas horarias y, a menudo, en diferentes ubicaciones geográficas. Los desarrolladores se comunican principalmente durante las horas de trabajo y, si bien pueden utilizar la comunicación asincrónica que no requiere que se superpongan las horas de trabajo, esto retrasa inherentemente el proceso de comunicación. [8] Como alternativa, pueden utilizar la comunicación sincrónica si necesitan comunicarse en tiempo real, sin embargo, introduce la complicación de encontrar horas de trabajo superpuestas. Seguir el sol es un enfoque común adoptado por las empresas de software para mitigar este último problema.
Se realiza una investigación sobre la comunicación en el desarrollo de software distribuido con el fin de mejorar la comprensión de las implicaciones de los diferentes métodos de comunicación en el éxito del proceso de desarrollo y el producto final.
La comunicación es un proceso esencial para coordinar un proyecto de desarrollo de software y compartir conocimientos entre los miembros del equipo. Estudios previos [9] [10] afirman que compartir conocimientos es importante para generar confianza e incluso mejorar el rendimiento de todo el equipo, lo que también se aplica en un proceso de desarrollo de software distribuido.
También puede traer consigo desafíos, como se mencionó en la sección anterior, que si se abordan de manera inadecuada pueden retrasar un proyecto de equipo o incluso costarle dinero a la empresa. Una gran cantidad de estudios intentan encontrar formas de mitigar estos problemas y evitar la falta de comunicación. [11]
Las herramientas utilizadas para la comunicación están dentro del ámbito de algunos estudios. Muestran las ventajas y desventajas de algunos tipos diferentes de herramientas, y también qué tipo de herramientas prefieren utilizar los desarrolladores en determinadas situaciones. [12] [13]
El interés de los investigadores en cómo un desarrollo distribuido globalmente influye en el éxito del proyecto se hace notar en publicaciones como [11] donde el autor menciona la necesidad de más estudios empíricos sobre el tema. Otro estudio [14] intentó encontrar relaciones más directas entre zonas horarias y barreras lingüísticas sin resultados significativos, lo que como sugiere el autor, podría deberse al bajo tamaño de la muestra. Sin embargo se demostró [5] que efectivamente existe una relación entre el desarrollo distribuido y tiempos de respuesta más largos entre colaboradores. También existen estudios que correlacionan la frecuencia de comunicación y la distancia geográfica, como la curva de Allen .
Las investigaciones realizadas hasta el momento apuntan a la necesidad de mejorar las metodologías y herramientas utilizadas por las empresas y que la comunicación es un factor importante en el éxito de una empresa. [ cita requerida ]
La comunicación en un entorno de colaboración puede lograrse de forma sincrónica o asincrónica, y la forma en que los agentes interactúan entre sí difiere. Las diferentes formas de comunicación crean sistemas y herramientas de comunicación análogos según el tipo de comunicación que se admita, que sirven para diferentes propósitos en un entorno de desarrollo distribuido. Incluso dentro de una empresa, las tareas y responsabilidades de los diferentes miembros se reflejan en su uso de las herramientas que se utilizan en el entorno de trabajo. [15]
En los sistemas sincrónicos , los participantes reciben y envían información simultáneamente en "tiempo real", y un mensaje suele ir seguido de una respuesta en un breve lapso de tiempo. Este tipo de comunicación se utiliza para la comunicación que requiere una respuesta inmediata cuando el otro participante está disponible enseguida o para una comunicación más informal en un entorno directo. Se puede utilizar en una empresa para responder preguntas rápidamente, discutir ideas, transmitir desarrollos importantes que requieren atención o cualquier otro mensaje importante.
Los sistemas asincrónicos proporcionan un mecanismo de envío y recuperación de mensajes, donde el emisor puede enviar información cuando quiera y el receptor sólo la recuperará y responderá cuando esté disponible. Esta forma de comunicación se puede utilizar para mantener una discusión o transmitir información sobre asuntos menos urgentes, ya que no se garantiza una respuesta rápida. Es útil en un proceso de desarrollo distribuido, especialmente porque la mayoría de las veces los diferentes equipos que trabajan en un proyecto no lo hacen simultáneamente, y los asuntos que no son urgentes se pueden discutir de forma asincrónica.
Existe también otro enfoque posible en el que un sistema proporciona ambas formas de comunicación en el mismo entorno para permitir una mayor flexibilidad en la comunicación. Estos sistemas pueden denominarse sistemas híbridos, en los que los mensajes intercambiados suelen tener características de mensajes asincrónicos, pero los sistemas también están concebidos para utilizar estos mensajes como una forma de comunicación sincrónica. Representan un punto intermedio entre la comunicación asincrónica y la sincrónica.
Las herramientas de comunicación para la ingeniería de software distribuida globalmente pueden ser de varios tipos que varían según la forma de comunicación utilizada, la interfaz proporcionada al usuario, entre otros. Además, diferentes categorías pueden utilizar diferente información sensorial para mejorar la comunicación. Las herramientas disponibles incluyen mensajería instantánea , correo electrónico , conferencias de audio y video , oficina virtual y realidad virtual . Esta sección proporciona una descripción general de los diferentes tipos de herramientas y algunos ejemplos populares que se utilizan actualmente, sin embargo, no es una recopilación y lista exhaustiva de las herramientas disponibles. Se pueden encontrar listados más completos en otros recursos. [16]
El correo electrónico es un método de intercambio de mensajes digitales entre personas que utilizan dispositivos digitales como ordenadores, teléfonos móviles y otros aparatos electrónicos. A diferencia de la mayoría de las herramientas de mensajería instantánea , en el correo electrónico no es necesario que los usuarios ni sus ordenadores estén conectados simultáneamente. El coste de utilizar el correo electrónico en la empresa varía, ya que, por ejemplo, la empresa puede disponer de su propio servidor de correo electrónico.
Los estudios empíricos demostraron que todos los miembros de un equipo de desarrollo de software utilizaban esta herramienta de manera eficaz. A diferencia de la mensajería instantánea , los mensajes de correo electrónico están pensados para ser más independientes y menos sensibles al contexto de la comunicación, por lo que producir mensajes de correo electrónico requiere más tiempo que los mensajes de mensajería instantánea tradicionales. [12]
Algunos proveedores de correo electrónico son Gmail , Outlook.com y ProtonMail .
Las conferencias de audio y video son tecnologías para la recepción y transmisión de señales de audio y video por parte de usuarios en diferentes ubicaciones, para la comunicación entre personas en tiempo real. Este tipo de herramientas intenta replicar la rica interacción presente en las reuniones cara a cara. [13] La rica tecnología de comunicación sincrónica, como la videoconferencia, es apropiada para discusiones altamente interactivas donde el lenguaje corporal y la entonación pueden transmitir el grado de comprensión o acuerdo entre los participantes. [17]
La videoconferencia también es una buena manera de desarrollar la confianza entre los desarrolladores de software globales, ya que permite a los miembros del equipo formar relaciones personales. [18]
Los investigadores descubrieron que los miembros del equipo que no confían en sus habilidades en el idioma inglés prefieren usar el correo electrónico o la mensajería instantánea en lugar de las conferencias de audio y video , ya que los medios basados en texto brindan más tiempo para comprender y redactar una respuesta. [19] Esto se convierte en un problema, ya que los medios basados en texto no utilizan funciones auditivas ni visuales, lo que puede obstaculizar el proceso de comprensión de información importante y generar malentendidos.
Zoom , GoToMeeting y Highfive son ejemplos de este tipo de herramientas.
Las oficinas virtuales recrean la proximidad personal y la funcionalidad de una oficina física que necesitan los equipos en un entorno de ingeniería de software distribuido globalmente. En lugar de tener "canales" o "hilos de mensajes", las oficinas virtuales tienen salas en un espacio de oficina virtual.
El profesor Thomas J. Allen descubrió a finales de los años 1970 que el aumento de la distancia entre ingenieros reduce exponencialmente la frecuencia de comunicación entre ellos. [20] Las oficinas virtuales son una forma de reducir virtualmente esa distancia, con el fin de aumentar la comunicación entre ellos.
Además, otros estudios [21] muestran que las oficinas virtuales facilitan la coordinación del trabajo y mejoran el rendimiento en equipo.
Algunas herramientas que pertenecen a este subconjunto son Sococo, 8x8 y Skype for Business .
La realidad virtual ha ido ganando cada vez más interés a lo largo de los años. Ha crecido desde una industria de 129 millones de dólares en 2015 a más de 1.000 millones de dólares a finales de 2016. Se estima que la industria alcanzará los 4.600 millones de dólares a finales de 2018. [22]
Los contenidos que se intercambian durante el acto de comunicación no son más que interpretaciones de las situaciones en las que se ven involucrados los actores. Estas, a su vez, dependen del contexto. La motivación para utilizar la realidad virtual como herramienta de comunicación se basa en la premisa de que la percepción del contexto es proporcional a la información sensorial disponible.
En un entorno de comunicación de realidad virtual, cada uno de los participantes se encuentra en una inmersión sensorial, lo que mejora la percepción del contexto en el que se encuentra el actor, lo que a su vez mejora la experiencia comunicativa en sí.
Aunque el concepto no es reciente, la tecnología recién empezó a desarrollarse significativamente a partir de 2010.
AltspaceVR es un ejemplo de una plataforma de realidad virtual que recientemente se utilizó como herramienta de comunicación. [1]
La mensajería instantánea (IM) permite la transmisión de mensajes entre dos o más partes en el caso de una "sala de chat". Puede ser sincrónica o asincrónica y se considera el tipo de comunicación menos intrusivo. [23] Las investigaciones muestran que a los desarrolladores les gusta utilizar este tipo de herramientas para hacer preguntas rápidas a sus compañeros o superiores. [12]
WhatsApp , Facebook Messenger y HipChat son ejemplos de este tipo de herramientas.
La combinación del desarrollo de software ágil y el desarrollo de software distribuido trae consigo muchos desafíos para la comunicación en equipo. [24] Por un lado, el desarrollo de software ágil exige un aumento de la comunicación informal y carece de comunicación formal, como la documentación . [25] Por otro lado, el desarrollo de software distribuido dificulta el inicio de la comunicación, puede dar lugar a malentendidos y aumenta el coste de la comunicación (tiempo, dinero, etc.) como se explicó anteriormente #Desafíos, lo que puede conducir a una disminución de la frecuencia de la comunicación. [5] [26] Esto hace que el área de estudio presentada sea de suma importancia en el desarrollo de software ágil distribuido . Uno de sus principios básicos enfatiza las relaciones entre los individuos y sus interacciones, lo que implica una comunicación constante. [27]
La programación extrema (XP) fue diseñada para un entorno en el que todos los desarrolladores trabajaban en el mismo lugar, [28] lo que no sucede en el caso del desarrollo de software distribuido. Además, XP depende en gran medida de la comunicación continua entre las partes interesadas y los desarrolladores, lo que hace que la comunicación sea uno de los cinco valores fundamentales de XP. [29] En consecuencia, la comunicación en un entorno distribuido es de suma importancia para un entorno de desarrollo XP [30] y debe tenerse en cuenta al aplicar esta metodología en un entorno distribuido.