Slide 1

Slide 1 text

Hábitos y principios para el desarrollo de proyectos open source Nahuel Garbezza (@ngarbezza)

Slide 2

Slide 2 text

Un poco sobre mí Desarrollador de software saludable y líder de equipo en 10Pines 󰎆 Licenciado en Informática (UNQ 󰎆) Docente de programación orientada a objetos Me gustan los lenguajes dinámicos, desarrollar con TDD, escribir y dar charlas

Slide 3

Slide 3 text

Caso de estudio Testy: https://github.com/ngarbezza/testy Herramienta de testing minimalista en Javascript, diseñada para aprender a testear y a hacer TDD. Diseñada durante la cursada 2018 de Programación Orientada a Objetos 2 (UCA 󰎆)

Slide 4

Slide 4 text

4 principios para proyectos saludables 1⃣ software abierto 2⃣ construcción de comunidad 3⃣ software simple 4⃣ feedback siempre presente

Slide 5

Slide 5 text

Pero antes de empezar recordemos... … lo que nos invita la agilidad: 󰗓 adaptarnos a los cambios, que implica… 󰗓 definir nuevos principios / redefinir existentes, que implica… 󰗓 aprender más y mejor

Slide 6

Slide 6 text

Principio #1: software abierto ¿abierto == open source?

Slide 7

Slide 7 text

Software abierto código disponible + información para comprender el proyecto y su visión + guías de instalación, uso y contribución

Slide 8

Slide 8 text

Hábitos para tener un software más abierto 󰙤 Mantener un README como lugar centralizado de información 👀 Curso Tech Writing https://developers.google.com/tech-writing 👀 Readme-Driven Development https://tom.preston-werner.com/2010/08/23/rea dme-driven-development.html

Slide 9

Slide 9 text

Hábitos para tener un software más abierto 󰙤 Escribir guías de contribución y registro de cambios (changelog) 👀 Versionado semántico https://semver.org/lang/es/ 👀 Keep a changelog https://keepachangelog.com/es-ES/1.0.0/

Slide 10

Slide 10 text

Hábitos para tener un software más abierto 󰙤 Mantener un backlog categorizado y detallado

Slide 11

Slide 11 text

Hábitos para tener un software más abierto 󰙤 Documentar decisiones importantes 👀 Architectural Decision Records (ADR) - https://adr.github.io/

Slide 12

Slide 12 text

Principio #2: construcción de una comunidad Recordemos que hacer software es una actividad social

Slide 13

Slide 13 text

Hábitos para construir una comunidad 󰙤 Involucrarse en eventos y comunidades de tecnología 👀 Hacktoberfest https://hacktoberfest.digitalocean.com/

Slide 14

Slide 14 text

Hábitos para construir una comunidad 󰙤 Reconocer y agradecer a contribuyentes 👀 All Contributors https://allcontributors.org/

Slide 15

Slide 15 text

Principio #3: software simple Lidiamos con la complejidad esencial, evitamos la complejidad accidental

Slide 16

Slide 16 text

Hábitos para escribir software más simple 󰙤 Evitar abstracciones innecesarias, no anticiparnos a la evolución del diseño 👀 KISS, YAGNI

Slide 17

Slide 17 text

Hábitos para escribir software más simple 󰙤 pagar deuda técnica lo más pronto posible, de a poco y seguido

Slide 18

Slide 18 text

Hábitos para escribir software más simple 󰙤 Pensar 3 veces antes de agregar una dependencia

Slide 19

Slide 19 text

Hábitos para escribir software más simple 󰙤 Analizar la complejidad constantemente 👀 CodeClimate (gratuito para proyectos públicos) 👀 Madge https://github.com/pahen/madge

Slide 20

Slide 20 text

Principio #3: feedback siempre presente Aprendemos más y mejor con ciclos cortos de feedback

Slide 21

Slide 21 text

Hábitos para lograr feedback más rápido 󰙤 Lanzar mensajes de error completos 👀 Responder a las preguntas: ¿Cuál es el problema? ¿Dónde ocurrió? ¿Fue un error interno o un problema con algo que hice como usuari@? ¿Cómo podría solucionarlo?

Slide 22

Slide 22 text

Hábitos para lograr feedback más rápido 󰙤 Generar ejemplos

Slide 23

Slide 23 text

Hábitos para lograr feedback más rápido 󰙤 Medir mejoras en cada cambio

Slide 24

Slide 24 text

Lectura recomendada “Design Principles Behind Smalltalk” https://www.cs.virginia.edu/~evans/cs655/readings/smalltalk.html Dan Ingalls, 1981

Slide 25

Slide 25 text

Conclusiones ● Desarrollar open source es más que poner código públicamente ● Desarrollamos siempre en comunidad ● Identificar hábitos saludables y practicarlos ● Muchos de los hábitos los reforzamos realizando TDD ● Nunca perder de vista tus principios ○ Ante un cambio, pensar: que nos acerca y que nos aleja de cumplir con los principios?

Slide 26

Slide 26 text

¡Muchas gracias! @ngarbezza https://blog.10pines.com/author/nahuel https://ngarbezza.com.ar