Fotolia

Pros y contras de la programación en pares para la automatización de red

La programación en pares es una técnica de desarrollo de software ágil que reduce errores y produce un mejor software. ¿Puede la programación de pares funcionar entre expertos en redes y programadores?

Existe una tendencia en la industria de la tecnología en la que el software impulsa la configuración y el funcionamiento de la infraestructura de TI, incluidas las redes. Esto significa que el software, en lugar de la configuración por dispositivo, impulsa la funcionalidad de la red. Esta transición al software se conoce como un enfoque de infraestructura como código para la configuración, el control y la supervisión de la red.

Las organizaciones deben asegurarse de que el software que soporta la infraestructura como código incorpora las mejores prácticas de desarrollo de redes y software. Un enfoque tradicional es enseñar a los desarrolladores de software sobre redes o enseñar al personal de redes cómo desarrollar software, pero este es un proceso a largo plazo. Una opción alternativa es la programación en pares.

La programación en pares es un método de desarrollo de software en el que dos personas trabajan juntas en un espacio de trabajo para escribir código. Una persona actúa como el conductor que escribe el código, mientras que la segunda persona observa y navega, proporcionando comentarios y los siguientes pasos.

En el mundo del desarrollo de software ágil, los equipos de programación en pares constan de dos desarrolladores. En el mundo de la automatización y la gestión de redes, un equipo de programación en pares consta de un desarrollador y un operador de red. Estos equipos también son aplicables a otras tareas, como la creación de plantillas de configuración de red o la creación de diseños generales de red, donde el equipo estaría compuesto por dos operadores de red.

Este artículo se refiere a una persona de desarrollo de software como desarrollador y a una persona de redes como networker.

Mejores prácticas de programación en pares

Un equipo de desarrollo de automatización de red que comprende un desarrollador y un networker permite a los miembros del personal aprender unos de otros, al tiempo que produce un mejor software que el que cualquiera de los dos crearía solo. El networker puede ayudar al desarrollador a comprender las funciones de red, así como también cómo piensan las personas en redes. Esto es particularmente efectivo para desarrollar interfaces de usuario que tengan sentido para los networkers.

Por el contrario, el desarrollador puede enseñar a los networkers técnicas para el desarrollo de software. Los dos pueden trabajar en equipo para llegar a un buen diseño, seleccionando los mejores algoritmos y estructuras de datos y descomponiendo el proyecto general en módulos manejables. La fase de diseño es importante porque un buen software comienza con la selección de las abstracciones correctas.

Sin duda, tomará algún tiempo para que los equipos de programación en parejas se acostumbren a trabajar juntos, lo que puede hacer que el progreso inicial parezca lento. Mientras los equipos no tengan problemas subyacentes, como conflictos de personalidad, su productividad debería aumentar con el tiempo.

Los miembros del par necesitan intercambiar roles con frecuencia, brindando a cada persona la oportunidad de conducir u observar y comentar. Cada miembro debe tener al menos conocimientos básicos de software para que la programación en pares funcione. Muchos cursos introductorios de software están disponibles en línea a bajo costo o sin costo alguno para que el networker obtenga un conocimiento básico del lenguaje de programación elegido, generalmente, Python para la automatización de la red.

Compare las ventajas y desventajas de la programación en pares.

Los pros de la programación en pares

La programación en pares puede proporcionar muchas ventajas para el equipo involucrado y para la organización.

  1. Dos cabezas son mejores que una. Dos personas que ven el mismo problema pueden discutir rápidamente las alternativas y llegar al mejor enfoque. La doble perspectiva del desarrollo de software y las redes ayuda al equipo a llegar a una mejor solución que si los miembros trabajaran de forma independiente. El networker puede explicar cómo recopilar y mostrar información, mientras que el desarrollador puede recomendar estructuras de datos, algoritmos y abstracciones que simplifican el código.
  2. Reemplazo para revisiones de código. La programación en pares reemplaza las revisiones de código que llevan mucho tiempo y son propensas a errores, en las que una segunda parte revisa los módulos de software propuestos. Con la programación en pares, el equipo revisa el código en tiempo real, lo que evita el retrabajo. Por supuesto, esto requiere que ambos miembros del equipo tengan un buen dominio del lenguaje de programación en uso. Si eso no es posible, un equipo de dos desarrolladores y un networker puede ser una alternativa viable.
  3. Entrenamiento cruzado. Los miembros del equipo de programación en pares aprenden unos de otros durante el proceso de codificación. Es una excelente manera de compartir conocimientos, tanto sobre prácticas de desarrollo de software como sobre cómo funcionan las redes. La programación en pares también facilita el desarrollo de habilidades interpersonales, como la comunicación y el trabajo en equipo.
    Al principio, los desarrolladores de software avanzados pueden sentir que la programación en pares impide el progreso, pero se les debe alentar a dar una oportunidad al proceso. Idealmente, la pareja llegará rápidamente al punto en que el networker puede contribuir al proceso de desarrollo de software, ofreciendo consejos como los siguientes:
    • "Deberíamos verificar la condición de error X."
    • "¿Podríamos poner estas dos piezas de información una al lado de la otra en la misma pantalla?"
  4. Mantenimiento de software. Un beneficio significativo de la programación en pares es que más de una persona comprenderá cómo funciona un código y sus criterios de diseño. Esto da como resultado una mejor memoria del proyecto que hace que el software sea más fácil y menos costoso de mantener.
  5. Equipos remotos. Los equipos pueden programar en pares de forma remota, utilizando sistemas de teleconferencia con uso compartido de pantalla. He utilizado con éxito este mecanismo con tareas de diseño de red y resolución de problemas. Los miembros del equipo hablan entre ellos como si estuvieran en la misma sala física. Esto permite que los equipos sigan siendo productivos incluso en tiempos de viajes restringidos, como durante el encierro actual del coronavirus.

Los contras de la programación en pares

La programación en pares también tiene sus desventajas, pero no tantas como la lista de ventajas.

  1. Conflictos de personalidad. Algunos miembros del equipo pueden no llevarse bien entre sí, lo que puede requerir diferentes emparejamientos. Ocasionalmente habrá miembros del personal que no pueden trabajar con nadie más, lo que se hará evidente después de múltiples intentos.
    Ambos miembros del equipo deben sentirse cómodos con alguien mirando por encima del hombro mientras escriben el código. Pueden pasar algunas sesiones antes de que se sientan cómodos el uno con el otro. Este puede ser el ajuste más grande que los programadores en pareja necesitan hacer. Un desarrollador más experimentado deberá ser paciente con un socio menos experimentado que esté creando código a un ritmo lento.
  2. Diferencias en experiencia y pericia. Un miembro del equipo puede ser significativamente más avanzado que el otro. El enfoque de programación en pares puede reducir significativamente el ritmo total de desarrollo. Sin embargo, trabajar juntos permite al miembro más avanzado orientar al miembro menos experimentado, lo que puede ser una ventaja en algunas situaciones. El socio menos experimentado puede obtener consejos y técnicas que el miembro avanzado del equipo utiliza para ganar eficiencia.
  3. ¿No es la mitad de eficiente? Naturalmente, uno podría pensar que la programación en pares es la mitad de eficiente que cuando dos personas trabajan por separado, pero sorprendentemente, estudios han encontrado que solo es aproximadamente un 15 % menos eficiente. Sin embargo, elimina la necesidad de revisiones de código, reduce errores y produce un mejor código. El efecto neto es que los programadores en pares pueden ser más eficientes que los desarrolladores separados que luego deben revisar el código del otro y pasar por pasos más extensos de integración, prueba y depuración.

Comprender el proceso de desarrollo de software

El factor más importante en un proyecto de software exitoso es pasar el tiempo necesario en la fase de diseño de software de alto nivel. Es significativamente más eficiente construir el software correcto la primera vez. Los desarrolladores que escatiman en la fase de diseño con frecuencia tienen que descartar un enfoque que pasaron tiempo creando porque no tenían una comprensión clara de los requisitos. Trabajar a través del proceso de diseño permite a los equipos determinar los algoritmos generales y las estructuras de datos que necesitan para resolver un problema dado. Libros como Rapid Development y Code Complete, ambos de Steve McConnell, pueden ayudar a guiar su proceso de desarrollo de software hacia una conclusión exitosa.

Pueden pasar varias semanas antes de que los equipos de programación en pares cuajen y comiencen a ver altos niveles de eficiencia, así que sea paciente. Cuando se planifica cuidadosamente y con la aceptación de los participantes, las prácticas de programación en pares pueden aportar beneficios reales al desarrollo de sistemas de automatización de redes.

Investigue más sobre Gestión de redes