Tácticas y Estrategias en el Desarrollo de Software: Cómo Alcanzar un Software Exitoso

This ad is not shown to multipass and full ticket holders
React Summit US
React Summit US 2025
November 18 - 21, 2025
New York, US & Online
The biggest React conference in the US
Learn More
In partnership with Focus Reactive
Upcoming event
React Summit US 2025
React Summit US 2025
November 18 - 21, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

Ser pragmático y comprender las tareas es crucial para lograr de manera efectiva tu actividad como desarrollador de software. Desafortunadamente, se necesita más para adquirir un software exitoso. En este punto, debes ir más allá y comprender la estrategia y las tácticas del ingeniero de software.

Un buen software está más cerca del negocio y debe estar listo para cambiar con frecuencia. Volver a escribir todo el sistema desde cero se convierte en una tentación real. Las nuevas soluciones brillantes como microservicios pretenden resolver este problema utilizando nuevas tecnologías. Pero, ¿hay alguna garantía de que este sentimiento no volverá a surgir después de algún tiempo?

No importa si es un servicio micro, nano o incluso atómico; ninguna nueva palabra de moda o tendencia puede ayudarnos con este problema.

Entonces, aquí está la respuesta que has estado buscando: debes explorar múltiples tácticas y estrategias en las prácticas de ingeniería de software, como documentación, pruebas, diseño impulsado por dominio, persistencia, adopción de la nube y los diferentes estilos de diseño y arquitectura.

Esta interacción cubrirá la guía definitiva para aprovechar al máximo la arquitectura y el diseño para garantizar una solución mejor, mantenible y evolutiva. También aprenderás cómo evitar sistemas complejos y luchar contra la herencia para lograr la innovación deseada con estabilidad.

This talk has been presented at C3 Dev Festival 2024, check out the latest edition of this Tech Conference.

Otavio Santana
Otavio Santana
31 min
15 Jun, 2024

Comments

Sign in or register to post your comment.
  • Otavio Santana
    Otavio Santana
    OS Expert
    Thanks, Muhammad; I am glad that you enjoy it.
  • Muhammad Huzaifa
    Muhammad Huzaifa
    Rojrz Tech
    thanks for amazing content
Video Summary and Transcription
Como ingeniero de software, lograr el éxito en el desarrollo de software requiere tener una estrategia y tácticas. Sin embargo, obstáculos como reuniones innecesarias y falta de comunicación con los clientes pueden obstaculizar el progreso. La metodología utilizada en el desarrollo de software es más importante que el lenguaje de programación. La ingeniería de software se trata de comprender la estrategia y las tácticas y encontrar soluciones eficientes a los problemas. La arquitectura de software debe estar alineada con los objetivos y objetivos comerciales. La documentación es importante para la escalabilidad y evitar la falta de comunicación, pero encontrar el equilibrio adecuado es clave. La eficiencia de las tareas y la simplicidad en el diseño del código son cruciales. Abrazar la simplicidad y mejorar la documentación puede conducir a una mejor arquitectura de software. La comunicación y colaboración entre los equipos de gestión e ingeniería es esencial para tomar decisiones informadas.

1. Introducción al éxito en el desarrollo de software

Short description:

Como ingeniero de software, quiero hablar sobre cómo lograr el éxito en el desarrollo de software. A menudo intentamos medir el éxito de diversas formas, como la cantidad de tareas completadas o la cantidad de código escrito, pero estas métricas no capturan con precisión lo que hace que un software sea bueno. En cambio, tener una estrategia y tácticas en ingeniería de software es crucial para el éxito. Desafortunadamente, muchos obstáculos, como reuniones innecesarias y falta de comunicación con los clientes, pueden obstaculizar nuestro progreso.

♪♪ Hola a todos. Buenas tardes. Es increíble estar aquí para hablar más sobre desarrollo de software. Como pueden ver, también soy un ingeniero de software. Y esa es la principal razón por la que no compro camisetas desde hace mucho tiempo. Así que estoy muy contento de tener una nueva camiseta. De esta manera puedo usarla durante cinco o seis años, y luego puedo pasar a un pijama y finalmente encontrar una nueva camiseta como de costumbre.

Hoy no se trata de hablar sobre mi estilo de vestir, si es que tengo uno, no estoy seguro, sino de hablar más sobre el éxito. Todos quieren tener éxito en el software, ¿verdad? Y la pregunta es cómo lograrlo. Y tengo que hacerlo en solo 20 minutos. Así que no tengo idea de cómo puedo hacerlo. Y para ser honesto, mi día es mucho más largo que eso. No sé por qué, pero lo que se supone que debe ser más corto no lo es. Pero de todos modos, hagamos todo lo posible para convencerte de que tener una estrategia y tácticas en la ingeniería de software es bueno para nosotros. Es una buena manera de lograr el éxito cuando se trata de ingeniería de software. Y naturalmente, como dije, todos quieren tener éxito en el software, ¿verdad?

Quiero hacer un buen software, quiero entregar un buen software. Vamos, la industria del software está aquí desde hace casi 100 años. Pero ¿cómo medir un buen software? ¿Cómo tener una idea para entender si estoy haciendo un software bueno o no bueno? Y durante mucho tiempo, hemos intentado diferentes estrategias para hacerlo posible. Naturalmente, intentamos medir por la cantidad de tareas que hacemos en un día, en un mes, en semanas. Y naturalmente, no funciona. Y luego tenemos la métrica de data, hacemos implementaciones más rápidas y más rápidas y más rápidas, pero de todos modos no funciona. Y la última que intentamos, y desafortunadamente fallamos, fue medirnos por la cantidad de confirmaciones y luego la cantidad de code. Entonces, si hago más code, eso significa que estoy haciendo un buen trabajo. Y desafortunadamente, eso no es cierto tampoco. Así que cuando vamos a varios informes, revistas, podemos ver ese resultado, desafortunadamente. Como este aquí que pertenece a Forbes, 16 obstáculos para tener éxito en el software. Puedo resumir los 16 en solo cuatro. Básicamente, tenemos muchas reuniones, muchas discusiones para entregar lo que el cliente no quiere. Es triste. Es como si fuera a una panadería aquí en Inglaterra, pidiera un street food, creo que ese es el nombre correcto, o tal vez fuera a una pizzería y pidiera una pizza vegetariana, esperara tres, cuatro horas porque la cocina está teniendo varias reuniones, y luego me dieran una ensalada.

2. Desafíos en la entrega de los requisitos del cliente

Short description:

A menudo nos enfocamos en discusiones y reuniones, entregando complejidades en lugar de lo que realmente quiere el cliente. Esta falta de enfoque conduce a una colaboración deficiente y una desconexión entre la arquitectura de software y el objetivo del proyecto.

Así que es terrible. Es horrible, ¿verdad? Así que estamos teniendo varias reuniones. Estamos discutiendo varias cosas para entregar lo que el cliente no quiere. ¿Y qué triste es eso? Especialmente porque estamos teniendo varias discusiones, estamos teniendo varias reuniones, varios planes, en lugar de entregar lo que el cliente quiere, estamos entregando más complejidades. Sí, a veces pasamos más tiempo discutiendo microservicios que los requisitos comerciales. Y la consecuencia de eso es naturalmente la colaboración deficiente entre los equipos y el producto. Así que estamos discutiendo mucho desde la perspectiva de la arquitectura de software, pero olvidamos por qué lo estamos haciendo, la razón significativa para hacerlo, para lograr esa razón. Y puedes ver eso en una segunda revista, este código común. Es común que los desarrolladores entreguen un producto que no se alinea con las percepciones del cliente.

3. Importancia de la Metodología en el Desarrollo de Software

Short description:

A menudo nos enfocamos en discusiones y reuniones, entregando complejidad en lugar de lo que debemos entregar con el software. No importa el lenguaje, lo que importa es la metodología. Discutamos la estrategia y tácticas en torno a la ingeniería de software, comparándola con la historia, especialmente la historia militar en la ingeniería.

Así que estamos teniendo muchas reuniones, entregando complejidad y no entregando lo que debemos entregar con el software. Y no importa el lenguaje, ¿verdad? Puedo cometer errores con Java, puedo cometer errores con JavaScript, Rust, o incluso con una nueva tecnología. Muy a menudo, las personas vienen a mi oficina para discutir, OK, Otavio, en este momento nadie entiende ese code. Y para hacerlo posible, se me ocurrió una idea increíble. Tomaré mi code, lo moveré a una nueva tecnología, porque después de eso, todo estará bien. Y tristemente, no es cierto, porque después de tres años, adivina qué? Nadie es capaz de entender el lenguaje nuevamente. Nadie es capaz de entender y hacer avanzar el producto nuevamente. Así que no importa el lenguaje. Lo que importa para nosotros es la metodología, ¿verdad? Por eso estamos aquí. Necesitamos discutir más sobre la estrategia y tácticas en torno a la ingeniería de software. Y naturalmente, cuando hablamos de ingeniería de software, el hermano menor de la ingeniería es natural que lo comparemos con la historia, especialmente la historia militar en la ingeniería.

4. Strategy and Tactics in Soft Engineering

Short description:

La ingeniería de software va más allá del código, se trata de comprender la estrategia y las tácticas. Es la aplicación de un enfoque científico empírico para encontrar soluciones económicas eficientes a cualquier problema utilizando software.

Tomemos esto como ejemplo. Tenemos a Julio César, quien quiere cruzar un río. Y para hacerlo posible, encuentra una forma de construir un puente en menos de 10 días. Y basado en ese puente, él podría cruzar a más de 40,000 soldados. El objetivo aquí no es construir un puente, sino cruzar a mucha gente hacia el río para atacar a Alemania. Esto también lo tenemos en la ingeniería de software. Es importante para nosotros comprender qué es la estrategia y qué es la táctica en la ingeniería de software.

Y cuando profundizamos en varias tecnologías en torno a la ingeniería de software, la primera pregunta es, Aran, ¿qué es la ingeniería de software? ¿Cómo podemos lograr el éxito en algo que no entendemos qué es eso? No se trata solo de code. Afortunadamente, no lo entiendes. La ingeniería de software va mucho más allá del code. Por lo tanto, hay varios términos. Mi favorito proviene de este libro aquí, `The Modern Soft Engineering` de David T. Foley. Y menciona que la ingeniería de software es la aplicación de un enfoque científico empírico para encontrar soluciones económicas eficientes a cualquier problema, por supuesto, utilizando software. No se trata de escribir code. Se trata de resolver problemas. Y naturalmente, cuando hablamos de ingeniería de software, hablamos de estrategia y táctica de otra manera.

5. Software Architecture and Strategy

Short description:

La mayoría de las veces, cuando hablamos de arquitectura de software, estamos hablando de estrategia y diseño. No hay una definición única para la arquitectura o el diseño de software, pero se trata de estar cerca del negocio y lograr objetivos alcanzables. La arquitectura de software es la razón y la estrategia para el desarrollo, con compensaciones y sin malas prácticas. Comprender la razón detrás de la tecnología es más importante que cómo se construye. Los modelos de madurez nos ayudan a establecer objetivos y alcanzar métricas.

La mayoría de las veces, cuando hablamos de arquitectura, estamos hablando de estrategia. Y cuando hablamos de táctica, estamos hablando de diseño. Y eso es divertido, especialmente porque no tenemos una terminología sustancial o una definición única de lo que es la arquitectura de software o qué es el diseño. Toma aquí, por ejemplo. Tengo un par de libros como puedes ver, y cada libro tiene una definición única sobre la arquitectura de software, una definición única sobre el diseño de software. Así que mi libro favorito aquí es `Just Enough Software Architecture`. Y para este libro, la arquitectura de software es una colección de diseño de software. Aquí tenemos un libro de Simon Brown, el creador del modelo C4. Y la arquitectura de software, para él, es una cosa o un diseño de software que es realmente difícil de cambiar. Entonces, incluso con una definición clara de lo que es la arquitectura de software y el diseño de software, podemos ver que la mayoría de las veces, cuando hablamos de la arquitectura de software y hablamos de lograr el éxito con eso, estoy hablando más de estar cerca del negocio. Estoy hablando más de cómo puedo lograr que las personas del negocio se acerquen a mis objetivos lo más posible.

Y cuando entramos en esa discusión, también podemos ver varias definiciones. Esta aquí es mi favorita. Pertenece a los fundamentos de la arquitectura de software. Y es por eso que creo que la arquitectura de software es más la razón y la estrategia de tener una forma de desarrollar. Entonces, aquí tenemos dos leyes sobre la arquitectura de software. La primera es que todo en el software es un compromiso. No hay una solución mágica en el desarrollo de software. Si eliges una tecnología, te enfrentarás a aspectos positivos y negativos. Si eliges otra tecnología, lo mismo. De hecho, esa es la razón principal por la que cuando hablamos de la arquitectura de software, no hay malas prácticas. Especialmente porque, puedo decir que si tengo múltiples ifs en mi código, puedo reemplazarlos con un patrón de estrategia. Pero no puedo decir que el microservicio es un mal patrón o que el monolito es una mala práctica, porque lo que determina eso es el contexto. Todo tiene un compromiso. El microservicio tiene un compromiso, el monolito tiene un compromiso. Y el siguiente paso es la razón para hacerlo, la estrategia para crearlo, la estrategia para construirlo es más importante que el cómo. Si entiendo la razón para crear una tecnología, un software, es más importante que cómo estoy construyendo ese software. Y para hacer una métrica en torno a eso, es por eso que creo en los modelos de madurez en nuestro desarrollo de software. Entonces, el modelo de madurez puede ayudarnos a tener dirección de dónde estamos y a dónde queremos ir. Podemos lograr métricas para las organizaciones que es muy importante para nosotros. Y podemos establecer objetivos, podemos establecer requisitos para hacerlo posible.

6. Soft Engineering and Documentation

Short description:

Asegúrate de que tu código esté lo suficientemente cerca del negocio. La documentación ayuda con la escalabilidad y evita la falta de comunicación. Tener demasiada o ninguna documentación puede ser problemático. El noveno caso de mayúsculas destaca la importancia de la documentación. Las estrategias para la documentación incluyen escribirla en el código, tener un registro de cambios y utilizar documentación de API abierta.

¿De acuerdo? Y eso es lo que creo acerca de la ingeniería de software. Así que tenemos nuestro contexto, y nuestro contexto se trata más de cómo podemos estar cerca del negocio, cómo podemos cumplir con los requisitos del negocio. Y luego tenemos cuatro puntos para tener en cuenta. Naturalmente, solo tengo 20 minutos. No cubriré el contexto aquí, cómo medir los requisitos del negocio, especialmente porque estoy hablando más desde la perspectiva de la ingeniería de software. Pero el punto es asegurarse de que tu code esté lo suficientemente cerca del negocio. Y en base a eso, podemos revisar el code design, las tareas, la documentación y finalmente la gobernanza. ¿De acuerdo? Y cada vez que hablo de documentación, la gente comienza a abandonar sus habitaciones, especialmente porque es algo que no disfrutamos lo suficiente, ¿verdad? Odiamos escribir documentación para nuestro code, pero especialmente porque la presentación no se compila. La presentación no es suficiente, ¿verdad? Así que la presentación, la documentación es algo que no disfrutamos. Sin embargo, si no haces ninguna documentación, ¿cómo puedes hacer que tu equipo sea escalable? Quiero decir, piensa más en el proceso de incorporación si no tienes ninguna documentación. Piensa en la cantidad de reuniones que necesitas hacer, porque no soy un Jedi. No puedo leer la mente de las personas, ¿verdad? Entonces, la documentación ayuda en este tipo de escalabilidad dentro de tu proyecto. Y por supuesto, debemos entender que necesitamos llegar a un punto justo de documentación. Demasiada documentación es un dolor de cabeza, pero tampoco tener ninguna documentación es un problema. Hay varios informes sobre cómo y por qué tener documentación. Sin embargo, no tenemos ningún informe sobre los costos de tener documentación. Pero tenemos un caso sobre cómo una empresa se arruinó en 45 minutos porque no tenían documentación. Y probablemente, conoces este caso, la saga de la novena capital. Y por supuesto, tuvieron varios problemas. Tuvieron varios problemas, incluyendo, desafortunadamente, la falta de documentación para hacer la restauración. Y eso es difícil, ¿verdad? Quiero decir, si le preguntas a tu novena capital cuánto cuesta la documentación, te responderían, `Bueno, la documentación nos costó más de $400 millones en 45 minutos`. Y por eso es importante la documentación. Y cuando hablamos de documentación, naturalmente, podemos abarcar la táctica y la estrategia en torno a la documentación. Así que escribe documentación dentro de tu code. Asegúrate de tener un registro de cambios para tu repositorio. Por ejemplo, en una nueva versión, puedes ver claramente qué cambió, qué se incluyó, y así sucesivamente. Dentro de tu archivo readme, explica los objetivos de este repositorio, cómo usarlo y cómo instalarlo. Y finalmente, como hablamos más sobre las API REST, asegúrate de utilizar algún tipo de documentación de API abierta. Piensa más en la escalabilidad. Cuanta más documentación tengas, menos reuniones tendrás que enfrentar.

7. Documentación, Diseño de Código y Eficiencia de Tareas

Short description:

Ahorra tiempo con la documentación. Utiliza el modelo C4 para mapear la tecnología. Comunícate claramente. Apunta a la simplicidad en el diseño de código. Comprende la importancia de la eficiencia de las tareas. Combina la cobertura de tareas con las pruebas de mutación.

Así que vas a ahorrar tiempo a las personas haciendo documentación. Y como dije, la táctica dentro del código y la estrategia principalmente en torno a tu perspectiva. Así que el modelo C4 de Simon Brown, que lleva el TechRadar al mapear la tecnología que utilizamos dentro de nuestras organizaciones. Adjunta tus registros de decisiones. De esta manera, puedes asegurarte de que tomaste la decisión, conoces la razón, puedes medir esa decisión mediante compensaciones. Y el último es naturalmente hacer una comunicación clara con foros, canales de Slack y cosas así. Recuerda, menos reuniones, a veces es código.

Y cuando hablamos del modelo de madurez, necesito hablar rápidamente aquí. Por lo general, comenzamos con la documentación conocida, y luego puedes avanzar para hacer la documentación del código, luego la documentación de la etapa del repositorio, adjunta tu documentación, y finalmente explora más el DocOps. ¿Qué significa DocOps? Básicamente, tan pronto como fusiono mi documentación, mi documentación está disponible para ver y leer. Por ejemplo, puedes usar AskDoc dentro de tu archivo Readme para ayudar a las personas a comprender cómo usar y cómo dar estilo a ese código. dentro de tu organización. De acuerdo, pasemos al siguiente tema, en torno al código y al diseño del código.

Hay este increíble libro llamado La Filosofía del Diseño de Software, y tiene una buena definición sobre la principal diferencia entre un programador que se enfoca más en lo táctico, lo que significa trabajar para lograr que las cosas se hagan, y la forma estratégica. Así que el libro llama a esa persona un tornado táctico, porque puede hacer un código más rápido y más rápido, pero nadie entiende más el código que esta persona toca. Así que se convierte en una pesadilla. Y a largo plazo, es imposible leer y comprender cualquier código relacionado con eso. Entonces, ese es el objetivo principal de evitar la complejidad dentro de tu repositorio, dentro de tu arquitectura. Así que es natural que comencemos con patrones, queremos aprender, queremos aplicar tanto como sea posible, pero al final, nuestro objetivo debe ser luchar por obtener cada vez más simplicidad en nuestro código.

De acuerdo, en cuanto a la madurez del diseño del código, tendré que ir rápido aquí, así que a veces no me importa. Y luego puedo pasar a la simplicidad o la etapa final de sofisticación de Leonardo Da Vinci. Entonces, la simplicidad es el camino a seguir, escribir un buen y simple código tanto como sea posible. Luego tenemos las tareas, es una cosa que puedes hacer y explorar como profesor dentro de nuestra organización. No se trata solo de la cobertura de tareas, porque es importante, es crucial, pero debes medir qué tan eficiente es esa tarea. De acuerdo, puedes combinar eso con las pruebas de mutación. Como desarrollador de Java, mi experiencia es en Java, así que estoy usando PyTask, pero naturalmente, en tu herramienta, puedes usar lo que quieras, pero mi consejo para ti es combinar la cobertura de tareas con las pruebas de mutación. No se trata solo de la cobertura, sino, por supuesto, de qué tan eficientes son esas tareas. Y hablando rápidamente sobre el modelo de madurez de las tareas, así que tareas conocidas, desafortunadamente, sucede, así que puedes pasar a las tareas unitarias, tareas de integración, cobertura de tareas, y finalmente, las tareas optimizadas. Eso significa la combinación de la cobertura de tareas con las tareas de mutación. De esta manera, puedes definir el requisito mínimo para avanzar con tu código.

8. Code Merge, Governance, and Simplicity

Short description:

Fusionar código con al menos un 18% de cobertura. Importancia de la gobernanza. Utilizar herramientas para una gobernanza más fácil. Niveles de madurez de la gobernanza. Acercarse al negocio y abrazar la simplicidad.

Así que solo puedo fusionar este code si tiene al menos un 18% de cobertura con mi code. Y esta tarea debe ser eficiente. El último que voy a cubrir hoy es sobre la gobernanza. Sí, a veces lo vemos como una señal de alerta para nosotros, no nos gusta, pero es necesario, incluso para las startups. Y la razón es principalmente a largo plazo, porque dejamos la organización, pero la organización debe seguir haciendo este code. No tiene sentido recrear o rediseñar el code cada vez. Así que para la consistencia, la reespecificación, la eficiencia y naturalmente para trabajar con colaboración.

La eficiencia en torno a... ¿Este es el padre de ChartTPT, verdad? El objetivo principal de la gobernanza aquí es utilizar varias herramientas para facilitar tu vida. Este es un ejemplo simple de gobernanza optimizada. El SAS, por lo tanto, el Análisis Estático de Seguridad. De esta manera, puedes evitar la inyección de SQL, la inyección de HTML y demás, solo utilizando herramientas automatizadas. Por lo tanto, utiliza algunas herramientas para actualizar tus dependencias, especialmente para evitar cualquier violación de CVE, y naturalmente, verifica el estilo. Entonces, si estoy utilizando algún alineamiento faltante, si estoy utilizando algunas herramientas que no debería usar, o estoy utilizando alguna API que está obsoleta, puedes evitar todo este tipo de cosas con la gobernanza.

Y la madurez de la gobernanza, ninguna. Luego pasa al code, al repositorio de code, al inner source. Y la gobernanza evolutiva, donde todos pueden participar, unirse, y ayudar a crear la gobernanza dentro de la organización. Porque los puntos principales del desarrollo de software para lograr el éxito son, naturalmente, uno, acercarse al negocio, y el segundo punto es hacerlo con simplicidad, porque los requisitos cambian. Pero necesito poder y estar preparado para cambiar con el propio negocio. Eso es todo por hoy. Mi nombre es Otavio Santana, principalmente Java, y espero que lo disfruten, y nos vemos por ahí.

QnA

Improving Documentation and Architecture

Short description:

Recomendaciones para mejorar la documentación. Enfocarse en las necesidades esenciales del cliente. Simplificar la arquitectura basada en el contexto.

Y la primera pregunta es, en muchas empresas, los productos están documentados, pero esta documentación no tiene sentido porque es de baja calidad. ¿Puedes recomendar algunos principios para mejorarla? Sí, es un buen punto. Mi primera recomendación es estar cerca del negocio. Primero, naturalmente. Y existen varias metodologías para hacerlo posible. Por ejemplo, puedes hacer la tormenta, donde tú, el equipo de ingeniería, y el equipo de producto pueden escribir la documentación juntos, especialmente al principio. Y también, comienzan a contar el dominio, donde las personas juntas, también, pueden definir la tecnología empresarial dentro del propio producto. Así que esos dos son increíbles. Mi favorito es comenzar a contar, especialmente porque cuando hablamos de la humanidad, disfrutamos contar historias a alguien más. Así que si vas a Amazon ahora mismo, puedes ver el libro, Comenzar a Contar el Dominio, donde puedes ver la metodología y cómo puedes aplicar eso con DDD, Diseño Dirigido por el Dominio. Así que para los desarrolladores de software, Comenzar a Contar el Dominio es el mejor y está muy cerca del código, también. Basado en eso, puedes definir el contexto de delimitación. Puedes definir el contexto de mapeo y también definir las entidades y cosas así. Gracias.

La segunda pregunta es, ¿no deberíamos enfocarnos en la necesidad esencial de un cliente en lugar de en lo que están pidiendo? De lo contrario, siempre piden un caballo más rápido. Esa es una buena discusión. Pero a veces, lo que hacemos, es tratar de adivinar lo que el cliente quiere y olvidamos preguntarle al cliente mismo. Así que tomé estos datos de Phobos, de Gartner también. Y la mayoría de las veces, no hemos logrado entender lo que el cliente quiere. Así que los 16 obstáculos, como mencioné, se trataban de hacer algo que el cliente no quiere. Así que realmente no podemos trabajar juntos con el producto, pero debemos prestar atención porque lo que hacen es hacer un caballo más rápido en lugar de, no sé, comida en lugar de caballo, ¿de acuerdo? De acuerdo.

¿Qué crees que es la mejor arquitectura para bibliotecas como React a medida que se vuelve complicado, a medida que escala? ¿La mejor arquitectura para bibliotecas como Reactiva? Bueno, no lo soy. Soy principalmente un ingeniero de backend, así que mi recomendación es que la mejor arquitectura es la más simple basada en tu contexto. ¿Y qué quiero decir con eso? Entonces, si estás comenzando un proyecto, ve por el monolito. Va a funcionar en cualquier tecnología. Soy desarrollador de Java la mayor parte del tiempo. También lo hice con Kotlin. Y cada vez que la gente comienza a ir directamente a los microservicios, nos encontramos con una pesadilla enorme porque generalmente es un sobreingeniería de lo que se supone que debemos hacer. Así que ve simple, pasos pequeños, y sigue evolucionando con eso. Sí.

Managing Frontend and Backend Architect Decisions

Short description:

Solicite un puente entre el equipo de gestión y el equipo de ingeniería para mejorar la visibilidad y comprensión. Tener a alguien en el rol de personal más ingeniero puede facilitar la comunicación y evitar programar a ciegas.

¿Cómo gestionar las decisiones de arquitectura de frontend frente a las decisiones de arquitectura de backend cuando las soluciones de frontend son mejor comprendidas por la gestión? Porque son visibles. Es hora de pedir visibilidad dentro de tu equipo. En América, la mayoría de las veces, tenemos a una persona que es el puente entre la gestión y el equipo de ingeniería a la que llamamos personal más ingeniero. Este personal más ingeniero es el ingeniero que tiene la tarea de ser un líder y pedir eso, especialmente porque si el equipo de ingeniería no comprende lo que deben hacer, estamos fallando como ingenieros de software. Es un gran error. Así que mi recomendación es pedir a alguien que sea capaz de ser el puente. Pide a esta persona de personal más ingeniero que se encargue de eso, pregúntale. Así que alguien estará allí para asistir a algunas reuniones aburridas y tener este tipo de discusiones y traer más de la gestión al interior. De lo contrario, vamos a programar a ciegas, así que no tiene sentido. Siguiente pregunta sobre startups. ¿Cuál sería la cantidad recomendada de documentación y procesos para startups? Bueno, es una buena pregunta. Para mí, un buen comienzo es la documentación del código, el repositorio de documentación, el registro de cambios y los ADR, registros de decisiones adjuntos. Esos cuatro son suficientes para ver qué está sucediendo dentro de tu código, dentro de tus decisiones adjuntas y cómo puedes medir eso con el tiempo. Por ejemplo, como dije, puedes crear el primer ADR explicando por qué elegimos el monolito en lugar de los microservicios o viceversa. Entonces, ¿por qué elegiste los microservicios en lugar de ir al monolito? Y puedes ver la historia de esa decisión. Así que a veces esa decisión se vuelve obsoleta, así que necesitas revertirla por alguna razón, así que puedes usar los microservicios en este momento porque tu equipo es mucho más grande ahora que antes o puedes volver al monolito porque rompiste las reglas y el límite está equivocado, así que necesitas volver al monolito y luego desmantelarlo nuevamente. Con esos cuatro es suficiente para comprender qué está sucediendo dentro de tu equipo desde la perspectiva de la ingeniería de software. Sí, tal vez la última pregunta de mi parte. ¿Crees que el primer tipo de documentación debería estar en inglés para todos? En mi equipo, sí, porque tengo equipos distribuidos con personas de Brasil, personas de Irlanda, personas de Polonia, así que naturalmente para mí es en inglés, pero si el equipo está en un solo idioma como Brasil, entonces solo tengo brasileños en el equipo, puedes hacerlo en portugués o si lo estás haciendo solo en los Países Bajos, puedes hacerlo en flamenco y así sucesivamente. Pero luego viene alguien que no habla neerlandés o portugués y... Sí, todo en neerlandés. Así que muchas gracias Otawe. Gracias por responder nuestras preguntas. Así que puedes hacer más preguntas a Otawe en la zona de preguntas y respuestas. Muchas gracias.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Escalando con Remix y Micro Frontends
Remix Conf Europe 2022Remix Conf Europe 2022
23 min
Escalando con Remix y Micro Frontends
Top Content
This talk discusses the usage of Microfrontends in Remix and introduces the Tiny Frontend library. Kazoo, a used car buying platform, follows a domain-driven design approach and encountered issues with granular slicing. Tiny Frontend aims to solve the slicing problem and promotes type safety and compatibility of shared dependencies. The speaker demonstrates how Tiny Frontend works with server-side rendering and how Remix can consume and update components without redeploying the app. The talk also explores the usage of micro frontends and the future support for Webpack Module Federation in Remix.
No resuelvas problemas, elimínalos
React Advanced 2021React Advanced 2021
39 min
No resuelvas problemas, elimínalos
Top Content
Kent C. Dodds discusses the concept of problem elimination rather than just problem-solving. He introduces the idea of a problem tree and the importance of avoiding creating solutions prematurely. Kent uses examples like Tesla's electric engine and Remix framework to illustrate the benefits of problem elimination. He emphasizes the value of trade-offs and taking the easier path, as well as the need to constantly re-evaluate and change approaches to eliminate problems.
Uso efectivo de useEffect
React Advanced 2022React Advanced 2022
30 min
Uso efectivo de useEffect
Top Content
Today's Talk explores the use of the useEffect hook in React development, covering topics such as fetching data, handling race conditions and cleanup, and optimizing performance. It also discusses the correct use of useEffect in React 18, the distinction between Activity Effects and Action Effects, and the potential misuse of useEffect. The Talk highlights the benefits of using useQuery or SWR for data fetching, the problems with using useEffect for initializing global singletons, and the use of state machines for handling effects. The speaker also recommends exploring the beta React docs and using tools like the stately.ai editor for visualizing state machines.
Sistemas de Diseño: Caminando la Línea Entre Flexibilidad y Consistencia
React Advanced 2021React Advanced 2021
47 min
Sistemas de Diseño: Caminando la Línea Entre Flexibilidad y Consistencia
Top Content
The Talk discusses the balance between flexibility and consistency in design systems. It explores the API design of the ActionList component and the customization options it offers. The use of component-based APIs and composability is emphasized for flexibility and customization. The Talk also touches on the ActionMenu component and the concept of building for people. The Q&A session covers topics such as component inclusion in design systems, API complexity, and the decision between creating a custom design system or using a component library.
Concurrencia en React, Explicada
React Summit 2023React Summit 2023
23 min
Concurrencia en React, Explicada
Top Content
React 18's concurrent rendering, specifically the useTransition hook, optimizes app performance by allowing non-urgent updates to be processed without freezing the UI. However, there are drawbacks such as longer processing time for non-urgent updates and increased CPU usage. The useTransition hook works similarly to throttling or bouncing, making it useful for addressing performance issues caused by multiple small components. Libraries like React Query may require the use of alternative APIs to handle urgent and non-urgent updates effectively.
Gestión del Estado de React: 10 Años de Lecciones Aprendidas
React Day Berlin 2023React Day Berlin 2023
16 min
Gestión del Estado de React: 10 Años de Lecciones Aprendidas
Top Content
This Talk focuses on effective React state management and lessons learned over the past 10 years. Key points include separating related state, utilizing UseReducer for protecting state and updating multiple pieces of state simultaneously, avoiding unnecessary state syncing with useEffect, using abstractions like React Query or SWR for fetching data, simplifying state management with custom hooks, and leveraging refs and third-party libraries for managing state. Additional resources and services are also provided for further learning and support.

Workshops on related topic

Masterclass de Depuración de Rendimiento de React
React Summit 2023React Summit 2023
170 min
Masterclass de Depuración de Rendimiento de React
Top Content
Featured Workshop
Ivan Akulov
Ivan Akulov
Los primeros intentos de Ivan en la depuración de rendimiento fueron caóticos. Vería una interacción lenta, intentaría una optimización aleatoria, vería que no ayudaba, y seguiría intentando otras optimizaciones hasta que encontraba la correcta (o se rendía).
En aquel entonces, Ivan no sabía cómo usar bien las herramientas de rendimiento. Haría una grabación en Chrome DevTools o React Profiler, la examinaría, intentaría hacer clic en cosas aleatorias, y luego la cerraría frustrado unos minutos después. Ahora, Ivan sabe exactamente dónde y qué buscar. Y en esta masterclass, Ivan te enseñará eso también.
Así es como va a funcionar. Tomaremos una aplicación lenta → la depuraremos (usando herramientas como Chrome DevTools, React Profiler, y why-did-you-render) → identificaremos el cuello de botella → y luego repetiremos, varias veces más. No hablaremos de las soluciones (en el 90% de los casos, es simplemente el viejo y regular useMemo() o memo()). Pero hablaremos de todo lo que viene antes - y aprenderemos a analizar cualquier problema de rendimiento de React, paso a paso.
(Nota: Esta masterclass es más adecuada para ingenieros que ya están familiarizados con cómo funcionan useMemo() y memo() - pero quieren mejorar en el uso de las herramientas de rendimiento alrededor de React. Además, estaremos cubriendo el rendimiento de la interacción, no la velocidad de carga, por lo que no escucharás una palabra sobre Lighthouse 🤐)
Consejos sobre React Hooks que solo los profesionales conocen
React Summit Remote Edition 2021React Summit Remote Edition 2021
177 min
Consejos sobre React Hooks que solo los profesionales conocen
Top Content
Featured Workshop
Maurice de Beijer
Maurice de Beijer
La adición de la API de hooks a React fue un cambio bastante importante. Antes de los hooks, la mayoría de los componentos tenían que ser basados en clases. Ahora, con los hooks, estos son a menudo componentes funcionales mucho más simples. Los hooks pueden ser realmente simples de usar. Casi engañosamente simples. Porque todavía hay muchas formas en las que puedes equivocarte con los hooks. Y a menudo resulta que hay muchas formas en las que puedes mejorar tus componentes con una mejor comprensión de cómo se puede usar cada hook de React.Aprenderás todo sobre los pros y los contras de los diversos hooks. Aprenderás cuándo usar useState() versus useReducer(). Veremos cómo usar useContext() de manera eficiente. Verás cuándo usar useLayoutEffect() y cuándo useEffect() es mejor.
React, TypeScript y TDD
React Advanced 2021React Advanced 2021
174 min
React, TypeScript y TDD
Top Content
Featured Workshop
Paul Everitt
Paul Everitt
ReactJS es extremadamente popular y, por lo tanto, ampliamente soportado. TypeScript está ganando popularidad y, por lo tanto, cada vez más soportado.

¿Los dos juntos? No tanto. Dado que ambos cambian rápidamente, es difícil encontrar materiales de aprendizaje precisos.

¿React+TypeScript, con los IDEs de JetBrains? Esa combinación de tres partes es el tema de esta serie. Mostraremos un poco sobre mucho. Es decir, los pasos clave para ser productivo, en el IDE, para proyectos de React utilizando TypeScript. En el camino, mostraremos el desarrollo guiado por pruebas y enfatizaremos consejos y trucos en el IDE.
Domina los Patrones de JavaScript
JSNation 2024JSNation 2024
145 min
Domina los Patrones de JavaScript
Top Content
Featured Workshop
Adrian Hajdin
Adrian Hajdin
Durante esta masterclass, los participantes revisarán los patrones esenciales de JavaScript que todo desarrollador debería conocer. A través de ejercicios prácticos, ejemplos del mundo real y discusiones interactivas, los asistentes profundizarán su comprensión de las mejores prácticas para organizar el código, resolver desafíos comunes y diseñar arquitecturas escalables. Al final de la masterclass, los participantes ganarán una nueva confianza en su capacidad para escribir código JavaScript de alta calidad que resista el paso del tiempo.
Puntos Cubiertos:
1. Introducción a los Patrones de JavaScript2. Patrones Fundamentales3. Patrones de Creación de Objetos4. Patrones de Comportamiento5. Patrones Arquitectónicos6. Ejercicios Prácticos y Estudios de Caso
Cómo Ayudará a los Desarrolladores:
- Obtener una comprensión profunda de los patrones de JavaScript y sus aplicaciones en escenarios del mundo real- Aprender las mejores prácticas para organizar el código, resolver desafíos comunes y diseñar arquitecturas escalables- Mejorar las habilidades de resolución de problemas y la legibilidad del código- Mejorar la colaboración y la comunicación dentro de los equipos de desarrollo- Acelerar el crecimiento de la carrera y las oportunidades de avance en la industria del software
Diseñando Pruebas Efectivas con la Biblioteca de Pruebas de React
React Summit 2023React Summit 2023
151 min
Diseñando Pruebas Efectivas con la Biblioteca de Pruebas de React
Top Content
Featured Workshop
Josh Justice
Josh Justice
La Biblioteca de Pruebas de React es un gran marco para las pruebas de componentes de React porque responde muchas preguntas por ti, por lo que no necesitas preocuparte por esas preguntas. Pero eso no significa que las pruebas sean fáciles. Todavía hay muchas preguntas que tienes que resolver por ti mismo: ¿Cuántas pruebas de componentes debes escribir vs pruebas de extremo a extremo o pruebas de unidad de nivel inferior? ¿Cómo puedes probar una cierta línea de código que es difícil de probar? ¿Y qué se supone que debes hacer con esa persistente advertencia de act()?
En esta masterclass de tres horas, presentaremos la Biblioteca de Pruebas de React junto con un modelo mental de cómo pensar en el diseño de tus pruebas de componentes. Este modelo mental te ayudará a ver cómo probar cada bit de lógica, si debes o no simular dependencias, y ayudará a mejorar el diseño de tus componentes. Te irás con las herramientas, técnicas y principios que necesitas para implementar pruebas de componentes de bajo costo y alto valor.
Tabla de contenidos- Los diferentes tipos de pruebas de aplicaciones de React, y dónde encajan las pruebas de componentes- Un modelo mental para pensar en las entradas y salidas de los componentes que pruebas- Opciones para seleccionar elementos DOM para verificar e interactuar con ellos- El valor de los mocks y por qué no deben evitarse- Los desafíos con la asincronía en las pruebas de RTL y cómo manejarlos
Requisitos previos- Familiaridad con la construcción de aplicaciones con React- Experiencia básica escribiendo pruebas automatizadas con Jest u otro marco de pruebas unitarias- No necesitas ninguna experiencia con la Biblioteca de Pruebas de React- Configuración de la máquina: Node LTS, Yarn
IA a demanda: IA sin servidor
DevOps.js Conf 2024DevOps.js Conf 2024
163 min
IA a demanda: IA sin servidor
Top Content
Featured WorkshopFree
Nathan Disidore
Nathan Disidore
En esta masterclass, discutimos los méritos de la arquitectura sin servidor y cómo se puede aplicar al espacio de la IA. Exploraremos opciones para construir aplicaciones RAG sin servidor para un enfoque más lambda-esque a la IA. A continuación, nos pondremos manos a la obra y construiremos una aplicación CRUD de muestra que te permite almacenar información y consultarla utilizando un LLM con Workers AI, Vectorize, D1 y Cloudflare Workers.