window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', versión: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster ya existe') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() TheCodestReview #5 - zumo quincenal de ingeniería de software - The Codest
The Codest
  • Quiénes somos
  • Servicios
    • Desarrollo de software
      • Desarrollo Frontend
      • Desarrollo backend
    • Staff Augmentation
      • Desarrolladores frontales
      • Desarrolladores de backend
      • Ingenieros de datos
      • Ingenieros de la nube
      • Ingenieros de control de calidad
      • Otros
    • Asesoramiento
      • Auditoría y consultoría
  • Industrias
    • Fintech y Banca
    • E-commerce
    • Adtech
    • Tecnología sanitaria
    • Fabricación
    • Logística
    • Automoción
    • IOT
  • Valor para
    • CEO
    • CTO
    • Gestor de entregas
  • Nuestro equipo
  • Case Studies
  • Saber cómo
    • Blog
    • Meetups
    • Seminarios en línea
    • Recursos
Carreras profesionales Póngase en contacto
  • Quiénes somos
  • Servicios
    • Desarrollo de software
      • Desarrollo Frontend
      • Desarrollo backend
    • Staff Augmentation
      • Desarrolladores frontales
      • Desarrolladores de backend
      • Ingenieros de datos
      • Ingenieros de la nube
      • Ingenieros de control de calidad
      • Otros
    • Asesoramiento
      • Auditoría y consultoría
  • Valor para
    • CEO
    • CTO
    • Gestor de entregas
  • Nuestro equipo
  • Case Studies
  • Saber cómo
    • Blog
    • Meetups
    • Seminarios en línea
    • Recursos
Carreras profesionales Póngase en contacto
Flecha atrás VOLVER
2021-02-02
Desarrollo de software

TheCodestReview #5 - zumo quincenal de ingeniería de software

The Codest

Kamil Ferens

Director de Crecimiento

Estaba previsto que este episodio se publicara en diciembre, antes de las vacaciones de Navidad, así que parece que el culpable del retraso soy yo. He ido retrasando la publicación semana tras semana a medida que se interponían algunas tareas de alta prioridad, pero hoy es EL día.

Im Busy Doing Stuff Pc Principal GIF de Imbusydoingstuff GIFs

En el último episodio he bromeado con comentar el artículo sobre la importancia del humor en el lugar de trabajo, pero mientras tanto me he dado cuenta de que merece mucho más crédito, así que voy a escribir una entrada entera en el blog sobre ello pronto(ish).    

IPromise You Believe Me GIF de Ipromiseyou GIFs

Cosas que me mantuvieron ocupado en las últimas semanas: 

a) Antes de Navidad me estrené con un episodio de "Serie de seminarios web "A prueba de balas CTO (permanezca atento al segundo episodio de febrero sobre SaaS) CTOs(próximamente más detalles en mi LinkedIn).

b) Puesta a punto de nuestro plan de crecimiento para 2021 con el objetivo de ir más allá de nuestro negocio principal de Ruby y JS y hacer crecer un negocio de Magento y Producto Competencia en diseño en la empresa.

Basta de autopromoción, permítanme invitarles al 5º episodio de nuestra serie #TheCodestReview. 

Temas equipo ha preparado para este momento: 

  1. Arquitectura front-end escalable y mantenible.
  2. Compromisos convencionales.
  3. Actualizaciones de la versión Ruby 3.0.0.

Los comentarios sobre la aplicación frontend y los commits convencionales son entregados esta semana por nuestros ingenieros de React, mientras que Ruby 3.0.0 por nuestro dream team Ruby.

Hoy en día muchos desarrolladores para ahorrar tiempo están utilizando bibliotecas de interfaz de usuario ya hechas y componentes reutilizables. Es una buena práctica y nos ayuda a ahorrar mucho tiempo pero cuando nuestro proyecto se hace más grande - comprenderá que no basta con manejar con código.

Hay dos buenos patrones de desarrollo back-end - Domain Driven Development (DDD) y Separation of Concerns (SoC). También podemos utilizarlos en la arquitectura front-end.

En DDD intentamos agrupar características similares y desacoplarlas en la medida de lo posible de otros grupos (módulos).

Mientras que con SoC, por ejemplo, separamos la lógica, las vistas y los modelos de datos (por ejemplo, utilizando el patrón de diseño MVC o MVVM).

Hay un montón de buenas prácticas y patrones a utilizar, pero esta forma es la preferida para mí.

Cuando utilicemos este patrón obtendremos esta imagen:

Al principio, el enrutamiento de la aplicación redirige al usuario al módulo correcto. Cada módulo está completamente contenido. Pero, como un usuario espera utilizar una aplicación, no varias pequeñas, existirá cierto acoplamiento. Este acoplamiento existe en características específicas o lógica de negocio.

Y tenemos esta estructura:

carpeta app - capa de aplicación

assets - carpeta para imágenes, fuentes, iconos, etc.

componentes - aquí deberían estar los componentes para reutilizar que no tienen una lógica complicada

config - aquí almacenaremos el estado global

lib - carpeta para funciones complicadas y cálculo lógico

módulos - aquí están nuestros módulos

pubsub - lugar para almacenar esquemas para describir la estructura de datos.

styles - para nuestro código css/scss

Esta estructura nos ayudará a manejar nuestra aplicación en crecimiento y a tener menos bugs. También ayudará a hacer más cómodas las partes de trabajo con módulos separados, a probarlos y a hacer más fácil la refactorización y la depuración (debido a los módulos separados).

Si profundizamos en la arquitectura de los módulos y sus conexiones con la API, obtendremos algo parecido:

Si carpeta 'app' vamos a crear otra carpeta 'api' con el código para las llamadas a la API y los datos que vamos a guardar en 'config/store'. Aquí guardaremos los datos estáticos e inmutables que utilizaremos en toda la aplicación.

También en la carpeta 'pubsub/schema' describiremos tipos de datos específicos para JavaScript objetos.

Todos los módulos contienen datos en su interior que necesitamos utilizar (usuarios, rutas, tablas, acciones, etc.). Cada módulo está conectado con la capa de aplicación y toma todos los datos necesarios.

El front-end es el primer punto de entrada para nuestros usuarios. Con nuestros proyectos front-end creciendo en características, también introduciremos más errores. Pero nuestros usuarios esperan que no haya errores y que las nuevas funciones sean rápidas. Esto es imposible. Sin embargo, utilizando una buena arquitectura podemos intentar conseguirlo en la medida de lo posible.

Compromisos convencionales por Sathyabodh Mudhol en DZone

The Codest desarrollo de software

El motivo de la necesidad de comprometer mejor el trabajo

Imagina que estás en el punto de partida de una empresa en la que te acaban de contratar. Toda la gente es amable contigo y todo parece ir bien hasta el momento en que te introducen en una base de código de antes de que JavaScript fuera un lenguaje y Netscape cargara una página durante lo que parecería una eternidad.

La herencia del código parece ser un gran problema cuando se introduce a nuevos desarrolladores en un proyecto. Leer el código es una cosa, pero entender cómo se desarrolló la aplicación no es exactamente lo mismo. A menudo los commits demuestran ser útiles y dan contexto a por qué estos console.logs no fueron capturados por linter o por qué ese desagradable // TODO está ahí para los hijos del desarrollador que inicialmente hizo la anotación.

Empecemos con por qué los commits convencionales son mejores que las reglas de commit no estandarizadas.

Si contratamos nuevos desarrolladores para un proyecto en el que la mayoría de los commits consisten en mensajes del tipo esto debería funcionar o Sleepy fix for footer ASAP ¿qué se te pasa por la cabeza?

Yo diría que las banderas rojas porque:

  • No sabemos exactamente qué debería funcionar
  • ¿Por qué alguien impulsó algo estando somnoliento y potencialmente erróneo?
  • ¿Se apresuró el arreglo si podemos ver la anotación ASAP?

Debido a que su equipo puede tener reglas personalizadas aplicadas a cuando uno se compromete cambios hay menos margen para el error como su confirmación debe ser sólida. Ya no es sólo una forma de hacer check-out. Es una firma que indica a otras personas que conocías el contenido del commit. No hace falta mencionar que si el trabajo que has hecho no está correctamente firmado lo más probable es que se produzca un error y te aparezca un mensaje

Existe la posibilidad de que tu equipo quiera establecer una regla que no permita ciertas palabras clave, por lo que ASAP o cualquier palabrota pueden estar en la lista negra.

Herramientas

Lo que resulta realmente útil al inicio del proyecto es presentar a todo el mundo cómo su equipo de desarrollo les gustaría que los nuevos desarrolladores confirmaran sus cambios. A continuación, establezca una herramienta que les ayude a mantenerse al día con lo que todos acordaron.

Una de las herramientas con las que he tenido la oportunidad de trabajar ha sido commitlint e hizo de los commits convencionales mi práctica habitual cuando llego a nuevos proyectos que no tienen reglas y el equipo está abierto a la idea de introducirlas.

Cuando se trata de la configuración y su difusión a través de su equipo puede simplemente crear un paquete npm y sólo mpn i -D en cada proyecto. Esto sin duda ayudará a todos en el proyecto para estar en la misma página en todo momento y si es necesario caminar de un proyecto a otro la comprensión de lo que eran los últimos cambios sobre (y por qué se hicieron).

Amigos con múltiples beneficios

Así que ahora, después de configurarlo todo y entender por qué podría ser una buena idea empezar a usar CC, ¡la mejor parte sería programar alrededor de las reglas que acabas de aplicar! Estamos utilizando una forma estandarizada de cómo nos comprometemos, prestamos más atención a lo que el commit realmente se trataba así que ¿por qué no configurar ganchos que le permiten una prueba rápida en la puesta en escena cuando una bandera está presente? No queremos sobrecargar los servicios y reducir los costes cuando sea necesario y hay algunas razones para probar en el servidor de producción en lugar de localhost.

Supongamos que estás trabajando en PWA y SSL es necesario para que puedas probar todo el potencial y tienes un SSL en tu plataforma de pruebas. Todo lo que necesitas ahora es un buen commit. Algo en la línea de feat(PWA): manifest icons workbox setup upload activaría toda la maquinaria de pruebas y de mover ruedas dentadas. No necesitamos eso cuando sólo subimos algunos datos estáticos como manifest.json así que añadimos una bandera [TEST_SKIP] como postfix a nuestro commit. Esto permite a nuestro CI simplemente subir nuevos activos al entorno de pruebas y saltarse las pruebas. Puedes leer más sobre esto aquí

Después de un tiempo podrás ver otros beneficios, como la facilidad para generar CHANGELOG y un mejor versionado con versionado semántico. Si eso no es suficiente para convencerte de que cambies tu forma de escribir mensajes de compromiso, tal vez sumergir los dedos de los pies en agua fresca y fría e intentar usarlos en tu repositorio privado durante un tiempo te haga cambiar de opinión.

¡Feliz compromiso convencional!

Actualizaciones de la versión Ruby 3.0.0 por la Comunidad Ruby

Una versión de Ruby 3.0.0 muy esperada por la comunidad ha visto la luz en Navidad para que todos los desarrolladores de Ruby puedan encontrarla bajo el árbol de Navidad al levantarse por la mañana. En The Codest cultivamos la cultura del intercambio de conocimientos organizando reuniones de desarrollo semanales en las que nuestros ingenieros debaten las tendencias tecnológicas y los nuevos descubrimientos que merecen nuestra atención. A continuación puedes encontrar un enlace a las diapositivas de la jornada de demostración en la que nuestro ingeniero senior de Ruby habló de un par de cambios importantes en Ruby 3.0.0 desde su punto de vista subjetivo:

https://drive.google.com/file/d/1rboAusV1UTWXYMVGuLHx6O90lXrgkmnO/view?usp=sharing

Además, nuestro mentor Ruby ha contribuido a la nueva versión con su pull request que ha sido fusionado con éxito. Más información sobre el tema de los métodos de control de la privacidad en el breve artículo de nuestro Jefe de Desarrollo.

https://thecodest.co/blog/ruby-3-0-ruby-and-lesser-known-privacy-control-methods

Muchas gracias por leer y si has llegado hasta aquí, agradezco tu tiempo y cualquier comentario es más que bienvenido en LinkedIn o a mi correo electrónico.

Volvemos con el próximo episodio a finales de febrero con la revisión de un podcast entrevistando a CTO de Shopify, ¡el hombre detrás de un equipo de ingeniería que trabaja en la magnífica aplicación monolito Ruby!

Nos vemos.

Ronda 2 GIF de Ronda2 GIFs

Oferta de desarrollador Ruby

Más información:

TheCodestReview #4 - zumo semanal de ingeniería de software

TheCodestReview #3 - jugo semanal de ingeniería de software

TheCodestReview #2 - zumo semanal de ingeniería de software

Artículos relacionados

Desarrollo de software

Crear aplicaciones web preparadas para el futuro: ideas del equipo de expertos de The Codest

Descubra cómo The Codest destaca en la creación de aplicaciones web escalables e interactivas con tecnologías de vanguardia, ofreciendo experiencias de usuario fluidas en todas las plataformas. Descubra cómo nuestra experiencia impulsa la transformación...

EL MEJOR
Desarrollo de software

Las 10 mejores empresas de desarrollo de software de Letonia

Conozca las principales empresas de desarrollo de software de Letonia y sus innovadoras soluciones en nuestro último artículo. Descubra cómo estos líderes tecnológicos pueden ayudarle a mejorar su negocio.

thecodest
Soluciones para empresas y escalas

Fundamentos del desarrollo de software Java: Guía para externalizar con éxito

Explore esta guía esencial sobre el desarrollo de software Java outsourcing con éxito para mejorar la eficiencia, acceder a la experiencia e impulsar el éxito de los proyectos con The Codest.

thecodest
Desarrollo de software

La guía definitiva para subcontratar en Polonia

El auge de las outsourcing en Polonia está impulsado por los avances económicos, educativos y tecnológicos, que fomentan el crecimiento de las TI y un clima favorable a las empresas.

TheCodest
Soluciones para empresas y escalas

Guía completa de herramientas y técnicas de auditoría informática

Las auditorías informáticas garantizan sistemas seguros, eficientes y conformes. Obtenga más información sobre su importancia leyendo el artículo completo.

The Codest
Jakub Jakubowicz CTO y Cofundador

Suscríbase a nuestra base de conocimientos y manténgase al día de la experiencia del sector informático.

    Quiénes somos

    The Codest - Empresa internacional de desarrollo de software con centros tecnológicos en Polonia.

    Reino Unido - Sede central

    • Oficina 303B, 182-184 High Street North E6 2JA
      Londres, Inglaterra

    Polonia - Centros tecnológicos locales

    • Parque de oficinas Fabryczna, Aleja
      Pokoju 18, 31-564 Cracovia
    • Embajada del Cerebro, Konstruktorska
      11, 02-673 Varsovia, Polonia

      The Codest

    • Inicio
    • Quiénes somos
    • Servicios
    • Case Studies
    • Saber cómo
    • Carreras profesionales
    • Diccionario

      Servicios

    • Asesoramiento
    • Desarrollo de software
    • Desarrollo backend
    • Desarrollo Frontend
    • Staff Augmentation
    • Desarrolladores de backend
    • Ingenieros de la nube
    • Ingenieros de datos
    • Otros
    • Ingenieros de control de calidad

      Recursos

    • Hechos y mitos sobre la cooperación con un socio externo de desarrollo de software
    • De EE.UU. a Europa: ¿Por qué las startups estadounidenses deciden trasladarse a Europa?
    • Comparación de los polos de desarrollo de Tech Offshore: Tech Offshore Europa (Polonia), ASEAN (Filipinas), Eurasia (Turquía)
    • ¿Cuáles son los principales retos de los CTO y los CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Condiciones de uso del sitio web

    Copyright © 2025 por The Codest. Todos los derechos reservados.

    es_ESSpanish
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean nl_NLDutch etEstonian elGreek es_ESSpanish