Trabajo en una empresa que hace aplicaciones web para varios bancos y algunas tiendas electrónicas más pequeñas. Empleamos a unos 20 desarrolladores y tenemos 4-5 proyectos en desarrollo en cualquier momento. Nuestros equipos de desarrollo no interactúan mucho y muchos de los mismos problemas se hacen de diversas maneras (de bueno a malo).
Me preguntaba si sería una buena idea para una empresa tener un equipo de programadores que investiguen los marcos actuales y mejoren continuamente una biblioteca común de funciones y un marco común para construir proyectos actuales y futuros de manera mucho más rápida y eficiente.
¿Qué tan grande debe ser un equipo como este?
¿También debería tener miembros permanentes que capaciten a otros o debería rotar a las personas?
Actualización: Estaba pensando en un proyecto común en el que las personas pueden trabajar por diversión que podría despertar cierto interés. Parece que cuando las personas tienen presiones laborales, las soluciones que se les ocurren no son las mejores.
fuente
Respuestas:
Un punto importante es que es imposible desarrollar un buen marco en total aislamiento. Los buenos marcos crecen orgánicamente : cuando un programador se da cuenta de que necesita alguna funcionalidad específica, la agrega al marco y, por lo tanto, el marco crece poco a poco, en lugar de diseñar un "marco perfecto" por adelantado, que nunca funciona, porque el arquitecto no puede ser consciente de todos los casos de uso que finalmente aparecen.
Por supuesto, el crecimiento orgánico del marco tiene el inconveniente de que su integridad interna podría no ser demasiado buena, y se convierte en espagueti. Si su equipo mantiene una buena comunicación interna, es posible que pueda combinar lo mejor de ambos mundos: un equipo de arquitectos separado que mantenga la integridad del marco, pero que desarrolle las necesidades reales de los usuarios finales (desarrolladores).
fuente
Mi sentimiento es no.
Lo que sospecho que encontrarías si hicieras esto es que, en lugar de tener equipos individuales produciendo bibliotecas que nadie fuera de ese equipo usó, tendrías un equipo especializado produciendo bibliotecas que nadie fuera del equipo usó (y hacerlo a un costo adicional considerable).
Hay varios problemas con el tipo de equipo que describe, pero para mí lo principal es que no aborda el problema que realmente tiene.
El problema que tiene no es quién produce las bibliotecas (por el sonido de las cosas, ya tiene muchas soluciones a estos problemas, entonces, ¿cómo va a ayudar uno más?), Es que los equipos no están hablando e interactuando.
Hay buenas razones por las que los equipos no reutilizan el código de los demás (por ejemplo, que los problemas, aunque superficialmente similares, son sutilmente diferentes, o que el tiempo del proyecto simplemente no permite la dependencia adicional de desarrollar algo juntos), pero debe mira cómo puedes hacer que interactúen cuando sea posible.
Sugeriría:
Sospecho que un equipo de bibliotecas estaría sobrecargado sin ningún beneficio.
En términos de ser un proyecto común en el que los desarrolladores trabajan por diversión, ninguna empresa debe confiar en que los programadores trabajen en las cosas a su debido tiempo. Eso es solo horas extras no pagadas y, en cualquier caso, no es confiable, ya que es probable que haya grandes períodos en los que nadie quiera trabajar en las cosas.
Si está diciendo que sería gente trabajando en el tiempo de la compañía entre proyectos, entonces tal vez pueda funcionar, pero todavía no creo que sea el verdadero problema. Aún necesita saber cómo va a lograr que la gente use las bibliotecas. Como dije, ya tiene soluciones a estos problemas que se están desarrollando en cada proyecto, su problema es por qué no se comparten.
fuente
Ese es el trabajo de un arquitecto .
Las principales responsabilidades de un arquitecto de software incluyen:
Lea más sobre: - Arquitecto de software - Arquitecto de soluciones - Arquitecto empresarial .
fuente
El dicho " Comer tu propia comida para perros " aborda este problema. Si su codificador estrella de rock da a luz una biblioteca que nunca usó en la práctica, ¿cómo puede decir que es una buena?
Las principales razones para desarrollar funcionalidades en el marco son
1.Es útil para el desarrollador
2. Hay algunos casos en los que ha sido útil
3. Podría ser útil para otros
Cuando haya alcanzado el 2, la funcionalidad ya está allí, ¿cómo puede pasarla a otra persona?
fuente
Llegué un poco tarde al juego, pero sentí que nadie estaba abordando esto:
Sus equipos individuales que resuelven diferentes problemas de diferentes maneras definitivamente se beneficiarían de la funcionalidad compartida, y hay una variedad de maneras de lograrlo de una manera que no dedique a un solo equipo a desarrollarlo, pero he visto mucho de lugares que lo hacen.
En la mayoría de los casos, veo esto como un "núcleo" de su línea de productos, y a veces hay un equipo encargado de mantenerlo, dirigido por (como sugirió Amir) un arquitecto. Por lo general, así es como podría encontrar formas de aprovechar o crear un marco que siga los estándares más estrictos que establezca en su organización, pero que proporcione solo las funcionalidades más básicas que pueden o no necesitar extenderse a las aplicaciones completas. que ofrecen sus equipos de productos individuales. Esto le permite tener la ventaja de "alimentar a los perros" con su código central al implementarlo en cada lugar individual en el que lo use, y luego también diversificarse a diferentes productos que pueden tener implementaciones completamente diferentes. Esto permite que todos sus equipos contribuyan a las bibliotecas principales, pero no se atasquen con la funcionalidad que solo ellos necesitan.
fuente
Creo que NO ES UNA BUENA IDEA , porque para que las bibliotecas sean útiles tienen que ayudarte a resolver problemas reales de proyectos, y solo puedes conocerlos, bueno ... trabajando en proyectos reales.
De lo contrario, puede terminar con una biblioteca "teóricamente" muy buena.
fuente
En la única compañía en la que trabajé que realmente tenía algo similar, no parecía funcionar bien. La gente del equipo interno se le ocurrió una idea ingeniosa y se le ocurrió un prototipo que funcionó principalmente, luego se fue por la pared y se esperaba que lo convirtiéramos en un producto.
Lo que esperaría que sucediera es que el grupo de herramientas terminaría con su propio pequeño programa, produciendo funciones que en realidad no eran tan útiles, pero que saturaban la API y se usaban lo suficiente para que no pudieran ser fácilmente remoto. No documentarían adecuadamente.
Si el grupo de herramientas estaba suficientemente bajo un arquitecto de sistemas que estaba en contacto continuo con las personas que realmente usaban las herramientas, podría funcionar. Si el grupo de herramientas girara con frecuencia (lo que dificultaría hacer mucha investigación exterior) podría funcionar. Sin embargo, me daría miedo perder el contacto con las personas que realizan el trabajo remunerado.
fuente
¿Cuánto tiempo va a dedicar a debatir si usar o no el marco será un beneficio en todos los casos? ¿Se demora un proyecto al esperar que se actualice el marco? En algún momento se debe requerir el uso del marco para justificar su existencia.
fuente