TDD no sirve para todo pero ayuda

Soy un fiel defensor de hacer tests y sobre todo de hacerlos antes de escribir una linea de código, pero no todo lo que hacemos tiene que estar hecho con TDD. Quizás el título sea un poco clickbait,.. en este post me gustaría que reflexionásemos sobre algunos aspectos a tener en cuenta de por qué Test Driven Development no es una bala de plata aunque ayuda mucho al diseño y de algunos temas interesantes alrededor del testing, refactoring y software.

"Cuando la única herramienta que tienes es un martillo, todo problema comienza a parecerse a un clavo".

No todo lo que hacemos tiene que estar hecho con TDD. ¡Pensar antes de escribir es mucho más importante! Por esta razón, estamos seguro de que es posible hacer buen software sin TDD. Aunque creo que hacer software sin TDD es más complicado porque no todo el mundo es capaz de pensar antes de escribir. Además a veces las “circunstancias” nos empujan a ir rápido, a tenerlo listo ya, o incluso a pensar (ilusos de nosotros) esto lo arreglamos más adelante. Del mismo modo, podemos llegar a un lugar oscuro si no nos planteamos a probar el software lo más pronto posible. Seguro que alguna vez nos ha pasado que llegamos a un una clase, servicio o feature que es difícil de probar. ¡eso sin duda es un “mal olor”! Quizás en el futuro ese mal olor acabe en algo podrido que y nos dé algún que otro dolor de cabeza. En cualquier caso cuando usamos TDD este nos provee de un proceso para analizar los problemas, para comprender qué es lo que está pasando, qué casos se nos pueden presentar, qué casos son excepcionales,….. además nos proporciona un arnés de seguridad para ir mejorando(refactor). Sin este proceso de TDD: hacer un test, comprobar que falla, hacer código para pasar el test y refactorizar, Lo qué tenemos es un proceso custom, donde cada miembro del equipo crea de manera distinta y por quizás lleguemos a situaciones en las que modificar un código se nos haga un poco cuesta arriba.

Continúa leyendo “TDD no sirve para todo pero ayuda”

Técnicas para mantener al legacy code bajo control

Somos desarrolladores de software, tenemos que leer código gran parte de nuestro día, tenemos que usar código legado y tenemos que mantenerlo, incluso añadir nuevas funcionalidades. ¿Cómo lo hacemos? ¿Cómo abordamos cambios en legacy code de manera eficiente? Pues no tengo ni idea, pero sí sé que si tengo una buena caja de herramientas cerca mi trabajo será más sencillo. Por eso en este post vamos a llenar nuestra caja de herramientas con algunas técnicas que nos ayudarán a trabajar un poco mejor con legacy code. No se trata de usarlas todas siempre, sino de tenerlas a mano para cuando nos hagan falta. Continúa leyendo Técnicas para mantener al legacy code bajo control

Modernizando aplicaciones PHP: antipatrones más comunes

A lo largo de mi carrera he tenido la oportunidad de “meter las narices” en unas cuantas aplicaciones… a algunas de ese aplicaciones podríamos llamarlas “legacy” en el sentido de que son aplicaciones que necesitan algo de “cariño”. Recuerdo una pregunta en una ¿Y tu cómo te enfrentas a aplicaciones legacy? mi respuesta fue Con paciencia. Así que hoy escribiremos sobre antipatrones más comunes cuando nos enfrentamos a una aplicación legacy. Este artículo no vamos a reescribir todo en <el fancy framwork que sea>,sino que veremos como hacer nuestras aplicaciones un poco más mantenibles.

Si quieres profundizar más sobre el legacy este artículo titulado “Mi código en producción ya es legacy” de Fran Iglesias es genial.

Continúa leyendo “Modernizando aplicaciones PHP: antipatrones más comunes”

Charlas interesantes durante el confinamiento

En estos días de estar en casa, me ha dado tiempo a ver/escuchar algunas charlar interesantes sobre todo mientras estoy haciendo mi deporte favorito de cuarentena: subir y bajar las escaleras. Equipos distribuidos. Información Centralizada. (Jorge Barroso) – Software Crafters en Red 2020: https://www.youtube.com/watch?v=CEfrgVyojhk Una charla genial donde Jorge nos cuenta como organizan en Karumi en … Continúa leyendo Charlas interesantes durante el confinamiento

Productividad: Email, calendario, notificaciones, tiempo…

En estos días de COVID-19, de teletrabajo y de una realidad un tanto incierta voy a hablar un poco sobre productividad. Estos días de confinamiento he estado ojeando infinidad de post sobre teletrabajo, mantener la comunicación ahora que estamos confinados, sobre productividad,… y un largo etcétera de temas similares. Así que me he animado a contar como organizo mi día a día en el MundoReal™ y no solo en estos días de aislamiento.

Antes de continuar, todo lo que escribo en este post me aplica a mi y a mis circunstancias, mis sesgos,… quizás no sean extrapolables a las tuyas. Sólo cuento como me organizo por si alguien puede coger ideas.

Continúa leyendo “Productividad: Email, calendario, notificaciones, tiempo…”

Charlas interesantes 8 Marzo

Este post es una recopilación charlas sobre como mejorar como desarrolladores. En estas charlas nos cuentan consejos, experiencias,.. y al menos a mi me han ayudado a replantearme una serie de creencias para seguir aprendiendo y mejorando no solo como desarrollador sino también como persona. @ladybenko es una personal que trabaja haciendo las DevTools de … Continúa leyendo Charlas interesantes 8 Marzo

Lead Dev: no tengo ni idea de qué es eso

¿Qué es un Tech Lead? ¿Qué es un Lead Dev?¿Engineering Manager? Todos son roles que una persona puede desempeñar dentro una compañía. Hasta hay vamos bien, el problema viene cuando tenemos que definir las responsabilidades de este rol…

En cada compañía se hace de una manera. Podemos encontrar compañías en la que el career path es público y por tanto conocer cuales son las responsabilidades y/o habilidades que se suponen para dicho rol. Por ejemplo tenemos Patreon Engineering Levels donde definen las habilidades y responsabilidades de cada nivel. También tenemos Medium Engineering Growth Rubric (más visual aquí) donde ponen incluso ponen ejemplos de cada lo que debería hacer una persona dentro de un nivel. Otro ejemplo más de Monzo. En mi caso, el Lead Dev se define como el CTO de un producto encargado de definir la visión técnica para alcanzar los objetivos de negocio establecidos por el Product Owner.  La cuestión es ¿qué pasa cuando te dicen: ‘¿te gustaría ser Lead Dev de este equipo?’ o lo más habitual… a partir de X eres el Lead Dev del equipo.

Continúa leyendo “Lead Dev: no tengo ni idea de qué es eso”

Desplegar en Heroku una App en Go

¡Volvemos a la carga! Esta vez con un post un poco más técnico que los últimos. Hace tiempo que llevo dandole vuelta a como mejorar la manera en la que desplegamos el software, sobre todo desde que vi la charla de “Deliveritis Aguda de Carlos Buenosvinos.

Así que me he puesto manos a la obra analizando como desplegamos nosotros y como automatizar al máximo posible el deploy. Después de ver distintas opciones la que más sencilla me ha parecido para proyectos personales es Heroku.

Crear cuenta en Heroku

Lo primero es crear una cuenta en Heroku. Tiene una capa gratuita que es suficiente para hacer pruebas.

01 cuenta heroku

Una vez que tengamos la cuenta lista, tenemos que instalar en nuestro ordenador Heroku CLI, en mi caso he optado por la instalación de brew

Continúa leyendo “Desplegar en Heroku una App en Go”

Charlas interesantes Enero 2020

Estas son algunas de las charlas que más me han gustado últimamente: Cómo mejorar como desarrollador, no te fíes, es justo al revés, por Jorge Franco y Angélica Sanz https://www.youtube.com/watch?v=y2k0Zl1xrLg Javier Abadía – Refactorizar rima con Simplificar, o por qué el miedo conduce a código inmantenible https://www.youtube.com/watch?v=iytUjwSfjDE Juanjo Montiel – ¡Se me ha roto la … Continúa leyendo Charlas interesantes Enero 2020

Retrospectiva y objetivos 2020

Aunque con un poco de retraso creo que es hora de echar la vista atrás y analizar todo lo que ha pasado este año. Si tuviera que resumir todo 2019 con una frase sería: se me ha pasado volando el año y creo que no me ha dado tiempo a hacer todo lo que me hubiese gustado.

Esa era la sensación que tenía cuando fui a escribir el post, luego me puse a buscar y recopilar información de todo lo que me había pasado este año… En realidad, ha sido un año en el cual he ido priorizando a medida que iba avanzando el año, por lo que no he cumplido los objetivos que me propuse al principio, pero no me importa he hecho otras cosas que me han molado más.

Continúa leyendo “Retrospectiva y objetivos 2020”