Você está na página 1de 40

Uma software que ajuda

empresas de TI a encontrar os
melhores candidatos, cruzando
datasets do GitHub e
StackOverflow

CIN - UFPE
Aluno:​ Matheus de Souza Lins
Orientador: Vinicius Cardoso Garcia
Avaliador: Leandro Maciel Almeida
Roadmap
1. Apresentação Pessoal
2. Motivação
3. Cenário de dados atualmente
4. O problema
5. Metodologia usada
6. Obtenção dos dados
7. Solução
8. Trabalhos Futuros
Quem sou eu
● Graduando em Sistemas de
Informação
● Analista de Sistemas no
Serasa Consumidor
● Um grande entusiasta Python
e Iniciante na área de Data
Science
Matheus Lins
Motivação
Motivação

● Ter trabalhado com Scraping
● Trabalhado com ferramentas de
dados (Kibana, ElasticSearch,
Pandas e etc)

Imagem ilustrativa
Cenário de dados atualmente
Cenário de dados atualmente
Number of social network users worldwide
from 2010 to 2021 (in billions) ● Crescente números de
usuários da Internet
● Quantidade de dados é
gigante

Fonte: Statista

https://www.statista.com/statistics/278414/number-of-worldwide-social-
network-users/
Cenário de dados atualmente
Number of monthly active Facebook users
worldwide as of 3rd quarter 2018 (in millions)

● Crescimento de usuários do
Facebook a cada 3 meses de
2008 a 2018

https://www.statista.com/statistics/264810/number-of-monthly-active-
facebook-users-worldwide/
Cenário de dados atualmente
Number of monthly active Instagram users
from January 2013 to June 2018 (in millions)

● Crescimento mensal do
Instagram de 2013 a 2018

https://www.statista.com/statistics/253577/number-of-monthly-active-
instagram-users/
Cenário de dados atualmente
How Much Data is Created on the
Internet Each Day?

E… os dados não param de
crescer. Em 9 anos, um aumento
de 100 vezes mais

Fonte: MicroFocus

https://blog.microfocus.com/how-much-data-is-created-on-the-internet-
each-day/
Cenário de dados atualmente
Limpa Nome - A plataforma digital de
negociação de dívidas do Serasa Consumidor

Em média, são gerados (apenas
de eventos) 1,5 milhões de JSON’s
por dia

Serasa Consumidor - Limpa Nome

Eventos do Limpa Nome: Agosto/2018 até Dezembro/2018
O Problema
O Problema - A dificuldade na contratação

https://epocanegocios.globo.com/Inspiracao/Carreira/not
icia/2015/05/como-uma-contratacao-errada-afeta- http://www.administradores.com.br/artigos/carreira/profissionais-de-ti-os-
empresa.html desafios-na-contratacao/72795/

https://www.cio.com/article/3279767/hiring-and-staffing/10-most-difficult-it-jobs-for-employers-to-fill.html
O Problema O custo real de contratar a pessoa errada. Uma
pesquisa realizada pela National Business Research
Institute em 2016.

● 43 % das pessoas que responderam, dizem que
o principal problema foi a pressa na hora de
contratar;
● 39% dos chefes dizem que tiveram uma redução
de produtividade pela má escolha dos
profissionais.
● 11% disseram que a má escolha resultou em
queda nas vendas.
● Se perde 17% do tempo por semana para
contratar profissionais errados.
● Segundo a Oxford Economics é gasto 30 mil
euros em média para substituir um empregado.

http://www.bodhiresourcing.com/real-cost-hiring-wrong- Fonte: NBRI
employee/
O Problema

No fim das contas é
perdido muito tempo e
muito dinheiro ● MENOS TEMPO
● MENOS DINHEIRO
As duas coisas mais
valiosas de uma
empresa
Como posso evidenciar os bons
profissionais?
Pensando na solução... “Fortunately, lots of developers aren’t shy
about sharing their work on GitHub. A lot of
what you’ll find on a typical GitHub”
4 Ways Tech Recruiters Should Use GitHub to
Evaluate Developers

1. Frequência de Pull Requests e Forks
2. Pull Requests aceitos em projetos open
source
3. A frequência de commits
4. Não julgar perfis com poucos recursos -
Podem trabalhar em empresas privadas

https://www.stackoverflowbusiness.com/blog/4-ways-tech-recruiters-should-
use-github-to-evaluate-developers
No GitHub Dados do GitHub 2018:
https://octoverse.github.com/

● 31 Milhões de Desenvolvedores
● 2,1 Milhões de Organizações
● 96 Milhões de Repositórios
● 200 Milhões de Pull Requests
No Stackoverflow

A maior plataforma de Q&A para
desenvolvedores também possui um
espaço focado em oportunidades de
emprego.

https://stackoverflow.com/jobs
Metodologia Usada
Metodologia Usada
OSEMN Pipeline O -  Obtaining our data (Obter os dados)

S - Scrubbing / Cleaning our data (Limpar
os dados)

E -  Exploring (Explorar os dados)

M - Modeling (Modelar os dados)

N - Interpreting (Interpretar os dados)

https://towardsdatascience.com/a-beginners-guide-to-the-data-science-pipeline-
a4904b2d8ad3
Obtenção de Dados
Do GitHub GitHub Developer
https://developer.github.com/

Para obter as infos dos perfis do GitHub do
usuário que entra na plataforma, foi utilizado a
própria API Rest do GH.

https://developer.github.com/v3/
Do Stackoverflow
import re O StackOveflow não possui uma API
especificamente para os Jobs. Então,
import os

foi feito o scraping deles
from furl import furl
from decouple import config
from scrapy.spiders import Spider

from .constants.consulta import START_URL
from .steps.consulta import consult_job

class StackOverflowSpider(Spider):
name = 'stkflow'
city = None
distance = None
job = None

Dataset: Mais de 7 mil jobs no
allowed_domains = ['stackoverflow.com']
custom_settings = {
'DOWNLOAD_DELAY': 0.8
} mundo todo
def __init__(self, city=None, distance=None, job=None, *a,
**kw):
self.city = city
self.distance = distance
self.job = job
Tratamento dos Dados
Tratamento dos dados

Salvo em um banco relacional - PostgresSQL
Relacionamento

1 N
GitHub User Has Repository

Modelo Entidade
Relacionamento que
gera suas respectivas
tabelas

Job Offer
Exploração dos dados
Exploração dos dados - Baseado em Métricas
Do GitHub Do Stackoverflow

Quantidade de arquivos da tecnologia escritos nos repositórios
Linguagens de programação

O número de repositórios criados com uma determinada tecnologia. exigidas da vaga

O nível de experiência exigido
Quantidade de estrelas de todos os repositórios com a tecnologia.

Quantidade de forks de todos os repositórios com a tecnologia.

Quantidade de watchers de todos os repositórios com a tecnologia.

Quantidade de issues reported de todos os repositórios com a tecnologia

Quantidade de contributors de todos os repositórios com a tecnologia.
Modelo dos dados
Pontuação
Por Score
De um usuário do GitHub

1. Iniciante: De 0 a 200 pontos
2. Júnior: De 201 a 400 pontos
3. Pleno: De 401 a 600 pontos
4. Sénior: De 601 a 800 pontos
5. Especialista: De 801 a 1000
pontos
Ponderamento
Média Ponderada
De um usuário do GitHub
1. Contribuidores (22)
2. Issues Reportadas (18)
3. Forks (16)
4. Stars (14)
5. Watchers (13)
6. Repositórios da linguagem (10)
7. Arquivos escritos (7)
Modelo dos dados - Algoritmo

Passo a Passo

1. Ler todos os repositórios públicos do usuário
2. Determina quais tecnologias tem em cada repositório
3. Mapeia uma determinada tecnologia de acordo com as métricas e dar-se uma pontuação
4. Se define um nível de experiência para cada tecnologia baseado na pontuação
5. Cria-se um ranking das tecnologias mais usadas pelo usuário
6. Pergunta-se: quais são as vagas de emprego que possuem pelo menos uma das tecnologias que o
usuário tem em seu ranking?
7. Filtra pelo nível de experiência
8. Cria-se um mapeamento da tecnologia para a lista de empregos que combinam.
A Solução
Solução
A partir de uma média ponderada
baseada nas métricas, um perfil do
GitHub ganha um score. O que Nível Sênior
classifica-o no nível de programação
em uma determinada
habilidade/linguagem Habilidade: Python

Com isso, é possível comparar o
perfil a duas principais características
de um job: Habilidades requeridas e
Nível requerido
Solução - Resultados esperados
Trabalhos Futuros
Trabalhos Futuro

1. Aplicação de uma rede neural para uma melhor dedução dos números finais.
2. Aplicação de um algoritmo de linguagem natural na descrição dos jobs.
3. Criação de gráficos para facilitar o entendimento dos números
4. Criação da área do recrutador técnico na plataforma
Obrigado! Dúvidas?