<?xml version="1.0" encoding="UTF-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es"><title>Chemaclass - pair-programming</title><subtitle>Tech Lead compartiendo ideas prácticas sobre artesanía del software, TDD, liderazgo, Bitcoin e IA. Artículos, resúmenes de libros y charlas.</subtitle><link rel="self" type="application/atom+xml" href="https://chemaclass.com/es/tags/pair-programming/atom.xml"/><link rel="alternate" type="text/html" href="https://chemaclass.com"/><generator uri="https://www.getzola.org/">Zola</generator><updated>2024-03-28T00:00:00+00:00</updated><id>https://chemaclass.com/es/tags/pair-programming/atom.xml</id><entry xml:lang="es"><title>Pair Programming Efectivo</title><subtitle>Abrazando prácticas de calidad en tu cultura de ingeniería</subtitle><category term="pair-programming" scheme="https://chemaclass.com/tags/pair-programming/" label="Pair Programming"/><category term="xp" scheme="https://chemaclass.com/tags/xp/" label="Xp"/><category term="tdd" scheme="https://chemaclass.com/tags/tdd/" label="Tdd"/><category term="communication" scheme="https://chemaclass.com/tags/communication/" label="Communication"/><category term="clean-code" scheme="https://chemaclass.com/tags/clean-code/" label="Clean Code"/><published>2024-03-28T00:00:00+00:00</published><updated>2024-03-28T00:00:00+00:00</updated><author><name>
Chemaclass</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/es/blog/effective-pair-programming/"/><id>https://chemaclass.com/es/blog/effective-pair-programming/</id><summary type="html">Guía práctica de pair programming que funciona: roles, rotación, cuándo hacerlo, errores comunes y cómo hacer sesiones productivas.</summary><content type="html">&lt;p>¿Qué es el pair programming? Dos personas trabajando juntas en el mismo problema, al mismo tiempo.&lt;/p>
&lt;span id="continue-reading">&lt;/span>
&lt;p>No se trata de que una persona muestre sus habilidades frente a otra, ni de que una persona tenga miedo de cometer errores debido al síndrome del impostor.&lt;/p>
&lt;p>Cada persona tendrá un rol:&lt;/p>
&lt;ul>
&lt;li>Navegador: prestará atención al panorama general; ej: arquitectura, relación entre colaboradores, diseño de objetos, etc.&lt;/li>
&lt;li>Conductor: prestará atención a los pequeños detalles; ej: naming, convenciones de código, sintaxis de escritura, diseño de objetos, etc.&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>La pareja podría, y debería, intercambiar roles ocasionalmente; ej: cada X commits pusheados, cada 10 min,… depende de ellos.&lt;/p>
&lt;/blockquote>
&lt;p>El pair programming no debería considerarse una práctica solo para “seniors” hacia juniors, sino independientemente del nivel de experiencia de los miembros del equipo.&lt;/p>
&lt;p>Se trata del &lt;strong>flujo de colaboración&lt;/strong>, la comunicación de calidad, la ausencia de sentirse juzgado y la idea de dar la bienvenida a la vulnerabilidad con tus compañeros, sabiendo que te apoyarán y ayudarán.&lt;/p>
&lt;p>Se trata de desafiarse constantemente mutuamente, buscando la solución más pragmática mientras se mantiene simple. Siempre buscando &lt;strong>retroalimentación rápida&lt;/strong> al hablar entre ustedes, pero también sobre la solución que acordaron implementar y su dirección.&lt;/p>
&lt;p>Se trata del bucle de retroalimentación corto, rápido e inmediato mientras hablas con tu compañero, quien &lt;strong>revisa tu código sobre la marcha&lt;/strong>. Puedes guiar como navegador o ayudar al conductor a validar sus ideas en un panorama más amplio.&lt;/p>
&lt;p>Se trata de la atmósfera constante de &lt;strong>compartir conocimiento&lt;/strong> por defecto, reduciendo bus-factors y áreas de conocimiento aislado al máximo. Aumentando el enfoque al tener dos mentes trabajando en la misma tarea simultáneamente.&lt;/p>
&lt;p>Se trata de &lt;strong>cohesión de equipo&lt;/strong> y afilar el sentimiento de que pertenecemos. Cuando entendemos las fortalezas y debilidades de cada uno, nos daremos cuenta de cuánto podemos ayudarnos a crecer mutuamente.&lt;/p>
&lt;p>&lt;img src="/images/blog/2024-03-28/footer.webp" alt="blog-img" />&lt;/p>
&lt;h2 id="como-puedes-practicar-pair-programming">¿Cómo puedes practicar pair programming?
&lt;a class="heading-anchor" href="#como-puedes-practicar-pair-programming" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>El pair programming puede hacerse de diferentes maneras:&lt;/p>
&lt;ul>
&lt;li>Puedes empezar y terminar una tarea con pairing. Puedes limitarlo a 30, 60, 90 minutos. De cualquier manera, se recomienda tener pausas en el medio - Pomodoro.&lt;/li>
&lt;li>Puedes empezar la tarea juntos y parar cuando uno de tus compañeros se sienta lo suficientemente confiado para continuar solo.&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>Depende del equipo, y de la tarea en contexto, decidir cuándo y cómo aplicar pairing para sacar lo mejor de ello.&lt;/p>
&lt;/blockquote>
&lt;p>Esto no significa que debas trabajar constantemente “sin importar qué” en pareja. No se trata de crear reglas; por el contrario, se trata de abrazar esta práctica hasta el punto de que te sientas confiado para elegir cuándo y cómo usarla para sacar lo mejor de ella.&lt;/p>
&lt;p>El pair programming podría convertirse en una de las mejores herramientas en la caja de herramientas de tu equipo para las interacciones diarias. No porque lo hayas leído en algún lugar, sino por los beneficios que tú y tu equipo encontrarán.&lt;/p>
&lt;h3 id="patrones-comunes">Patrones Comunes
&lt;a class="heading-anchor" href="#patrones-comunes" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;h4 id="diferentes-estrategias-para-pairing-efectivo">Diferentes estrategias para pairing efectivo
&lt;a class="heading-anchor" href="#diferentes-estrategias-para-pairing-efectivo" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>Driver-Navigator&lt;/strong>: Una persona está conduciendo el código (con el teclado), enfocándose en el aspecto de detalle de la tarea en sí. La otra es navegadora (sin teclado), teniendo una imagen más abstracta de la tarea en mente.&lt;/li>
&lt;li>&lt;strong>Ping-Pong&lt;/strong>: Cambio frecuente de roles driver-navigator en pequeñas interacciones, ej: cada N minutos, cada N commits, etc.&lt;/li>
&lt;li>&lt;strong>Backseat driver&lt;/strong>: El navegador se involucra activamente con el conductor.&lt;/li>
&lt;li>&lt;strong>Tourist guide&lt;/strong>: El navegador aprende pasivamente con el conductor.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="/images/blog/2024-03-28/good-pair-prog.jpg" alt="patrones de pair programming efectivo" />&lt;/p>
&lt;h4 id="anti-patrones-mientras-haces-pairing">Anti-patrones mientras haces pairing
&lt;a class="heading-anchor" href="#anti-patrones-mientras-haces-pairing" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>The silent partner&lt;/strong>: El navegador no participa, está en silencio.&lt;/li>
&lt;li>&lt;strong>The solo act&lt;/strong>: El conductor ignora todas las aportaciones del navegador.&lt;/li>
&lt;li>&lt;strong>Distracted pair&lt;/strong>: La pareja no se enfoca en el problema a resolver.&lt;/li>
&lt;li>&lt;strong>The Dictator&lt;/strong>: Una persona está diciendo qué hacer, ignorando las aportaciones del otro.&lt;/li>
&lt;li>&lt;strong>Philosophical pair&lt;/strong>: La pareja está haciendo &lt;a href="/es/blog/bikeshedding/">bikeshedding&lt;/a> en temas irrelevantes.&lt;/li>
&lt;li>&lt;strong>The code war&lt;/strong>: La pareja no llega a un acuerdo y comienza una guerra innecesaria, que desperdicia tiempo y esfuerzo.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="/images/blog/2024-03-28/anti-pair-prog.jpg" alt="anti-patrones de pair programming" />&lt;/p>
&lt;p>&lt;strong>¿Quieres más?&lt;/strong> Mira esto: &lt;a rel="external" href="https://www.figma.com/file/FCmGwRPIO8cLowDRraJhgr/Learning-TDD">Learning Through KATAS&lt;/a>&lt;/p>
&lt;p>&lt;img src="/images/blog/2024-03-28/learning-through-katas.jpg" alt="aprendiendo a través de katas" />&lt;/p>
&lt;h2 id="la-conclusion">La conclusión
&lt;a class="heading-anchor" href="#la-conclusion" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>El pairing no es una regla que imponer, es una herramienta a la que recurrir. Úsalo cuando la tarea es compleja, el
conocimiento está aislado o lo que está en juego es importante. Sáltalo cuando el trabajo es trivial. El objetivo nunca
es “hacer siempre pairing”, es &lt;strong>mejor software y un equipo más fuerte&lt;/strong>. Elige una tarea real esta semana, hazla en
pareja e intercambia roles a menudo. Los beneficios aparecen más rápido de lo que esperas.&lt;/p>
&lt;aside class="kudos">
&lt;span class="kudos__icon" aria-hidden="true">🧠&lt;/span>
&lt;div class="kudos__content">
&lt;p>Gracias a mi amigo &lt;a rel="external" href="https://x.com/evrtrabajo">Manu&lt;/a>, quien me ayudó con este post. Incluso compartimos un &lt;a rel="external" href="https://phpconference.com/agile-culture/practical-tdd-workshop/">taller&lt;/a> sobre este tema.&lt;/p>
&lt;/div>
&lt;/aside></content></entry><entry xml:lang="es"><title>Pull Requests vs Pair Programming</title><subtitle>¿Por qué elegir cuando puedes tener ambos?</subtitle><category term="pair-programming" scheme="https://chemaclass.com/tags/pair-programming/" label="Pair Programming"/><category term="code-review" scheme="https://chemaclass.com/tags/code-review/" label="Code Review"/><category term="agile" scheme="https://chemaclass.com/tags/agile/" label="Agile"/><category term="communication" scheme="https://chemaclass.com/tags/communication/" label="Communication"/><published>2021-04-01T00:00:00+00:00</published><updated>2021-04-01T00:00:00+00:00</updated><author><name>
Chemaclass</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/es/blog/pull-request-vs-pair-prog/"/><id>https://chemaclass.com/es/blog/pull-request-vs-pair-prog/</id><summary type="html">Hablemos de los beneficios de los Pull Requests y el Pair Programming, y mis reflexiones sobre estos después de algunos años de experiencia con ellos.</summary><content type="html">&lt;p>Hablemos de los beneficios de los Pull Requests y el Pair Programming, y mis reflexiones sobre estos después de algunos años de experiencia con ellos.&lt;/p>
&lt;span id="continue-reading">&lt;/span>&lt;h2 id="pull-requests">Pull Requests
&lt;a class="heading-anchor" href="#pull-requests" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Un Pull Request (PR) es una forma de mostrar tus cambios de código para que se comparen fácilmente con el código existente. Es parte de un flujo de trabajo que ayuda a compartir conocimiento sobre los cambios que se hacen en el sistema.&lt;/p>
&lt;blockquote>
&lt;p>Un Pull Request es el momento donde pides a tus compañeros que revisen y examinen tus cambios de código.&lt;/p>
&lt;/blockquote>
&lt;p>Normalmente, también se usa:&lt;/p>
&lt;ol>
&lt;li>Para discusiones sobre estilo de código.&lt;/li>
&lt;li>Para detectar bugs potenciales.&lt;/li>
&lt;li>Para discusiones de arquitectura o diseño una vez que la solución está hecha.&lt;/li>
&lt;/ol>
&lt;h3 id="los-pull-requests-no-son-la-mejor-herramienta-para-todo">Los Pull Requests no son la mejor herramienta para todo
&lt;a class="heading-anchor" href="#los-pull-requests-no-son-la-mejor-herramienta-para-todo" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>El problema es que los PRs suelen estar listos cuando la funcionalidad o bug ya está terminado, en la última etapa del desarrollo.
Un PR es una “propuesta de cambio ya hecha para fusionar en el sistema actual”.&lt;/p>
&lt;p>El concepto de “Draft PR” existe para indicar que el PR aún no está listo para fusionar, pero ese es otro tema.&lt;/p>
&lt;p>Los Pull Requests son una de las mejores herramientas para compartir conocimiento sobre cambios en el sistema, pero a veces se usan mal:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Discusiones sobre estilo de código&lt;/strong>. El estilo no debería discutirse en un PR. Ya debería haber un CI ejecutando un linter. Si quieres cambiar algo, proponlo en el linter, no en un PR aleatorio.&lt;/li>
&lt;li>&lt;strong>Detectar bugs&lt;/strong>. Los bugs y comportamiento esperado deberían cubrirse con tests automatizados. El desarrollador es el primer responsable.&lt;/li>
&lt;li>&lt;strong>Discusiones de arquitectura o diseño&lt;/strong>. Cuando una solución está desarrollada y lista para revisión, es difícil “deshacerla” y reescribirla. “¿Por qué lo harías? Ya está hecho y funciona.”&lt;/li>
&lt;/ol>
&lt;p>Tener a alguien extra revisando decisiones de diseño puede ayudar, pero podríamos haber resuelto posibles desacuerdos antes.&lt;/p>
&lt;h3 id="cual-deberia-ser-el-proposito-de-un-pull-request">¿Cuál debería ser el propósito de un Pull Request?
&lt;a class="heading-anchor" href="#cual-deberia-ser-el-proposito-de-un-pull-request" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ol>
&lt;li>Compartir conocimiento sobre los cambios propuestos con el equipo.&lt;/li>
&lt;li>Asegurar que el equipo está alineado con los múltiples cambios que se envían cada día. Sí, puede incluir verificar el diseño, pero… ¿y si ya es demasiado tarde?&lt;/li>
&lt;/ol>
&lt;h2 id="pair-programming">Pair Programming
&lt;a class="heading-anchor" href="#pair-programming" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>El “Pair Programming” puede entenderse de varias formas: pair thinking, roles conductor-navegador, live coding… En realidad es más sencillo de lo que parece:&lt;/p>
&lt;ul>
&lt;li>Miras y ayudas a la otra persona a escribir código, o&lt;/li>
&lt;li>Escribes mientras tienes otro par de ojos mirándote y ayudándote.&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>El Pair Programming ayuda al equipo a trabajar juntos.&lt;/p>
&lt;/blockquote>
&lt;p>El pair programming es trabajar con un cerebro extra y otro par de ojos. La clave es &lt;strong>construir un contexto&lt;/strong> donde ambos &lt;strong>compartan el mismo objetivo&lt;/strong> para encontrar la &lt;strong>mejor solución posible&lt;/strong>, aprendiendo el uno del otro.
No se trata de dar con la mejor solución desde el principio. Se trata de hacerlo funcionar, compartir ideas y mejorar juntos. Luego ya refactorizas y limpias el código.&lt;/p>
&lt;h3 id="el-pair-programming-es-una-revision-de-codigo-continua">El Pair Programming es una revisión de código continua
&lt;a class="heading-anchor" href="#el-pair-programming-es-una-revision-de-codigo-continua" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Los Pull Requests son una forma asíncrona de compartir cambios de código, mientras que el Pair Programming es totalmente &lt;strong>síncrono&lt;/strong> porque sucede al mismo tiempo.&lt;/p>
&lt;p>Los Pull Requests y el Pair Programming no son excluyentes, pueden coexistir. Son herramientas, y hay que elegirlas con criterio según nuestros objetivos.&lt;/p>
&lt;p>El miedo más común que he visto al animar a hacer Pair Programming es la timidez. A algunas personas no les gusta tener ojos encima mientras programan:&lt;/p>
&lt;ul>
&lt;li>Miedo a no saber qué programar o por dónde empezar.&lt;/li>
&lt;li>Miedo a que otros se rían de sus soluciones.&lt;/li>
&lt;li>Miedo a no tener éxito en público.&lt;/li>
&lt;li>Miedo a no poder desarrollar la solución esperada por múltiples razones: malentender la tarea o falta de conocimiento.&lt;/li>
&lt;li>Miedo a cambiar de opinión frente a otros.&lt;/li>
&lt;li>Miedo a discutir y tomar decisiones en voz alta.&lt;/li>
&lt;li>Miedo a estar en desacuerdo con otros.&lt;/li>
&lt;/ul>
&lt;h2 id="despues-de-varios-anos-de-experiencia-en-este-tema">Después de varios años de experiencia en este tema
&lt;a class="heading-anchor" href="#despues-de-varios-anos-de-experiencia-en-este-tema" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>El patrón que rechaza el Pair Programming es básicamente el miedo a salir de tu zona de confort. Y viene de no entender qué es realmente el Pair Programming.&lt;/p>
&lt;p>No se trata de presumir ni de ser juzgado, sino de ser transparente (mostrar tus habilidades tal como son) y mejorar como equipo.&lt;/p>
&lt;p>Programar es un proceso iterativo que requiere refactorizar continuamente nuestra forma de pensar. Programar con otra persona (con otra forma de pensar) ayuda al equipo a sacar lo mejor de cada uno y a descartar malos hábitos.&lt;/p>
&lt;p>El Pair Programming no tiene que usarse siempre ni para todo. Es una herramienta flexible: puedes elegir cómo, cuándo y por qué.&lt;/p>
&lt;p>Una regla personal: antes de empezar tareas que tocan múltiples módulos o reglas de negocio complejas, haz un Pair Thinking rápido con un colega más experimentado en ese área.&lt;/p>
&lt;blockquote>
&lt;p>Todo depende de un contexto y personas particulares: los desarrolladores, las parejas, las tareas, el estado de ánimo.&lt;/p>
&lt;/blockquote>
&lt;h3 id="todavia-incomodo-con-el-pair-programming">¿Todavía incómodo con el Pair Programming?
&lt;a class="heading-anchor" href="#todavia-incomodo-con-el-pair-programming" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Si aún te sientes incómodo con alguien a tu lado mientras programas, quizás no estés contento con tu propio código o con el proceso que sigues. Mi forma favorita de trabajar esto es practicar por mi cuenta y mejorar mis habilidades como desarrollador.&lt;/p>
&lt;ul>
&lt;li>Crea y juega con tus propios proyectos personales.&lt;/li>
&lt;li>Trabaja en katas de código por tu cuenta y con otros.&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>La práctica hace al maestro.&lt;/p>
&lt;/blockquote>
&lt;h2 id="manten-las-pull-requests-anade-pair-programming">Mantén las pull requests, añade pair programming
&lt;a class="heading-anchor" href="#manten-las-pull-requests-anade-pair-programming" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>No me malinterpretes, los Pull Requests son geniales. Sigue haciéndolos.&lt;/li>
&lt;li>La colaboración en equipo es esencial. El Pair Programming apunta a esto.&lt;/li>
&lt;li>El Pair Programming anima al equipo a trabajar juntos proactivamente.&lt;/li>
&lt;li>No tengas miedo de programar mientras tienes ojos a tu alrededor. Haz preguntas cuando algo no esté claro. Pide ayuda cuando no sepas cómo resolver algo.&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>Está totalmente bien no saber todo. Lo más importante es saber cómo trabajar juntos.&lt;/p>
&lt;/blockquote>
&lt;p>&lt;img src="/images/blog/2021-04-01/footer.webp" alt="dos desarrolladores haciendo pair programming" />&lt;/p></content></entry><entry xml:lang="es"><title>Compartiendo tus Parches de Git</title><subtitle>Otra forma de compartir sugerencias rápidas con tu equipo</subtitle><category term="git" scheme="https://chemaclass.com/tags/git/" label="Git"/><category term="code-review" scheme="https://chemaclass.com/tags/code-review/" label="Code Review"/><category term="communication" scheme="https://chemaclass.com/tags/communication/" label="Communication"/><category term="pair-programming" scheme="https://chemaclass.com/tags/pair-programming/" label="Pair Programming"/><published>2020-12-01T00:00:00+00:00</published><updated>2020-12-01T00:00:00+00:00</updated><author><name>
Chemaclass</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/es/blog/sharing-git-patches/"/><id>https://chemaclass.com/es/blog/sharing-git-patches/</id><summary type="html">Descubre otra forma de compartir sugerencias con tu equipo de desarrollo.</summary><content type="html">&lt;p>Descubre otra forma de compartir sugerencias con tu equipo de desarrollo.&lt;/p>
&lt;span id="continue-reading">&lt;/span>&lt;h3 id="imagina-esta-situacion">Imagina esta situación
&lt;a class="heading-anchor" href="#imagina-esta-situacion" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Estás revisando un Pull Request (PR), y ves algunas mejoras menores o sugerencias que te gustaría compartir con el autor. Podrías escribir algunos comentarios, y normalmente, eso sería suficiente.&lt;/p>
&lt;p>Imagina que para transmitir tu “idea completa” necesitarías cambiar algunos archivos porque simplemente comunicar la imagen completa acabará en un comentario enorme que podría no ser tan claro como podría ser.&lt;/p>
&lt;h2 id="que-posibilidades-hay-aparte-de-solo-comentarios-en-un-pr">¿Qué posibilidades hay aparte de solo comentarios en un PR?
&lt;a class="heading-anchor" href="#que-posibilidades-hay-aparte-de-solo-comentarios-en-un-pr" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Bueno, hay múltiples opciones. La clave es ser consciente de ellas y usarlas sabiamente dependiendo de la prioridad de la tarea y los cambios en sí:&lt;/p>
&lt;ul>
&lt;li>Como ya se mencionó, escribir un comentario como retroalimentación es una buena idea por defecto, pero no la única.&lt;/li>
&lt;li>Siempre podemos hacer algo de pair-thinking, hablar en cualquier momento. La comunicación siempre es buena para aclarar la posible incertidumbre.&lt;/li>
&lt;li>Compartir tus parches de git es otra buena opción.&lt;/li>
&lt;/ul>
&lt;h2 id="git-diff-al-rescate">¡Git diff al rescate!
&lt;a class="heading-anchor" href="#git-diff-al-rescate" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>¿Y si tú (como revisor) pudieras compartir tu idea sin ningún commit o comentario en el PR, pero compartiendo tus cambios directamente con el autor?&lt;/p>
&lt;p>Bueno, eso es realmente posible y muy fácil. Como ya sabes, el comando git diff te da las diferencias entre dos ramas cualesquiera.&lt;/p>
&lt;pre class="giallo" style="color-scheme: light dark; color: light-dark(#24292E, #E1E4E8); background-color: light-dark(#FFFFFF, #24292E);">&lt;code data-lang="shellscript">&lt;span class="giallo-l">&lt;span style="color: light-dark(#6F42C1, #B392F0);">git&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> diff&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> origin&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> develop&lt;/span>&lt;span style="color: light-dark(#D73A49, #F97583);"> &amp;gt;&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> ../my-origin-develop.patch&lt;/span>&lt;/span>&lt;/code>&lt;/pre>
&lt;p>Lo que estamos haciendo aquí es redirigir la salida del comando diff a un archivo (también conocido como: parche), para poder compartir esa salida con cualquier otro compañero de equipo.&lt;/p>
&lt;h2 id="y-ahora-que">¿Y ahora qué?
&lt;a class="heading-anchor" href="#y-ahora-que" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Bueno, teniendo ese archivo de parche, es bastante fácil aplicar esos cambios en tu máquina local sin hacer ningún commit:&lt;/p>
&lt;pre class="giallo" style="color-scheme: light dark; color: light-dark(#24292E, #E1E4E8); background-color: light-dark(#FFFFFF, #24292E);">&lt;code data-lang="shellscript">&lt;span class="giallo-l">&lt;span style="color: light-dark(#6F42C1, #B392F0);">git&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> apply&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> ../my-origin-develop.patch&lt;/span>&lt;/span>&lt;/code>&lt;/pre>
&lt;p>Aplicar este parche simplemente cambiará tu sistema local de la misma manera que se creó el parche.&lt;/p>
&lt;h2 id="como-hacerlo-por-pasos">“Cómo hacerlo” por pasos
&lt;a class="heading-anchor" href="#como-hacerlo-por-pasos" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Dividamos las responsabilidades en dos: el creador del parche y su usuario:&lt;/p>
&lt;h3 id="el-creador-del-parche-la-persona-que-creara-el-parche">El creador del parche: la persona que creará el parche
&lt;a class="heading-anchor" href="#el-creador-del-parche-la-persona-que-creara-el-parche" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;pre class="giallo" style="color-scheme: light dark; color: light-dark(#24292E, #E1E4E8); background-color: light-dark(#FFFFFF, #24292E);">&lt;code data-lang="shellscript">&lt;span class="giallo-l">&lt;span style="color: light-dark(#6A737D, #6A737D);">#&lt;/span>&lt;span style="color: light-dark(#6A737D, #6A737D);"> Cambia a esa rama&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#6F42C1, #B392F0);">$&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> ~/myProject&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> git:&lt;/span>&lt;span>(&lt;/span>&lt;span style="color: light-dark(#6F42C1, #B392F0);">the-branch&lt;/span>&lt;span>)&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> ➜&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> git&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> pull&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> origin&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> the-branch&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#6A737D, #6A737D);">#&lt;/span>&lt;span style="color: light-dark(#6A737D, #6A737D);"> Haz tus sugerencias y cambios en la rama objetivo&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#6A737D, #6A737D);">#&lt;/span>&lt;span style="color: light-dark(#6A737D, #6A737D);"> Genera el archivo de parche usando el comando diff&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#6F42C1, #B392F0);">$&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> ~/myProject&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> git:&lt;/span>&lt;span>(&lt;/span>&lt;span style="color: light-dark(#6F42C1, #B392F0);">the-branch&lt;/span>&lt;span>)&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> ➜&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> git&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> diff&lt;/span>&lt;span style="color: light-dark(#D73A49, #F97583);"> &amp;gt;&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> ../your-diff.patch&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#6A737D, #6A737D);">#&lt;/span>&lt;span style="color: light-dark(#6A737D, #6A737D);"> Comparte el archivo de parche con el autor del PR&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;h3 id="el-usuario-del-parche-la-persona-que-vera-el-parche">El usuario del parche: la persona que verá el parche
&lt;a class="heading-anchor" href="#el-usuario-del-parche-la-persona-que-vera-el-parche" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;pre class="giallo" style="color-scheme: light dark; color: light-dark(#24292E, #E1E4E8); background-color: light-dark(#FFFFFF, #24292E);">&lt;code data-lang="shellscript">&lt;span class="giallo-l">&lt;span style="color: light-dark(#6A737D, #6A737D);">#&lt;/span>&lt;span style="color: light-dark(#6A737D, #6A737D);"> Asegúrate de estar en esa rama&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#6F42C1, #B392F0);">$&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> ~/myProject&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> git:&lt;/span>&lt;span>(&lt;/span>&lt;span style="color: light-dark(#6F42C1, #B392F0);">the-branch&lt;/span>&lt;span>)&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> ➜&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> git&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> pull&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> origin&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> the-branch&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#6A737D, #6A737D);">#&lt;/span>&lt;span style="color: light-dark(#6A737D, #6A737D);"> Aplica el archivo de parche&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#6F42C1, #B392F0);">$&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> ~/myProject&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> git:&lt;/span>&lt;span>(&lt;/span>&lt;span style="color: light-dark(#6F42C1, #B392F0);">the-branch&lt;/span>&lt;span>)&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> ➜&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> git&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> apply&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> ../your-diff.patch&lt;/span>&lt;/span>&lt;/code>&lt;/pre>
&lt;hr />
&lt;h4 id="referencias">Referencias
&lt;a class="heading-anchor" href="#referencias" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h4>
&lt;ul>
&lt;li>&lt;a rel="external" href="https://git-scm.com/docs/git-apply">Documentación oficial de “git apply”&lt;/a>&lt;/li>
&lt;/ul></content></entry><entry xml:lang="es"><title>Programación Extrema Explicada</title><subtitle>Abraza el Cambio</subtitle><category term="xp" scheme="https://chemaclass.com/tags/xp/" label="Xp"/><category term="agile" scheme="https://chemaclass.com/tags/agile/" label="Agile"/><category term="tdd" scheme="https://chemaclass.com/tags/tdd/" label="Tdd"/><category term="pair-programming" scheme="https://chemaclass.com/tags/pair-programming/" label="Pair Programming"/><category term="communication" scheme="https://chemaclass.com/tags/communication/" label="Communication"/><published>2020-03-05T00:00:00+00:00</published><updated>2020-03-05T00:00:00+00:00</updated><author><name>
Kent Beck</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/es/readings/extreme-programming-explained/"/><id>https://chemaclass.com/es/readings/extreme-programming-explained/</id><summary type="html">XP busca producir mejor software y mejor calidad de vida para el equipo. Es el framework ágil más específico en cuanto a prácticas de ingeniería.</summary><content type="html">&lt;span id="continue-reading">&lt;/span>&lt;h2 id="definicion">Definición
&lt;a class="heading-anchor" href="#definicion" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Extreme Programming (XP) es un framework ágil que busca producir mejor software y mejor calidad de vida para el equipo de desarrollo. Es el más específico de los frameworks ágiles en cuanto a prácticas de ingeniería.&lt;/p>
&lt;hr />
&lt;h2 id="valores">Valores
&lt;a class="heading-anchor" href="#valores" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Los cinco valores de XP son comunicación, simplicidad, feedback, coraje y respeto.&lt;/p>
&lt;h3 id="comunicacion">Comunicación
&lt;a class="heading-anchor" href="#comunicacion" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>El desarrollo de software es un deporte de equipo. Depende de la comunicación para transferir conocimiento entre los miembros. XP enfatiza la comunicación cara a cara, preferiblemente con una pizarra a mano.&lt;/p>
&lt;h3 id="simplicidad">Simplicidad
&lt;a class="heading-anchor" href="#simplicidad" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Simplicidad significa “¿qué es lo más simple que funcionará?” El objetivo es evitar el desperdicio y hacer solo lo necesario. Mantener el diseño lo más simple posible facilita el mantenimiento y la revisión. También significa abordar solo los requisitos que conoces ahora, sin intentar predecir el futuro.&lt;/p>
&lt;h3 id="feedback">Feedback
&lt;a class="heading-anchor" href="#feedback" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Con feedback constante sobre el trabajo previo, los equipos identifican áreas de mejora y ajustan sus prácticas. El equipo construye algo, recoge feedback sobre el diseño e implementación, y ajusta el producto en consecuencia.&lt;/p>
&lt;h3 id="coraje">Coraje
&lt;a class="heading-anchor" href="#coraje" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Kent Beck definió el coraje como “acción efectiva ante el miedo”. Necesitas coraje para:&lt;/p>
&lt;ul>
&lt;li>Plantear problemas organizacionales que reducen la efectividad del equipo.&lt;/li>
&lt;li>Dejar de hacer algo que no funciona y probar algo diferente.&lt;/li>
&lt;li>Aceptar y actuar según el feedback, aunque sea difícil de escuchar.&lt;/li>
&lt;/ul>
&lt;h3 id="respeto">Respeto
&lt;a class="heading-anchor" href="#respeto" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Los miembros del equipo necesitan respetarse mutuamente para comunicarse bien, dar y recibir feedback de forma constructiva, y trabajar juntos en diseños y soluciones simples.&lt;/p>
&lt;hr />
&lt;h2 id="principios">Principios
&lt;a class="heading-anchor" href="#principios" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;h3 id="humanidad">Humanidad
&lt;a class="heading-anchor" href="#humanidad" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Los seres humanos desarrollan software. El libro menciona 5 cosas que necesitan los desarrolladores para crecer: seguridad básica, logro, pertenencia, crecimiento e intimidad.&lt;/p>
&lt;p>La magia de los grandes equipos es que, una vez que desarrollan confianza, sus miembros se sienten libres de ser más ellos mismos.&lt;/p>
&lt;h3 id="economia">Economía
&lt;a class="heading-anchor" href="#economia" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>El software cuesta dinero. Alguien pagó o invirtió en él.&lt;/p>
&lt;p>Asegúrate de que lo que haces tenga valor de negocio y sirva a sus necesidades. Resolver primero la necesidad más prioritaria maximiza el valor del proyecto.&lt;/p>
&lt;p>Cuanto antes el software genere dinero, antes el desarrollo será valioso.&lt;/p>
&lt;h3 id="beneficio-mutuo">Beneficio Mutuo
&lt;a class="heading-anchor" href="#beneficio-mutuo" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>El beneficio mutuo en XP busca actividades que beneficien a todos los involucrados: a mí ahora, a mí después, y a los clientes.&lt;/p>
&lt;p>El libro presenta 3 formas de comunicarte con el futuro:&lt;/p>
&lt;ul>
&lt;li>Escribo tests automatizados que me ayudan a diseñar e implementar hoy. Los dejo para que los futuros programadores también los usen.&lt;/li>
&lt;li>Refactorizo para eliminar complejidad accidental. Menos defectos y código más fácil de entender para quien venga después.&lt;/li>
&lt;li>Elijo nombres de un conjunto coherente de metáforas. Acelera mi desarrollo y hace el código más claro para nuevos programadores.&lt;/li>
&lt;/ul>
&lt;h3 id="auto-similaridad">Auto-Similaridad
&lt;a class="heading-anchor" href="#auto-similaridad" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Copiar la estructura de una solución a un nuevo contexto.&lt;/p>
&lt;p>Por ejemplo, la estructura básica del desarrollo: escribes un test que falla y luego lo haces funcionar. Esta estructura opera a todas las escalas. Ojo: es un buen comienzo, pero no siempre funciona.&lt;/p>
&lt;h3 id="mejora">Mejora
&lt;a class="heading-anchor" href="#mejora" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Haz lo mejor que puedas hoy, pero esfuérzate por hacerlo mejor mañana. XP brilla aquí: se trata de mejorar siempre.&lt;/p>
&lt;blockquote>
&lt;p>Pon la mejora a trabajar sin esperar la perfección. Encuentra un punto de partida, comienza y mejora desde ahí.&lt;/p>
&lt;/blockquote>
&lt;h3 id="diversidad">Diversidad
&lt;a class="heading-anchor" href="#diversidad" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Los equipos necesitan personas de diferentes orígenes, experiencias y actitudes. Así tienen diferentes formas de pensar y resolver problemas.&lt;/p>
&lt;p>Los programadores deberían trabajar juntos en el problema y valorar ambas opiniones.&lt;/p>
&lt;h3 id="reflexion">Reflexión
&lt;a class="heading-anchor" href="#reflexion" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Los buenos equipos reflexionan después de la acción, regularmente. Piensan sobre por qué y cómo están trabajando.&lt;/p>
&lt;ul>
&lt;li>¿Por qué tuvimos éxito? ¿Qué deberíamos seguir haciendo?&lt;/li>
&lt;li>¿Por qué fallamos? ¿Qué podemos hacer mejor?&lt;/li>
&lt;/ul>
&lt;p>Aunque todo parezca perfecto, siempre hay espacio para mejorar:&lt;/p>
&lt;ul>
&lt;li>¿Por qué las cosas parecen perfectas? ¿Qué hacemos bien? ¿Qué podemos mejorar?&lt;/li>
&lt;/ul>
&lt;h3 id="flujo">Flujo
&lt;a class="heading-anchor" href="#flujo" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>El flujo en desarrollo de software es entregar valor constante participando en todas las actividades simultáneamente. No entregues software en grandes porciones. Despliega incrementos más pequeños con más frecuencia.&lt;/p>
&lt;h3 id="oportunidad">Oportunidad
&lt;a class="heading-anchor" href="#oportunidad" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Aprende a ver los problemas como oportunidades para aprender y mejorar.&lt;/p>
&lt;blockquote>
&lt;p>Parte de ser extremo es elegir conscientemente transformar cada problema en una oportunidad: para el crecimiento personal, profundizar relaciones y mejorar el software.&lt;/p>
&lt;/blockquote>
&lt;h3 id="redundancia">Redundancia
&lt;a class="heading-anchor" href="#redundancia" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Los problemas difíciles deberían resolverse de múltiples maneras.&lt;/p>
&lt;blockquote>
&lt;p>El costo de la redundancia se paga con creces por los ahorros de evitar un desastre.&lt;/p>
&lt;/blockquote>
&lt;h3 id="fracaso">Fracaso
&lt;a class="heading-anchor" href="#fracaso" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>A veces no sabes qué camino tomar. Prueba las ideas que tienes, aunque fallen. El fracaso no es desperdicio, sino aprendizaje.&lt;/p>
&lt;p>Cuidado con la trampa de discutir o pensar eternamente sin hacer nada.&lt;/p>
&lt;blockquote>
&lt;p>Cuando no sabes qué hacer, arriesgarte al fracaso puede ser el camino más corto hacia el éxito.&lt;/p>
&lt;/blockquote>
&lt;h3 id="calidad">Calidad
&lt;a class="heading-anchor" href="#calidad" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Los proyectos no van más rápido bajando la calidad. Suele ser al revés. Resulta en entregas más tardías y menos predecibles por el tiempo dedicado a corregir bugs.&lt;/p>
&lt;p>Aumentar la calidad suele resultar en entregas más rápidas.&lt;/p>
&lt;blockquote>
&lt;p>La preocupación por la calidad no es excusa para la inacción. Si no conoces una forma limpia de hacer algo que hay que hacer, hazlo lo mejor que puedas. Si conoces una forma limpia pero tomaría demasiado tiempo, haz el trabajo tan bien como el tiempo te permita. Resuélvelo de forma limpia después.&lt;/p>
&lt;/blockquote>
&lt;h3 id="pasos-pequenos">Pasos Pequeños
&lt;a class="heading-anchor" href="#pasos-pequenos" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Da pasos pequeños. Hacer grandes cambios de golpe es peligroso. Las personas y equipos pueden dar muchos pasos pequeños y parecer que avanzan rápido.&lt;/p>
&lt;blockquote>
&lt;p>Los pasos pequeños reconocen que su sobrecarga es mucho menor que cuando un equipo retrocede desperdiciando cambios grandes abortados.&lt;/p>
&lt;/blockquote>
&lt;h3 id="responsabilidad-aceptada">Responsabilidad Aceptada
&lt;a class="heading-anchor" href="#responsabilidad-aceptada" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;blockquote>
&lt;p>La responsabilidad no puede asignarse; solo puede aceptarse. Si alguien intenta darte responsabilidad, solo tú puedes decidir si la aceptas o no.&lt;/p>
&lt;/blockquote>
&lt;hr />
&lt;h2 id="practicas">Prácticas
&lt;a class="heading-anchor" href="#practicas" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Se pueden hacer de forma aislada, pero muchos equipos han descubierto que algunas prácticas refuerzan a otras. Hacerlas juntas elimina los riesgos típicos del desarrollo de software.&lt;/p>
&lt;h3 id="sentarse-juntos">Sentarse Juntos
&lt;a class="heading-anchor" href="#sentarse-juntos" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>La comunicación es uno de los cinco valores de XP. Haz que tu equipo se siente junto en el mismo espacio sin barreras como paredes de cubículos.&lt;/p>
&lt;h3 id="equipo-completo">Equipo Completo
&lt;a class="heading-anchor" href="#equipo-completo" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Incluye personas con todas las habilidades y perspectivas necesarias para que el proyecto tenga éxito.&lt;/p>
&lt;h3 id="espacio-de-trabajo-informativo">Espacio de Trabajo Informativo
&lt;a class="heading-anchor" href="#espacio-de-trabajo-informativo" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Configura el espacio para facilitar la comunicación cara a cara, permite algo de privacidad cuando la necesiten, y haz el trabajo transparente para el equipo y las partes interesadas.&lt;/p>
&lt;h3 id="trabajo-energizado">Trabajo Energizado
&lt;a class="heading-anchor" href="#trabajo-energizado" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Eres más efectivo en el desarrollo de software cuando estás enfocado y libre de distracciones.&lt;/p>
&lt;h3 id="programacion-en-parejas">Programación en Parejas
&lt;a class="heading-anchor" href="#programacion-en-parejas" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Todo el software de producción lo desarrollan dos personas en la misma máquina. Dos cerebros y cuatro ojos son mejores que un cerebro y dos ojos. Obtienes revisión de código continua y respuestas más rápidas a problemas que podrían bloquear a una persona sola.&lt;/p>
&lt;p>Los equipos que usan programación en parejas descubren que mejora la calidad sin tomar el doble de tiempo. Resuelven problemas más rápido y se mantienen más enfocados, escribiendo menos código para lograr lo mismo.&lt;/p>
&lt;p>Los programadores en pareja:&lt;/p>
&lt;ul>
&lt;li>Se mantienen mutuamente en la tarea.&lt;/li>
&lt;li>Hacen lluvia de ideas sobre mejoras al sistema.&lt;/li>
&lt;li>Clarifican ideas.&lt;/li>
&lt;li>Toman la iniciativa cuando el compañero está atascado, reduciendo la frustración.&lt;/li>
&lt;li>Se hacen mutuamente responsables de las prácticas del equipo.&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>La programación en parejas es un diálogo entre dos personas programando simultáneamente (analizando, diseñando y probando) e intentando programar mejor.&lt;/p>
&lt;/blockquote>
&lt;p>Si necesitas privacidad y tiempo para trabajar en una idea, adelante. Necesitamos tanto compañía como privacidad. Rota parejas frecuentemente y toma descansos: el pairing puede ser agotador, pero es gratificante.&lt;/p>
&lt;h3 id="historias">Historias
&lt;a class="heading-anchor" href="#historias" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Describe lo que el producto debería hacer en términos significativos para clientes y usuarios. Son descripciones cortas de cosas que los usuarios quieren hacer. Sirven para planificar y como recordatorios para conversaciones más detalladas.&lt;/p>
&lt;p>Dale a las historias un título corto y una descripción. Escríbelas en tarjetas y ponlas en una pared visible.&lt;/p>
&lt;p>En XP las historias se estiman muy temprano. Esto hace que el equipo piense en cómo obtener el mayor retorno de la pequeña inversión.&lt;/p>
&lt;h3 id="ciclo-semanal">Ciclo Semanal
&lt;a class="heading-anchor" href="#ciclo-semanal" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>El Ciclo Semanal es una iteración. El equipo se reúne el primer día de la semana para reflexionar sobre el progreso. El cliente elige las historias que quiere entregar esa semana, y el equipo determina cómo abordarlas.&lt;/p>
&lt;p>La idea es producir algo para mostrar al cliente y obtener feedback.&lt;/p>
&lt;h3 id="build-de-diez-minutos">Build de Diez Minutos
&lt;a class="heading-anchor" href="#build-de-diez-minutos" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>El objetivo es construir automáticamente todo el sistema y ejecutar todos los tests en diez minutos.&lt;/p>
&lt;h3 id="integracion-continua">Integración Continua
&lt;a class="heading-anchor" href="#integracion-continua" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Los cambios de código se prueban inmediatamente al añadirse al código base. El beneficio: detectas y corriges problemas de integración antes.&lt;/p>
&lt;p>Requiere disciplina extra y depende mucho del Build de Diez Minutos y el Desarrollo Test-First.&lt;/p>
&lt;h3 id="programacion-test-first">Programación Test-First
&lt;a class="heading-anchor" href="#programacion-test-first" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;blockquote>
&lt;p>Escribe un test automatizado que falle antes de cambiar cualquier código.&lt;/p>
&lt;/blockquote>
&lt;p>El libro menciona 4 problemas que aborda:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Expansión del alcance: Es fácil dejarse llevar y poner código “por si acaso”. Al declarar explícitamente lo que el programa debe hacer, te das un foco. Si quieres ese otro código, escribe otro test después.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Acoplamiento y cohesión: Si es difícil escribir un test, tienes un problema de diseño, no de testing. El código débilmente acoplado y altamente cohesivo es fácil de probar.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Confianza: Es difícil confiar en el autor de código que no funciona. Al escribir código limpio que funciona y demostrar tus intenciones con tests, das a tus compañeros razones para confiar en ti.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Ritmo: Es fácil perderse horas programando. Con test-first, siempre sabes qué hacer: escribir otro test o hacer que el test roto funcione. Se desarrolla un ritmo natural: test, código, refactorizar, test, código, refactorizar.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="diseno-incremental">Diseño Incremental
&lt;a class="heading-anchor" href="#diseno-incremental" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;blockquote>
&lt;p>Invierte en el diseño del sistema todos los días.&lt;/p>
&lt;/blockquote>
&lt;p>Haces un poco de trabajo inicial para entender el diseño general, y luego profundizas en los detalles cuando entregas características específicas.&lt;/p>
&lt;p>Este enfoque reduce el costo de los cambios y te permite tomar decisiones de diseño basándote en la información más actual.&lt;/p>
&lt;hr />
&lt;h2 id="roles">Roles
&lt;a class="heading-anchor" href="#roles" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>XP especifica prácticas, pero no establece roles específicos. Según la fuente, o no hay orientación, o hay descripciones de cómo los roles tradicionales se comportan en proyectos XP.&lt;/p>
&lt;h3 id="el-cliente">El Cliente
&lt;a class="heading-anchor" href="#el-cliente" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Responsable de tomar todas las decisiones de negocio del proyecto.&lt;/p>
&lt;p>Se asume que es una sola persona, pero la experiencia muestra que una persona no puede proporcionar toda la información de negocio de un proyecto.&lt;/p>
&lt;h3 id="el-desarrollador">El Desarrollador
&lt;a class="heading-anchor" href="#el-desarrollador" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Como XP no necesita definición de roles, todos (excepto el cliente y un par de roles secundarios) se llaman desarrolladores. Son responsables de realizar las historias identificadas por el Cliente.&lt;/p>
&lt;h3 id="el-rastreador">El Rastreador
&lt;a class="heading-anchor" href="#el-rastreador" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Su propósito es llevar el seguimiento de métricas relevantes para rastrear el progreso e identificar áreas de mejora.&lt;/p>
&lt;h3 id="el-coach">El Coach
&lt;a class="heading-anchor" href="#el-coach" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Usualmente un consultor externo (o alguien de otra parte de la organización) que ha usado XP antes. Ayuda a mentorear al equipo en las prácticas XP y a mantener la autodisciplina.&lt;/p>
&lt;hr />
&lt;h4 id="que-es-xp-en-2-min">¿Qué es XP? (en 2 min)
&lt;a class="heading-anchor" href="#que-es-xp-en-2-min" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h4>
&lt;div style="position:relative;aspect-ratio:16/9;width:100%;">
&lt;iframe
src="https://www.youtube-nocookie.com/embed/hbFOwqYIOcU"
title="YouTube video"
width="560"
height="315"
loading="lazy"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
referrerpolicy="strict-origin-when-cross-origin"
style="position:absolute;inset:0;width:100%;height:100%;border:0;"
allowfullscreen>
&lt;/iframe>
&lt;/div>
&lt;h4 id="tech-talk-de-kent-beck-xp-20-anos-despues">Tech Talk de Kent Beck: XP 20 años después
&lt;a class="heading-anchor" href="#tech-talk-de-kent-beck-xp-20-anos-despues" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h4>
&lt;div style="position:relative;aspect-ratio:16/9;width:100%;">
&lt;iframe
src="https://www.youtube-nocookie.com/embed/cGuTmOUdFbo"
title="YouTube video"
width="560"
height="315"
loading="lazy"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
referrerpolicy="strict-origin-when-cross-origin"
style="position:absolute;inset:0;width:100%;height:100%;border:0;"
allowfullscreen>
&lt;/iframe>
&lt;/div></content></entry></feed>