Introdução

O Stack overflow é uma plataforma gratuita de perguntas e respostas para programadores, estudantes e entusiastas em tecnologia e desenvolvimento. Nele, qualquer usuário pode publicar uma dúvida para ser respondida por outros membros do site. Além disso, a plataforma oferece classificados de empregos na área de tecnologia.

Importância

Trabalhar com desenvolvimento de software exige conhecimento multidisciplinar e estudo. É comum observar que pessoas novatas na área sintam-se frustradas pela quantidade de assuntos paralelos que estão envolvidos no aprendizado de uma “simples” linguagem de programação.

Para um programador Java, por exemplo, espera-se que ele tenha conhecimento de versionamento de código, Programação Orientada a Objetos (POO), modelagem de banco de dados, conexão a banco de dados, frameworks entre diversos outros assuntos que se fossemos citar aqui seria uma lista gigantesca.

É humanamente impossível, um indivíduo saber com perfeição todos os tópicos que envolvem um fluxo de desenvolvimento de software. Entramos na Universidade, achando que estamos 100% prontos para resolver qualquer problema complexo no mercado de trabalho, mas a realidade não é essa.

No dia-a-dia no mercado de trabalho, bem como na universidade, frequentemente desenvolvedores de todo o mundo recorrem à internet em busca de dúvidas e, hoje, um dos ambientes mais utilizados é o Stack Overflow, que serve como uma comunidade de programadores, um espaço em que os profissionais/estudantes podem trocar dicas, elencar soluções e esclarecer dúvidas sobre códigos.

Por ser uma das ferramentas mais utilizadas, com o propósito de troca de conhecimento em programação. Esperamos, inferir através da comunidade de usuários da plataforma, informações como: “Comparativo salarial dos desenvolvedores ao redor do mundo”, “Escolaridade dos profissionais”, “Gênero dos profissionais de desenvolvimento”.

Origem dos dados

Os dados são provenientes de uma plataforma que reúne diversas bases de dados disponíveis publicamente e de forma gratuita sendo suficiente realizar um cadastro na plataforma. A base de dados se encontra-se aqui: link do database stack-overflow 2022. Esse database possue diversas características relacionadas aos desenvolvedores que responderam a pesquisa do StackOverflow em 2022.

Os dados variam desde a educação do desenvolvedor até o hobby dele. Dessa maneira, iremos, neste projeto, realizar uma análise exploratória dos dados extraindo características dos desenvolvedores como sua educação, trabalho, salário entre outra(s) característica(s).

A partir disso iremos elencar os países desses desenvolvedores em um conjunto de análises de maneira a visualizar pontos como a mediana salarial dos desenvolvedores ao redor do mundo, educação dos desenvolvedores por país, experiência de trabalho baseada no sexo e densidade de profissionais em cada país.

Tais extrações possibilitam uma análise de mercado que pode auxiliar na tomada de decisão de profissionais iniciantes na carreira do desenvolvimento ou até mesmo quem pensa em fazer uma transição de carreira.

Pacotes Necessários

Os seguintes pacotes serão utilizados no projeto:

Pacotes Utilização
library(stringr) Utilizada para manipulação de strings
library(rmdformats) Customização do template gerado pelo rmarkdown
library(knitr) Para geração de tabelas
library(rlang) Resolução de dependencias
library(tidyverse) Para manipulação avançada de DataFrames
library(kableExtra) Customização de tabelas do knitr::kable()
library(dplyr) Para manipulação avançada de DataFrames
library(quantmod) Utilizado para processamento de dados financeiros
library(tidyr) Para manipulação avançada de DataFrames

Preparação dos dados

Nessa seção você encontrará com detalhes as operações que foram realizadas para normalizar o dataset.

Leitura do dataset

A leitura do dataset foi realizada utilizando o seguinte comando, com a base de dados baixada na máquina pessoal:

dataset_path = "dataset/survey_results_public/survey_results_public.csv"
dataset <- read.csv(dataset_path)

Para realizar o download da base, assim como foi descrito na introdução, baixa acessar esse link.

O dataset possui 73268 linhas e 79 colunas. Inicialmente realizamos um tratamento para remover colunas que só pussuem valores na da seguinte forma:

dataset = dataset[colSums(!is.na(dataset)) > 0] %>% select(-ResponseId) %>% filter(MainBranch == "I am a developer by profession")

Após o tratamento, onde filtramos apenas pelas pessoas que exercem a profissão de desenvolvedor, o dataset resultante ficou com 53507 linhas e 76 colunas. Para fim de visualização dos dados, fizemos uma limpeza nos NA presentes sendo dispostos da seguinte forma:

MainBranch Employment RemoteWork CodingActivities EdLevel LearnCode LearnCodeOnline LearnCodeCoursesCert YearsCode YearsCodePro DevType OrgSize PurchaseInfluence BuyNewTool Country Currency CompTotal CompFreq LanguageHaveWorkedWith LanguageWantToWorkWith DatabaseHaveWorkedWith DatabaseWantToWorkWith PlatformHaveWorkedWith PlatformWantToWorkWith WebframeHaveWorkedWith WebframeWantToWorkWith MiscTechHaveWorkedWith MiscTechWantToWorkWith ToolsTechHaveWorkedWith ToolsTechWantToWorkWith NEWCollabToolsHaveWorkedWith NEWCollabToolsWantToWorkWith OpSysProfessional.use OpSysPersonal.use VersionControlSystem VCInteraction OfficeStackAsyncHaveWorkedWith OfficeStackAsyncWantToWorkWith OfficeStackSyncHaveWorkedWith OfficeStackSyncWantToWorkWith Blockchain NEWSOSites SOVisitFreq SOAccount SOPartFreq SOComm Age Gender Trans Sexuality Ethnicity Accessibility MentalHealth TBranch ICorPM WorkExp Knowledge_1 Knowledge_2 Knowledge_3 Knowledge_4 Knowledge_5 Knowledge_6 Knowledge_7 Frequency_1 Frequency_2 Frequency_3 TimeSearching TimeAnswering Onboarding ProfessionalTech TrueFalse_1 TrueFalse_2 TrueFalse_3 SurveyLength SurveyEase ConvertedCompYearly
121 I am a developer by profession Employed, full-time Full in-person Hobby Bachelor’s degree (B.A., B.S., B.Eng., etc.) Other online resources (e.g., videos, blogs, forum);On the job training;Online Courses or Certification Technical documentation;Blogs;Stack Overflow;Written-based Online Courses Udemy;Pluralsight;Udacity 12 12 Developer, full-stack;Data or business analyst 10,000 or more employees I have some influence Ask developers I know/work with;Research companies that have advertised on sites I visit India INR Indian rupee 100000 Monthly Bash/Shell;HTML/CSS;Java;JavaScript;Python;SQL Bash/Shell;HTML/CSS;Java;JavaScript;Python;SQL Oracle;PostgreSQL;Redis;SQLite Oracle;PostgreSQL;Redis;SQLite Oracle Cloud Infrastructure Oracle Cloud Infrastructure Angular;Express;Flask;Next.js;Node.js;React.js Angular;Express;Flask;Next.js;Node.js;React.js NumPy;Pandas;Spring NumPy;Pandas;Spring Docker;Kubernetes;npm;Yarn Docker;Kubernetes;npm;Yarn Notepad++;Visual Studio Code Notepad++;Visual Studio Code Linux-based;Windows Linux-based;Windows Git;SVN Command-line;Version control hosting service web GUI Microsoft Lists Microsoft Lists Microsoft Teams Microsoft Teams Very favorable Stack Overflow Daily or almost daily Yes I have never participated in Q&A on Stack Overflow Neutral 25-34 years old Man No Straight / Heterosexual Indian;Asian None of the above None of the above Yes People manager 12 Strongly agree Disagree Agree Agree Agree Agree Agree Never Never Never 30-60 minutes a day Less than 15 minutes a day Somewhat long None of these Yes Yes Yes Appropriate in length Neither easy nor difficult 15480
191 I am a developer by profession Employed, full-time Hybrid (some remote, some in-person) I don’t code outside of work Bachelor’s degree (B.A., B.S., B.Eng., etc.) Books / Physical media;Other online resources (e.g., videos, blogs, forum);School (i.e., University, College, etc);On the job training;Online Courses or Certification Technical documentation;Blogs;Written Tutorials;Stack Overflow;Video-based Online Courses;Online forum;Written-based Online Courses;Auditory material (e.g., podcasts);Interactive tutorial Coursera;Pluralsight 26 22 Senior Executive (C-Suite, VP, etc.) 1,000 to 4,999 employees I have some influence Other (please specify):;Visit developer communities like Stack Overflow;Ask developers I know/work with United States of America USD United States dollar 250000 Yearly C#;C++;HTML/CSS;JavaScript;SQL;Swift;TypeScript C#;F#;HTML/CSS;JavaScript;PowerShell;SQL;Swift;TypeScript Microsoft SQL Server Elasticsearch;Microsoft SQL Server;MongoDB;PostgreSQL;Redis;SQLite Colocation;Microsoft Azure;VMware Microsoft Azure ASP.NET;ASP.NET Core Angular;ASP.NET Core ;Blazor;Node.js;React.js .NET .NET;NumPy;Pandas;React Native;Scikit-learn;TensorFlow Docker;Kubernetes Docker;Kubernetes;npm Visual Studio;Visual Studio Code;Xcode Visual Studio;Visual Studio Code;Xcode Windows macOS Git Code editor;Command-line;Version control hosting service web GUI;Dedicated version control GUI application Stack Overflow for Teams;Smartsheet Stack Overflow for Teams Google Chat;Microsoft Teams;Slack Google Chat;Microsoft Teams Unfavorable Stack Overflow for Teams (private knowledge sharing & collaboration platform for companies);Stack Overflow;Stack Exchange Daily or almost daily Yes Less than once per month or monthly No, not really 35-44 years old Man No Straight / Heterosexual White None of the above None of the above Yes People manager 27 Strongly agree Agree Disagree Disagree Agree Agree Agree 6-10 times a week 10+ times a week 6-10 times a week 30-60 minutes a day 60-120 minutes a day Somewhat long Microservices;Continuous integration (CI) and (more often) continuous delivery;Automated testing Yes Yes Yes Appropriate in length Neither easy nor difficult 250000
300 I am a developer by profession Employed, full-time Fully remote Hobby Bachelor’s degree (B.A., B.S., B.Eng., etc.) Books / Physical media;Other online resources (e.g., videos, blogs, forum);School (i.e., University, College, etc);On the job training;Online Courses or Certification Technical documentation;Blogs;Written Tutorials;Stack Overflow;Video-based Online Courses;Online forum;How-to videos Coursera 21 19 Developer, full-stack;Developer, back-end;Developer, desktop or enterprise applications 10 to 19 employees I have little or no influence Start a free trial;Ask developers I know/work with Brazil BRL Brazilian real 360000 Yearly C#;Java;Kotlin;SQL;TypeScript C#;SQL;TypeScript Microsoft SQL Server;Oracle Microsoft SQL Server;Redis Firebase AWS Angular;ASP.NET;ASP.NET Core ;jQuery ASP.NET Core ;Blazor;React.js;Vue.js .NET .NET;Apache Kafka Docker;npm Docker;npm Android Studio;Eclipse;Notepad++;Visual Studio;Visual Studio Code Notepad++;Visual Studio;Visual Studio Code Windows;Windows Subsystem for Linux (WSL) Linux-based;Windows;Windows Subsystem for Linux (WSL) Git Code editor;Command-line;Version control hosting service web GUI;Dedicated version control GUI application Jira Work Management Jira Work Management Microsoft Teams;Zoom Microsoft Teams Very favorable Stack Overflow;Stack Exchange A few times per month or weekly Yes I have never participated in Q&A on Stack Overflow No, not at all 25-34 years old Man No Straight / Heterosexual White;Hispanic or Latino/a;South American;Multiracial None of the above None of the above Yes Independent contributor 19 Agree Agree Disagree Neither agree nor disagree Disagree Disagree Strongly agree Never 1-2 times a week 1-2 times a week 30-60 minutes a day Less than 15 minutes a day Somewhat long Microservices;Continuous integration (CI) and (more often) continuous delivery Yes No Yes Appropriate in length Easy 74784
380 I am a developer by profession Employed, full-time Hybrid (some remote, some in-person) Hobby;Contribute to open-source projects;Bootstrapping a business Master’s degree (M.A., M.S., M.Eng., MBA, etc.) Friend or family member;Other online resources (e.g., videos, blogs, forum);School (i.e., University, College, etc);On the job training;Online Courses or Certification;Colleague Technical documentation;Blogs;Written Tutorials;Stack Overflow;Online forum;How-to videos;Interactive tutorial Codecademy;Skillsoft 8 6 Data scientist or machine learning specialist;Engineer, data;Developer, back-end;Developer, desktop or enterprise applications;Project manager 10,000 or more employees I have little or no influence Start a free trial;Visit developer communities like Stack Overflow;Ask developers I know/work with;Research companies that have advertised on sites I visit United States of America USD United States dollar 140000 Yearly Bash/Shell;C#;C++;HTML/CSS;Perl;PHP;PowerShell;Python;Rust;SQL;VBA Bash/Shell;C#;Go;Haskell;Kotlin;PowerShell;Python;Rust;SQL Microsoft SQL Server;MongoDB;MySQL;Neo4j;PostgreSQL;Redis;SQLite MongoDB;MySQL;Neo4j;PostgreSQL;Redis;SQLite Google Cloud;Linode;Microsoft Azure Linode;Microsoft Azure Django;Flask;Node.js Django;Flask .NET;Hadoop;NumPy;Pandas;Qt;Scikit-learn .NET;NumPy;Pandas;Qt;Scikit-learn;TensorFlow;Torch/PyTorch Ansible;Docker;Kubernetes;npm Ansible;Docker;Kubernetes;Unity 3D IPython/Jupyter;Notepad++;PyCharm;Qt Creator;Visual Studio;Visual Studio Code IPython/Jupyter;Notepad++;PyCharm;Qt Creator Linux-based;Windows Linux-based;Windows Git Code editor;Command-line;Version control hosting service web GUI Confluence;Jira Work Management Confluence Cisco Webex Teams;Microsoft Teams;Zoom Mattermost;Rocketchat Very unfavorable Stack Overflow;Stack Exchange A few times per week Yes A few times per month or weekly Yes, somewhat 25-34 years old Man No Straight / Heterosexual White None of the above None of the above Yes People manager 6 Agree Agree Agree Agree Agree Agree Strongly agree 6-10 times a week 3-5 times a week 3-5 times a week 30-60 minutes a day 30-60 minutes a day Somewhat long Innersource initiative;DevOps function;Developer portal or other central places to find tools/services;Continuous integration (CI) and (more often) continuous delivery;Automated testing;Observability tools Yes Yes Yes Appropriate in length Neither easy nor difficult 140000
460 I am a developer by profession Employed, full-time Fully remote Hobby;Contribute to open-source projects Bachelor’s degree (B.A., B.S., B.Eng., etc.) Books / Physical media;Other online resources (e.g., videos, blogs, forum);School (i.e., University, College, etc);Online Courses or Certification Technical documentation;Blogs;Programming Games;Written Tutorials;Stack Overflow;Video-based Online Courses;Online forum;How-to videos Pluralsight 24 22 Developer, full-stack;Developer, back-end 100 to 499 employees I have some influence Visit developer communities like Stack Overflow;Ask developers I know/work with United States of America USD United States dollar 187000 Yearly Bash/Shell;C#;Go;HTML/CSS;JavaScript;PowerShell;Ruby;SQL;TypeScript;VBA Bash/Shell;C#;HTML/CSS;JavaScript;Ruby;SQL;TypeScript;VBA Microsoft SQL Server;PostgreSQL;Redis;SQLite Microsoft SQL Server;PostgreSQL;Redis;SQLite AWS AWS ASP.NET;ASP.NET Core ;Express;jQuery;Node.js;React.js;Ruby on Rails ASP.NET;ASP.NET Core ;Blazor;Deno;Express;jQuery;Node.js;React.js;Ruby on Rails .NET;Apache Kafka .NET Docker;Homebrew;Kubernetes;npm;Yarn Docker;Homebrew;Kubernetes;npm;Yarn Notepad++;Rider;RubyMine;TextMate;Visual Studio;Visual Studio Code Notepad++;Rider;RubyMine;TextMate;Visual Studio;Visual Studio Code macOS Windows Git Command-line;Version control hosting service web GUI;Dedicated version control GUI application Confluence;Jira Work Management;Notion;Stack Overflow for Teams Notion;Stack Overflow for Teams Slack;Zoom Slack;Zoom Very unfavorable Stack Overflow for Teams (private knowledge sharing & collaboration platform for companies);Stack Overflow;Stack Exchange A few times per week Yes A few times per week No, not really 35-44 years old Man No Straight / Heterosexual White;North American None of the above None of the above Yes Independent contributor 22 Agree Agree Neither agree nor disagree Agree Agree Agree Strongly agree 1-2 times a week 1-2 times a week 1-2 times a week 30-60 minutes a day 30-60 minutes a day Somewhat long Innersource initiative;DevOps function;Microservices;Developer portal or other central places to find tools/services;Continuous integration (CI) and (more often) continuous delivery;Automated testing;Observability tools Yes Yes Yes Appropriate in length Easy 187000
488 I am a developer by profession Employed, full-time Fully remote Hobby;Contribute to open-source projects;Bootstrapping a business;Freelance/contract work Some college/university study without earning a degree Books / Physical media;Friend or family member;Other online resources (e.g., videos, blogs, forum);School (i.e., University, College, etc);On the job training;Online Courses or Certification;Colleague;Other (please specify): Technical documentation;Blogs;Written Tutorials;Stack Overflow;Online books;Video-based Online Courses;Online challenges (e.g., daily or weekly coding challenges);Online forum;How-to videos;Written-based Online Courses;Interactive tutorial Coursera;Udemy;Codecademy;Pluralsight;edX;Udacity 15 12 Developer, front-end;Developer, back-end;Developer, QA or test;DevOps specialist;System administrator;Security professional 100 to 499 employees I have some influence Start a free trial;Visit developer communities like Stack Overflow;Ask developers I know/work with;Read ratings or reviews on third party sites like G2Crowd United States of America USD United States dollar 110000 Yearly Bash/Shell;Groovy;HTML/CSS;Java;JavaScript;PHP;Python;Rust;SQL Bash/Shell;C;C++;Elixir;Erlang;HTML/CSS;PHP;Python;Rust;SQL MariaDB;MySQL;Redis;SQLite Elasticsearch;MariaDB;MySQL;Neo4j;PostgreSQL;Redis;SQLite AWS;Linode AWS;DigitalOcean;Linode jQuery;Laravel;Vue.js Laravel;Phoenix NumPy;Pandas;Spring NumPy;Pandas;Spring Docker;npm;Yarn Docker;Yarn IntelliJ;Nano;PhpStorm;PyCharm;Sublime Text IntelliJ;Nano;PhpStorm;PyCharm;Sublime Text Linux-based Linux-based;Windows Git Code editor;Command-line;Version control hosting service web GUI;Dedicated version control GUI application Jira Work Management Jira Work Management Cisco Webex Teams;Slack Slack Very unfavorable Collectives on Stack Overflow;Stack Overflow;Stack Exchange Multiple times per day Yes Less than once per month or monthly No, not really 25-34 years old Man No Straight / Heterosexual White;European;Hispanic or Latino/a None of the above None of the above Yes Independent contributor 12 Agree Strongly agree Agree Agree Strongly agree Agree Agree 1-2 times a week 3-5 times a week 1-2 times a week 30-60 minutes a day 15-30 minutes a day Somewhat long Continuous integration (CI) and (more often) continuous delivery;Automated testing Yes Yes Yes Appropriate in length Easy 110000

Subsets e análise

A partir da limpeza inicial dos dados, eliminando NAs criaremos subsets para facilitar a análise feita.

Comparativo Salarial entre Profissionais por países

Nessa primeira análise, faremos um novo pré processamento na base inicialmente tratada. E criaremos um subset contendo as seguintes colunas:

  • Country -> País do usuário

  • ConvertedCompYearly -> Quanto o usuário recebe como pagamento anual total em USD

  • Levaremos em consideração valor de compensação anual para de no mínimo mil USD e no máximo 2 milhões USD

firstData <- select(dataset, Country, ConvertedCompYearly) %>% dplyr::filter(ConvertedCompYearly >= 1000 & ConvertedCompYearly <= 2000000) %>% drop_na()

Após isso, temos o seguinte subset:

head(firstData, 10) %>% kable() %>% kableExtra::kable_styling(bootstrap_options = c("responsive", "striped", "hover", "condensed"))
Country ConvertedCompYearly
Israel 215232
Netherlands 49056
United Kingdom of Great Britain and Northern Ireland 60307
United States of America 65000
United States of America 110000
Czech Republic 19224
Austria 202623
Austria 51192
Italy 34126
Canada 97605

E então, tiraremos a mediana salarial dos dez países com mais respostas ao questionário do Stack Overflow. Vale salientar, que escolhemos a mediana pois,

df <- firstData %>% 
  group_by(Country) %>% mutate(median = median(ConvertedCompYearly), count = n()) %>% group_by(Country, median, count) %>% tally(sort = TRUE)


ggplot(data = head(df, 10), aes(x = median, y = Country, fill = "red")) +
  geom_bar(stat='identity', show.legend = FALSE) +
  theme_minimal() +
  ggtitle("Mediana salarial anual em USD por Pais") +
  ylab('Paises') + xlab('Mediana salarial')  + 
  geom_text(aes(label=median),hjust = -0.2, color="black",
            position = position_dodge(0.9), size=3.5) + xlim(c(0,200000))

Análise de comportamento

Notamos pelo gráfico acima, através do estudo da mediana que os desenvolvedores são melhores remunerados nos Estados Unidos, o que faz sentido, tendo em vista que é o local onde encontram-se as gigantes da tecnologia. No entanto, como o trabalho de desenvolvedor pode ser realizado de forma remota, é possível que desenvolvedores de outros países trabalhem em gigantes localizadas nos Estados Unidos, ou em países do primeiro mundo, o que com toda certeza influencia a remuneração anual.

Comparativo da educação dos desenvolvedores por país

Nessa seção iremos fazer um comparativo do nível educacional dos desenvolvedores baseado em seu país de nascença. Para isso teremos que coletar as colunas “EdLevel” e “Country” as quais correspondem, respectivamente, ao nível de educação e o país de origem do desenvolvedor. O seguinte código ira gerar um subset com a educação de cada desenvolvedor da base e uma correlação com seu país de origem:

education_country <- dataset %>% select(EdLevel, Country) %>% drop_na()

Após isso, obtemos o seguinte subset:

head(education_country) %>% 
  kable() %>% 
  kableExtra::kable_styling(bootstrap_options = c("responsive", "striped", "hover", "condensed"))
EdLevel Country
Bachelor’s degree (B.A., B.S., B.Eng., etc.) Israel
Bachelor’s degree (B.A., B.S., B.Eng., etc.) United States of America
Some college/university study without earning a degree India
Master’s degree (M.A., M.S., M.Eng., MBA, etc.) Netherlands
Some college/university study without earning a degree Croatia
Bachelor’s degree (B.A., B.S., B.Eng., etc.) United Kingdom of Great Britain and Northern Ireland

De maneira a facilitar a construção dos dados de forma visual, criaremos um subset elencando apenas os 5 países com maior quantidade de desenvolvedores da seguinte forma:

education_country$EdLevel <- as.factor(education_country$EdLevel)
education_country$Country <- as.factor(education_country$Country)

countries <- as.list(levels(education_country$Country))
dev_by_country = data.frame()

for (row in 1:length(countries)) {
  dev_by_country[row, "Devs"] <- nrow(education_country %>% filter(Country == countries[row]))
  dev_by_country[row, "Country"] <- countries[row]
}

education_levels = as.list(levels(education_country$EdLevel))
dev_by_country = dev_by_country %>% arrange(desc(Devs)) %>% slice_head(n = 5)

data = data.frame()
for (education in education_levels) {
  for (country in dev_by_country$Country) {
    temp = data.frame(ed_level = education, country = country, 
                      count = nrow(education_country %>% 
                                     filter(EdLevel == education, 
                                            Country == country)))
    data = rbind(data, temp)
  }
}

legend_names = c("1","2","3","4","5","6","7","8","9")

colors = rainbow(5)
barplot(matrix(data$count, nrow = 5, ncol = 9), main="Relação países x nível educacional", names.arg=legend_names, xlab="Nível educacional", ylab="Quantidade de desenvolvedores", col=colors, beside = T)

legend("topright",pch=15,col=colors,legend=dev_by_country$Country, cex = 0.65)
legend("right", pch=legend_names, legend=education_levels, cex = 0.55)

Análise de comportamento

Como forma de análise podemos visualizar que o gráfico nos mostra algumas informações importantes. A primeira é que o país que tem mais desenvolvedores é nos EUA, dado que consolida o posicionamento dos EUA como uma potência na área de tecnologia, entretanto, é importante visualizar que o StackOverflow é uma plataforma cuja linguagem é o inglês e, por essa razão, os dados podem ser inflados de forma tendenciosa para o país norte americano.

Um ponto que podemos, entretanto, inferir com segurança é que desenvolvedores em grande parte são aqueles que possuem um bacharelado o que demonstra uma relevância da academia para o profissional da área de TI.

Dessa maneira, podemos afirmar que, na atualidade, cursar faculdades de bacharelado pode impulsionar as pessoas que desejam ingressar na área de TI.

Qual a relação entre homens e mulheres na área de TI?

Nesta seção iremos fazer um comparativo entre homens e mulheres no mundo do desenvolvimento. Para isso iremos tratar o nosso dataset de maneira a remover todos as respostas inválidas (NA). Em seguida iremos extrair diversos dados como a quantidade total de pessoas que declararam seu sexo, a quantidade de homens e mulheres e analisar os seus efeitos na área da tecnologia ao redor do mundo assim como tentar identificar relações de causa e efeito nos cenários descobertos:

gender_dataset = dataset %>% filter(!is.na(Gender)) %>%
  select(Gender, Trans, Sexuality, YearsCode, ConvertedCompYearly) %>%
  filter(ConvertedCompYearly <= 2000000 & ConvertedCompYearly > 1000) %>%
  drop_na()
gender_dataset = gender_dataset %>% filter(Gender == "Man" | Gender == "Woman")
gender = data.frame(count = (gender_dataset %>% summarise(n()))[1,1], man_count = (gender_dataset %>% summarise(sum(Gender == "Man")))[1,1], woman_count = (gender_dataset %>% summarise(sum(Gender == "Woman")))[1,1])

Primeiramente podemos fazer uma análise básica a respeito do mercado de tecnologia: a distribuição de homens e mulheres que responderam à pesquisa. No gráfico a seguir podemos ver como se comporta esses dados:

library(ggplot2)

# Criação do data frame para o gráfico
data <- data.frame(
  group=c("Homem", "Mulher"),
  value=c(gender$man_count, gender$woman_count)
)

# Computação das posições dos labels no gráfico
data <- data %>% 
  arrange(desc(group)) %>%
  mutate(prop = value / sum(data$value)*100) %>%
  mutate(ypos = cumsum(prop)- 0.5*prop) %>%
  mutate(percentage = paste(round((value / gender$count) * 100, 2), "%", sep = ""))

# Criação do gráfico de pizza
ggplot(data, aes(x="", y=prop, fill=group)) +
  geom_bar(stat="identity", width=1, color="white") +
  coord_polar("y", start=0) +
  theme_void() + 
  theme(legend.position="right") +
  labs(fill="Genero") +
  geom_text(aes(y=ypos, label=percentage), color = "white", size=5) +
  scale_fill_brewer(palette="Set1")

É visível a discrepância entre homens e mulheres na área de tecnologia. Infelizmente isso se reflete na área em si onde é observável uma grande quantia de homens em detrimento das mulheres, fruto de uma ideologia de desigualdade de gênero ao redor do mundo como podemos observar nessa matéria.

Entretanto, para entendermos a razão desse cenário de desigualdade precisamos investigar as relações de causa e efeito que tornam isso uma realidade. Para isso irei analisar o tempo de experiência médio entre o público feminino e masculino assim como a média salarial anual em USD.

Vale salientar que para a análise desse gráfico na questão de média salarial anual os valores do eixo y devem ser multiplicados por 1000.

library(ggplot2)

# Criação do data frame para o gráfico
data <- data.frame(
  group=c("Homem", "Mulher"),
  value=c((gender_dataset %>% filter(Gender == "Man") %>% summarise(mean(ConvertedCompYearly)))[1,1], (gender_dataset %>% filter(Gender == "Woman") %>% summarise(mean(ConvertedCompYearly)))[1,1]),
  exp_mean=c((gender_dataset %>% filter(Gender == "Man") %>% summarise(mean(as.integer(YearsCode), na.rm = T)))[1,1],
             (gender_dataset %>% filter(Gender == "Woman") %>% summarise(mean(as.integer(YearsCode), na.rm = T)))[1,1]))

data$value = round(data$value / 1000, 2)
data$exp_mean = round(data$exp_mean, 2)

colors = rainbow(2)
barplot(as.matrix(data %>% select(-group)), main="Comparativo salário médio x experiência média",names.arg=c("Salario (x1000)", "Experiencia"), ylab="Quantidade", col=colors, beside = T)

legend("topright",pch = 15,col=colors,legend=data$group)

Análise de comportamento

Nos gráficos acima podemos visualizar que, enquanto temos uma grande quantia de homens na área de TI, as mulheres representam uma parcela quase inexistente. Ao vermos como se comporta o gráfico salarial médio podemos notar que as mulheres recebem anualmente bem menos que os homens no enquanto possuem um tempo de experiência média menor se comparado aos homens.

Claramente isso torna a área menos atrativa para as mulheres que, não só são desestimuladas no nível social a exercerem profissões relacionadas a TI assim como elas tendem a ganhar menos mesmo quando possuem um tempo de experiência igual ou próximo ao de um homem.

Conclusão

O presente trabalho teve como objetivo fazer uma análise exploratória referente ao Survey de 2022 realizado pelo Stack Overflow.

O dataset inicial contém várias informações a respeito dos usuários da plataforma, no entanto, optamos por explorar detalhes voltados a Remuneração Anual dos profissionais por países, Nível educacional por países e por fim, buscamos identificar o comparativo entre percentual entre Mulheres X Homens bem como a diferença salarial entre os dois grupos usuários da plataforma.

A razão de se analisar a relação salário versus países, se deu por conta do desejo bem difundido de vários estudantes e profissionais de TI, de se aventurarem na área em outros países. Em geral, tem-se a ideia de que países Europeus são melhor remunerados que o Brasil, buscamos ter mais ou menos uma ideia do quanto isso é verdade. E identificamos, que sim, que países como Estados Unidos, Canadá, que são os países dos sonhos para muitos desenvolvedores, tem sim uma remuneração salarial melhor do que os outros paises.

A partir da primeira análise, podemos ver os países mais bem remunerados. Em seguida, qual é o grau de escolaridade dos profissionais nesses países? Então, para os cinco países com mais respostas ao survey dentro do nosso Dataset, inferimos qual é o nível de escolaridade geral dos profissionais da área, para identificar o que se espera de um desenvolvedor nesses países. A ideia geral, que vende-se no Brasil é que precisa-se apenas de curiosidade, que diploma universitário não significa nada. Então, a partir dessa análise buscamos saber no mercado de trabalho estrangeiro, o quanto essa crença é verdadeira. A partir da análise gráfica, identificamos que sim, existem profissionais que não tem formação universitária completa e em casos extremos uma pequena parte tem apenas o ensino fundamental. Mas nos Estados Unidos, país com a melhor remuneração de acordo com a análise anterior, a grande maioria dos profissionais tem no mínimo um diploma universitário. Então, entende-se que o mercado em si anda preferindo profissionais com um diploma universitário.

E por fim, buscamos analisar a diferença se é que existe, entre a quantidade de profissionais Homens x Mulheres. Além disso, em termos de experiência profissional o quão diferente é o salário médio de ambos os grupos. A partir da análise, constatamos o que já esperávamos, a quantidade de Homens no como profissionais de desenvolvimento de Software ainda é superior às de mulheres. E o salário anual das mulheres acaba sendo menor que os dos homens, mesmo com um tempo de experiência parecido.

Com essa análise, conseguimos dados bastante interessantes sobre o mercado de TI, usando dados disponíveis publicamente sobre os usuários de um dos ambiente mais utilizados por programadores e programadoras em todo o mundo. No entanto, esse Dataset provê muito mais possibilidades de análise do que conseguimos inferir. Poderíamos também, analisar a porcentagem de profissionais LBGTs e/ou analisar linguagens de programação mais utilizadas e formas de aprendizado de programação. Enfim, São inúmeras as possibilidades de análise que não conseguimos cobrir e podem ser parte de um trabalho futuro.

Referências