27 de may. de 2021

Tecnología

Cómo empezamos a modularizar la aplicación de Fintual

Mientras más crece el código de una aplicación, más nos cuesta encontrar el archivo que queremos y es más difícil debuggear. Llega un punto en el que el código ha crecido tanto y maneja tantas funcionalidades que los equipos ya no pueden conocerlo entero y mantenerlo, en especial los desarrolladores nuevos. La curva de aprendizaje se empieza a complicar.

Evolución de la curva de aprendizaje del código de Fintual


El primer commit de Fintual fue hace 5 años. Hoy vamos en más de 33.500 commits y contamos con más de 435.000 líneas de código. Estamos en un punto de inflexión entre la posibilidad - o no - de tener programadores que conozcan prácticamente todo el código de Fintual. Y como estamos creciendo mucho en desarrolladores y en código, tuvimos que tomar una decisión de cómo manejarlo.

Crecimiento del código de Fintual construído con la herramienta git-of-theseus

En Fintual, toda nuestra aplicación corre en un monolito sobre Ruby on Rails (RoR). Este framework web, basado en el clásico Model View Controller (MVC), tiene la particularidad de que asume configuraciones y comportamientos estándar y potencia la reutilización de código. En palabras simples, hace muchas cosas como “magia” de la que no te tienes que preocupar.

Si conoces cómo funciona RoR, la magia es de gran ayuda. Permite desarrollar más rápido y con menos código. Esto, sumado a una estructura ordenada MVC, facilita un orden en los archivos y clases, en donde no es difícil encontrar dónde se hace cada acción, modificar y extender funcionalidades.

Pero cuando empiezas a crecer y el código se multiplica se complica la situación. Empezamos a generar namespaces para ordenar el código y a separar las responsabilidades de clases en otros tipos de componentes más allá de un MVC. En el monolito tenemos 19 tipos de componentes además de models-views-controllers.

Cómo manejar el crecimiento en código

La primera opción es separar al equipo en especializaciones de desarrollo y que cada equipo maneje su código. Es decir, subdividir en los clásicos teams de backend, frontend web y frontend mobile. Pero en Fintual somos todos Full Stack y no hay mucho interés en especializarse así por ahora. En realidad es bacán poder desarrollar una funcionalidad de manera completa. Da más sentido de pertenencia y el impacto percibido es mayor.

Otra opción es dividir el monolito en distintos microservicios, es decir, distintas aplicaciones modulares, donde cada una se ocupa de una tarea y estas se comunican entre sí para construir un producto final. Pero en Fintual no somos muy fanáticos de los microservicios y un approach monolítico nos ha funcionado mejor.

Andrés, CTO de Fintual, defendiendo a los monolitos

¿Qué hicimos entonces? Empezamos a modularizar la aplicación en distintos engines y gemas de RoR.

Engines y gems

Un engine es una especie de mini-aplicación web con prácticamente toda la API y estructura que ofrece Ruby on Rails. Es decir, puedes manejar controladores, modelos, vistas, rutas y migraciones y bases de datos tal como lo harías con una aplicación RoR normal.

Pero ojo. No es un microservicio, ya que lo usamos para extender nuestra main-app. Esto significa que el contenido del engine corre en el mismo servidor, dentro del mismo proceso y contexto y usa la misma base de datos que la main-app, añadiendo sus migraciones y clases. El ejemplo más conocido es el engine de autenticación Devise.

Por otro lado están las gemas. A diferencia de un engine, no necesitan el motor de Rails, sino que son plain Ruby. En otras palabras, no cuentan con un modelo MVC ni manejan bases de datos. Es útil cuando, por ejemplo, queremos construir un Toolkit de utilidades o hacer un wrapper de una conexión a un servicio externo.

La gracia de modularizar la aplicación en engines y gems está en que podemos aislar funcionalidades o comportamientos en “mini-proyectos”.

Por ejemplo, cuando alguien quiera hacer un cambio en la funcionalidad de Fintual del manejo de los fondos mutuos, basta con que vaya al engine de Accounting. Será mucho más fácil encontrar los archivos que debe revisar y modificar. Y más importante, cuando entra un dev nuevo puede comenzar por algunas funcionalidades - engines - en vez de volverse loco mirando una main-app gigante.

Cómo empezar con Engines y Gems

Ahora que conocemos estas alternativas, ¿cómo determinamos si conviene extraer un feature de la main-app a un engine o gem? Lo que hacemos en Fintual es evaluar si vale la pena pensar cada nuevo feature como una extensión de la main-app. En otras palabras, hay que preguntarse si es posible desenchufar esta funcionalidad de la main-app sin romperla.

Un ejemplo es nuestro feature de referidos, parecido al programa de afiliados de Shopify, Amazon y Uber. El programa de referidos permite a cada usuario recomendar Fintual a sus conocidos, y a cambio ganan un 1% del saldo promedio que mantienen sus referidos en su primer año en Fintual. Referidos es una funcionalidad completa que se podría encender y apagar sin afectar el core.

Y bueno, ¿cómo determinamos si hacerlo en una gema o un engine? Nos preguntamos si el feature que quiero desarrollar debe almacenar datos y tiene un comportamiento web. Si la respuesta es sí, entonces conviene desarrollar un engine. Si la respuesta es no y nuestra feature es lógica pura, basta con desarrollar una gema.

Continuando el ejemplo, el feature de referidos sería un engine, ya que tiene sus propios modelos de datos, controladores y vistas.

A medida que creamos nuevos engines nos dimos cuenta que podíamos abstraer gran parte del proceso, por lo que decidimos crear nuestro propio generador de engines. Si eres un desarrollador de Rails, te invitamos a usar y contribuir al desarrollo de esta herramienta mediante el repositorio que liberamos para el público general.

Un tema importante a tener en cuenta es el manejo de dependencias. En una gema es más simple, porque no suele depender de clases u objetos específicos de nuestra main-app. El lenguaje que habla es el de Ruby, recibiendo ciertos objetos estándar (un string o hash por ejemplo) y ejecutando cierta acción.

Pero un engine, dado que maneja controladores, rutas, vistas y modelos tal como lo hace nuestra main-app, puede que requiera interactuar con objetos de la main-app directamente. Por ejemplo, el engine Devise utiliza el modelo User de nuestra main-app para el manejo de los usuarios y lo extiende. ¿Cómo manejamos esta dependencia de manera correcta?

Una forma es definir las dependencias desde la main-app en el módulo principal del engine. Por ejemplo, el engine de referidos depende de los modelos de User y UserDeposit de la main-app y se construye así:

require "referrals/engine"
 
module Referrals
  extend self
 
  MODULE_DEPENDENCIES = %i{
    user_deposit_model
    user_model
  }
 
  mattr_accessor *MODULE_DEPENDENCIES
 
  def configure
    yield self
    require "referrals"
  end
 
  class << self
    MODULE_DEPENDENCIES.each do |symbol|
      define_method(symbol) do
        class_variable_get(:"@@#{symbol}").constantize
      end
    end
  end
end

De esta forma, cuando en la main-app inicializamos el engine de referidos, debemos setear estas configuraciones. Acá le decimos qué modelo de la main-app debe usar el engine.

Referrals.configure do |config|
  config.user_deposit_model = "UserDeposit"
  config.user_model = "User"
end

Luego podemos usar esta configuración dentro del engine. Por ejemplo, acá queremos obtener quién refirió al usuario actual, a partir de una búsqueda en el modelo User. Pero como no conocemos el modelo User directamente, usamos el que nos proporciona la configuración Referrals.user_model.

def referrer_from_code(referrer_code)
  Referrals.user_model.find_by(referrer_code: referrer_code)
end

Además, como un usuario puede referir, queremos que el modelo User tenga una relación de has_many con sus referidos. Podríamos ir al modelo User de la main-app y agregar la relación directamente, pero si desconectamos el engine, se rompería.

Para manejar esta dependencia correctamente, lo que hacemos es añadir dinámicamente funcionalidades a la clase User.

Referrals.user_model.class_eval do
  has_many :referred_users
end

Por último, aislamos la ejecución de código condicionado a la disponibilidad de un engine, para no romper nuestra main-app en caso de que una extensión no esté cargada. Una buena forma de hacerlo es crear un Util que verifique la presencia de un engine.

class EnginesUtil
  def self.with_available_engine(engine_name, &block)
    if available_engine?(engine_name)
      block.call
    end
  end
 
  def self.available_engine?(engine_name)
    Object.const_defined?("::#{engine_name.to_s.camelize}")
  end
end

Así, si por ejemplo en la vista del header, que está en la main-app, queremos agregar un botón a Referidos, tenemos que chequear que el engine esté presente y lo hacemos así:

if EnginesUtil.available_engine?(:referrals)
  link_to "Referidos", app_referrals_path
end

Con este approach hemos logrado hasta ahora extraer funcionalidades de la main-app a 23 engines y 3 gems. Si bien, aún nos queda bastante por modularizar, ya se nota mayor orden y desacoplamiento del código. Hoy es más fácil encontrar el archivo que tenemos que modificar cuando queremos resolver un bug o entender el contexto de funcionamiento cuando queremos agregar un nuevo feature.

Incluso para ordenarnos en lo que nos queda por modularizar, también recurrimos a un engine. El deprecated_main, al que movimos todas los componentes pendientes de extraer.

Pero lo más bacán es que cuando empezamos los proyectos recientes una de las principales discusiones es si se debe desarrollar el feature solicitado dentro de un engine o no. Así que no solo estamos ordenando el código pasado, sino también el que desarrollamos en el presente.  Ya existe una mentalidad de modularización en los desarrolladores de Fintual.


Si te gustó este artículo y tienes un comentario o algo para complementarlo, escríbenos a cartas@fintual.com. Todas las semanas publicamos las cartas destacadas de nuestros lectores.

LO ÚLTIMO DE ECONOMÍA

VER MÁS
La depreciación global del dólar y mis inversiones

Mercados

La depreciación global del dólar y mis inversiones

por Priscila Robledo
Se termina marzo y tu auto lo sabe: el permiso de circulación

Economía

Se termina marzo y tu auto lo sabe: el permiso de circulación

por Diego Noguera
¿Cómo ahorrar para viajar? Pareja que gasta junta se mantiene unida

Conocimiento Financiero

¿Cómo ahorrar para viajar? Pareja que gasta junta se mantiene unida

por Diana Palacios
¿Los bancos le hicieron un favor a la Fed?

Conocimiento Financiero

¿Los bancos le hicieron un favor a la Fed?

por Priscila Robledo
¿Los bancos le hicieron un favor a la Fed?

Conocimiento Financiero

¿Los bancos le hicieron un favor a la Fed?

por Priscila Robledo
Los republicanos en contra de las inversiones sustentables: el nuevo movimiento Anti-Woke

Conocimiento Financiero

Los republicanos en contra de las inversiones sustentables: el nuevo movimiento Anti-Woke

por Pablo Tapia Varela
Reforma de pensiones en Francia y la reacción de la calle

Conocimiento Financiero

Reforma de pensiones en Francia y la reacción de la calle

por Diamela Peña
Qué es el riesgo en finanzas y por qué en Fintual lo medimos usando el CVaR

Alpha

Qué es el riesgo en finanzas y por qué en Fintual lo medimos usando el CVaR

por Sebastian Arpon
Llegó la calma después del ruido bancario

Conocimiento Financiero

Llegó la calma después del ruido bancario

por Priscila Robledo
Llegó la calma después del ruido bancario

Conocimiento Financiero

Llegó la calma después del ruido bancario

por Priscila Robledo
¿Qué tan seguros son los bancos? Insolvencias bancarias

Conocimiento Financiero

¿Qué tan seguros son los bancos? Insolvencias bancarias

por Diamela Peña
¿Qué tan seguros son los bancos? Insolvencias bancarias

Conocimiento Financiero

¿Qué tan seguros son los bancos? Insolvencias bancarias

por Diamela Peña, Fintual
Qué pasó con SVB

Conocimiento Financiero

Qué pasó con SVB

por Priscila Robledo
Qué pasó con SVB

Conocimiento Financiero

Qué pasó con SVB

por Priscila Robledo
Cuando Powell habla, el mercado escucha

Mercados

Cuando Powell habla, el mercado escucha

por Priscila Robledo

LO ÚLTIMO DE TECNOLOGÍA

VER MÁS
14 y landing page

Tecnología

14 y landing page

por Tomás
South By Southwest (SXSW) 2023

Tecnología

South By Southwest (SXSW): una mirada al futuro

por Stella Melaragno
Noam Chomsky versus ChatGPT

Inteligencia Artificial

Noam Chomsky versus ChatGPT

por Pato Sullivan, Florencia Edwards
Noam Chomsky versus ChatGPT

Inteligencia Artificial Tecnología

Noam Chomsky versus ChatGPT

por Pato Sullivan, Florencia Edwards
¿Un teléfono que no te escuche? Te presentamos el Librem 5

Tecnología

¿Un teléfono que no te escuche? Te presentamos el Librem 5

por Matías Guerrero Irarrázaval
¿Qué es una Aplicación Web Progresiva (PWA) y cómo hacer una?

Tecnología

¿Qué es una Aplicación Web Progresiva (PWA) y cómo hacer una?

por Matías Guerrero Irarrázaval
Una isla en Noruega, ChatGPT y Github Copilot

Tecnología

Una isla en Noruega, ChatGPT y Github Copilot

por José Luis Haddad
Una isla en Noruega, ChatGPT y Github Copilot

Tecnología

Una isla en Noruega, ChatGPT y Github Copilot

por José Luis Haddad
¿Google versus ChatGPT?

Tecnología

¿Google versus ChatGPT?

por Isabel Meijer
¿Google versus ChatGPT?

Tecnología

¿Google versus ChatGPT?

por Isabel Meijer
¿Ventanas arriba? Una breve historia del aire acondicionado en los autos

Tecnología

¿Ventanas arriba? Una breve historia del aire acondicionado en los autos

por Diego Noguera
Cómo programar bots en Slack que te ayuden en el trabajo

Tecnología

Cómo programar bots en Slack que te ayuden en el trabajo

por Matías Guerrero Irarrázaval
Flipper Zero: el mejor regalo para hackers

Ciberseguridad y privacidad

Flipper Zero: el mejor regalo para hackers

por Eduardo Riveros Roca
Flipper Zero: el mejor regalo para hackers

Ciberseguridad y privacidad

Flipper Zero: el mejor regalo para hackers

por Eduardo Riveros Roca
Sam Bankman-Fried

Ciberseguridad y privacidad

¿WTF FTX?

por Omar Larré

LO ÚLTIMO DE CIENCIA

VER MÁS
La evolución de la música pop, hallazgos desde el machine learning

Ciencia

La evolución de la música pop, hallazgos desde el machine learning

por Ricardo Martínez
La evolución de la música pop, hallazgos desde el machine learning

Ciencia

La evolución de la música pop, hallazgos desde el machine learning

por Ricardo Martínez
Werner Herzog en Chile: el futuro de la verdad

Ciencia

Werner Herzog en Chile: el futuro de la verdad

por Pato Sullivan
¿Cuánto han aumentado los satélites artificiales en el espacio?

Ciencia

¿Cuánto han aumentado los satélites artificiales en el espacio?

por Daniela Quiroz Olguín
¿Cuánto han aumentado los satélites artificiales en el espacio?

Ciencia

¿Cuánto han aumentado los satélites artificiales en el espacio?

por Daniela Quiroz Olguín
¡Guerra al pasto!

Ciencia

¡Guerra al pasto!

por Joaquín Barañao, Red Pivotes
Congreso Futuro: el Lollapalooza de las ideas

Ciencia

Congreso Futuro: el Lollapalooza de las ideas

por Javier Palma Espinosa
Fusión nuclear: ¿energía limpia al alcance de todos?

Ciencia

Fusión nuclear: ¿energía limpia al alcance de todos?

por Agustin Escobar
Fusión nuclear: ¿energía limpia al alcance de todos?

Ciencia

Fusión nuclear: ¿energía limpia al alcance de todos?

por Agustin Escobar
Qué es la huella de carbono y qué hace Fintual al respecto

Medioambiente

Qué es la huella de carbono y qué hace Fintual al respecto

por Diamela Peña
Todos lo están tomando: Ozempic, el biohack que recomienda Elon Musk para bajar de peso

Ciencia

Todos lo están tomando: Ozempic, el biohack que recomienda Elon Musk para bajar de peso

por Florencia Edwards, Pato Sullivan
Morfología del shopping mall

Ciencia

Morfología del shopping mall

por Joaquín Barañao, Red Pivotes
Sudor y chispas en las peleas de robots

Ciencia

Sudor y chispas en las peleas de robots

por Francisco Casado
Ilustración de Alonso “Loncho” Salazar.

Ciencia

Cinco meses sin noticias del gato andino ¿A dónde fue?

por Bernardo Segura Silva
Topos, anguilas y avispas: cómo hacer neurociencia arriesgada

Ciencia

Topos, anguilas y avispas: cómo hacer neurociencia arriesgada

por Timothy Marzullo

LO ÚLTIMO DE CULTURA

VER MÁS
El regreso de Succession: empieza la cuenta final

Cine y Series

El regreso de Succession: empieza la cuenta final

por Iñaki Goldaracena
​​El pueblo contra la pornografía: el documental sobre la polémica de Pornhub

Cine y Series

​​El pueblo contra la pornografía: el documental sobre la polémica de Pornhub

por Iñaki Goldaracena
Termina la primera temporada de The Last of Us

Cine y Series

Termina la primera temporada de The Last of Us

por Iñaki Goldaracena
Termina la primera temporada de The Last of Us

Cine y Series

Termina la primera temporada de The Last of Us

por Iñaki Goldaracena
Edición especial del Fintualist: ¿por qué imprimir 8.000 copias de una revista en la era digital?

Cultura

Edición especial del Fintualist: ¿por qué imprimir 8.000 copias de una revista en la era digital?

por Pato Sullivan
The Whale: el regreso de Brendan Fraser es una película sobre la empatía

Cine y Series

The Whale: el regreso de Brendan Fraser es una película sobre la empatía

por Iñaki Goldaracena
El libro Spare: la opinión de los demás y la vida del príncipe Harry

Cultura

El libro Spare: la opinión de los demás y la vida del príncipe Harry

por Constanza Gutiérrez
Ellas hablan: una discusión necesaria y arriesgada sobre las heridas del machismo

Cine y Series

Ellas hablan: una discusión necesaria y arriesgada sobre las heridas del machismo

por Iñaki Goldaracena
La Gaviota y el Monstruo: la base de datos más completa del Festival de Viña (1960-2023)

Cultura

La Gaviota y el Monstruo: la base de datos más completa del Festival de Viña (1960-2023)

por Ricardo Martínez
Ellas hablan: una discusión necesaria y arriesgada sobre las heridas del machismo

Cine y Series

Ellas hablan: una discusión necesaria y arriesgada sobre las heridas del machismo

por Iñaki Goldaracena
TÁR, Los espíritus de la isla y Los Fabelman: tres de las películas más importantes del 2022 ya están en cartelera

Cine y Series

TÁR, Los espíritus de la isla y Los Fabelman: tres de las películas más importantes del 2022 ya están en cartelera

por Iñaki Goldaracena
Titanic vuelve a los cines para recordarnos el fin de una era

Cine y Series

Titanic vuelve a los cines para recordarnos el fin de una era

por Iñaki Goldaracena
Titanic vuelve a los cines para recordarnos el fin de una era

Cine y Series

Titanic vuelve a los cines para recordarnos el fin de una era

por Iñaki Goldaracena
El verano en el cine: una lista de películas para evitar el calor

Cine y Series

El verano en el cine: una lista de películas para evitar el calor

por Iñaki Goldaracena
Jugar en la primera división literaria

Cultura

Jugar en la primera división literaria

por Natalia Berbelagua

LO ÚLTIMO DE OPINIÓN

VER MÁS
¿Qué es el síndrome del impostor? Cronología antojadiza de mi identidad

Columnas

¿Qué es el síndrome del impostor? Cronología antojadiza de mi identidad

por Maximiliano von Jentschyk Makuc
¿Qué frena al litio chileno? Una ley sin pies ni cabeza

Opinion

¿Qué frena al litio chileno? Una ley sin pies ni cabeza

por Joaquín Barañao, Red Pivotes
La reconstrucción de un pueblo a trece años del terremoto

Columnas

La reconstrucción de un pueblo a trece años del terremoto

por Natalia Berbelagua
IMMORTALITY: la cineteca del inframundo

Columnas

IMMORTALITY: la cineteca del inframundo

por Tomás Morales
Lula, el ex-presidente de Brasil, vuelve al poder

Columnas

Lula, el ex-presidente de Brasil, vuelve al poder

por Stella Melaragno
Pelé: el mejor futbolista de la historia

Columnas

Pelé: el mejor futbolista de la historia

por Rodrigo Arellano
Pelé: el mejor futbolista de la historia

Columnas

Pelé: el mejor futbolista de la historia

por Rodrigo Arellano
Lula, el ex-presidente de Brasil, vuelve al poder

Columnas

Lula, el ex-presidente de Brasil, vuelve al poder

por Stella Melaragno
Microsoft y Activision: historia de una fusión por concretar

Columnas

Microsoft y Activision: historia de una fusión por concretar

por Tomás Morales
Hacia un mundo post-Google: ChatGPT

Columnas

Hacia un mundo post-Google: ChatGPT

por Ricardo Martínez
Wrapped de Spotify vs. las tiendas físicas de música: Mi lista es mejor que la tuya (?)

Columnas

Wrapped de Spotify vs. las tiendas físicas de música: Mi lista es mejor que la tuya (?)

por Ariel Núñez
Volverá la fe en las startups

Columnas

Volverá la fe en las startups

por Agustín Feuerhake
El regalo prometido: ¿de dónde viene el amigo secreto?

Columnas

El regalo prometido: ¿de dónde viene el amigo secreto?

por Pato Sullivan
¿Cómo ganar la polla del Mundial?

Columnas

¿Cómo ganar la polla del Mundial?

por Pablo Tapia Varela
Volverá la fe en las startups

Columnas

Volverá la fe en las startups

por Agustín Feuerhake
El remake de dos clásicos:  Silent Hill 2 y Resident Evil 4

Columnas

El remake de dos clásicos: Silent Hill 2 y Resident Evil 4

por Tomás Morales
De los transfers hawaianos a las cumbres andinas: cómo nació Wikiexplora

Columnas

De los transfers hawaianos a las cumbres andinas: cómo nació Wikiexplora

por Joaquín Barañao, Red Pivotes
¿Cuántos goles lleva México en mundiales?

Columnas

¿Cuántos goles lleva México en mundiales?

por Alex Sánchez
Bienvenidos a Night City, la capital del Cyberpunk

Columnas

Bienvenidos a Night City, la capital del Cyberpunk

por Pedro Torrealba Barra
My Little Pony y un juego de peleas: Them’s Fighting Herds

Columnas

My Little Pony y un juego de peleas: Them’s Fighting Herds

por Tomás Morales
Comunidad y lenguaje desde el fin del mundo

Columnas

Comunidad y lenguaje desde el fin del mundo

por Jorge Muñoz
Adiós, Roger: el retiro de Federer

Columnas

Adiós, Roger: el retiro de Federer

por Pato Sullivan
¿Y qué tal si se le adelantaron al satélite Sputnik?

Columnas

¿Y qué tal si se le adelantaron al satélite Sputnik?

por Joaquín Barañao, Red Pivotes
Me volví digital nomad y terminé en la Patagonia: la historia de mi travesía hacia la FIN

Columnas

Me volví digital nomad y terminé en la Patagonia: la historia de mi travesía hacia la FIN

por Cecilia Ramallo
El Big Data llegó al fútbol al estilo Moneyball

Columnas

El Big Data llegó al fútbol al estilo Moneyball

por El Analista
Los ganadores y perdedores de los Premios Emmy 2022

Columnas

Los ganadores y perdedores de los Premios Emmy 2022

por Iñaki Goldaracena
“The Big Carlos” dice presente: Carlos Alcaraz, el nuevo número 1 del mundo

Columnas

“The Big Carlos” dice presente: Carlos Alcaraz, el nuevo número 1 del mundo

por Rodrigo Arellano
“The Big Carlos” dice presente: Carlos Alcaraz, el nuevo número 1 del mundo

Columnas

“The Big Carlos” dice presente: Carlos Alcaraz, el nuevo número 1 del mundo

por Rodrigo Arellano
La Reina Isabel II ha muerto. Dios salve a la Reina.

Columnas

La Reina Isabel II ha muerto. Dios salve a la Reina.

por Ariel Núñez
Cambios en el comportamiento electoral por el voto obligatorio en el plebiscito

Columnas

Cambios en el comportamiento electoral por el voto obligatorio en el plebiscito

por Gonzalo Mena
Qué implica ser mentor en un intensivo de programación en la Patagonia

Columnas

Qué implica ser mentor en un intensivo de programación en la Patagonia

por Pedro Saratscheff
Plebiscito de salida: lo que sí sabemos

Columnas

Plebiscito de salida: lo que sí sabemos

por Priscila Robledo, José Ignacio, José Manuel Peña, Daniela Pradel A.
Así fue la primera semana en el Fintual Intensivo Natales

Columnas

Así fue la primera semana en el Fintual Intensivo Natales

por Andrés Arellano
Trasandino y Fintual: un objetivo a largo plazo

Columnas

Trasandino y Fintual: un objetivo a largo plazo

por Pato Sullivan
Stray: el juego de un gato perdido que te hace recordar tu humanidad

Columnas

Stray: el juego de un gato perdido que te hace recordar tu humanidad

por Carolina Maldonado Magnere
Cristóbal Henríquez: el mejor ajedrecista de Chile

Columnas

Cristóbal Henríquez: el mejor ajedrecista de Chile

por Pato Sullivan, Florencia Edwards, Sebastián Ovalle
¿Todo atado y bien atado? Depende con qué comparemos

Columnas

¿Todo atado y bien atado? Depende con qué comparemos

por Joaquín Barañao, Red Pivotes
Constituciones y educación

Columnas

Constituciones y educación

por Diana Palacios
Cómo colaboran Fintual y la academia

Columnas

Cómo colaboran Fintual y la academia

por Pedro Pineda
Nuestra intuición acerca del infinito

Columnas

Nuestra intuición acerca del infinito

por Manuel Becker Toro
La zanahoria, un impostor triple

Columnas

La zanahoria, un impostor triple

por Joaquín Barañao, Red Pivotes
El efecto e-mariposa

Columnas

El efecto e-mariposa

por Joaquín Barañao, Red Pivotes
La extraña relación entre pesca con mosca y las inversiones

Columnas

La extraña relación entre pesca con mosca y las inversiones

por Juan Pablo Rybecky
La impericia de Julio César que aún reverbera en Excel

Columnas

La impericia de Julio César que aún reverbera en Excel

por Joaquín Barañao, Red Pivotes
Un análisis a la reciente inversión de la curva

Columnas

Un análisis a la reciente inversión de la curva

por Ana Sepúlveda
Por qué WeCrashed sobresale

Columnas

Por qué WeCrashed sobresale

por Cristóbal Fredes
Bloqueos de destrucción masiva

Columnas

Bloqueos de destrucción masiva

por Agustín Feuerhake
Oleg Oprisco

Columnas

No sé nada sobre la guerra

por Sara Vásquez
Hoja de ruta para mayor diversidad en sector financiero: razones abundan

Columnas

Hoja de ruta para mayor diversidad en sector financiero: razones abundan

por Rosario Celedón
El elefante en la habitación (y cómo afecta al pequeño ahorrante)

Columnas

El elefante en la habitación (y cómo afecta al pequeño ahorrante)

por Omar Larré
El Rally de Santa Claus

Columnas

El Rally de Santa Claus

por José Manuel Peña
Las dos candidaturas presidenciales

Columnas

Las dos candidaturas presidenciales

por Pedro Pineda
Cartas a las editoras: Sequoia

Cartas a las editoras

Cartas a las editoras: Sequoia

por Florencia Edwards, Carolina Maldonado Magnere
Maria Skłodowska

Columnas

Maria Skłodowska

por Pedro Pineda
Paul Graham Y Combinator y Fintual

Columnas

El día en que Paul Graham le recomendó Fintual a Sequoia

por Agustín Feuerhake
Cartas a las editoras: aún uso mi cuenta RUT y Bitcoin para todos

Cartas a las editoras

Cartas a las editoras: aún uso mi cuenta RUT y Bitcoin para todos

por Fintual
Cartas a las editoras: no hay premio Nobel de Economía y más consejos para la salud mental

Cartas a las editoras

Cartas a las editoras: no hay premio Nobel de Economía y más consejos para la salud mental

por Fintual
SOFTWARE >COPPER

Columnas

SOFTWARE >COPPER

por Pedro Pineda
Adiós Chile: ​​la misión fallida de conseguir Tarjeta de Crédito para mi empresa de neurociencia

Columnas

Adiós Chile: ​​la misión fallida de conseguir Tarjeta de Crédito para mi empresa de neurociencia

por Timothy Marzullo
Carta de una trabajólica en rehabilitación

Columnas

Carta de una trabajólica en rehabilitación

por Sara Vásquez
Partida simultánea de ajedrez con Cristóbal Henríquez

Columnas

Partida simultánea de ajedrez con Cristóbal Henríquez

por Omar Larré
¿Cómo ayudar e impactar sin moverte de tu casa?

Columnas

¿Cómo ayudar e impactar sin moverte de tu casa?

por Sara Vásquez
La figurita de acción que recaudó 3 millones de pesos en solo 24 horas

Columnas

La figurita de acción que recaudó 3 millones de pesos en solo 24 horas

por Beatriz Ivanovic, Maximiliano von Jentschyk Makuc
A escala humana

Columnas

A escala humana

por Juan Francisco Rebolledo
Compatibilidad Competitiva

Columnas

Compatibilidad Competitiva

por Agustín Feuerhake
Sé como Charles Aránguiz

Columnas

Sé como Charles Aránguiz

por Pedro Pineda
Cómo empezamos Fintual (parte 2)

Columnas

Cómo empezamos Fintual (parte 2)

por Andrés Marinkovic
El miedo

Columnas

El miedo

por Florencia Edwards
Dear Intern

Columnas

Dear Intern

por Francesca Finaldi
La espada

Columnas

La espada

por Agustín Feuerhake
Diversidad que nos hace mejores II

Columnas

Diversidad que nos hace mejores II

por Sebastián Lisboa
Unicornershop

Columnas

Unicornershop

por Pedro Pineda
Cocina con Arnaud: Boeuf Bourguignon o estofado de res

Columnas

Cocina con Arnaud: Boeuf Bourguignon o estofado de res

por Arnaud Hudaverdian
Cómo lograr 30 horas al día mientras estudias y trabajas

Columnas

Cómo lograr 30 horas al día mientras estudias y trabajas

por Isidora Vizcaya
Cómo empezamos Fintual

Columnas

Cómo empezamos Fintual

por Andrés Marinkovic
Sobre el negocio del fracaso y sus errores

Entrevistas Columnas

Sobre el negocio del fracaso y sus errores

por Montserrat Bonilla
Artículos constitucionales techie

Columnas

Artículos constitucionales techie

por Pedro Pineda
Píldoras para superhéroes

Columnas

Píldoras para superhéroes

por Pedro Pineda
Cómo fuimos la primera startup chilena en quedar en Y Combinator

Columnas

Cómo fuimos la primera startup chilena en quedar en Y Combinator

por Pedro Pineda
Lanzar una startup en 11 horas

Columnas

Lanzar una startup en 11 horas

por Pedro Pineda
El camino a la igualdad para las nuevas generaciones

Columnas

El camino a la igualdad para las nuevas generaciones

por Francisca Dominguez
Cartas a las editoras: discriminación positiva, el nuevo asesor de negocios/financiero y día de la mujer

Cartas a las editoras

Cartas a las editoras: discriminación positiva, el nuevo asesor de negocios/financiero y día de la mujer

por Florencia Edwards, Francesca Finaldi, Carolina Maldonado Magnere
Cartas a las editoras: un arma de doble filo, la paradoja de Braess y una falacia al hablar de economía

Cartas a las editoras

Cartas a las editoras: un arma de doble filo, la paradoja de Braess y una falacia al hablar de economía

por Florencia Edwards, Francesca Finaldi, Carolina Maldonado Magnere
Por qué !&%$ existe un día de la mujer

Opinion

Por qué !&%$ existe un día de la mujer

por Isidora Vizcaya
Cartas a las editoras: semana 1 de febrero

Cartas a las editoras

Cartas a las editoras: semana 1 de febrero

por Florencia Edwards, Carolina Maldonado Magnere, Francesca Finaldi
Cartas a las editoras: semana 25 de enero

Cartas a las editoras

Cartas a las editoras: semana 25 de enero

por Florencia Edwards, Carolina Maldonado Magnere, Francesca Finaldi
Cartas a las editoras: semana 18 de enero

Cartas a las editoras

Cartas a las editoras: semana 18 de enero

por Florencia Edwards, Carolina Maldonado Magnere, Francesca Finaldi
Decorar te hace feliz

Columnas

Decorar te hace feliz

por Luca Rebori
Por qué dejé mi puesto de CEO

Columnas

Por qué dejé mi puesto de CEO

por Victor Hugo Flores
Pase maestro, lo estábamos esperando

Columnas

Pase maestro, lo estábamos esperando

por Pedro Pineda
Primarias 2020: adiós a los intendentes regionales

Columnas

Primarias 2020: adiós a los intendentes regionales

por Carolina Maldonado Magnere
El problema de las encuestas en las elecciones

Columnas

El problema de las encuestas en las elecciones

por Pedro Pineda
El Papa afirmó su apoyo a las uniones civiles de parejas del mismo sexo

Opinion

El Papa afirmó su apoyo a las uniones civiles de parejas del mismo sexo

por Nico Soto-Aguilar
Nobel de física chileno

Columnas

Nobel de física chileno

por Pedro Pineda
Armenia vs Azerbaijan

Columnas

Armenia vs Azerbaijan

por Pedro Pineda
¿KIM 4?

Columnas

¿KIM 4?

por Pedro Pineda
Diversidad que nos hace mejores

Columnas

Diversidad que nos hace mejores

por Nico Soto-Aguilar
El gran vacío en la inversión en capital de riesgo en Chile

Columnas

El gran vacío en la inversión en capital de riesgo en Chile

por Fintual
Sobre la reforma previsional

Columnas

Sobre la reforma previsional

por Omar Larré