[Desarrollo ágil: las personas son más importantes que los procesos] Proceso de desarrollo ágil de software
En comparación con los métodos tradicionales de desarrollo de software, el desarrollo ágil presta más atención al papel de las personas en el desarrollo de software, enfatizando la iteración rápida, la integración continua y el desarrollo basado en pruebas para satisfacer las necesidades comerciales cambiantes. La crisis del software que comenzó en la década de 1960 desencadenó el pensamiento de la gente sobre el desarrollo de software y así nació la disciplina de la "ingeniería de software". Divide el desarrollo de software en varias etapas, como análisis de requisitos, diseño, codificación, pruebas y mantenimiento. La mayoría de las organizaciones de desarrollo de software todavía utilizan el método de desarrollo de software en cascada. Sin embargo, la "Ingeniería de software" y su método de desarrollo en cascada no han resuelto completamente la crisis del software. Cómo cumplir con los requisitos de software en constante cambio siempre ha sido un problema que los métodos tradicionales de desarrollo de software no pueden resolver.
Se propuso el desarrollo ágil para resolver los problemas anteriores. Desde la aparición oficial de los métodos de desarrollo ágil en 2001, cada vez más desarrolladores han comenzado a aceptar este método y ha aparecido un grupo de empresas de desarrollo ágil. Una empresa de servicios de consultoría y desarrollo de software cuyo enfoque principal es el desarrollo. ThoughtWorks es uno de los mejores Recientemente, nuestro reportero entrevistó a Guo Xiao, gerente general de ThoughtWorks China, y le pidió que le presentara cómo implementar el desarrollo ágil y otros temas.
Subversión
Métodos tradicionales de desarrollo de software
El desarrollo ágil como método de desarrollo comenzó en 2001. En ese momento, más de 10 maestros en desarrollo de software eran muy famosos en Nos reunimos para resumir algunos de los nuevos métodos de programación que surgieron en ese momento y utilizamos la palabra ágil para resumir estos procesos de métodos similares.
“Siempre y cuando su enfoque de desarrollo de software siga los cuatro principios de la agilidad (es decir, individuos e interacciones sobre procesos y herramientas, software funcional sobre documentación exhaustiva, colaboración con el cliente sobre negociación de contratos, respuesta al cambio sobre Seguir el plan). ), incluso métodos de desarrollo ágiles. Por ejemplo, la propia práctica de ThoughtWorks integra Scrum y Extreme Programming, que es una combinación de estos dos métodos”, dijo Guo Xiao a los periodistas.
Guo Xiao comenzó a estar expuesto a métodos de desarrollo ágiles como la programación extrema en la década de 1990. Ha estado involucrado en el desarrollo ágil durante más de 10 años y luego se dedicó a la gestión del desarrollo de software, lo que le permitió. Comience desde un nivel superior. En un nivel alto, ágil es un método de desarrollo que aún es relativamente desconocido para la mayoría de los programadores. Guo Xiao cree que hay dos ideas centrales en el Manifiesto Ágil.
Una es que las personas son más importantes que los procesos. La mayor diferencia entre los métodos de desarrollo ágiles y tradicionales es que los métodos tradicionales de desarrollo de software siguen las ideas de la producción industrial a gran escala del siglo XX: todos son responsables de un trabajo en esta línea de montaje, siempre que el proceso esté perfectamente diseñado. No son importantes. Este también es un ámbito que persigue la "Ingeniería de software". De hecho, el desarrollo de software es un trabajo creativo y basado en el conocimiento, y es imposible imitar por completo la línea de montaje. El desarrollo ágil enfatiza que un grupo de personas con capacidades de desarrollo de software forman un equipo. En cuanto a qué método ágil utiliza el equipo, lo decide completamente el equipo en función de sus propias características. Enfatiza que el proceso sirve a las personas y enfatiza el uso de la máxima creatividad de las personas.
La otra es que el valor del software en funcionamiento es más importante que la documentación. El método tradicional de desarrollo de software se divide en diferentes etapas, como el análisis de requisitos, el diseño y la codificación, que son responsables de que diferentes personas desempeñen el papel de fuerza impulsora, y diferentes roles utilizan documentos para transferir conocimientos e interactuar. El desarrollo ágil cree que la documentación sirve al software, enfatizando la iteración rápida y la integración continua para permitir que personas con diferentes roles se comuniquen directamente en función del software que se ha desarrollado hasta ahora. Esto trae dos beneficios: retroalimentación rápida y colaboración estrecha.
“El énfasis en la entrega, la colaboración estrecha y la retroalimentación rápida son las características especiales de Agile. Estas características garantizan que el desarrollo ágil pueda satisfacer las necesidades cambiantes”, dijo Guo Xiao, “mientras se utiliza el método tradicional de desarrollo de software”. El éxito del software se basa en gran medida en si el análisis de la demanda es lo suficientemente previsor como para tener en cuenta las necesidades futuras, pero de hecho, esto es casi imposible”
Programación de emparejamiento
Hablando de desarrollo ágil, no podemos dejar de mencionar su programación en pareja. El desarrollo ágil requiere que dos personas participen en la escritura del código al mismo tiempo. Ambas personas deben utilizar el mismo ordenador, un teclado y. un ratón.
Durante la entrevista, el periodista le hizo específicamente a Guo Xiao esta pregunta: ¿Es necesaria la programación en pareja?
Guo Xiao dijo a los periodistas que la programación en pareja es adecuada en la mayoría de los casos. En circunstancias normales, un programador no pasa todo el día escribiendo en el teclado para ingresar código. Tiene que pensar en el hecho de que solo entre el 20% y el 30% del tiempo está escribiendo en el teclado. Por lo tanto, el hecho de que dos personas utilicen el mismo ordenador al mismo tiempo no significa que la eficiencia se reduzca. El desarrollo ágil requiere que una persona escriba el código mientras otra lo revisa para evaluar si es correcto y si existe una mejor manera de escribirlo, y luego comunicarse entre sí. La calidad del código escrito de esta manera es mucho mayor que el escrito por una sola persona.
Otro beneficio de la programación en pares es la reducción del riesgo del proyecto. La división del trabajo en el desarrollo de software moderno es muy detallada y cada desarrollador de software es responsable de una parte de forma independiente. Una vez que un programador deja o cambia de trabajo, será muy perjudicial para el desarrollo de software. En la programación en pares, cada fragmento de código es comprendido por al menos dos personas y el riesgo de cambios de personal en el proyecto es mucho menor.
Otro beneficio de la programación en pareja es que ayuda a enseñar, ayudar y liderar. A través de la programación en pares, los recién llegados al proyecto pueden integrarse fácilmente, y este proceso no pierde la cantidad de códigos y también puede traer beneficios como el intercambio de conocimientos.
Guo Xiao agregó que aunque el desarrollo ágil enfatiza la programación ágil, no requiere mecánicamente que ningún código deba completarse en pares. Para algunos códigos muy simples y bien conocidos, sólo una persona puede ser responsable.
De hecho, el periodista visitó una vez el sitio de desarrollo de software de ThoughtWorks. El periodista vio que los cubículos habituales en la mayoría de las empresas desaparecieron y fueron reemplazados por grandes mesas redondas rectangulares. Los desarrolladores aquí trabajan en equipos de dos. Aunque cada uno tiene un monitor frente a ellos, ambos están conectados al mismo host. Uno de ellos está codificando y el otro está revisando.
“Nuestra experiencia real también demuestra el avance de este método. Algunos de nuestros empleados informaron que la programación en pareja aumentó su presión laboral, porque cuando están en pareja, dos personas difícilmente pueden hacer algo que no esté relacionado con su trabajo. eso." Dijo Guo Xiao con una sonrisa.
Desarrollo ágil
¿Hasta dónde puede llegar?
Como método de desarrollo de software, no hay dudas sobre el avance y la racionalidad de lo ágil, pero ¿cuál es el ámbito de aplicación de este método? ¿Es adecuado para que lo adopten grandes organizaciones de desarrollo de software?
“Cuando se propuso oficialmente el desarrollo ágil en 2001, algunas personas señalaron que no es adecuado para grandes equipos de desarrollo de software y proyectos a largo plazo. De hecho, estas declaraciones se han hecho constantemente a lo largo de los años. "Se convirtió en un gran avance", dijo Guo Xiao, "Por supuesto, la propia agilidad también se está expandiendo constantemente, por lo que puede adaptarse a una gama cada vez más amplia de campos". Se ha adoptado el desarrollo ágil. De hecho, esta es la razón por la que ThoughtWorks se asoció con el desarrollo ágil.
En 1999, ThoughtWorks era sólo una empresa dedicada al desarrollo de software. En ese momento, un gran proyecto con más de 100 personas involucradas cayó en una posición pasiva y no tuvimos más remedio que invitar a Martin Fowler y Ward Cunningham, quienes eran muy conocidos en la industria y más tarde conocidos como los "padrinos" de desarrollo ágil, para realizar trabajos de consultoría. Sacaron a la empresa del problema introduciendo el desarrollo ágil. Esto también permite a ThoughtWorks sentir la magia de los métodos de desarrollo ágiles. Otro ejemplo es British Telecom (BT), que tiene un equipo de desarrollo de 18.000 personas en la India y decenas de miles de equipos de desarrollo en el Reino Unido y otros lugares. Casi todos sus proyectos de software utilizan ahora métodos de desarrollo ágiles.
Por supuesto, el desarrollo ágil como método de desarrollo de software no es omnipotente y tiene algunas limitaciones. En otras palabras, existen algunos requisitos previos necesarios para garantizar el éxito del desarrollo ágil.
Guo Xiao dijo: "El desarrollo ágil requiere una comunicación estrecha con los clientes para obtener continuamente sus comentarios. De hecho, los clientes suelen estar muy ocupados y no pueden dedicar tanto tiempo. Además, el desarrollo de algunos productos depende de el gerente de producto comprende los requisitos, pero en realidad no es un cliente real, lo que genera dificultades para el desarrollo ágil”.
Además, la plena confianza de los clientes en los desarrolladores también es muy importante para el éxito del desarrollo ágil. desarrollo Hay una condición necesaria.
El mejor escenario de aplicación para el desarrollo ágil es cuando los usuarios continúan presentando nuevos requisitos y el precio del contrato del proyecto se ajusta constantemente según las necesidades. Guo Xiao dijo que este es un problema en el proceso de desarrollo real, especialmente cuando trabajan juntos por primera vez, los clientes estarán muy preocupados por el costo final del proyecto. Y si se trata del propio equipo de desarrollo de la empresa, esto no será un problema. Desde esta perspectiva, el mercado más grande para el desarrollo ágil es el equipo de desarrollo interno de la empresa.
“De todos modos, en los últimos años hemos sentido claramente que cada vez más personas están aceptando ideas de desarrollo ágil. Esta tendencia se puede ver en la cantidad de clientes que nos solicitan servicios de consultoría. Nosotros creemos que Agile. El desarrollo definitivamente establecerá su lugar en el campo del desarrollo de software", dijo Guo Xiao con confianza.