entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Como es la mecánica del desarrollo en equipo?

Pertenezco a un pequeño grupo de developers y diseñadores y estamos trabajando en una app compleja y extensa, evidentemente el trabajo se reparte, y quería saber como es la mecánica a la hora de desarrollar...¿cada uno hace un proyecto aparte realizando lo que le corresponde y luego se une une todo en un proyecto central?

4 Respuestas

3votos

Leonardo-Tadei Puntos227320

Hay algo que "huele" en tu pregunta...

Si están encarando una aplicación grande y compleja, esta debe tener un diseño (no un diseño gráfico, sino un diseño de software que plasme la solución al problema) el cual surgió de una lista de Requerimientos Funcionales. Todo esto puede ser formal o informal, pero de alguna manera debió de existir.

Siendo así, alguien asumirá el rol de líder del proyecto. No necesariamente tiene que ser el diseñador de la solución, pero sí alguien que entienda bien el problema y la solución a desarrollar. Tampoco tiene que ser solo una persona, pero seguro que tiene que ser un grupo muy reducido para no generar un caos de comunicación, ni órdenes y contraórdenes.

La metodología de desarrollo a usar, que es el corazón de tu pregunta, debería depender en gran parte del diseño y de la metodología de desarrollo. No es indispensable, pero hay metodologías de desarrollo que se llevan mejor con ciertos tipos de gestión de proyectos.

http://es.wikipedia.org/wiki/Metodolog%C3%ADa_de_desarrollo_de_software

En el enlace de wikipedia, al final de la lista histórica de metodologías están las ágiles, de la que SCRUM nombrada en otra respuesta es parte.

Las metodologías ágiles están un poco de moda y, como todas las metodologías, tienen cosas a favor y cosas en contra. Las ágiles además tienen ciertos requisitos previos para poder usarse, como que el equipo de desarrollo conozca el dominio del problema y que el cliente esté disponible para participar activamente del proyecto... estas condiciones no se dan en muchos casos, y menos en proyectoss grandes, el que el "cliente" no es una única persona.

Te recomiendo empezar por:
http://es.wikipedia.org/wiki/Gesti%C3%B3n_de_proyectos
http://es.wikipedia.org/wiki/Categor%C3%ADa:Gesti%C3%B3n_de_proyectos_de_software

Si aportás más datos, como tipo de problema, tipo de software a desarrollar, arquitectura de la solución, cantidad de personas involucradas, etc, podríamos afinar más la respuesta, ya que al ser tu pregunta tan general, las respuestas serán también muy en general.

Saludos cordiales!

0voto

Xuelo comentado

Más que la metodología, es el como, como realizo la aplicación, cuando de los 5 miembros del grupo, 2 son diseñadores y otros 3 son programadores. Es una app android, tenemos una idea básica por la que empezar y a partir de ahí iremos añadiendo funciones y carácterísticas. La cuestión es que yo que soy por así decirlo el lider, suelo trabajar con android Studio y no veo la forma de repatir el trabajo

0voto

Leonardo-Tadei comentado

Hola @Xuelo,

tener "una idea básica por la que empezar" y luego "ir añadiendo funcines" es la antítesis de las buenas prácticas de gestión de proyectos de sofware, sobre todo si cómo decís la aplicación es grande o compleja... :-(

Repondiendo a tu consulta, repartí entre los dos diseñadores gráficos el diseño de las ventanas de la app, luego de haber pautado una estética acorde con el producto y una gama de colores a usar.

En paralelo a esto, repartí las diferentes funcionalidades a desarrollar entre los 3 programadores, pautando previamente las interfaces entre cada una. Si hay funcionalidades que dependen de otras, construí un gráfico de Gantt o un Pert para asignarlas racionalmente y poder ver el camino crítico del desarrollo (qué cosas, si se atrasan, atrasan todo el proyecto).

El reparto de las funcionalidades del código depende exclusivamente de la metodología de desarrollo a usar. Si están haciendo POO (Programación Orientada a Objetos), podés dividir el sistema en subsistemas y dar uno a cada uno (partir el proyecto verticalmente) o podés designar un encargado de las clases, un encargado de las UI y un encargado de los controles (partir el proyecto horizantalmente en capas).

Si están haciendo PE (Programación Estructurada), dividí el sistema en módulos determinando las funciones que harán de interfaz (tanto nombre, como parámetros y salidas) y que cada uno haga un módulo.

En ambos casos, en algún momento se tiene que hacer la integración del código, es decir, juntar cada parte en una única pieza de software, pero al haberlo construido organizadamente, esto no debe implicar tener que modificar ninguna parte existente (a lo sumo escribir alguna interfaz faltante o cambiar alguna llamada a un mock por una llamada real.

También usá software de control de versiones (como Git o algún otro) para que cada programador tenga su parte del proyecto, y otro proyecto para la versión consolidada. Si son extramadamente prolijos dividiendo las tareas, podrían trabajar todos sobre el mismo repositorio, pero si es esta la primera vez, yo creo que es mejor mantener las cosas separadas a que cada uno esté rompiendo el código del otro.

Una alternativa radicalmente diferente es tercerizar el diseño y la gestión del proyecto, y que sea un tercero con más experiencia el que los guíe en este primer intento... luego con la experiencia obtenida podrán empezar a volar más solos.

0voto

Xuelo comentado

Gracias leonardo ahora si que tengo por donde empezar...el problema de todo esto esque al que se le ocurrio la app, no tiene claro la idea final, entonces nosotros no tenemos más remedio que empezar por una idea básica(con elementos que va tener seguro la aplicación) otra cosa que juega a nuestro favor es el tiempo....que básicamente lo tenemos, sin limite

0voto

Leonardo-Tadei comentado

Por nada!
Fijate otra cuestión que hace particularísima tu situación: en la teoría de proyectos, se define al mismo como una serie de tareas a realizar dentro de un marco de tiempo, es decir, que si no hay límites de tiempo, muchas cosas de la teoria dejan de ser aplicables, y de hecho, para los puristas, incluso dejaría de ser un proyecto...
Si la respuesta te ha servidor, recuerda seleccionarla así el tema queda marcado como solucionado. Luego, si tenés dudas puntuales sobre lo que estén haciendo, ponelas acá como una pregutna nueva.
Saludos y suerte!

0voto

Villanuevand Puntos5730

HOla @Xuelo ,
Actualmente una de las metodologías ágiles mas utilizadas en el desarrollo de software es SCRUM.
Puedes encontrar material al respecto en este blog, el cual para mi ha sido de mucha ayuda. En la red existe muchisimo sobre esta medotología que está marcando pauta en el desarrollo de software.
Ojalá esta información te sirva de ayuda, para implementar SCRUM en tu grupo.

Con respecto a la manera en que se une el software, te recomiendo leer sobre los Controladores de Versiones, en especial GIT.

Saludos desde Venezuela.

0voto

Xuelo comentado

Muchas Gracias Villanuevand

1voto

dairon Puntos17120

Estoy de acuerdo con Villanuevand, también te recomiendo hacer un buen analisis de todo lo que necesites y a la hora de ir desarrollando y siempre paso a paso, trabajando por modulos y siempre tener un plan de trabajo o de desarrollo con metas propuestas así puedes medir el tiempo que utilizan para cada sección del módulo y medir en porcientos el adelanto en lo que hacen, pero sobre todo tener bien organizado toda la arquitectura eso te dará mucha ventaja y rápides en el desarrollo y control de errores.
Estudía metodologías RUP
Proceso Unificado de Rational

1voto

carlossevi Puntos63580

Como veo que has recibido muy buenas respuestas sobre la gestión de proyectos voy a centrarme en la que creo que es la otra duda que tienes: gestión del código en un equipo de desarrolladores. Te recomiendo que utilicéis algún software para el control de versiones y leáis documentación al respecto.

En mi caso me ha sido de utilidad el Libro de Git, que además de explicar el funcionamiento del programa tiene varios capítulos dedicados a flujos de trabajo en equipo.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta