Juniors con 10 años de experiencia
Ojalá alguien me hubiera dicho cuando empecé a programar que aprender a escribir buenos tests era fundamental para diseñar software de calidad...
Probablemente te han enseñado a programar mal y ni siquiera lo sabes.
O quizás si, pero porque llevas el suficiente tiempo en esto.
Principalmente existen dos motivos.
El primero es consecuencia directa de la persona que te está instruyendo.
Docentes que no son profesionales del desarrollo de software, sino de la enseñanza, y que no han experimentado las calamidades que genera el paso del tiempo en los proyectos.
Esto pasa constantemente en cursos online, bootcamps y, sobre todo, en las formaciones académicas: universidad, ciclos formativos, etc.
Y es que la mayoría de las formaciones para desarrolladores que te encuentras hoy en día en el mercado están creadas por personas que nunca han convivido lo suficiente con su propio código.
Simplemente no son conscientes de los problemas de mantenimiento que puede acarrear la forma en la que enseñan a programar.
Es más, me atrevo a decir que en el 90% de esos cursos no se escribe ni un test.
Debemos entender de una vez por todas que sin buenos tests no puede haber calidad en el software.
Y esto es así, porque una buena batería de pruebas es lo que te permite hacer refactor con garantías, los tests son nuestra red de seguridad.
Sin tests, intentarás mejorar una cosa y romperás otra, garantizado.
El otro motivo tiene que ver con la forma y las herramientas que usan.
¿Te imaginas ir a un curso de cocina y que te enseñen a hacer recetas de Thermomix?
Pues en la mayoría de los cursos para developers te enseñan a programar así, utilizando el framework o librería de turno.
No se centran en los principios.
Si no en diseñar soluciones totalmente acopladas al robot de cocina de moda.
El problema es que cuando pones en práctica estas ideas en el mundo real empiezan a surgir los problemas de mantenimiento.
Añadimos tal cantidad de complejidad accidental que el proyecto en unas pocas semanas o meses se nos va de va de las manos.
Diseñar software usando librerías y frameworks es como cocinar usando la Thermomix, cocinar como un chef profesional no es eso. Ser un verdadero programador senior es otra cosa.
Por esta razón Carlos Blé, fundador de Lean Mind y autor de los libros Código Sostenible y Diseño Ágil con TDD, y Miguel A. Gómez, fundador de Software Crafters y autor del libro Clean JavaScript, han estado trabajando juntos durante dos años en la elaboración de un curso online que recopila lo más importante de su experiencia como programadores sobre testing, TDD y diseño de software.
El curso incluye más de 150 videos teóricos y prácticos incluyendo las soluciones de diferentes katas, repositorios de código, ejercicios tipo test y soporte ilimitado.
En definitiva, hemos creado algo especial que te ahorrará muchas horas en el camino del aprendizaje, evitará que te choques con los mismos obstáculos que les hicieron perder tiempo a ellos y te servirá para descubrir nuevos horizontes.
Testing Sostenible con TypeScript
Un curso de testing, TDD y diseño de software
creado por y para developers
420€
Una formación de alto nivel que incluye:
✓ Acceso de por vida, nada de suscripciones.
✓ Más de 150 videos teóricos y prácticos. Son lecciones concisas, no te haremos perder el tiempo dando rodeos.
✓ Katas, ejercicios y repositorios de código para que aprendas haciendo.
✓ Acceso a las actualizaciones que hagamos en las futuras ediciones del curso.
✓ Soporte ilimitado via email.
👋 Así fue cómo perdimos a nuestro mejor cliente
Esta es una historia real que le ocurrió a Carlos Blé en sus comienzos, hace ya unos 20 años.
“En 2004 monté mi primera empresa junto a tres amigos.
Uno de los mejores clientes que conseguimos fue una pequeña empresa de telefonía y canales de televisión que representaba más de la mitad de nuestra facturación.
Recuerdo que una mañana, mientras estaba desarrollando la parte de su web de registro de clientes, me llamaron porque ciertos usuarios no podían darse de alta en el sistema.
Resulta que eran extranjeros con apellidos que contenían símbolos como el apóstrofe o la diéresis y el código de validación fallaba y no les permitía registrarse.
No teníamos ni un test, no sabíamos ni cómo se hacían.
Tampoco teníamos un entorno de pruebas.
Sino que hacíamos los cambios a cualquier hora, directamente en el entorno de producción.
Aquella mañana hice como diez cambios en el código, cada uno correspondiente a una llamada de teléfono de mi cliente, quejándose por un caso diferente.
Mientras arreglaba un caso estropeaba otros, estaba cada vez más tenso y mi cliente más molesto.
Con cada cambio en producción teníamos que reiniciar el servicio y los usuarios conectados perdían su sesión.
Al final del día el cliente se había dado cuenta de que no éramos solventes, había agotado su paciencia.
Paró el proyecto y nos lo quitó.
Para mí fue una gran lección y la terminé de comprender cuando aprendí a hacer tests”.
Verás.
Hoy en día hay tantas alternativas que los usuarios no se molestan en llamarte a quejarse, simplemente dejan tu aplicación o tu servicio y se van a la competencia sin que te des ni cuenta.
El coste de un bug en producción es más alto que nunca, porque la tolerancia de la gente es menor y las alternativas disponibles son mayores.
Hay que reducir al mínimo el número de bugs que llegan a producción y por supuesto, hay que impedir que reaparezcan problemas que ya estaban reportados y corregidos.
💡 Ser un verdadero senior es otra cosa
Vamos a hablar de lo que significa ser senior. Desafortunadamente el significado de esta palabra no ha variado demasiado en los últimos 20 años.
Aún hoy en día en muchas empresas a los developers se les considera seniors (o se consideran ellos mismos) por el simple hecho de llevar “n años” en la industria, sin tener en cuenta su conocimiento.
Y no me refiero solo a sus habilidades técnicas, hay soft skills que también se esperan de un programador experimentado, especialmente las relacionadas con la comunicación. Y si, el código también comunica.
Para esto es fundamental entender cómo funciona el negocio, cómo hace dinero, dónde se aporta valor y dónde no.
A ver, no estoy diciendo que llevar años en la industria no sea necesario.
Sin lugar a dudas lo es, no hay mejor aprendizaje que sufrir las calamidades del paso del tiempo en los proyectos para entender la importancia de saber escribir código de calidad.
Eso solo se consigue con horas de vuelo y, como diría Nassim Taleb, con Skin in the game. Sufriendo las consecuencias en tu propia piel. No hay otra.
Ahora bien, hay una enorme diferencia entre 10 años de experiencia y un año de experiencia repetido 10 veces.
No es lo mismo 10 años de aprendizaje constante trabajando en varios proyectos, con diferentes lenguajes, tecnologías y paradigmas, y rodeado de desarrolladores con mucho nivel.
Que pasar 10 años trabajando en la misma empresa, con un equipo mediocre y resolviendo siempre el mismo tipo de problemas, en un proyecto que hace aguas, sin tests y plagado de malas prácticas.
Esto, después de poco tiempo, limita tu capacidad de aprendizaje. O lo que es peor, consolida una forma de programar que no te llevará muy lejos en tu carrera.
No te digo que estés saltando de empresa cada poco tiempo, eso también es un error.
Debemos de convivir el tiempo suficiente con nuestro propio código para sufrir en nuestra piel las decisiones que tomamos.
Lo que sí te recomiendo es que te expongas y practiques. Sal de tu zona de confort y enfréntate a problemas y retos diferentes.
No dejes de formarte, la vida es un continuo aprendizaje.
Mejora tu inglés, tus habilidades de comunicación y sobre todo tu técnica de programación.
Con las dos primeras no podemos ayudarte. En lo que sí podemos ayudarte es a convertirte en mejor programador.
Y precisamente esta es la razón por la que hemos creado esta formación, en la que aprenderás, entre otras cosas, cómo:
✔ Desarrollar una librería de testing desde cero: además de profundizar en los diferentes tipos de tests y cómo deben ser su distribución, construirás tu propia librería de test para entender los fundamentos que hay detrás de las típicas librerías o framework de testing.
Entenderás que los tests son una forma de expresar verdades sobre el comportamiento del código.
✔ Escribir tests unitarios efectivos con Jest que realmente validen las reglas de negocio que estás implementando. Además de los detalles del framework de testing más popular, aprenderás buenas prácticas que te ayudarán a escribir mejores tests, mejor estructurados y con mejores nombres.
Tus tests contarán historias sobre el negocio.
✔ Programar código simple y testable: aprenderás técnicas de código sostenible y diseño de software, para que escribas código simple, cohesivo y desacoplado que será fácil de testear y mantener.
La virtud de encontrar la simplicidad es la clave del éxito de los proyectos de software.
✔ Usar los mocks con cabeza: por fin entenderás la diferencia entre un mock estricto y un spy. Además de comprender cuándo tienen sentido emplearlos y cuándo no, y sobre todo a no abusar de ellos.
Ya sabes, para evitar aquello de que cuando tienes un martillo todo te parecen clavos.
✔ Aplicar TDD para reducir la complejidad accidental: no te vamos a enseñar simplemente el típico ciclo red-green-refactor y sus beneficios. Tampoco te lo vamos a vender como una religión que si no sigues a rajatabla te evitará entrar al paraíso de los developers, no.
Lo que sí te enseñaremos es a usar TDD como una herramienta que ayuda a forjar la codificación más simple.
✔ Escribirás código de calidad con TypeScript: No te preocupes, no vamos a contarte que TypeScript es un superset de JavaScript que provee un sistema de tipado estructural, y demás… Todo eso ya lo sabes, y a estas alturas estarás cansado de escucharlo.
Lo que haremos es practicar, mediante katas y ejercicios, para que realmente llegues a dominar este y cualquier otro lenguaje.
Todo esto y lo mismo alguna cosa más (seguro) en esta gran formación.
Testing Sostenible con TypeScript
Un curso de testing, TDD y diseño de software
creado por y para developers
420€
Una formación de alto nivel que incluye:
✓ Acceso de por vida, nada de suscripciones.
✓ Más de 150 videos teóricos y prácticos. Son lecciones concisas, no te haremos perder el tiempo dando rodeos.
✓ Katas, ejercicios y repositorios de código para que aprendas haciendo.
✓ Acceso a las actualizaciones que hagamos en las futuras ediciones del curso.
✓ Soporte ilimitado via email.
🔎 Si aún no lo tienes claro,
aquí tienes los contenidos detallados
Se trata de una formación de alto nivel organizada en 28 apartados que incluye más de 150 videos teóricos y prácticos. Las lecciones son concisas, valoramos tu tiempo tanto como el nuestro, así que no te haremos perderlo dando rodeos.
El curso empieza con una masterclass gratuita sin límite de tiempo y sin ningún compromiso (ni siquiera pedimos tarjeta de crédito).
Queremos que esta masterclass sirva como tu primer punto de contacto con nosotros y que te ayude a evaluar la calidad del contenido ¿no te convence? No hay problema, sin rencores.
En la masterclass Miguel A. Gómez te hablará sobre su experiencia manteniendo durante más de 5 años un proyecto fullstack desarrollado con TypeScript, mientras que Carlos Blé te explicará por qué degenera el código y te dará 4 claves para que esto no te pase.
- 01. Bienvenida (1:13)
- 02. Presentación Miguel A. Gómez (2:26)
- 03. Presentación Carlos Blé (0:52)
- 04. ¿Por qué degenera el código? (0:57)
- 05. Reescribir el proyecto desde cero no es la solución (1:35)
- 06. El arquitecto en su torre de marfil (0:56)
- 07. ¿Por qué perdemos el control sobre el código? (1:50)
- 08. Las reglas del código sostenible (1:43)
- 09. Sin test no hay calidad en el software (1:55)
- 10. Abstracciones adecuadas e intencionalidad (2:28)
- 11. Objetivos del curso (3:43)
- 12. Las katas de código (2:16)
- 13. El entorno, refactor automático y analizadores estáticos (2:54)
- 14. Consejos para mejorar tu aprendizaje (1:44)
- 1. Características (1:37)
- 2. Instalación y configuración (1:47)
- 3. Reemplazando nuestra librería por Jest (1:48)
- 4. Ejecución desde la línea de comandos (2:17)
- 5. Ignorar y aislar test (3:39)
- 6. Modo watch (2:17)
- 7. Depurar (2:30)
- 8. Cobertura de código (2:26)
- 9. Generar informes de cobertura (1:33)
- 10. Establecer un umbral de cobertura (2:51)
- 11. Quiz
- 1. Introducción (2:59)
- 2. Tipos de dobles (2:14)
- 3. Stubs (3:56)
- 4. Spies (2:23)
- 5. Mocks estrictos (3:08)
- 6. Dummies y fake objects (3:55)
- 7. Mocking con Jest (1:19)
- 8. Jest.fn (4:35)
- 9. Jest.mock (0:53)
- 10. Jest.spyOn (1:09)
- 11. Combinaciones de dobles (5:27)
- 12. Errores típicos y buenas prácticas (4:12)
- 13. Ventajas e inconvenientes (1:55)
- 14. Quiz
- 1. Enunciado (1:35)
- 2. Listado de pruebas (2:30)
- 3. Primeros casos (5:03)
- 4. Nuevos casos que surgen (6:10)
- 5. Refactorizando las pruebas (4:00)
- 6. Siguientes casos (5:29)
- 7. Último caso para un elemento (4:14)
- 8. Generalizando (6:04)
- 9. Apoyándonos en un test temporal (5:29)
- 10. Últimos casos (2:49)
- 11. Refactor final (4:00)
- 12. Quiz
- 1. Enunciado (1:52)
- 2. Implementación recursiva (4:22)
- 3. Implementación iterativa (1:35)
- 4. Espacios en blanco (2:32)
- 5. Refactorizando (2:27)
- 6. Texto nulo y ancho negativo (1:49)
- 7. Organizando los test (1:39)
- 8. Extrayendo un value object para el ancho de columna (4:04)
- 9. Extrayendo un value object para el texto (4:02)
- 10. Atrayendo comportamiento a los value object (3:55)
- 11. Refactor final (2:44)
- 12. Quiz
- 1. Enunciado (2:02)
- 2. Test de aceptación en rojo (3:36)
- 3. Doble del repositorio de transacciones (5:33)
- 4. Doble de StatementPrinter (4:54)
- 5. Aplicando TDD en el repositorio (4:30)
- 6. Comprobando la clase Clock (2:32)
- 7. Primer test de StatementPrinter (2:40)
- 8. El caso de una sola variable de StatementPrinter (3:14)
- 9. El caso de múltiples transacciones (2:33)
- 10. Test de aceptación en verde (1:25)
Preguntas que quizás te estás haciendo
- ¿Qué conocimientos previos necesito?
Al menos debes tener unas nociones básicas de programación. El curso está pensado para que tanto los developers juniors como los más seniors puedan sacarle partido. Pero si no sabes programar nada, este curso no es para ti.
- Normalmente programo en otro lenguaje, ¿podré sacarle partido al curso?
Si, el 90% del contenido del curso son conocimientos transversales que puedes aplicar en cualquier otro lenguaje. Hemos escogido TypeScript, por su crecimiento exponencial durante estos últimos años, situandose como tercer lenguaje más usado, después de JavaScript y Python.
- ¿El curso tiene fecha de inicio y final?
No, tu decides cuándo lo empiezas y cuándo lo acabas. Una vez terminado podrás consultarlo las veces que quieras. Esta no es la típica suscripción que tienes que pagar cada mes o cada año, pagas una vez y tendrás acceso para siempre.
- ¿Cuándo podré acceder?
Desde el momento que realices la compra.
- ¿Hay un grupo para resolver dudas?
Esto es otra cosa importante que debes saber. No vamos a tener un grupo de Facebook, ni Slack, ni Discord para resolver dudas o para hacer networking.
En este curso, si tienes dudas (que las tendrás), le mandas un mail a Miguel y te las resolverá directamente. Sencillo.
Además podrás enviarle tus soluciones de las katas para que te pase feedback sobre tú código (este servicio deberíamos cobrarlo por separado).
- ¿Puedo pedir feedback sobre cualquier código?
No, el soporte no es una mentoría. Solo daremos feedback sobre las katas y ejercicios propuestos en el curso.
- ¿Actualizarán el contenido del curso?
Si, la idea es mantener el curso y los repositorios de código actualizados. Además de vez en cuando preparamos contenido extra en forma de bonus que regalamos a todos los antiguos alumnos en agradecimiento por la confianza.
- ¿Hay alguna forma de acceder a los bonus atrasados?
Si, justo al momento de inscribirte en el curso tendrás la oportunidad (solo en ese momento) de comprar los bonus que hemos publicado para el curso hasta este momento.
- ¿Tiene garantía de devolución?
En ningún caso. Si no tienes claro que este programa vaya a compensar la inversión por todo lo que puede enseñarte, simplemente no lo compres.
- ¿No es caro 420 euros por un curso online?
La gente valora las cosas en función de lo que paga por ellas. Si no se paga acorde, no se valora o se ignora.
Y para nosotros esta es la mejor formación sobre Testing y Diseño de Software que existe. No hay nada igual ni inglés ni en Español, quizás en chino si. Pero yo no sé mandarín.
Así que por este precio solo te puedo decir que está formación es muy rentable. Si aún así no te lo puedes permitir o te parece caro, mi consejo es que no la compres.
El precio de la educación no es nada comparado con el coste de la ignorancia.
- ¿Puedo pagar a plazos?
Directamente con nosotros no. Pero escoge la opción de Klarna en el carrito de compra y paga cómodamente en 3 plazos sin intereses.
En principio Klarna está disponible en España, Italia, Suecia, Noruega, Finlandia, Dinamarca, Alemania, Austria, Países Bajos, Gran Bretaña y Estados Unidos.
- ¿Puedo pagar con criptomonedas?
Si. Somos conscientes de que en algunos paises de latinoamérica están asfixiados con el tipo de cambio y esta puede ser una vía de escape. Escríbenos y vemos como lo arreglamos.
- ¿Hacen factura?
Si, por supuesto. Justo después de realizar el pago podrás solicitar la factura con los datos fiscales que necesites y te la enviaremos sobre la marcha.
- ¿Hacen descuentos?
Nunca hacemos descuentos por simple respeto a los alumnos que ya están dentro. Ni por Black Friday, ni por Navidades, ni por el día del programador.
Hoy siempre será el día en el que encuentres el mejor precio al que puedes entrar a esta formación. Mañana el precio será el mismo que hoy o mayor, pero nunca inferior.
- ¿Tienes alguna otra pregunta?
Cualquier duda que tengas sobre estas u otras cuestiones puedes escribirle directamente un correo a Miguel, y te responderá lo antes posible. Su dirección es: [email protected]
Testing Sostenible con TypeScript
Un curso de testing, TDD y diseño de software
creado por y para developers
420€
Una formación de alto nivel que incluye:
✓ Acceso de por vida, nada de suscripciones.
✓ Más de 150 videos teóricos y prácticos. Son lecciones concisas, no te haremos perder el tiempo dando rodeos.
✓ Katas, ejercicios y repositorios de código para que aprendas haciendo.
✓ Acceso a las actualizaciones que hagamos en las futuras ediciones del curso.
✓ Soporte ilimitado via email.