7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. General

Los Principios del Desarrollo Agil

Read Time: 11 mins

Spanish (Español) translation by RRGG (you can also view the original English article)

Desarrollo ágil o ágil: escuchamos estas palabras con más frecuencia en estos días. ¿Pero realmente sabemos de qué se trata? ¿Cómo puede ayudarnos a ser más efectivos, mientras nos divertimos mucho desarrollando software? ¿Cómo podemos usarlo para comunicarnos con personas de negocios y hacer que esta comunicación sea fácil y constructiva para ambas partes?


¿Qué es el desarrollo ágil?

Había un grupo de chicos muy talentosos y experimentados que estaban desarrollando un software serio. Estos desarrolladores observaron a otras compañías y equipos de desarrollo, y cómo sus procesos facilitaron su trabajo. Recopilaron sus observaciones para crear el manifiesto ágil. Y ellos dijeron:

Estamos descubriendo mejores formas de desarrollar software haciéndolo y ayudando a otros a hacerlo. A través de este trabajo hemos llegado a valorar:

  • Individuos e interacciones sobre procesos y herramientas
  • Software de trabajo sobre documentación completa.
  • Colaboración del cliente en la negociación de contratos.
  • Responde al cambio sobre el siguiente plan

Es decir, mientras hay valor en los elementos de la derecha, valoramos más los elementos de la izquierda.

En este artículo, presentaré doce teorías y técnicas de desarrollo ágil. Este es solo el primer paso hacia el nuevo mundo del proceso de desarrollo de software.


1 - Satisfaccion del Cliente

Nuestra máxima prioridad es satisfacer al cliente a través de la entrega temprana y continua de software valioso, pero no completo. Esto significa que estamos desarrollando software y agregando al menos una característica, por iteración.

Imaginemos que queremos crear un motor de blog; Podríamos hacerlo usando el siguiente proceso:

  1. Crear la página de visualización del blog; entregarlo al cliente
  2. Crear la función de gestión de usuarios y membresía; entregalo a nuestro cliente
  3. Añadir capacidad de comentar y gestión; entregarlo al cliente
  4. Y así sucesivamente ...

Es un enfoque simple, pero el cliente ve el progreso real de su software y le proporciona información inmediata sobre cada nueva función. Puede ser perfecto o requerir ajustes, pero puede responder rápidamente a los cambios: una situación de ganar-ganar.


2 - Adaptarse a los requisitos cambiantes

Incluso al final del ciclo de desarrollo, los procesos Agile le permiten aceptar cambios para la ventaja competitiva del cliente.

El cliente desea que el proyecto termine rápidamente y lo más cerca posible del diseño dibujado en su mente. Esto se logra fácilmente simplemente escuchando sus comentarios y estando listo para los cambios. Si somos capaces de reaccionar rápidamente a los requisitos cambiantes, probablemente seamos la mejor opción que nuestro cliente haya hecho. Agile tiene que ver con la comunicación y los cambios. Hacemos las cosas como se nos pide, haciendo que el proceso de desarrollo de software termine más rápido. Esto se logra porque desarrollamos pequeñas piezas de software y un cambio en los requisitos realmente no nos afecta.


3 - Envia Frecuentemente

Debemos entregar actualizaciones de un par de semanas a un par de meses; Cuanto más corto sea el tiempo, mejor.

Los clientes se sienten más seguros de nosotros y de nuestro producto a medida que se actualiza.

Desde mi experiencia, los clientes se sienten más seguros de nosotros y de nuestro producto cuando se actualiza, lo cual es vital para nuestra relación con ellos. Otra ventaja es la retroalimentación de nuestro cliente; Permitiéndonos reaccionar cambiando clases, características, módulos o incluso la arquitectura. No nos despertaremos después de días o meses de trabajo, solo para ver que todo va a la basura. Consideremos una situación hipotética:

Se le ha pedido que cree un módulo que muestre un texto simple en un administrador de contenido. De repente, los requisitos cambian y debe agregar un formulario que debe enviar un correo electrónico a una dirección configurada. Además, el formulario debe ser personalizable para que el usuario pueda agregar nuevos campos y definir validadores. Entonces, básicamente tienes que olvidarte del requisito del texto original simple. ¿Qué tan pronto te gustaría saber sobre este cambio?

Si trabaja en un proyecto con su cliente y realiza entregas con frecuencia, conocerá estos cambios con mayor rapidez y los cambios como estos serán más fáciles para ambos.


4 - Trabaja Juntos Frecuentemente

Este puede ser el principio más difícil de acostumbrarse, si ha estado desarrollando software en el antiguo estilo de cascada. Usted, como desarrollador, normalmente no habla el mismo idioma que su cliente, pero puede encontrar formas de mantener una comunicación significativa con ellos. Una de las mejores formas, en mi opinión, es describir todo con una historia simple que nos dice, el desarrollador, para quién es la característica, cuál es su responsabilidad y por qué la necesitamos en absoluto. Por supuesto, esto se hace más fácil cuanto más trabajamos con nuestro cliente. Otro enfoque útil es Behavior Driven Development (BDD), pero ese es un tema para un artículo diferente.


5 - Construir proyectos con individuos motivados

Ofrezca a las personas con las que trabaja el entorno y el apoyo que necesitan y, sobre todo, confíe en ellas para que hagan el trabajo.

Es importante proporcionar una atmósfera atractiva y todas las herramientas necesarias para crear un buen software. Las empresas pierden a sus mejores trabajadores principalmente porque realmente no se preocupan por ellos. La creencia de que los desarrolladores pueden escribir, probar e implementar software en algún servidor mediante un cliente FTP y editar archivos de producción en vivo se perdió en algún lugar. Si no has condenado esos viejos hábitos escolares, es mejor que lo hagas ahora.

Retener a los empleados es solo un beneficio; También puede desarrollar un software mejor y más grande a un ritmo más rápido. Solo piénselo: escribir código reutilizable, pruebas automatizadas e implementación automatizada en cualquier servidor (entre otras cosas) puede afectar positivamente el tiempo de desarrollo. Por lo general, pensamos que retrasamos un proyecto porque tenemos que aprender a usar herramientas útiles, como Jenkins, GIT, SVN, Gerrit, Behat, etc. Francamente, lo hacemos, pero luego podemos reutilizar esas herramientas y conceptos en proyectos futuros.


6 - Usar la comunicación cara a cara

Es el método más eficiente y efectivo para transmitir información a nuestros clientes y al equipo de desarrollo.

¿Quién no se ha sentido abrumado o enojado al ver 6,255,384 correos electrónicos en su bandeja de entrada, porque su compañía exige que todas las conversaciones estén "en el papel"? Personalmente lo he visto algunas veces en mi vida, y no recomiendo trabajar en una empresa con tales hábitos. Las conversaciones cara a cara hacen que la comunicación sea más fácil y fluida, y nos permiten brindar más información. Podemos usar formas de comunicación verbales y no verbales para mostrar a nuestros compañeros de equipo lo que estamos pensando. Obviamente es más rápido que enviarse por correo electrónico.

Pero sobre todo, debemos confiar el uno en el otro; la confianza se gana fácilmente en un entorno que fomenta la comunicación cara a cara.


7 - Medir el progreso con el software de trabajo

Esta es una de mis reglas favoritas; Nos permite trabajar libremente según nuestros propios procesos. Los desarrolladores de software son diferentes a otros empleados; tan naturalmente, deben ser tratados como tales. Desde mi experiencia personal, he aprendido a no juzgar a nadie del equipo de desarrollo siempre y cuando se haga el trabajo. Los desarrolladores no quieren crear software defectuoso, y es menos probable que lo hagan si les permitimos trabajar de acuerdo con sus propias preferencias. Después de todo, el cliente está contento siempre que el trabajo que encargaron se haga correctamente; no les importa cómo se hizo.


8 - Manten Un Paso Constante

Los procesos ágiles promueven el desarrollo sostenible, permitiendo mantener un ritmo constante por tiempo indefinido.

Las ventajas más conocidas de Agile (como la aceptación de requisitos cambiantes, la reacción rápida a la retroalimentación, etc.) son ampliamente apreciadas, pero la mejor ventaja, en mi opinión, es la capacidad de determinar con precisión la cantidad de tiempo que un proyecto o característica consumir. Después de algunas entregas, el equipo de desarrollo producirá el número de negocio más valioso: la capacidad. La capacidad es la cantidad de trabajo que el equipo puede hacer en una iteración. El número de capacidad es estable después de algunas iteraciones, y podemos evitar los plazos ridículos y las estimaciones de tiempo que se "sacan de un sombrero" al presentar la oferta de nuestra empresa al cliente.

Muchas personas dicen que es imposible y la programación resulta ser más precisa. Estoy en desacuerdo; el programa asume que no habrá errores o retrasos inevitables.

Es un plan perfecto para un equipo perfecto, y eso no existe.


9 - Presta Atencion al Progreso Industrial

Una continua atencion a nuestra industria maximiza la agilidad.

Se espera que evolucionemos y progresemos. Debemos seguir aprendiendo cada día, porque la industria se mueve a un ritmo tan rápido. A medida que mejoren tanto el hardware como el software, debemos mantenernos actualizados; de lo contrario, nos encontraremos perdidos en el "mar de lo nuevo" y será difícil volver a encarrilarnos.

La refactorización es la solución a la mayoría de los problemas. Al refactorizar constantemente (cuando sea necesario), podemos aplicar fácilmente nuevas técnicas y mejorar nuestra arquitectura de software.


10 - La Simplicidad es Esencial

Bill Gates dijo una vez:

Si tengo un trabajo complicado que hacer, se lo daré a la persona más perezosa que tengo, porque encontrarán la forma más sencilla de hacerlo.

La simplicidad es la regla de oro. Esto no significa que tenga que ser perezoso, pero sí significa que los desarrolladores complican su propio trabajo la mayoría de las veces. Si solo hace el trabajo que el cliente desea, sin funcionalidades y mejoras adicionales, su carga de trabajo se aligerará y logrará sus objetivos. En última instancia, eso es todo lo que le importa al cliente.


11 - Organizate Solo

Las mejores arquitecturas, requisitos y diseños surgen de los equipos auto-organizados.

Solo somos humanos; No podemos predecir todo.

¿Alguna vez ha estado en una situación en la que desarrolló una aplicación grande y lenta, y después de pasar incontables horas frente a la pantalla escribiendo miles de líneas de código y leyendo artículos, tutoriales y libros, se sentó mirando algo malo (pero trabajando) código pensado, "ahora sé cómo escribirlo mejor"? Creo que todos hemos tenido estos momentos.

Aquí es donde entra en juego la undécima regla. Tenemos un equipo de desarrolladores que puede seguir los principios de Test Driven Development (TDD), donde la refactorización es parte del proceso. De alguna manera mágica, nuestro software es útil, hermoso, está bien escrito, probado y creado rápidamente. Solo somos humanos; No podemos predecir todo.

Todo esto proviene de la idea de un equipo autoorganizado, en el que cada miembro tiene un rol, no dado ni forzado, sino uno que surgió después de cierta cantidad de tiempo trabajando juntos. Esa es la belleza del trabajo en equipo.


12 - Refleja y Ajusta

A intervalos regulares, su equipo de desarrollo necesita reflexionar sobre cómo ser más efectivo y ajustar su comportamiento en consecuencia.

This may require a few development cycles, but the team will work in perfect harmony. Even adding new people to this team would not be harmful. Un equipo de desarrollo Agile tiene que ver con hacer el trabajo. Si trabajan en un entorno amigable, encontrarán la "melodía del trabajo" y verán qué tan rápido puede ser el desarrollo de software.


Algunas metodologías de desarrollo ágil

Existen algunas metodologías derivadas de y basadas en principios ágiles. No los describiré todos porque cada metodología se puede cubrir en su propio artículo. Sin embargo, describiré algunos de los enfoques ágiles más conocidos. Una cosa para recordar es que no hay una sola metodología para gobernarlos a todos. Elija el que mejor se adapte a sus necesidades, e incluso "configúrelo" para que se ajuste a sus requisitos específicos.

SCRUM

Creado por Ken Schwaber y Jeff Sutherland, SCRUM es un marco orientado a los negocios para administrar los procesos de desarrollo de software. Hay muchos tipos diferentes de SCRUM; solo recuerde que el objetivo principal es trabajar con eficacia y eficiencia y no atenerse a las reglas.

Programación Extrema (XP)

Creado por Kent Back, XP es una lista de las mejores prácticas que los desarrolladores deben seguir al crear software. A menudo se llama "la extensión de SCRUM". Esta metodología de reglas orientadas al desarrollo nació debido a que SCRUM estaba más bien orientado a los negocios.

Desarrollo de Software Lean

Dos de los principios principales de Lean son: DALAP (Decidir lo más tarde posible) y DAFAP (Entregar lo más rápido posible). Personalmente recomiendo leer más sobre esta metodología, ya que puede ser muy útil.

Hay más metodologías en la familia Agile; Simplemente he referenciado las opciones más populares. Si decide utilizar Agile en su proceso de desarrollo, necesita saber cuáles son estas metodologías para elegir la adecuada para usted.


Pensamientos Finales

¿Las técnicas ágiles realmente funcionan?

¿Las técnicas ágiles realmente funcionan y las metodologías son tan mágicas como todos dicen? No siempre.

El problema que encontré en las empresas, donde los métodos Agile no dieron resultados (o incluso empeoraron las cosas), fue una metodología mal elegida y la falta de convicción entre sus usuarios (miembros comerciales, equipo de desarrollo, etc.). Es por eso que, en opinión de este escritor, debe asegurarse de que todos los involucrados en el proceso entiendan las reglas y que sepan "de qué se trata".

¡Gracias por leer!

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Scroll to top
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.