More on this book
Kindle Notes & Highlights
los teléfonos inteligentes han revolucionado todos los aspectos de nuestras vidas y de nuestra forma de trabajar, desde cómo hacemos una reserva de hotel o de un vuelo a cómo pedimos un taxi desde un smartphone viendo en tiempo real en un mapa dónde está y cuándo va a llegar a donde estamos.
Y debajo de toda esta revolución está el software. Y las empresas que sobrevivan y se reinventen para triunfar en este mundo digital al que nos estamos dirigiendo serán las empresas que entiendan y dominen el software.
"apalancamiento".
los subcontratados eran "más baratos", pues las propias finanzas de la empresa te forzaban a tener cierto nivel de apalancamiento en tu presupuesto anual para poder llevar a cabo los proyectos sin salirte del mismo.
había 6 desarrolladores subcontratados por cada empleado propio.
Durante estos años, hemos ido contratando más desarrolladores de software y formando a los que ya teníamos, cambiando la metodología para abandonar el CMMI2 y pasarnos a metodologías ágiles (Scrum en concreto) así como reforzar las otras disciplinas complementarias e igualmente necesarias para llevar a cabo el desarrollo de software con éxito como el grupo de experiencia de usuario, el departamento de QA,
reconocimiento a los perfiles técnicos y de desarrollo que no querían convertirse en gestores.
uso de APIs en REST a otros más culturales como el evitar la sobreingeniería o mejorar la comunicación, pasando por temas de rabiosa actualidad empresarial como la historia de Android, las nuevas tecnologías de bases de datos no relacionales o el trabajo que estamos desarrollando conjuntamente con Mozilla sobre Firefox OS.
La sobreingeniería es la consecuencia de desarrollar intentando dar solución a funcionalidades futuras.
los requisitos de un proyecto suelen cambiar y esa es una realidad que hemos de asumir desde el inicio del desarrollo. Los cambios realizados durante la fase de desarrollo implican modificar, adaptar o incluso desechar partes del código implementado.
solemos implementar funcionalidad extra porque creemos que nos será útil más adelante.
resultado final es la acumulación de fragmentos de código que nunca van a ser usados.
nefasto a nivel individual y mucho más a nivel de equipo.
consecuencias
Mayor coste de tiempo (en su implementación) y en consecuencia, de presupuesto
Aumento de la complejidad del código haciéndolo menos legible y menos mantenible
principios y buenas prácticas que nos ayudarán a desarrollar un código más “a prueba de cambios”.
El método MoSCoW (Must, Should, Could, Won’t) Se aplica antes de iniciar la fase de desarrollo y sirve para priorizar los requisitos de las entregas en 4 niveles: Mínimos para considerar la entrega completada (Must) Importantes pero negociables (Should) Deseables pero no prioritarios (Could) Descartados para esta entrega (Won’t)
La filosofía RERO (Release Early, Release Often)
política de despliegues muy frecuentes para poder recibir feedback del usuario o cliente lo antes posible.
en entornos cerrados donde el acceso está restringido a los desarrolladores, el equipo de pruebas y algunos usuarios finales,
en startups, también se usa en entornos de producción
La finalidad de esta metodología es no desviarnos de lo que el clie...
This highlight has been truncated due to consecutive passage length restrictions.
estas técnicas se acaba traduciendo en una clara mejora en la relación desarrollo - producto que acaba resultando beneficiosa para ambas partes.
principios más populares del mundo del desarrollo:
Las fechas de entrega juegan en nuestra contra y su aplicación suele posponerse a la fase de refactor, una de las más importantes del ciclo de desarrollo.
consejos prácticos
no podemos olvidarnos del anti-patrón RSW (Reinventing the square wheel).
Reutilizar código de fuentes fiables suele ahorrarnos mucho tiempo y un buen número de bugs
reinventemos la rueda cuando las soluciones existentes no satisfagan nuestras necesidades o cuando queramos aprender más sobre ruedas.
Cualquier ingeniería otorga
conocimientos y capacidades para resolver problemas, además de ofrecer las herramientas básicas para que se ejecute la implementación de un proceso creativo.
el desarrollo de software es algo muy creativo y debemos co...
This highlight has been truncated due to consecutive passage length restrictions.
Puede haber muchas ideas, productos, servicios, programas o aplicaciones nuevas pero pocas de ellas pueden ser innovadores.
sino en la ejecución, implementación y desarrollo de algo ya conocido o implementado por otro. En este último caso se puede ofrecer un valor añadido difícil de superar en el mercado aplicando la excelencia en la implementación en algún aspecto realmente diferencial.
un valor añadido que es clave: la experiencia de usuario.
la innovación proviene de enlazar creaciones e ideas existentes que aportan un valor y aplicación nuevos al encontrarse juntas.
no es cuestión de encontrar “la idea feliz” sino más bien de tener un conocimiento previo de otros productos o servicios novedosos que existan en el mercado y que juntándolos creen algo nuevo y revolucionario.
las elecciones en el diseño pueden tener consecuencias de peso en nuestros productos.
tomar conciencia de la deuda técnica en la que se suele incurrir al diseñar y no implementar ciertas características técnicas necesarias
un error muy común por querer construir algo novedoso a nivel técnico es el adoptar para todo las tecnologías que están en boga en un momento determinado.
La creatividad en el diseño de software tiene que ir de la mano de los requisitos del producto.
necesidad de tener en cuenta la variable tiempo.
compañeros de marketing y negocio, cuyo conocimiento debe estar compartido con el equipo técnico
producto tengan conciencia del time to market
para ser creativo en relación al diseño creo importante lo que comúnmente se llama tener la mente abierta.
tendemos a especializarnos y profundizar en tecnologías

