¿Cómo se divide el trabajo en las aplicaciones web? [cerrado]

7

Hace aproximadamente un año, en mi lugar de trabajo, decidimos desarrollar una aplicación web para uso interno (como parte de un sistema más complejo que no es relevante para esta pregunta). Nadie realmente tenía experiencia en desarrollo web, por lo que probablemente algunas de nuestras decisiones fueron erróneas, pero en general, hemos tenido éxito con la herramienta que estábamos desarrollando. Como teníamos experiencia en el desarrollo de Python, elegimos Django como nuestra plataforma.

Mi pregunta es sobre "quién hace qué". La forma en que dividimos nuestro trabajo fue: hay un equipo que maneja todo el código de Python, lo que significa todas las urls, vistas y modelos de Django, así como el backend real para manejar la ejecución de tareas asíncronas (algo parecido a Celery). Un equipo diferente (más precisamente, una sola persona en un grupo de desarrollo diferente, pero esto es solo una implementación) es responsable de las plantillas (enlace de datos), javascript, diseño, HTML, CSS, etc.

Hemos estado trabajando así, como dije, durante aproximadamente un año. Estoy empezando a pensar que tal vez la línea de responsabilidades entre los dos equipos es incorrecta. La razón es que hay una sobrecarga bastante grande cada vez que necesitamos interactuar, lo cual es mucho. Por ejemplo, cuando agregamos una nueva tabla y queremos mostrarla, necesitamos que el "tipo frontend" sepa cuál sería la URL y qué contendría. Entonces necesitamos integrar nuestro trabajo para ver si todo está bien. A veces no pasamos suficiente contexto a la plantilla para que funcionara y hay un lento ping-pong de información entre nosotros.

Entonces, mi pregunta es esta: ¿cuál es la forma habitual de dividir el trabajo en las aplicaciones web? ¿Quién cuida los diferentes módulos: modelos, vistas, urls, plantillas, diseño, experiencia de usuario, HTML, CSS, javascript?

    
pregunta Amir Rachum 16.01.2014 - 18:20

3 respuestas

3

En equipos pequeños necesitas un poco de habilidad cruzada, de lo contrario, estarás pasando mucho tiempo comunicando ideas entre desarrolladores que pueden tener diferentes entendimientos de cómo esas ideas podrían implementarse (como has descubierto). Es mejor hacer que cada desarrollador sea responsable de una sola función, incluidos el extremo frontal y el extremo posterior. La comunicación sobre ideas solo debe realizarse a nivel conceptual.

Por supuesto, no todos los desarrolladores tienen sus fortalezas y debilidades, y no he encontrado que sea práctico esperar el mismo rendimiento en todas las tareas de todos los desarrolladores. Asignar características basadas en conjunto de habilidades. Si la función es más frontal que atrás, entréguesela al delantero y viceversa.

A medida que los proyectos crecen, verás más especialización en los desarrolladores. En este escenario, el esfuerzo comunicativo no es un problema, ya que la característica es lo suficientemente rentable / valiosa para hacer que el tiempo valga la pena.

    
respondido por el gb2d 17.01.2014 - 13:55
2

No creo que sea necesaria una división fuerte como esta. Casi todos los desarrolladores con los que he estado trabajando eran capaces de codificar backend y front-end. Sin embargo, teníamos un tipo de css / html que podía hacer que el marcado se viera bien, así que podíamos poner un estilo rudo, codificarlo y empujarlo hacia él para pulirlo. A veces también teníamos personas que creaban maquetas de diseño y pensaban en el flujo de la interfaz de usuario.

    
respondido por el Evgeni 16.01.2014 - 18:54
1

Mi preferencia es trabajar en "características" en lugar de niveles de una aplicación, ya sea un sitio web o de otra manera.

Cualquier tipo de "nivelación", ya sea en una aplicación o en algún otro límite (geografía física, grupos en una empresa) es una barrera para el desarrollo.

Las necesidades de comunicación aumentan y hay más bloqueadores potenciales.

    
respondido por el ozz 17.01.2014 - 14:15

Lea otras preguntas en las etiquetas