¿Qué encontrarás en este post?
ToggleEat your own dog food
En Inglés existe la expresión «eat your own dog food», que viene a ser algo así como aplicarte tu propio cuento. La sabiduría del mismo es incuestionable, pero ¿cuándo fue la última vez que lo aplicaste? Programar es el arte y la ciencia de resolver problemas de forma sistemática y eficaz. Ahora bien, ¿aplicamos esas habilidades para resolver problemas fuera del entorno del código? Mucho me temo que no, y es una lástima. Desde hace un tiempo, intento traer mis conocimientos de programador al dominio de la vida diaria, y sorprendentemente, casi se podría escribir un libro de auto-ayuda, basado sólo en principios de ingeniería de software.Cuando me encuentro agobiado o abrumado por la cantidad de cosas que hacer, aplico TDD: ¿Cuál es el menor paso (test) que tengo que dar (codificar) yendo en la buena dirección (todos los test green)? Hazlo y repite. Pronto te darás cuenta de lo mucho que has avanzado
Estrategias para resolver problemas
Para resolver problemas complejos, contamos con una «compañía del anillo» a cuyos miembros siempre puedes recurrir. Son 3 estrategias universales para resolver problemas:- Fuerza bruta.
- Divide y vencerás
- Transforma y vencerás
Transformamos la multiplicación en un problema gráfico y luego en varios sub problemas más pequeños y sencillos (una serie de sumas): ¡transforma y vencerás, seguido de divide y vencerás!
Más que estratégias, principios
Además de estas estrategias, otras cosas que deberíamos aprovechar fuera del dominio del código son ciertos principios de Ingeniería de Software. Veamos algunos. Hay un libro casi desconocido para muchos, pero que debería de ser de lectura obligatoria para todo programador: «Programming A Problem Oriented Language» de Charles Moore, el inventor de FORTH.FORTH, un lenguaje de alto nivel, y sin embargo ideal para dispositivos empotrados. Controla desde ascensores a sondas espaciales y es perfecto para el IoT. Y encima, como si Yoda fueses, te hace hablar.En él, el autor describe como, practicando ciertos principios sencillos para resolver un problema concreto, termina creando uno de lenguajes de programación más interesantes que hay. Algunos de esos principios se han convertido en clásicos, pero Charles nos habla desde el pasado remoto, dejando claro que es un visionario muy adelantado a su tiempo. Veamos algunos: 1. Keep it simple! (Simplifica) 2. Do not speculate! (No inventes y no jodas) Si no aplicas el primero, el principio KISS, estás perdido. El resto del universo conspirará en tu contra siempre, para añadir más features, más complejidades y lo único que puede frenarlo es siempre tener el ojo puesto en el primer principio. El segundo es más interesante, y la lógica de Charles es aplastante:
dado que la cantidad de «cosas» que puedes añadir al sistema es infinita, la probabilidad de necesitar cualquier de ellas es cero. Así que no inventes y no jodas.
Eat your own dog food!
Desde hace un tiempo intento aplicar esto, no solo al código, sino a mi vida. En concreto, me di cuenta que las formaciones en Keepcoding necesitaban una dosis de la medicina del Dr Moore. Había que simplificar, había que romper monolitos en «micro servicios», había que quitar lo extra, para que lo esencial brillase con más fuerza que nunca. Ideas las justas, pero MUY claras.Bootcamps Lean y ágiles
Siguiendo esta teoría, hemos creado una versión más «lean» y ágil de nuestros bootcamps, con un core ahora de 6 meses, pasados los cuales ya puedes volver al mercado laboral y empezar a ganar dinero. El resto, lo sigues teniendo disponible para una ruta de aprendizaje y especialización que puedes hacer a un ritmo más pausado y de forma concurrente con el trabajo.Aplicando principios de ingeniería de software en otro dominio, ¡hemos logrado reducir el «time to market» de los alumnos y reducir el coste!Te invito a que eches un vistazo a los temarios resultantes y a que tú también apliques tus habilidades de programador a tu vida. Ya sabes, esa «cosa» que ocurre mientras estamos alejados (temporalmente) del teclado. ⇒Descarga temario – Full Stack Web Bootcamp ⇒Descarga temario – Full Stack Mobile Bootcamp ⇒Descarga temario – Full Stack DevOps Bootcamp ⇒Descarga temario – Full Stack Big Data & Machine Learning