12 apps em 1 ano: VC Graph

No final de fevereiro anunciei que iria começar um novo desafio: Criar 12 aplicativos em 1 ano. Estou no terceiro mês e muita gente tem me perguntado como está indo o desafio. Até o momento já finalizei 2 aplicativos e estou desenvolvendo o terceiro. Decidi escrever esse artigo para descrever como foi o processo de criação de um deles.

Introdução à análise de redes

Tudo está conectado: pessoas, informações, eventos e lugares, e uma maneira de entendermos esse emaranhado de conexões é analisando-as como redes. Redes são a estrutura básica de muitos eventos naturais, organizações e processos sociais. Podemos encontrar redes em nossas vidas desde o funcionamento de nossas células até o funcionamento do nosso país. O estudo das propriedades das redes tem um impacto crescente nos mais variados campos do conhecimento — como sociologia, física, matemática, ciência da computação e economia.Sempre achei fascinante que podemos aprender sobre tipos tão diferentes de fenômenos usando as mesmas técnicas. As mesmas técnicas de análise de redes sociais que são usadas no combate ao terrorismo pela NSA são usadas pelo Google para descobrir qual o melhor resultado para sua pesquisa.

Os investidores formam uma rede

É impossível falar de startups sem falar sobre investidores de capital de risco, afinal, a maior parte das startups mais bem-sucedidas receberam algum tipo de investimento.Sempre tive muita curiosidade sobre as estruturas invisíveis que permeiam a nossa sociedade. Como estou envolvido no meio de startups desde antes de fundar a Rock Content, resolvi mirar essa curiosidade na comunidade de investidores de capital de risco.Como posso encontrar uma estrutura nos relacionamentos entre os investidores? O que eu posso aprender se estudar as propriedades dessa estrutura?Essas e outras perguntas me motivaram a aplicar a ciência da análise de redes à comunidade investidores de capital de risco.Uma rede é formada por entidades e conexões entre elas. Para criar uma rede para a comunidade de investidores eu precisava encontrar algum elo entre eles. Inicialmente pensei em procurar pelas relações entre as pessoas que trabalham em um fundo com pessoas que trabalham em outros fundos para estabelecer conexões entre eles. Por exemplo: João trabalha no Fundo Y e Maria trabalha no Fundo B; se João e Maria são amigos, o Fundo Y e o Fundo B têm uma ligação.Encontrar todos os funcionários dos fundos e suas ligações seria um trabalho homérico: nem todos os fundos têm a informação facilmente disponível de todos os membros dos seus times e, mesmo se tivessem, descobrir quem são todos os contatos dessas pessoas é impossível.Outra hipótese: em muitos casos, uma mesma empresa recebe investimentos em múltiplas rodadas que podem ser feitos por mais de um investidor. Se olharmos para os fundos que investiram na mesma empresa, podemos dizer que eles têm uma ligação entre si. Por exemplo, se o Fundo A investiu na empresa Z e o Fundo B também, podemos dizer que o Fundo A e o Fundo B estão ligados por terem investido na mesma empresa.

Coletando dados

Com essa ideia inicial eu precisava encontrar uma maneira de coletar os dados sobre qual fundo investiu em qual empresa. O Angel List é a maior comunidade online de investidores e startups procurando investimento. Nos perfis de investidores costuma estar listadas as startups em que eles investiram. Usando a API fornecida pelo Angel List e um pouco de scraping, consegui coletar os dados necessários.Quando se fala em análise de dados, poucas linguagens têm tantas ferramentas como Python. Pesquisando sobre análise de redes sociais encontrei uma biblioteca chamada NetworkX que implementa muitos algoritmos importantes para estudarmos redes.Agora com os dados em mãos e os algoritmos para estruturá-los, criei um script em Python para carregar os dados, que exportei para um formato de rede que o NetworkX aceitava. Com todos os dados carregados era hora de começar a brincar com os algoritmos!

Métricas da rede

Uma das aplicações mais usadas da análise de redes sociais é encontrar quais são os membros mais relevantes da rede. Para olhar o quão relevante um elemento é olhamos o quão central ele é para aquela rede. Existem múltiplas métricas para medir a centralidade de um elemento com relação à rede:

  • Centralidade de Intermediação: permite identificar e caracterizar os nós com maior vantagem ou poder em uma rede, os quais comportam a menor distância entre os vários nós da rede.
  • Centralidade de Grau (out e in): permite medir o grau de cada nó dependendo da quantidade de suas relações.
  • Centralidade de Proximidade: permite definir qual a distância métrica de determinado nó através da medição do comprimento dos seus caminhos mais curtos.
  • Centralidade Alfa: é uma adaptação da “centralidade de vetor próprio” e permite medir a centralidade dos nós em uma rede com a inclusão da importância de seus fatores externos.
  • Centralidade Katz: é uma adaptação da centralidade “Degree” (grau) e permite medir o número de todos os nós que podem ser ligados por um caminho em uma rede, enquanto a contribuição dos nós distantes é sancionada por um fator de atenuação.
  • PageRank: o mesmo algoritmo que ficou famoso pelo seu uso no buscador do Google. A ideia aqui é medir a importância de um elemento de acordo com a relevância dos outros elementos que se conectam a ele.

Visualizando dados

Para entender melhor a estrutura de uma rede podemos criar uma representação visual dela. Para essa etapa do projeto escolhi um aplicativo que me permitiria visualizar rapidamente o formato da rede de investidores. Gephi é um software especifico para visualização de todos os tipos de redes de grafos. Ele possui versões para os principais sistemas operacionais e é open source.Minha primeira tentativa de visualizar o grafo resultou nessa imagem:

Não ajudou muito, pois a rede é muito densa, são mais de 10 mil investidores, ou seja, precisamos de uma maneira de organizar cada elemento da rede e suas conexões. Depois de testar vários layouts diferentes cheguei a esse resultado:

1463503982_full.png

Já podemos começar a ver que alguns elementos parecem ser mais conectados do que outros, mas não podemos tirar muitas conclusões apenas com essa imagem. Para poder ter uma ideia melhor da importância de cada elemento, uma boa possibilidade é fazer com que cada um deles tenha um tamanho proporcional à sua importância.Fazendo cada item ser maior de acordo com o seu PageRank e mudando um pouco a cor, cheguei a essa imagem:

1463505106_thumb.png

A ideia

Seria muito interessante poder criar um ranking dos investidores baseado na influência que eles possuem na rede.Outra informação útil é entender com quais outros investidores um determinado fundo costuma co-investir.O quão influente um investidor é na rede não necessáriamente reflete o quanto esse investidor é bom, mas é um dado curioso de toda maneira. Algumas distorções acontecem nos dados porque alguns investidores têm um portifólio desproporcionalmente grande — esse é o caso de aceleradoras como a 500 Startups, TechStars e Y Combinator.

Planejando a interface

Antes de colocar a mão na massa e implementar um app, eu sempre crio mockups para experimentar com multiplas ideias. Um aplicativo muito útil para criar mockups é o Balsamiq, que usei para criar esse:

1463505794_thumb.png

Algumas horas de planejamento podem poupar dias de trabalho. O ideal seria mostrar várias versões de mockups para usuários em potencial. Como a ideia do meu desafio é apenas criar projetos que considero interessantes, e não desenvolver novos produtos, eu pulei essa etapa.

Implementação

Para implementar a web app eu escolhi usar o framework com o qual eu tenho maior familiaridade: Rails. Como o processamento dos dados e o cálculo das métricas de rede foram implementados em Python, precisamos carregar esses dados no nosso banco de dados e permitir que os usuários busquem por investidores. Esse é um caso de uso muito simples para uma aplicação web.Uma das melhores tendências do desenvolvimento de aplicações web nos últimos anos foi o surgimento de múltiplos frameworks para criação de interfaces web, como por exemplo o Bootstrap. Esses frameworks permitem que você vá do protótipo à interface final muito rapidamente.

Resultado final

O resultado final você pode conferir na imagem abaixo:

1463506832_thumb.png

Foi mais difícil do que pensei

Esse projeto me levou mais tempo para concluir do que eu esperava. Demorei no total 2 meses para chegar à versão final. Meu plano inicial era programar todos os dias, mas eu subestimei as demandas do meu trabalho. Sem uma rotina muito bem definida é difícil conseguir vencer o desafio. Comecei uma nova rotina de programação que tem funcionado muito bem e acabei tendo um desempenho muito superior nas últimas 2 semanas.Ver o resultado final me lembrou o porquê de eu ter decidido começar esse desafio. A curiosidade é uma das características mais fascinantes do ser humano, foi ela que nos fez explorar no nosso planeta e o cosmos. A vontade de saber mais, de entender como o mundo funciona, existe em nós desde o momento em que nascemos até o momento da nossa morte. Ao longo de nossa vida, as responsabilidades se acumulam e nos esquecemos do prazer de fazer algo apenas porque queremos saber o que vai acontecer. E você, quando foi a última vez que você fez algo apenas por curiosidade?

Livros Recomendados

Receba um email mensal com recomendação dos melhores livros que li.


Não vamos te enviar spam Powered by ConvertKit

Edmar Ferreira é Co-Fundador e CEO da Rock Content, líder em Marketing de Conteúdo no Brasil, e é membro ativo do SanPedroValley, comunidade auto-gerenciada de startups de Belo Horizonte.

  • Essa aplicação está rodando em algum lugar? Seria bacana deixar ela pública.

  • Fabiano

    Muito maneiro Edmar!
    Curioso para ver os próximos.

  • Vinicius Machado

    Meu velho, você está entre minhas principais referências, seu sucesso não é por acaso, parabéns pela iniciativa!

  • José Tomaz Gomes

    Parabens Edimar, quem sabe faz a hora não espera acontecer.
    Sucesso.

  • Alexandre

    Sensacional! espero que não tenha desistido do desafio e que faça outros posts sobre outros aplicativos que tenha criado. O relato deste app sobre investimentos mesmo, foi muito interessante.

    Eu também uso meu tempo livre para programar. É quase uma terapia. Já comecei vários projetos sobre os mais diversos temas. Meu problema é que eu mudo de interesse de tempos em tempos. Ano passado comecei a me interessar por desenvolvimento de games. Comecei dois games simples. Um terminei e outro ficou pela metade. Ai comprei um Arduino e comecei a aprender eletrônica. Comprei várias ferramentas, componentes, comprei madeira, rodas, motores e comecei a fazer um robô. Na demora de esperar peças do DX acabei deixando a ideia de lado. Acho que um desafio como o seu me ajudaria a ser mais direto, pois eu começo as coisas sem ter prazo para a acabar e com o tempo a dispersão é inevitável.

Site Footer