Você está na página 1de 123

E-book

Os bastidores do
mercado de tech
Um guia completo sobre carreiras de
tecnologia para pessoas recrutadoras
Sumário
Introdução.................................................................................................4

Fundamentos, parte I: Hardware x Software.......................................9

Hardware: Carreiras................................................................................11

Software: Carreiras.................................................................................15

Mas antes, uma história.........................................................................16

Produtos Digitais: O grande espetáculo .............................................19

Design: Estética e funcionalidade........................................................27

Engenharia de Software, parte I...........................................................28

Pausa de revisão.....................................................................................36

Fundamentos, parte II: bastidores da internet..................................37

Engenharia de Software, parte II..........................................................42

Engenharia de Software, parte III........................................................48

Pausa de revisão II..................................................................................51

Engenharia de Software, parte IV........................................................54

Engenharia de Software, parte V.........................................................63

Engenharia de Software, parte VI........................................................75

Engenharia de Software, parte VII.......................................................83

DevOps: O Elo entre todas as partes...................................................88


Sumário
QA: Garantia de qualidade..................................................................102

Dados: O novo recurso mais valioso.................................................107

Cybersegurança: proteção dos sistemas.........................................116

Gestão de Tech: A última peça do quebra-cabeça.........................117

Epílogo.....................................................................................................120

Sobre o autor..........................................................................................122
Introdução
Olá, pessoa leitora. Eu queria te pedir uma coisinha.

Enquanto você lê este texto, imagine-se no meu


lugar (eu mesmo, Pedro, redator deste e-book).

Eu ligo meu computador. Olho para o relógio: são


15h42. Então eu abro meu navegador web. Digito
www.canv (e antes que eu termine de digitar o
endereço do site, o navegador já autocompleta pra
www.canva.com.br), e eu aperto Enter no meu
teclado. Aparece na minha tela o site Canva, que é o
que utilizamos aqui pra produzir este conteúdo, e
clico em entrar. Daí, aparece uma segunda tela em
que digito meu e-mail e senha, enter, pronto, consigo
ver meus projetos. Abro um documento chamado "E-
book: os bastidores do mercado de tech" e começo a
digitar. Olho pro relógio, são 15h44. Chegamos ao
momento atual. Mas você já parou pra refletir sobre
tudo o que de fato acabou de acontecer?
Como foi que meu navegador sabia o site que
eu iria visitar?
Quando eu digitei minhas informações, como é
que o site me mostrou exatamente todos os
meus projetos e não os projetos de outra
pessoa?

Estas são duas de milhares de perguntas que


dariam para serem feitas sobre o que aconteceu
nos bastidores destes últimos 2 minutos. O fato é
que esta experiência fluida pela qual eu acabei de
passar é um resultado de muitos anos de
contribuições de diversos profissionais diferentes
dentro do mercado de tecnologia. O projeto deste
e-book é destrinchar essas carreiras e te fazer
entender, de uma vez por todas, a origem da
resposta de cada uma destas perguntas que eu fiz
ali em cima (além, claro, de muitas outras).
Durante minha época da faculdade, cheguei a dar
aulas particulares de inglês por um tempo pra
ajudar nas despesas. Uma aluna muito marcante
que tive se chama "Celeste". Trata-se de uma
senhorinha que tinha na época seus 73 anos de
idade e era absolutamente obcecada por aprender
inglês. Seu grande sonho era conhecer Nova York. O
ritmo das aulas era um pouco lento, mas era TÃO
divertido que fazia as minhas semanas serem
sempre mais leves. Uma vez, durante as aulas, eu
usei um formulário automático para fazer alguns
exercícios junto com Celeste e foi notável a cara de
espanto dela ao terminar o teste e ver suas
respostas serem corrigidas automaticamente de
forma instantânea. O que pra mim era só mais uma
atividade corriqueira, pra ela era praticamente um
ato de magia.

Você, pessoa leitora, pode estar se perguntando


agora por que eu estou contando essa história. Já te
explico:
Este e-book é pra você, Celeste. Mais
especificamente, esse e-book é pra todo mundo
que, como você, sente dificuldades em entender o
que se passa nos bastidores da tela do seu
computador.

Ah, e e-book quer dizer "electronic book", que


traduzido significa "livro eletrônico" - mas a tradução
você já deve saber, não é mesmo, minha querida
aluna?

Pessoas leitoras: este vai ser o tom deste conteúdo.

Queremos que qualquer pessoa, com ou sem


nenhum conhecimento prévio da área, termine esta
leitura compreendendo bem o que faz cada uma
das carreiras de tecnologia. Toda nova expressão ou
termo específico que surgir vai ser explicado, assim
como fiz no parágrafo anterior com a palavra "e-
book". E ao final, você vai saber responder todas as
perguntas que fizemos no início da introdução.
Minha aluna Celeste fez 80 anos nesta semana, e
me convidou pra participar da festa (daí a
inspiração pro texto). Ela estuda inglês até hoje,
acreditam? Inclusive, ela foi pra Nova York. Duas
vezes. E já tá planejando a próxima.

E enquanto ela planeja a próxima viagem, a gente


viaja um pouco sobre o mercado de tecnologia por
aqui.

Tenha uma boa leitura!

Pedro Ribeiro
Marketing - 99Hunters
O
Fundamentos, parte I:
Hardware x Software
Antes de começar a explorar as carreiras da área
de tecnologia, é importante traçar alguns
fundamentos para que a gente tenha uma base de
conhecimento sólida sobre o que estamos falando.

Quando se trata de computadores, todos eles são


constituídos de duas partes fundamentais: o
Hardware e o Software. A palavra "Hardware" pode
ser traduzida por "ferragens" (como numa
construção, mesmo). "Hard" vem de "duro" , "sólido",
referindo-se à "parte sólida" dos seus eletrônicos.

Trata-se dos componentes físicos que constituem a


fundação daquele dispositivo. Outra metáfora que
eu gosto de usar é dizer que o hardware é o "corpo
dos seus eletrônicos". A carcaça do seu seu celular e
do seu computador, seu monitor, mouse, teclado, e
também os componentes internos, como placas,
chips, cabos, condutores, etc.
Seguindo na metáfora: se o Hardware é o corpo, o
Software é a alma. Soft vem de "macio", "não sólido",
e no contexto de tecnologia é usado pra se referir
àquilo que não é palpável fisicamente, mas existe
virtualmente. São os programas do seu computador,
aplicativos do seu celular, os sites que você visita, o
seu e-mail, este e-book que você está lendo agora
na sua tela, as músicas que você ouve pela internet,
os vídeos que você vê no Youtube, todo o conteúdo
de suas redes sociais, tudo isso está dentro da
categoria que a gente chama de software.

Tendo esses dois conceitos claros, vamos ao


próximo tópico.

Hardware Software

X
Hardware: Carreiras
As carreiras de tecnologia ligadas ao Hardware
costumam estar relacionadas à indústria.

Estamos falando de profissões que têm por objetivo


construir componentes eletrônicos cada vez
melhores e mais rápidos, baterias que duram cada
vez mais, memórias que conseguem armazenar um
volume cada vez maior de dados, antenas que
conseguem transmitir dados cada vez mais rápido,
e por aí vai.

Uma curiosidade conhecida no mundo de


tecnologia a respeito deste crescimento acelerado
é a chamada "Lei de Moore". Trata-se de uma
observação feita por Gordon E. Moore, um químico
estadunidense, num artigo em 1965, prevendo que
os microchips dobrariam sua capacidade a cada
dois anos pelo mesmo custo. Esta previsão, feita há
quase 60 anos, ainda se mantém verdadeira.
Essa atualização e melhoria acelerada dos
componentes eletrônicos físicos dos computadores
possibilita desenvolver softwares cada vez mais
complexos ao longo do tempo.

Um exemplo para ilustrar este ponto são os jogos


eletrônicos. Os primeiros jogos, na década de 80,
eram extremamente simples, grande parte pelas
limitações de hardware. Vinte anos depois, no início
dos anos 2000, já tínhamos jogos com ambientes
em três dimensões, com histórias super complexas
e visuais muito superiores.

Hoje, após mais 20 anos, temos jogos ultrarrealistas,


com níveis de imersão nunca antes imaginados, e
ainda com possibilidade de serem jogados
simultaneamente por milhares de pessoas
espalhadas pelo mundo e conectadas por redes de
alta velocidade.

1980 2000 2020


Voltando ao nosso ponto principal, eu costumo
imaginar que a indústria do Hardware é como uma
exploradora, que vai desbravando as fronteiras de
uma terra desconhecida. Na medida que ela vai
abrindo caminhos (ou aumentando as capacidades
dos componentes), ela expande a área de terreno
viável para o software ocupar.

Dentre as profissões relacionadas ao Hardware,


temos a engenharia da computação, robótica, de
materiais, pessoas técnicas da área eletrônica,
analistas de infraestrutura de redes, pessoas
técnicas que trabalham com cabeamento de
telefonia, etc.

Outra parte importante desta indústria é chamada


de "assembly", que significa "montagem". Como o
nome diz, é uma parte da indústria especializada na
montagem dos componentes, exemplo: O seu
computador é feito de várias peças diferentes, cada
uma de um fabricante. Assembly é responsável por
transformar todos aqueles componentes num
computador pronto para o consumidor final.
Vale citar que especialmente na década de 90,
quando os componentes eletrônicos eram muito
mais caros que hoje, era muito comum no mercado
de hardware a presença técnicos em eletrônica e
manutenção, dado que consertar os componentes
era mais barato que substituí-los.

Outro adendo é que como hardware e software


estão muito intrinsecamente ligados, nas indústrias
de hardware é muito comum também a presença
de profissionais de software.

No Brasil, não temos uma indústria muito


desenvolvida na parte de hardware, e por isso
existem poucas oportunidades nesta área por aqui.

A maior indústria de hardware


do mundo fica na China, e é
por isso que você vê aquele
selo escrito "made in china" na
maioria dos seus eletrônicos.
Software: Carreiras

Lembra do início quando eu disse que software é a


alma dos nossos aparelhos eletrônicos? Bem, se
alma é um conceito abstrato, este também é o
caso da parte de software. Existem diversos
campos diferentes, cada um com suas funções
específicas. Abaixo, vamos citar algumas das
principais carreiras e nos próximos capítulos vamos
entrar um pouco mais no detalhe de cada uma
delas.

Produtos Design Desenvolvimento/


Digitais Engenharia de Software

DevOps QA/Garantia de Dados


Qualidade

Cybersegurança Gestão de tech


Mas antes, uma
história:
Há umas duas semanas, eu tive a oportunidade de
assistir meu primeiro teatro musical. Foi uma
experiência incrível pra mim não só pela qualidade
das vozes e performance dos atores, mas pela
complexidade do que estava acontecendo à minha
frente. Veja só:

Em baixo do palco, havia uma


orquestra completa, com mais de
50 instrumentistas, que
executavam todas as músicas ao
vivo, sincronizadas com o que
estava acontecendo logo em
cima no palco principal. Quem
conectava a orquestra à
performance era o maestro, que
ficava numa posição privilegiada
na plateia à frente da primeira
fileira, podendo ver os músicos e
os atores ao mesmo tempo.
Atrás do palco, havia uma equipe que fazia a troca
dos cenários, sincronizada com a equipe de
iluminação, que garantia que o público estava
olhando para os lugares corretos a todo tempo. A
equipe de sonorização garantia que os microfones
de cada um dos atores era ligado e desligado na
hora certa, e que não iria acontecer nenhum
problema como microfonias com toda àquela
movimentação.

Outro fato que me assustou foi a arquitetura dos


tais cenários, que era extremamente versátil: um
prédio que ficava à direita do palco, quando girado
90 graus, se transformava num bar. Mais um
pequeno giro, uma varanda com sacada. Em uma
determinada cena, descem do teto elementos que
cercam o palco, e de repente estamos num parque,
onde outra cena acontece.
Toda essa complexidade nos bastidores acontecia
de forma tão fluida que o público, imerso na história
cantada pelos atores, sequer notava.

Essa experiência da peça me fez refletir sobre o que


está acontecendo nos bastidores do meu
computador enquanto eu escrevo este e-book
agora.

Eu notei que é possível fazer paralelo quase perfeito


entre os elementos do teatro e as carreiras de
tecnologia, e por isso vou me apropriar desta
metáfora para ilustrar, nos próximos capítulos, os
campos dentro das carreiras de software.

Tocou o terceiro sinal. As luzes se apagam, e as


cortinas começam a se abrir. Hora de se
concentrar, pois a nossa história vai começar.
Produtos Digitais: O
grande espetáculo.
Na nossa metáfora, a peça de teatro em si é o
produto. É a soma de todas as complexidades,
funcionalidades, o resultado final de todo o
processo de desenvolvimento e criação.

No mundo de tecnologia, os profissionais da área de


produto trabalham com o desenho da solução
oferecida pela empresa. E como estamos falando
de carreiras em software, essas soluções são
digitais, por isso o nome "produtos digitais".
Desenvolver um produto é um processo demorado
e caro, e por isso é necessário criar estratégias para
garantir que o produto que está sendo desenvolvido
pela equipe de tecnologia esteja alinhado com as
demandas do mercado e dos clientes. Por esse
motivo, o trabalho dos profissionais de produto
inclui muita pesquisa, planejamento, testagem e
priorização.

A peça de teatro que eu fui no mês passado tinha


data de lançamento planejada para 2020, mas aí
veio a pandemia, e com as políticas de isolamento
social, exibir a peça em um ambiente fechado como
o teatro seria inviável.

Isso, em termos de negócio, foi um completo


descasamento entre o produto oferecido pela
companhia teatral e a demanda do mercado. Neste
caso específico foi por má sorte, afinal não teria
como ter previsto a pandemia, mas muitas vezes,
nas empresas de tecnologia, isso acontece por uma
má gestão de produto. Vou dar mais um exemplo
para clarificar.
Uma vez eu tive uma ideia de empresa que me
parecia incrível: Eu criaria um site que te daria
feedbacks automáticos sobre a qualidade dos
vídeos das pessoas. A pessoa iria lá, colocaria o
vídeo no site, e receberia diversas dicas sobre como
melhorá-lo. Eu contatei um amigo desenvolvedor
pra me ajudar a criar o código, e começamos a pôr
a mão na massa.
O balde de água fria veio quando fui conversar com
um outro amigo mais experiente da área de
negócios e ele me fez uma pergunta simples: "Pedro,
você chegou a conferir se existe uma demanda pra
esse produto que você quer criar?" Eu até gaguejei
na hora, porque a resposta era claramente não.

Eu estava diante de começar um produto que iria


custar milhares de horas de trabalho, milhares de
reais gastos em desenvolvimento, sem testar sequer
se existiam pessoas dispostas a comprá-lo.
Obviamente, a minha ideia não foi pra frente, mas
se eu quiser começar um produto novo em algum
momento no futuro, certamente vou começar de
uma maneira diferente.

Alguns exemplos de produtos digitais que fazem


parte do nosso dia a dia: Uber, iFood, o aplicativo do
seu banco, o seu Whatsapp, o seu Instagram, o
aplicativo de GPS, aplicativos de música, e muitos
outros.

Antes de terminar esta parte, eu quero trazer mais


um exemplo.
Produtos digitais têm uma natureza diferente dos
produtos físicos. Diferentemente de um novo creme
dental, por exemplo, que é um produto que tem
início, meio e fim de seu desenvolvimento muito
bem marcados, um produto digital está em
constante desenvolvimento, com atualizações
constantes e novas funcionalidades sendo
adicionadas. Lembra do Instagram, que antes era só
pra fotos? Aí depois eles adicionaram os Stories
para relatar os fatos em tempo real. Depois, veio a
plataforma de vídeos longos IGTV. E depois veio o
Reels, com os vídeos curtos. Aí o IGTV não teve a
tração esperada e o descontinuaram. E tudo isso
aconteceu por meio das atualizações do produto.
É por isso que muito do trabalho da área de produto
é relacionada à priorização. Isso acontece porque
os recursos de time são limitados, e a todo tempo é
necessário fazer escolhas sobre o que vai ser
entregue primeiro. Essa priorização leva em conta
diversos aspectos além da demanda de mercado
que já foi citada. Custo, tempo de produção,
impacto no escopo geral do produto, na percepção
pública da marca, entre outros.

Um dos softwares que usamos para editar os vídeos


aqui da área de marketing sempre teve uma certa
fama de ser pouco estável. Era muito comum
encontrar erros de execução, comportamentos
estranhos, às vezes o aplicativo fechava sem aviso e
perdíamos o progresso do nosso trabalho.
Ao mesmo que isso acontecia, ao longo dos anos
esse software foi ganhando diversas novas
funcionalidades. Mas a instabilidade incomodava, e,
eventualmente, começou a gerar uma migração de
usuários para a concorrência. E isso provavelmente
acendeu um alerta para o time de produto desta
empresa, que publicou, junto da atualização
seguinte do software, uma nota relatando a
priorização da correção de erros do programa. Isso
foi muito bem visto pela comunidade de editores de
vídeo.

Voltando ao nosso ponto, durante diversos anos a


equipe de produto desse software priorizou o
lançamento de novas funcionalidades. Daí, quando
percebeu o problema gerado, fez um trabalho de
repriorização e passou a investir na estabilidade de
seu produto.

Acredito que estes exemplos tenham deixado mais


claro o que fazem as carreiras de produtos digitais.
Como cada empresa de tecnologia desenvolve seu
produto de uma maneira diferente, normalmente os
cargos tem nomes mais genéricos, como analista,
coordenador e gerente de produto, além, claro dos
designers.

Esses últimos, inclusive, merecem um capítulo só


pra eles. Então vamos seguindo.
Design: Estética e
funcionalidadade
Na nossa metáfora da peça de teatro, designers
seriam os responsáveis por criar toda a parte visual.
São as pessoas que irão escolher as roupas dos
atores, o estilo dos cenários, as cores das luzes, e
qualquer outro elemento que estiver no palco e for
exposto ao público. Mas um ponto importantíssimo
de se realçar é que estas escolhas não são
baseadas puramente em estética. Pense comigo:

Se uma atriz for aparecer em duas cenas


seguidas com roupas diferentes, as roupas das
duas cenas precisam ser fáceis de serem
trocadas, certo?
Se um elemento pesado do cenário tiver que ser
movimentado várias vezes, faz sentido que ele
seja desenvolvido com rodas, certo?

Dentro das carreiras de tecnologia, esse é o papel


dos Designers de UX e UI. Já explico melhor.
UX é uma sigla para "User Experience", que é
traduzido como "Experiência do Usuário" e UI vem
de "User Interface", que é a interface do usuário, ou
a tela que o usuário vê.

Essas duas carreiras, que estão dentro do time de


produto, são intimamente ligadas.

Quando você abre um aplicativo, vamos dizer, por


exemplo, o iFood, o que você vê na sua tela é a
interface do usuário. Ela foi desenhada por uma
pessoa Designer UI. Essa carreira é responsável pela
criação artística dos sites, interfaces, e tudo o que
vê nos aplicativos, sites e outros produtos de
tecnologia. Isso inclui a escolha das cores, fontes,
ícones e imagens utilizados, o tamanho dos
elementos, etc.

Mas um questionamento que você pode fazer é


"por que esta interface foi desenhada assim?" Por
que aparecem as categorias de comida na parte
de cima e os meus últimos pedidos logo abaixo?
Por que, em vez de todos esses elementos
diferentes, não aparece por exemplo uma lista em
ordem alfabética de todos os restaurantes
cadastrados?
Responder essas perguntas é um trabalho de UX.
Como tudo dentro de Produto, aquela interface do
aplicativo que você vê é um resultado de um
intenso trabalho de testagem com o objetivo de
facilitar para o consumidor o trabalho, neste
exemplo, de comprar a comida.

Saiba que toda interface que você encontra no


mundo de tecnologia foi pensada e desenvolvida
para facilitar o atingimento dos objetivos do
negócio. E esse trabalho de pesquisa e testagem
da melhor interface é responsabilidade da parte de
User Experience. São esses os designers que fazem
os protótipos, definem a hierarquia das
informações dos apps, cuidam da interatividade e
da navegabilidade dos sites e aplicativos.
Engenharia de Software,
parte I: nossa equipe de
roteiro
Da mesma forma que os engenheiros da indústria
de hardware são especialistas na fabricação dos
componentes físicos fundamentais dos eletrônicos,
os engenheiros de software (também chamados de
desenvolvedores de software, ou ainda
programadores) são especialistas na construção
das fundações virtuais dos programas e aplicativos.

Esses componentes virtuais são as instruções dadas


aos computadores para que eles se comportem da
maneira que esperamos. Esse ato de dar as
instruções ao computador é chamado de
"programar", e o compilado dessas instruções, o
código, é que constitui o programa. O computador
então executa o tal programa, realizando as
instruções dadas pelo desenvolvedor.

Esse é o básico do básico. Agora a gente vai


começar a aprofundar.
Lembre-se: Romeu e Julieta foi escrito numa época
em que não tinha como filmar o espetáculo e
ensaiar assistindo o vídeo, por isso a necessidade
deste nível de detalhe.

E da mesma forma, no mundo de desenvolvimento


de software, o computador não tem nenhum
conhecimento prévio para executar as instruções
dadas pelos engenheiros. Daí a necessidade de se
dar instruções claras. Na nossa metáfora do teatro,
os engenheiros de software são nossos roteiristas.
Eles escrevem, seguindo as regras de escrita dos
códigos, as instruções para que tudo se comporte
da maneira esperada.

Dar instruções claras ao computador é um trabalho


muito especializado, e por isso muito valorizado no
mercado. Essas instruções são dadas por meio da
escrita do que chamamos de algoritmos, que são
uma sequência de comandos realizados de
maneira sistemática com o objetivo de resolver um
problema ou executar uma tarefa.

Abstrato, né? Vamos a mais um exemplo.


Eu fui professor de literatura de ensino médio por
dois anos e me lembro que os textos que os alunos
mais gostavam de trabalhar eram as peças de
teatro. Você já leu um roteiro de uma peça teatral?
Veja um aqui neste link, do clássico Romeu e Julieta.

O roteiro de teatro é um tipo de texto muito peculiar,


porque as instruções do roteiro não são só as falas
dos atores em si. É necessário no início descrever o
contexto, além de nomear todos os personagens
que irão participar.

Existem regras específicas para escrever os ATOS e


as CENAS, que são as subdivisões da história, e é
necessário adicionar também entre parêntesis e em
itálico as RUBRICAS (ou indicações de cena), que
trazem informações importantes das ações dos
personagens e movimentações de cenário para a
equipe técnica.

É necessário prestar atenção à formatação do texto


e hierarquia das informações, também chamada de
endentação, para garantir que o grupo que for
executar a peça consiga reproduzi-la fielmente.
tchululululu (som de fita voltando no tempo)

Estamos de volta ao dia 1 da escrita deste texto. Eu


acabei de digitar www.canv (e antes que eu
terminasse, o navegador já autocompletou pra
www.canva.com.br), e eu apertei Enter no meu
teclado. Aparece na minha tela o site Canva e...
Pausa. Acabamos de presenciar um algoritmo!
Vamos refletir sobre ele.

Algoritmos têm uma estrutura geral relativamente


simples:

Conjunto de regras
determinadas para
Entrada de
obter um resultado Resultado
informação
usando a informação
recebida

Algoritmo

Este algoritmo, que vamos chamar de "Como foi que


meu navegador sabia o site que eu iria visitar? - a
resposta", é uma ~sequência de comandos
realizados de maneira sistemática~ que eu vou
explicar passo a passo logo abaixo:
Como foi que meu navegador sabia o site que eu
iria visitar? - a resposta

O endereço digitado é
comparado com o
Eu digito uma meu histórico de Navegador
letra no campo de acesso e é sugerido o autocompleta o
endereço endereço mais endereço
parecido e mais
frequentemente
acessado

Algoritmo

Como nossos computadores são capazes de


executar este algoritmo milhões de vezes por
segundo, a cada letra nova que eu digito ele é
executado novamente e uma sugestão mais
precisa é dada. Afinal, quanto mais clara e
completa a informação dada na entrada, melhor
será resultado.

De volta ao dia 1 do e-book. Eu aperto Enter no meu


teclado. Aparece na minha tela o site Canva, que é
o que utilizamos aqui pra produzir este conteúdo, e
clico em entrar. Daí, aparece uma segunda tela em
que digito meu e-mail e senha, enter, pronto,
consigo ver meus projetos. Pausa de novo.
Aconteceu outro algoritmo aqui. Esse, nós vamos
chamar de:

Como o site me mostrou exatamente todos os


meus projetos e não os projetos de outra pessoa - a
resposta

Minhas informações
são comparadas com
o banco de dados e Acesso é
Digito meu e-mail se estiverem certas, autorizado e vejo
e senha meus projetos
meus projetos
armazenados lá são
localizados.

Algoritmo

Os algoritmos são as fundações das linguagens de


programação, que nós vamos explorar um pouco à
frente. Mas antes da gente continuar se
aprofundando neste assunto, acho que vale
fazermos uma pausa pra recapitular o que a gente já
aprendeu.
Pausa pra recapitular o
que a gente já aprendeu.
Se você chegou até aqui, seus conhecimentos sobre
o mundo de tech(abreviação pra tecnologia) já
estão super apurados. Veja só:

Você já entendeu a diferença entre Hardware e


Software;
Já sabe quais são as carreiras de Hardware;
Já consegue nomear as grandes áreas e as
carreiras da parte de Software;
Já tem uma clara noção do que fazem as
carreiras da área de Produtos Digitais e Design
UX/UI;
Já sabe superficialmente o que fazem os
Engenheiros de Software;
Já sabe o que é um Algoritmo e como ele é a
resposta para aquelas duas perguntas da
introdução.

E com todo esse conhecimento, você já tem


condições de se aprofundar mais. Bora lá, então?
Fundamentos, parte II:
O que acontece nos
bastidores da internet
Você já se perguntou o que acontece quando
visitamos um website? Na sua tela, é um passo a
passo algo simples:

1. Você digita no seu navegador uma URL


(curiosidade: URL significa "Uniform Resource
Locator", ou localizador uniforme de recursos.
Uma maneira técnica de dizer endereço);
2. Aparece o site na tela em alguns segundos;
3. Fim.
Tá, mas e nos bastidores?
Vou te explicar com esse esquema:

https://www.99hunters.com

cliente servidor

index.html

Vamos por partes, pra ficar claro. Primeiro os nomes:

Cliente é o computador que faz as solicitações


ao servidor;
Servidor é o computador que atende às
solicitações.
Index.html é o arquivo que contém o site.
Agora o passo a passo:

1. Você digita a URL no seu navegador.


2. Ao apertar Enter, o seu computador (cliente) faz
uma solicitação: "Caro servidor, poderias por
gentileza buscar o arquivo do site da 99Hunters?"
3. "Claro, senhor cliente. Um milionésimo de
segundo, por favor. Pronto, aqui está."
4. O seu computador (cliente) então recebe do
servidor o arquivo do site (index.html) e o
navegador exibe o site na sua tela.

Inclusive, muito prazer, estes aqui são os servidores:


Servidores são grupos de supercomputadores
localizados ao redor do mundo com a missão única
de atender às solicitações dos milhões de
computadores clientes que estão em nossas casas,
empresas, etc.

A internet, pessoas leitoras, nada mais é do que


uma grande conversa entre computadores. Um
festival de solicitações. Inclusive, Fica até mais claro
enxergar o que está acontecendo quando
encontramos um erro, por exemplo, ao acessar um
site. Pensa comigo:
Você já viu aquela famosa mensagem de erro, "404
- Site não encontrado"? Ela pode significar uma de
duas coisas: Ou você deu o endereço errado na sua
solicitação ao servidor, o que significa que deve ter
tido algum erro de digitação na sua URL, ou você
deu o endereço certo mas o site não existe mais.
Simples.

E uma última reflexão: Se você parar pra pensar, os


softwares em geral são divididos em duas partes: A
que aparece pra você, e a que trabalha nos
bastidores. Essas partes têm nome, e é esse o tema
do nosso próximo capítulo. Sigamos.
Engenharia de
Software, parte II: Front
End & Back End
Lembra quando falamos do roteiro do nosso teatro?
E que os roteiristas são os Engenheiros de Software?

Vamos retomar essa metáfora pra continuar nosso


estudo por aqui.

No roteiro do teatro, como eu já falei lá em cima,


existem trechos específicos para descrever as falas
dos atores e partes específicas para descrever as
ações dos bastidores para a equipe técnica. Da
mesma maneira, na Engenharia de Software, temos
desenvolvedores dedicados ao Front End, que é
tudo o que você vê na sua tela, seja do site ou
aplicativo que você acessa, no computador ou
celular, e temos também o Back End, que é tudo que
acontece nos bastidores, em comunicação com os
servidores. Vamos entender melhor abaixo cada um
deles:
Front End: Como as coisas aparentam

O front end é o palco das nossas aplicações. Nele,


está a interface (o que é visto na tela), as imagens,
o conteúdo, a estrutura, o design, os botões que o
usuário aperta, os formulários que preenche, os
textos, a navegação em si, etc. Veja esses dois
exemplos:
Back End: Como as coisas funcionam

O back end são os bastidores. Aqui, estão os


servidores, todas as solicitações, algoritmos que se
relacionam com eles, está também o banco de
dados, etc. Como o back-end não vai ser visto pelo
cliente, ele não precisa ter uma forma visual, mas é
fundamental que ele seja bem desenvolvido. Vamos
a mais uma história para clarificar.
A história da minha Alexa.

Eu sempre achei muito chique ter uma assistente


virtual. Daí, surgiu uma promoção de fim de ano em
2019 e eu comprei pra mim uma Alexa. Foi o
máximo.

Eu dizia: Alexa, toca minha rádio preferida! E ela


tocava. Alexa, me conta uma piada! E ela contava.
Alexa, coloca detergente na lista de compras! E
pum, eu tinha uma lista de compras atualizada.

O Front End da Alexa ficava no aplicativo do celular.


Nele, eu tinha acesso às suas funcionalidades e
fazia todas as pré-configurações: conectava a Alexa
na internet, no meu aplicativo de música, etc.

Quando eu solicitava algo pela minha voz, alguns


algoritmos eram executados no Back End do
aplicativo para que a Alexa realizasse a ação que
eu solicitei. Eu acho impressionante a quantidade de
coisas que acontece no Back End da Alexa desde o
momento que eu a solicito alguma coisa até o
momento que ele é executada. Não, sério, olha esse
exemplo:
"Alexa toca minha rádio preferida!"

Algoritmo 1: reconhecimento de voz

Minha gravação é
processada,
A gravação da comparada com o Meu comando em
minha frase banco de linguagem e texto
as palavras
decifradas são
transcritas para texto

Algoritmo 2: reconhecimento do comando

Meu comando é
comparado com a
biblioteca de
Meu comando comandos possíveis Abre o aplicativo
em texto da Alexa e "abrir o de música
aplicativo de música"
é escolhido por
ser o mais próximo

Algoritmo 3: Descobrir a rádio preferida

O algoritmo busca na
memória qual foi a Envia para o
Meu comando em
texto rádio que eu marquei aplicativo de
como preferida música
anteriormente
Isso tudo aí acontece em frações de segundo entre
meu comando de voz e a execução da rádio. Vale
lembrar que trata-se de uma versão muito
simplificada dos algoritmos reais que acontecem,
porque o nosso objetivo aqui é puramente entender
a diferença entre o Front End e o Back End. Tudo o
que eu vi e todas as interações que eu fiz na minha
tela do aplicativo da Alexa são front end e tudo o
que aconteceu nos bastidores é back end. Fechou?

Ok, estamos progredindo. Pra gente continuar esse


estudo, a gente precisa entender mais uma
coisinha.

Outro dia eu comprei uma luz colorida pra minha


sala daquelas que você controla pelo aplicativo no
seu celular. Ela muda de cor, de intensidade, com
certeza você já deve ter visto algo do tipo. Daí eu
descobri que tinha como conectar o aplicativo da
lâmpada no aplicativo da Alexa e controlar a
lâmpada com a minha voz. Moderno, pensei. E fiz
essa conexão. E eu te convido a passar pelo mesmo
processo e reflexão que eu passei ao fazer isso:
Como é que esses dois aplicativos produzidos de
forma independente, por empresas diferentes, se
conectam? Confira no próximo capítulo.
Engenharia de
Software, parte III: APIs
No mundo de software, as APIs são os mensageiros.
API vem de "Application Programming Interfaces",
que se traduz para "Interface de programação de
aplicações. Na prática, são os canais construídos
para que dois programas conversem.

As APIs são utilizadas para possibilitar a troca de


informações entre partes de um mesmo sistema ou
sistemas diferentes entre si.

Por exemplo, quando eu conectei a minha Alexa no


aplicativo de música, essa conexão foi feita por uma
API. Assim como foi também uma API a conexão
entre o aplicativo da Alexa e o aplicativo que
controlava minhas lâmpadas.
As APIs são utilizadas para conectar também o front
end e o back end das aplicações. Lembra quando
eu falei do algoritmo que conferia se minha senha
estava correta no site?

Quando eu digito minha senha, a solicitação para


que o back end do site confira se meus dados
conferem é uma API. E em geral, podemos dizer que
as solicitações entre os computadores clientes e os
servidores, que falamos lá em cima, são feitas por
meio de APIs.

Como uma API se parece? Bem, por ser um


elemento não visual, a API é descrita em código, que
é lido pelos computadores. Normalmente, uma API
pode ser constituída de 4 comandos principais, ou
qualquer combinação entre eles, a depender da
complexidade da troca de solicitações:

GET Consultar dados de um arquivo


POST Enviar dados para criar um novo arquivo
PUT Enviar dados para atualizar um arquivo
DELETE Deletar arquivo
Quer acessar um site? A API vai ter o comando
GET.
Quer postar uma foto nova no seu Instagram?
POST.
Cometeu um erro de digitação naquele textão
que você postou no LinkedIn? Quando você
editar o post, a solicitação vai ter o comando
PUT.
Enviou uma mensagem de Whatsapp no grupo
errado? DELETE.

Em resumo, as APIs são nada mais nada menos do


que a materialização das nossas solicitações. E
nesta nota, terminamos este capítulo.
Pausa para manter seu
engajamento.
Cara pessoa leitora, se você chegou a essa altura
do texto, talvez você se pergunte por que o autor
decidiu entrar num buraco tão profundo e
detalhado sobre Engenharia de Software. Afinal, o
que desenvolvedores fazem no dia a dia já foi
explicado: Dar instruções pra computadores. Fim.

De fato, dar instruções para os computadores é o


coração do Desenvolvimento de Software. Porém, eu
queria compartilhar com vocês nosso objetivo final
com todo esse estudo.
A maioria do público dos conteúdos da 99Hunters
tem alguma ligação com o mercado de
recrutamento, e grande parte da rotina dessas
pessoas está ligada à procura de perfis para
preencher vagas. Quando você procura por vagas
de Engenharia de Software, você se depara com
uma infinidade de termos específicos (incluse
alguns deles nós até já deciframos por aqui, como
front e back end). E aí que é que está a chave do
nosso plano com esse material.
Sendo recrutador ou não, trabalhando no ramo ou
não, se você tem interesse em entender com um
pouquinho mais de profundidade o que fazem
essas posições com nomes tão diversos, esse nível
do detalhe vai fazer toda a diferença.

Até o momento, você leu sobre diversos tópicos de


forma relativamente desconectada: Algoritmos,
Front End, Back End, APIs, Clientes, Servidores, etc.

Mas imagine que você é


um(a) detetive, e cada um
desses pequenos blocos de
assuntos são as pistas para
resolver o mistério.

E a próxima pista que eu vou


te dar é chamada de Banco
de Dados.
Engenharia de
Software, parte IV:
Bancos de Dados
Algumas vezes, durante este e-book, eu mencionei
a presença de bancos de dados. Acredito que o
conceito básico seja algo mais popular, dado que é
mencionado bastante na cultura pop (quem nunca
viu um filme de ação em que o personagem
principal precisa invadir algum banco de dados
para atingir seu objetivo?).

Basicamente, os bancos de dados são os locais


onde se guardam os arquivos utilizados pelos
programas.

Mas a pergunta mais interessante de se fazer não é


"o que são bancos de dados?", mas "como são
guardados os arquivos nestes bancos?"

Vamos descobrir agora.


Estamos de volta à nossa metáfora do teatro.
Imagine que o banco de dados da nossa peça
teatral é o depósito, local onde serão guardados
todos os elementos do cenário, roupas,
equipamentos de som, instrumentos musicais da
orquestra, etc.

Para acomodar todos esses elementos, a gente


precisa basicamente de três coisas: espaço,
organização e segurança. Espaço para conseguir
acomodar tudo, organização para conseguir retirar
e colocar elementos com agilidade, e segurança
pra garantir a integridade de todo aquele
patrimônio.

Com os dados virtuais, a lógica é a mesma. Os


bancos de dados precisam ser acessados,
modificados, protegidos e analisados com
facilidade. E para garantir isso, os Engenheiros de
software inventaram maneiras de classificar os
dados de acordo com as necessidades de
desenvolvimento de cada programa.
Existem duas categorias gerais que classificam os
bancos de dados. Eles podem ser subdivididos em
Bancos Relacionais (também chamados de SQL) e
Não relacionais (NoSQL)

SQL significa "Structured Query Language", ou


"Linguagem de Consulta Estruturada", que se refere
as regras de estruturação dos dados do Banco
Relacional. Vamos falar mais dele abaixo. NoSQL
vem de "Not only SQL", ou "Não só SQL", referindo-se
aos bancos não relacionais.
Bancos de dados relacionais (SQL)

Este tipo de Banco de Dados funciona por meio de


uma estrutura de tabelas pré-definida. É feito de
forma a facilitar o trabalho quando os dados
utilizados e as trocas de informações que
acontecem são padronizados e consistentes.

Um exemplo de banco de dados relacional é o da


sua instituição financeira. Todas as transações
financeiras se resumem a retirar dinheiro de um
lugar e adicionar em outro. A complexidade aqui
está na quantidade dessas transações que o
servidor consegue suportar em um determinado
período.

Esse é o dilema do que chamamos de


escalabilidade. Nos bancos de dados relacionais,
para escalar, é necessário aumentar a capacidade
de processamento do servidor, o que costuma ser
mais caro. Esse aumento se chama "escalonamento
vertical", que é quando precisamos escalar o
processamento daquela máquina específica.
É como se estivéssemos falando de aumentar o
tamanho da porta do depósito do nosso teatro para
que mais pessoas da equipe técnica possam entrar
e sair ao mesmo tempo transportando elementos.

É menos sobre a quantidade de coisas que cabe em


nosso depósito e mais sobre o quanto de coisas
podemos acessar e modificar ao mesmo tempo.

No mercado, existem diversas soluções focadas em


Bancos de Dados Relacionais. As principais são:

Agora, quando você vir estes nomes em alguma


descrição de cargo, já vai saber do que está sendo
falado.
Bancos de dados não relacionais

Este tipo de base de dados funciona por meio de


uma estrutura mais flexível. São bancos que
possuem documentos independentes que podem
ter arquivos de diversos tipos diferentes.

Um exemplo é o banco de dados do site da


99Hunters. Nele, há imagens, textos, tabelas,
páginas de site, documentos como este e-book,
vídeos, etc.

Não é necessário ter uma estrutura padronizada


para a forma desses documentos, e por isso este
tipo de banco é muito utilizado em situações em
que é necessário armazenar um grande volume de
dados sem estrutura definida.

Outro fator é que ele facilita situações de


desenvolvimento acelerado que possuem muitas
alterações de percurso, como por exemplo em um
produto digital, que vai mudando ao longo do
tempo.
Uma terceira vantagem dos bancos não relacionais
é sua fácil escalabilidade. Caso você precise
aumentar o tamanho do banco, basta contratar
mais espaço, sem a necessidade de aumentar o
poder de processamento da mesma máquina.

Isso é chamado de escalonamento horizontal. Se


você precisa aumentar a capacidade do seu banco
de dados, você contrata uma segunda máquina
para ajudar, e depois uma terceira, quarta, etc.
Cada nova máquina que entra aumenta a
capacidade do seu banco sem demandar uma
revisão do que já estava armazenado
anteriormente. Abaixo, alguns exemplos de sistemas
de bancos de dados não relacionais:
É importante salientar que não existe banco de
dados melhor ou pior, existe o mais adequado para
o seu processo de desenvolvimento. Tanto os
bancos relacionais quanto os não relacionais
possuem suas fortalezas e fraquezas, e as empresas
costumam se utilizar do melhor de cada um.
Inclusive, é muito comum que empresas usem
combinações de Bancos Relacionais e Não
Relacionais de acordo com a área de
desenvolvimento.

Pra finalizar este tópico, compartilho abaixo os


resultados de uma pesquisa feita por um dos
portais mais famosos do universo de software, que é
o Stack Overflow.

Estes resultados mostram os sistemas de bancos de


dados mais utilizadas em 2021. Achei interessante
não só pelos resultados em si, mas porque o gráfico
é útil para identificar mais alguns nomes que são
comumente citados nas descrições de cargos que
atuam com bancos de dados.
2021
Developer
Survey
Stack Overflow Developer Survey 2021

Estamos quase lá. Vamos pro próximo capítulo.


Engenharia de Software,
parte V: Linguagens de
Programação
Nos últimos capítulos em que falamos sobre
Engenharia de Software, nossa preocupação era dar
nomes aos vários elementos que desenvolvedores
utilizam no dia a dia.

Entretanto, sua principal atividade, que é de fato


escrever os algoritmos, é algo que deixamos pra
falar mais adiante. Dessa forma, agora que você já
domina os conceitos principais, entender como
esses conceitos se relacionam vai ser bem mais
simples. Lembra que eu falei anteriormente para
você se imaginar na pessoa de um(a) detetive?

Agora, é o momento de juntar todas as pistas e


resolver o mistério.
Você já deve ter ouvido falar que todas as
instruções executadas por computadores podem
ser resumidas em 0s e 1s, que nós chamamos de
código binário. Isso é 100% verdade.

Absolutamente tudo que seu computador faz pode


ser traduzido em 0s e 1s - essa linguagem binária,
inclusive, tem um nome: Linguagem de máquina.

Veja alguns exemplos:

Oi! = 01001111 01101001 00100001


Como vai você? = 01000011 01101111 01101101 01101111


00100000 01110110 01100001 01101001 00100000
01110110 01101111 01100011 11101010 00111111

Então, se você é um pessoa desenvolvedora, basta


dominar o código binário e pronto, já pode dar suas
instruções para a máquina, certo?

Bem, não é tão simples assim.


Para escrever um simples "Oi!", foram necessários 24
dígitos! Quanto tempo demoraria então para uma
pessoa desenvolvedora escrever este e-book que
você está lendo em código binário? Anos! Seria
absurdamente ineficiente.

Além disso, com um erro simples de digitação, a


coisa inteira pode parar de funcionar. Como
identificar e corrigir estes erros com agilidade? Só
tem zeros e uns na tela! Um pesadelo.

A linguagem de máquina é super clara e eficiente


de entender do ponto de vista de um computador,
mas péssima neste sentido para um ser humano.

Mas... E se inventássemos uma espécie de tradutor,


em que escrevemos algo na nossa língua materna
e essa coisa era traduzida imediatamente para
linguagem de máquina?

Bem, não é tão simples assim.


Um dos grandes pontos da nossa linguagem é a
carga de subjetividade que ela carrega. O que
quero dizer com isso é que quando estamos nos
comunicando, muitas vezes não percebemos a
quantidade de informação não falada que estamos
transmitindo de forma implícita. Deixa eu dar um
exemplo:

Nesta semana eu pedi ao meu irmão para ir ao


mercado comprar pão, queijo e café. Trinta minutos
depois, os alimentos chegaram. Só mais uma
quarta-feira.

Se meu irmão fosse um computador, entretanto, "Vá


ao mercado comprar pão, queijo e café" não seria
um comando completo o suficiente:
Eu precisaria informar ao computador o que é
um mercado;
Precisaria informar ao computador onde ele
está;
Precisaria dar as coordenadas para o mercado;
Precisaria ensiná-lo a se locomover;
Precisaria definir o que era pão, queijo e café;
Precisaria informar qual o tipo de pão, queijo e
café eu queria;
Eu precisaria detalhar o estado que eu queria
que estes alimentos estivessem;
O meu orçamento para a compra;
Meu método de pagamento;
Ensinar como utilizar esse método de
pagamento;
Precisaria informar o que ele faria se não
encontrasse o que eu pedi;
Informar que ele deveria voltar para minha casa
trazendo os alimentos comprados;
E muitas, muitas outras nuances...
O computador, ao contrário do meu irmão, não tem
contexto prévio e não toma decisões com base em
intuição e experiências anteriores. Por esse motivo,
incluir todas as nuances possíveis de uma instrução
em minha língua materna iria resultar numa frase
muito grande e complexa.

Como vocês perceberam, não é tão simples assim.

O que fazer, então?


As linguagens de programação surgiram
justamente para resolver estes problemas. São por
meio delas que escrevemos as instruções que os
computadores conseguem seguir.

Elas foram construídas utilizando-se de regras para


garantir que as instruções sejam ao mesmo tempo
fáceis de compreender, organizar e corrigir pelas
pessoas desenvolvedoras.

Existem diversos tipos de linguagens de


programação. Algumas delas estão mais próximas
da linguagem de máquina, que chamamos de
linguagens de baixo nível, e outras estão mais
distantes, que chamamos de linguagens de alto
nível.

Pra ilustrar, pense o seguinte: uma linguagem de


baixo nível precisa de "pouca tradução". Os
comandos dados por ela são mais próximos do
código binário (linguagem de máquina).
Já a linguagem de alto nível passou por um
processo maior de "processamento", por assim dizer.
É como se um comando feito por ela já resumisse
diversos comandos menores que teriam que ser
detalhados um por um numa linguagem de mais
baixo nível.

Vou dar um exemplo. Uma das coisas que é super


comum fazer numa linguagem de alto nível é criar
uma variável e associar um valor a ela. Aqui,
criaremos uma variável chamada idadePedro e
associaremos a ela o valor da minha idade, que é
27.

var idadePedro = 27

Se fôssemos fazer esse mesmo processo numa


linguagem de baixo nível, teríamos que pensar em
quanto espaço na memória esta variável vai
ocupar, reservar este espaço na memória, definir a
variável e associar um valor a ela. Na linguagem de
alto nível, todo esse passo a passo já está incluso no
código "var". (Em tempo: Há exceções para estes
casos, ok? Algumas linguagens de alto nível exigem
este nível de detalhe também).
É importante deixar claro que não existe melhor ou
pior neste sentido. As linguagens de baixo nível são
utilizadas, por exemplo, em softwares mais próximos
do hardware, como programas que controlam as
funções dos seus eletrodomésticos, computadores
de bordo de carros, softwares que controlam robôs
industriais, etc. Entretanto, por serem mais
complexas, essas linguagens estão sendo menos
utilizadas ao longo do tempo, e tendem a ser
descontinuadas e substituídas pelas de alto nível.

As linguagens de alto nível são mais utilizadas em


aplicações digitais, websites, softwares de
computador, aplicativos de celular, e muitos outros,
e tendem a se popularizar cada vez mais.

Níveis das linguagens

Alto nível

Baixo nível

Binário
Na medida que a tecnologia foi evoluindo, pessoas
desenvolvedoras foram percebendo oportunidades
de deixar a escrita de seus códigos mais eficiente, e
com isso foram sendo criadas diferentes linguagens
de programação, cada uma otimizada para um tipo
de aplicação diferente.

Existem milhares de linguagens hoje no mercado, e


a escolha delas vai de acordo com a preferência e
também da aplicação dos produtos daquela
empresa. Há linguagens mais utilizadas no front End,
linguagens mais utilizadas no back end, entre outros
exemplos. Vejam alguns nomes de linguagens
famosas na imagem abaixo.
Existem também linguagens que são pensadas
para desenvolvimento web e linguagens que são
pensadas para o desenvolvimento mobile (para
aplicativos de smartphone), assim como linguagens
híbridas, que valem para os dois.

Quando você vê uma vaga aberta para uma


pessoa desenvolvedora de software, normalmente é
citado nesta vaga quais linguagens farão parte do
dia a dia daquela pessoa.

Na próxima página, vou deixar um gráfico com as


linguagens mais utilizadas no ano de 2021, daquela
mesma pesquisa do Stack Overflow que usei lá em
cima. Assim, fica mais fácil identificar os nomes que
você vê nas vagas divulgadas do LinkedIn.
2021
Developer
Survey
Stack Overflow Developer Survey 2021
Engenharia de Software,
parte VI: Bibliotecas e
Frameworks
Estamos de volta à nossa metáfora do teatro. As
pessoas engenheiras de software, que escrevem o
roteiro, colocam a mão na massa.

Elas começam a escrever a introdução do


espetáculo, só que encontram um problema que
está deixando o trabalho de escrita bem árduo e
cansativo:

Se elas citam que um ator precisa ir pro centro do


palco, elas precisam explicar o que é um ator, o que
é o palco e o que é centro. Se em algum momento
uma música for tocada pela orquestra, elas
precisam compor esta música que é tocada do
zero.
Além disso, muitas vezes o roteiro de uma cena, que
é o principal, está super bem escrito, mas tem um
probleminha acontecendo na orquestra que tá
estragando tudo. O processo se torna repetitivo,
cansativo, complexo e cada vez mais ineficiente.

E aí surge a dúvida: Com tantos espetáculos de


teatro já escritos no passado, será que não dá pra
aproveitar algum elemento desses outros pra deixar
nosso trabalho mais fácil?

A resposta é sim. São as chamadas Bibliotecas e


Frameworks.

O grande trunfo da internet foi possibilitar o


compartilhamento de informações em escala
global. Isso impactou praticamente tudo o que veio
depois dela, mas recortando para o contexto deste
e-book, impactou especificamente o mercado de
desenvolvimento de software.
Uma consequência muito visível deste impacto é o
fato de que hoje ninguém mais escreve código do
zero. Se existe algum desafio que é encontrado
repetidamente no processo de desenvolvimento, a
solução dele muito provavelmente já foi
compartilhada de forma gratuita online. E esse
compartilhamento possibilita um avanço muito
mais acelerado do desenvolvimento das
aplicações.

As bibliotecas e os frameworks são a materialização


do compartilhamento desses conhecimentos, e
agora vamos entender melhor cada um.
Bibliotecas

Nosso ator está no centro do palco, e vai começar a


música de abertura do nosso espetáculo. Em vez de
compor a música, nós vamos colocar, no nosso
roteiro, que a Sonata ao Luar, de Beethoven, vai ser
reproduzida como música de abertura. A Orquestra
então já vai receber da produção todas as
partituras prontas desta música, que vieram direto
do arquivo de Beethoven, e vai se preocupar
somente com a performance.

O mesmo acontece no nosso código. É como se eu


estivesse colocando um link para a biblioteca das
músicas de Beethoven, direcionando para as
partituras de Sonata ao Luar.

No desenvolvimento de software, bibliotecas são


conjuntos de códigos que trazem um problema já
resolvido e você pode simplesmente incorporar
essa solução no seu programa.
Frameworks

Já os frameworks seguem uma lógica parecida


com a das bibliotecas, porém são mais
abrangentes em sua atuação. Vamos aprofundar.

Framework é uma palavra que é traduzida para


"estrutura". Ou seja, é uma espécie de biblioteca
maior que estrutura as bases antes mesmo de você
começar a escrever seu código.

No nosso roteiro do teatro, enquanto a biblioteca é


uma música pronta que a gente utiliza no nosso
roteiro, o Framework seriam as próprias regras do
roteiro de teatro.

Estamos falando do que estabelece o que são os


atores e atrizes, o palco, o que significa abrir e
fechar as cortinas, que há uma orquestra tocando
ao vivo, que tem um sino que avisa quando
começar, etc.

Com essas regras mais gerais, se escreve qualquer


teatro.
O conceito de Framework no conceito de
desenvolvimento é o seguinte:

"O framework é um conjunto de códigos genérico


que tem o objetivo de prover uma estrutura para
desenvolvimento das novas funções específicas do
seu código." Veja a ilustração.

Biblioteca Seu código

Seu código Framework

Bibliotecas se conectam em seu código. Seu código se conecta em um


framework.

Assim como as linguagens, o Frameworks e


Bibliotecas são comumente citados das descrições
de cargo, e por isso tiramos um tempinho pra falar
deles no detalhe. Veja abaixo os mais utilizados
segundo a pesquisa do Stack Overflow:
2021
Developer
Survey
Stack Overflow Developer Survey 2021

Frameworks
2021
Developer
Survey
Stack Overflow Developer Survey 2021

Bibliotecas
Engenharia de Software,
parte VII: Arquitetura e
Design de Software
Deixamos o início para o final. O primeiro passo do
desenvolvimento de qualquer software é fazer um
planejamento. Isso se refere ao processo de tomada
de decisões que vai definir alguns aspectos
fundamentais, como:

De que maneira o programa será montado e


quais os principais componentes de sua
estrutura;
Quais linguagens de programação serão
utilizadas;
Qual será o tipo de banco de dados e onde ele
ficará armazenado;
Como o servidor será organizado, etc.

Todo esse processo de planejamento é chamado


de Arquitetura de Software.
Da mesma forma que uma pessoa arquiteta
tradicional entrega um projeto para ilustrar de
forma visual o resultado, arquitetos de software
entregam fluxos e diagramas para facilitar a
visualização do programa que será escrito. Deixa eu
te dar um exemplo:

Fonte: https://in.pinterest.com/malikrashid/
Naturalmente, existem muitos padrões de
organização que podem ser utilizados como base
para a construção de aplicações. E como estes
padrões são comumente citados nas descrições
dos cargos de arquitetura de software, vou citar os
mais utilizados abaixo:

MVC (Model View Controller)


Layer (Camadas)
Microsserviços
Client server
Service-Oriented Architecture (SOA)
Depois que todas as decisões de arquitetura já
estão tomadas, é hora de implementar essas
decisões junto à equipe de desenvolvimento. Esse
segundo passo é o que chamamos de Design de
Software.

Essa parte também tem uma natureza de


planejamento, mas com um pouco mais de mão na
massa. É ali que se organiza, num nível mais
detalhado como será construído o sistema:

Organização do código;
Divisão das responsabilidades (o que cada parte
do código vai realizar);
Como as diferentes partes da aplicação se
conversam;
Especificações e padrões de desenvolvimento;
Estrutura das APIs;
Melhores práticas;
Documentação.

O foco desta parte é garantir a produtividade e a


experiência de trabalho das pessoas
desenvolvedoras.
Pronto. Depois de seis capítulos, enfim acabou a
parte de Engenharia de Software. Você, que ainda tá
aqui na leitura, já é praticamente um profissional da
tecnologia.

A partir de agora, vamos falar de outras importantes


carreiras do universo de software que atuam direta
ou indiretamente ligadas ao processo de
desenvolvimento.

A primeira delas é chamada de DevOps. Vamos lá.


DevOps: O elo entre todas
as partes
Pense novamente no nosso teatro, e tente
responder as seguintes perguntas:

Quem decide em qual lugar será a exibição do


espetáculo?
Quantos ingressos podem ser vendidos?
Quantas vezes a mesma peça pode ser exibida
no mesmo dia sem prejudicar a saúde de atores
e atrizes?
Que esses vão ter um camarim para se preparar
para cada exibição? E que a equipe de produção
vai estar lá no horário correto?
Que vai ter comida para toda a produção e
elenco estarem bem alimentados na hora do
espetáculo?
Que os ensaios acontecerão nos horários
previstos?
Que a orquestra terá todas as partituras
impressas?
Que o a sonorização já vai ter sido testada na
hora do show e que as baterias dos microfones
estarão carregadas?
Eu poderia escrever aqui mais 10 páginas de
perguntas sobre ações que precisam ser tomadas
na parte de planejamento para garantir que o
espetáculo aconteça sem problemas. Mas o ponto é
que é necessário que alguém pense nisso.

No mundo da organização de eventos, como o


nosso teatro, normalmente quem coordena todas
essas partes é a pessoa produtora. Em alguns casos
é a chamada pessoa "promoter", às vezes é o
próprio diretor ou diretora da peça, mas as
atribuições continuam as mesmas: Garantir a
infraestrutura e a harmonia entre as diferentes
equipes para atingir o o resultado final esperado.

No mundo de tech, também há essa figura: A


pessoa que trabalha em DevOps tem como função
garantir que tudo esteja correndo bem no processo
de desenvolvimento, tanto no Front End quanto no
Back End das aplicações. Mas antes da gente se
aprofundar, eu vou contar pra vocês a história de
como surgiu essa profissão.
A história da Nuvem

Até meados da década de 90, a maioria das


empresas trabalhava com servidores locais. Em
termos práticos, isso significava que os servidores
com os quais os computadores clientes se
conectavam ficavam dentro dos próprios escritórios
dessas empresas.

Vamos usar uma empresa com um nome fictício


para exemplificar, "Corporação X". Se eu entrasse no
site da Corporação X, eu estava me conectando a
um computador que estava fisicamente localizado
dentro dos escritórios da empresa.

Esse computador tinha que ser mantido ligado a


todo instante para que o site se mantivesse no ar,
deveria estar sempre limpo, num ambiente
climatizado e organizadinho, recebendo
atualizações periódicas no seu hardware (compra e
instalação de componentes mais novos e potentes).
Normalmente esses servidores ficavam localizados
dentro da área de TI (tecnologia da informação) da
empresa, e as pessoas que cuidavam de toda essa
manutenção eram as pessoas técnicas
especialistas em redes e sistemas de informação.

A área de TI era responsável por manter os sistemas


da empresa no ar, os servidores saudáveis, limpos e
organizados, além de atender todas as demandas
internas do escritório.

O grande problema desse esquema era o alto custo


e complexidade de manutenção desses servidores.
Isso levava muitas empresas a negligenciar alguns
processos para economizar, especialmente em
épocas de crises econômicas.

As pessoas de TI eram acostumadas a fazer


malabarismos para manter os servidores
funcionando, e atualizações mais estruturais
costumavam acontecer somente quando alguma
coisa dava muito errado.
Além desse problema de manutenção, havia
também problemas relacionados à escalabilidade.
Pense, se a base de clientes da empresa está
crescendo e se faz necessário uma expansão dos
servidores, o que fazer se o escritório da empresa
não tiver mais espaço?

Neste exemplo, um problema de aumento de escala


virtual se tornava também um problema de
infraestrutura física. O que fazer, alugar mais um
escritório? Fazer uma reforma? Quanto iria custar
isso tudo? E quanto tempo iria demorar pra ficar
pronto? Nesse tempo, a infraestrutura atual iria
suportar o crescimento da base de clientes?
O fato é que essa conta era sempre difícil de fechar,
especialmente em empresas menores.

E foi nessa dor que as empresas mais influentes do


ramo da tecnologia, as chamadas "Big Techs", viram
uma oportunidade de negócio.

Empresas como Amazon, Google, Microsoft, IBM,


Oracle e outras gigantes decidiram investir uma
quantidade imensa de recursos para construir uma
infraestrutura de servidores para competir com os
servidores locais.

Os servidores dessas gigantes estariam sempre


atualizados com as últimas tendências
tecnológicas, iram ser os mais potentes, com maior
capacidade, segurança e velocidade, e seriam
capazes de servir a milhões de empresas
simultaneamente.
Essa nova infraestrutura, que ainda hoje está em
constante expansão, recebeu um nome que se
popularizou no mundo inteiro: Computação de
nuvem.
A nuvem, que tanto ouvimos falar, nada mais é do
que um serviço de aluguel de computadores. As
empresas, que antes tinham que lidar com toda a
complexidade de manutenção de seus servidores,
poderiam agora simplesmente terceirizar toda essa
operação para um destes serviços de computação
em nuvem.

Os benefícios de fazer essa transição eram


gigantescos. O primeiro era a segurança, que agora
passava a ficar na responsabilidade dos
prestadores de serviço. Com essa responsabilidade,
os serviços de nuvem ficaram muito bons em
manter os arquivos dos clientes seguros. Os
datacenters, complexos onde ficam localizados os
computadores de nuvem, são construções
pensadas para manter a integridade dos servidores
em primeiro lugar, com restritos protocolos de
circulação de pessoas, climatização e segurança
física e digital.

Além disso possuem redundância, ou seja, os


arquivos da corporação X estariam presentes em
diversos datacenters ao mesmo tempo, podendo
ser acessados e recuperados mesmo se um deles
parasse de funcionar.
O segundo benefício de mudar para nuvem era a
fácil escalabilidade. Por exemplo, se sua empresa
precisasse de mais espaço para guardar seu
crescente banco de dados, bastava contratar um
pacote de computadores com mais espaço. Se
você precisasse de mais processamento, estava a
um clique de distância.

E uma novidade que é específica da nuvem é a


escalabilidade automática. Pense comigo: uma
empresa de varejo, por exemplo, vai ter um pico de
vendas no seu site em épocas de festas, como natal
e ano novo. Com servidores locais, a empresa teria
que investir numa infraestrutura para suportar o
número de acessos mais alto para que o site se
mantivesse estável.

Essa mesma estrutura, entretanto, ficaria


subutilizada durante os outros períodos do ano em
que o número de acessos é menor, gastando,
inclusive, energia e tempo de manutenção.
Esse problema não acontece na nuvem. Essa
mesma empresa, utilizando-se da nuvem,
contrataria um pacote que adicionaria mais
servidores automaticamente na medida que o
número de acessos fosse crescendo, e diminuiria
também esse número automaticamente quando os
acessos diminuíssem.

Isso gera uma economia de recursos para a


empresa e também os serviços de nuvem, que
podem usar esses computadores que estariam
ociosos para suprir a demanda de outras empresas.

Além da segurança e escalabilidade, os servidores


em nuvem possuem também uma facilidade maior
de acesso.

Arquivos mais sensíveis das empresas com


servidores locais não costumavam ser
disponibilizados para a internet. Desta forma, um
profissional da área financeiro, por exemplo,
precisaria estar presencialmente no escritório para
realizar seu trabalho.
Com a nuvem, não mais. A segurança
disponibilizada pelos servidores permite que mesmo
arquivos sensíveis possam ser armazenados na
nuvem e acessados de qualquer máquina, abrindo
caminho para a expansão dos regimes de trabalho
home office, que hoje também são super populares.

Todos esses benefícios fizeram a computação de


nuvem ser um sucesso absoluto. Para você ter uma
ideia, hoje, segundo dados do cloudawards.net, 94%
das empresas usam serviços de nuvem, e 48% dos
negócios deixam os dados mais importantes por lá.

E a tendência dos serviços de computação na


nuvem é de cada vez mais crescimento.

Mas onde eu quero chegar com essa história de


nuvem? Já te conto.
Voltando ao Devops

Lembra das pessoas profissionais de rede que eu


citei no início da história da nuvem, que eram
responsáveis pela manutenção dos servidores
locais?

Com a transição para os serviços de nuvem, essas


pessoas precisaram se atualizar à nova realidade, e
foi aí que começou a surgir a profissão DevOps.

A pessoa que cuida de DevOps no ambiente de


engenharia de software tem como principal missão
garantir a fluidez do processo de desenvolvimento
através da criação de ferramentas para facilitar o
monitoramento e correção de problemas de
infraestrutura, segurança, saúde dos servidores, e
escalabilidade das aplicações.

Por exemplo, DevOps auxilia no processo de


definição de como os servidores serão utilizados, na
criação de ferramentas para monitorar sua saúde e
estabilidade e auxilia no processo de tomada de
decisão de contratação ou não de mais
capacidade na nuvem.
Também ajuda as pessoas programadoras do front
e do back end a garantir que os códigos que
atualizam as aplicações serão colocados na nuvem
de maneira escalável. Isso tem também, inclusive,
relação com a arquitetura de software e com as
escolhas sobre a arquitetura e organização do
código.

Ter um código escalável significa ter uma


organização bem feita, uma documentação bem
construída (para facilitar o entendimento de
pessoas que entrarem depois), não ter efeitos
colaterais (cada parte do código tem uma
responsabilidade bem definida e alterações em
uma parte da aplicação não interferem em outras),
legível, de fácil manutenção, entre outros fatores.

Abaixo, vou colocar mais um gráfico da pesquisa do


Stack Overflow que fala sobre os principais serviços
de nuvem utilizados. Como são também nomes
presentes nas descrições de cargo, vale conhecer.
2021
Developer
Survey
Stack Overflow Developer Survey 2021

Vamos então para o próximo assunto.


QA: Garantia de
qualidade
A responsabilidade de se colocar uma aplicação no
ar é gigantesca. Muitas vezes, a diferença entre o
sucesso e o fracasso comercial de um produto é a
integridade de seu código. Inclusive, tenho uma
história para ilustrar isso.

Em 2020, depois de muitos anos de espera e muitas


campanhas de marketing que viralizaram na
internet, Cyberpunk 2077, um jogo eletrônico, foi
enfim lançado.

Esse jogo estava sendo muito esperado por toda a


comunidade de fãs de jogos no mundo inteiro, e a
expectativa para o seu lançamento estava
altíssima, especificamente porque o lançamento já
havia sido adiado três vezes, e a promessa era que
o dia 10 de dezembro seria a data definitiva.
O que sucedeu foi um dos maiores desastres da
história dos games. Por conta da pressa para o
lançamento, muitos aspectos da programação dos
jogos foram negligenciados.

O jogo chegou então às prateleiras com diversos


erros de código que causavam problemas de
jogabilidade, frustrando milhões de jogadores que
estavam animados para adquirir o tão aguardado
"jogo do ano".

Ao final de abril do ano seguinte, 5 meses depois do


lançamento, o jogo já acumulava um prejuízo de
mais de 50 milhões de dólares. Acontece que os
diversos erros de jogabilidade geraram uma onda
de pedidos de reembolso das compras, além de
também ter virado notícia, criando um ciclo vicioso
e uma má reputação que diminuiu o volume de
vendas drasticamente.

A empresa que desenvolveu o jogo, ao longo dos


meses seguintes, lançou algumas atualizações que
foram mitigando os problemas no código, mas o
estrago já havia sido feito.
Os erros de código que eu citei na história acima
têm um nome popular: Bug.

O que são Bugs

"Bug", em português, quer dizer inseto, e se refere a


todo erro de programação que causa problemas na
execução de algum programa de computador.

O nome veio de uma programadora da marinha


dos EUA chamada Grace Hopper, que em 1947 usou
essa palavra para explicar um problema de
funcionamento no computador da Universidade de
Harvard chamado "Mark II". Aparentemente, um
pequeno inseto ficou preso nos contatos de um
componente eletrônico e causou os tais problemas.

É super comum, no processo de escrita de um


código, o aparecimento de bugs. Diante da
complexidade do desenvolvimento de alguns
programas e a quantidade de diferentes
profissionais atuando no mesmo programa, vez ou
outra surgem algumas "pontas soltas".
Existem bugs que são menos urgentes, erros simples
ou raros que não afetam de forma significativa a
execução de um programa, e bugs mais urgentes,
que precisam ser solucionados com prioridade para
garantir o comportamento esperado de uma
aplicação.

No mundo de tecnologia, existe uma equipe


especializada em garantir a integridade dos
códigos dos programas, que é a equipe de QA, que
vem do inglês Quality Assurance, traduzido para
garantia de qualidade.

O dia a dia da equipe de QA se resume a executar


as aplicações e testar cenários possíveis em que
bugs podem surgir, sugerindo correções para a
equipe de desenvolvimento. Quanto mais bugs são
identificados e corrigidos antes da disponibilização
ao público, melhor. Vou dar um exemplo.
Uma vez, eu ouvi num vídeo de Youtube a história de
um desenvolvedor que resolveu enviar para um
amigo a quantia de -R$100 dólares (menos 100
dólares).

A transação invertida foi aprovada, e o


desenvolvedor acabou retirando 100 dólares do
amigo ao enviar o dinheiro. Esse é o tipo de erro que
a equipe de QA procura apontar.

Sem uma análise profunda da equipe de QA, que


pode levar tempo, não se recomenda que a
aplicação seja disponibilizada ao público.

Entretanto, se milhões de dólares estão em jogo e


há pessoas pressionando a equipe de
desenvolvimento para lançar o produto rápido,
pode ser que QA não consiga realizar um trabalho
bem feito. E foi exatamente isso que aconteceu na
história do jogo eletrônico CyberPunk 2077. O jogo
chegou ao mercado repleto de bugs, muitos deles
que prejudicavam por completo a jogabilidade. E
por isso, foi um desastre comercial. Vamos então ao
próximo assunto!
Dados: O novo recurso
mais valioso
Há uma fala famosa no meio de tech que diz o
seguinte: Dados são o novo petróleo.

Essa fala ilustra uma tendência que cresce


exponencialmente a cada dia, que é utilizar dados
coletados por meio do comportamento de quem
interage com o software para tomar decisões. Isso
tem um valor gigantesco não só comercial, mas
também científico.
Por exemplo, com diversas pessoas usando
aplicativos de GPS simultaneamente enquanto
dirigem, algoritmos começaram a identificar
padrões de congestionamentos em regiões
específicas das cidades. A partir disso, sugeriam
novas rodas às pessoas motoristas, mitigando o
problema.

Se você pesquisa no Google, por exemplo, por um


novo creme de cabelo, logo mais você começa a
receber anúncios de empresas que vendem esses
produtos.

Outro exemplo é a escolha de conteúdo que


aparece para você nas redes sociais ou aplicativos
de vídeo, como a Netflix. Com base no que você
mais gosta de ver, as redes vão curando o conteúdo
e mostrando mais daquilo que você mais gosta.

Esses são só três exemplos, mas hoje somos


rodeados de milhões de coisas que só são possíveis
pelo uso de dados.
Existem várias carreiras de dados. Não vamos nos
aprofundar muito em cada uma delas, e vale citar
inclusive que há funções que se misturam, mas vou
fazer uma breve descrição para que fique claro o
que elas fazem:

Ciência de dados

Cientistas de dados são profissionais especializados


em transformar uma massa de dados bruta num
resultado de fácil entendimento. Esses dados
podem vir estruturados ou não estruturados, e os
cientistas usam seus conhecimentos de
matemática, estatística, ciência da computação e
programação para limpar, tratar e organizar os
dados. Em seguida, usam ferramentas para
analisar estes dados e descobrir soluções para
desafios do negócio (fonte: Data Science Academy).

Engenharia de dados

De forma simplificada, engenheiros de dados são os


profissionais responsáveis por arquitetar a coleta,
armazenamento, segurança e confiabilidade dos
dados. Eles garantem que os instrumentos de coleta
desses dados são confiáveis, para que o resultado
das análises que serão feitas pelos cientistas de
dados façam sentido. Também garante que os
dados sejam enviados aos cientistas ou a softwares
de forma regular.

Muitas aplicações utilizam de dados para fazer


análise preditiva, ou seja, prever um futuro
comportamento com base no histórico de dados
coletados. É papel do Engenheiro disponibilizar
esses dados por meio de APIs para essas
aplicações. (Fonte: Data Science Academy)

Pense na seguinte metáfora: Se a pessoa cientista


de dados for quem faz a previsão do tempo, a
pessoa engenheira é quem garante que o
termômetro, o medidor de umidade, de velocidade
do vento e os satélites estão funcionando
corretamente e enviando as informações para
análise.
Business Intelligence

Business Intelligence, também chamado de BI (biái),


é traduzido para inteligência de negócio e é uma
profissão inerente ao ambiente corporativo.

O papel de BI é utilizar das informações coletadas


pelas equipes e ferramentas do negócio para fazer
análises e propor decisões geralmente relacionadas
ao aspecto comercial. A presença de profissionais
de BI é muito comum em áreas como marketing e
vendas (mas não só nestas).

Com os conhecimentos em estatística, visualização


de dados, banco de dados e programação, esta
pessoa procura deixar as decisões de negócio mais
embasadas e menos enviesadas, construindo
relatórios e apresentações para pessoas decisoras.
Inteligência Artificial

Inteligência artificial é um campo de estudo que


abarca técnicas de processamento de dados e
criação de algoritmos para que o computador tome
decisões de forma autônoma, procurando replicar
seres humanos.

Diversas empresas de tecnologia se utilizam de


inteligência artificial para atingir seus objetivos:
softwares de carros autônomos, reconhecimento de
imagens e voz, casas inteligentes, entre muitos e
muitos outros.

Machine Learning

Machine Learning, ou aprendizado de máquina, é


um dos ramos de estudo dentro da área de
inteligência artificial. A ideia do machine learning é
utilizar uma estrutura pré-organizada de variáveis
para rodar análises e chegar a resultados melhor
calibrados na medida que a máquinia é alimentada
com mais dados. Uma utilização dessa ferramenta
pode ser vista, por exemplo, no cálculo do score de
crédito de uma pessoa.
Com base em variáveis como idade, salário, valor
de faturas de cartão, inadimplência e outros, um
algoritmo de machine learning vai calcular qual é o
melhor score para determinada pessoa. Quanto
mais pessoas forem alimentando essa base de
variáveis, melhor calculado fica o score de crédito.

Deep Learning

O Deep Learning, de certa forma, é um


aprofundamento do machine learning. Trata-se de
uma técnica de tratamento de dados que utiliza
redes neurais, que são uma simulação digital dos
neurônios do cérebro humano, para a tomada de
decisões.

Ele é utilizado em situações em que não há uma


estrutura pré-combinada de variáveis, como no
exemplo do score de crédito, em que usamos idade,
salário, etc, para fazer o processamento.
Para ilustrar, veja o exemplo:

Se você mostra uma imagem de um cachorro e de


um gato para o computador e dá a instrução para
que ele identifique qual é qual, ele deve ter
dificuldades de fazer isso na primeira vez.
Compreensível. Daí, você indica que o gato é a
imagem da direita e o cachorro a imagem da
esquerda e logo em seguida mostra para o
computador mais duas imagens, de um cachorro e
gatos diferentes. Dessa vez, a máquina pode até
não acertar, mas vai dar um palpite melhor do que
a primeira vez.

Esse ciclo, quando repetido milhões de vezes, faz


com que a máquina aprenda a deduzir muito
melhor até do que um ser humano o que é um gato
e um cachorro em uma foto. E o caminho que ele
utiliza para tomar essa decisão é o que chamamos
de rede neural. Isso é o principal ponto do Deep
Learning.
Essa habilidade de aprender a reconhecer padrões
por meio de milhões de repetições tem aplicações
infinitas em diversas áreas.

É por meio de deep learning que a sua rede social


consegue identificar seu rosto e de seus amigos nas
fotos. Toda vez que você é perguntado por uma
aplicação "É você mesmo que está na foto?", ou
ainda "Você esteve no Mc Donalds ontem?", você
está na verdade dando sua contribuição para o
treinamento daqueles algoritmos.

Big Data

Big Data é uma área de dados focada em viabilizar


a análise de bases de dados massivas. É uma área
que ganhou notoriedade devido à expansão
exponencial do volume de dados utilizados na
internet ao longo das últimas décadas. Uma pessoa
de Big Data se preocupa em garantir a capacidade
de uma empresa de armazenar, processar e
categorizar bancos de dados estruturados e não
estruturados (relacionais e não relacionais, como já
aprendemos).
Cybersegurança:
proteção dos sistemas
Cybersegurança é um campo de estudo
responsável por garantir a proteção dos sistemas
de computador contra roubo ou danos no
hardware, software ou dados eletrônicos, bem como
a interrupção ou desorientação dos serviços que
fornecem (Wikipedia).

Com o crescente número de dispositivos


conectados via bluetooth e wi-fi em nossas redes, é
comum que surjam vulnerabilidades. E grupos de
hackers mal intencionados costumam se apropriar
dessas vulnerabilidades para cometerem crimes
cibernéticos.

As pessoas profissionais de cybersegurança são


responsáveis por desenvolver ferramentas de
proteção contra esses ataques.
Gestão de Tech: A última
peça do quebra-cabeça
Chegamos ao último capítulo de nosso e-book.
Nesta jornada, passamos por todas as grandes
áreas de tecnologia, dando enfoque para as que
estão mais próximas do dia a dia da pessoa
recrutadora.

A última área dessa nossa jornada é a gestão de


tecnologia. Diferentemente dos modelos
tradicionais de gestão de times, projetos de
tecnologia surgiram com particularidades que
implicavam em algumas necessidades especiais.

Um exemplo é a necessidade de alinhamentos


constantes, dado que vários desenvolvedores
estavam operando constantemente o mesmo
código. Outro fator é a própria natureza dos
negócios de tecnologia, as chamadas startups do
Vale do Silício. Por serem negócios em crescimento
e com mudanças aceleradas, era necessário uma
forma de gerir times que fosse mais flexível e mais
ágil que os modelos tradicionais.
Para se adequar a essas demandas de gestão,
foram sendo criadas e popularizadas ao longo do
tempo no mercado de tecnologia as chamadas
metodologias ágeis.

Essas metodologias são uma combinação de uma


certa mentalidade e cultura que deve ser
implementada pelos gestores com algumas
ferramentas de acompanhamento.

Dentro das principais metodologias ágeis, podemos


citar o Scrum, que utiliza-se de um planejamento de
atividades pensado para ser executado dentro de
uma janela de dias de trabalho chamada Sprint,
além da assimilação de alguns papeis para a
equipe para auxiliar na gestão dos projetos.

Temos o Lean, que pode ser traduzido para "enxuto",


e é indicado para startups e linhas de produção
com o objetivo de maximizar a eficiência e
minimizar o desperdício de recursos na execução de
um projeto.
Outra metodologia famosa é o Kanban, em que as
atividades são separadas em TO DO, DOING e DONE
(a fazer, fazendo e já feito), o que auxilia na
visualização do progresso do time como um todo e
também com o controle do progresso de tarefas
específicas.

Vale inclusive, pontuar, que muitas vezes o time usa


uma combinação de várias metodologias ágeis
para fazer sua gestão. Aqui na 99Hunters, por
exemplo, usamos Kanban + Scrum.

Além dessas metodologias que eu citei acima,


existem muitas outras pensadas para casos
específicos. E muitos profissionais são
frequentemente contratados para garantir o
andamento e controle de tarefas dentro de uma
metodologia específica.

Voltando à nossa metáfora do teatro, a pessoa


gestora de tecnologia é quem dirige a peça.
Garantir a harmonia dentro de uma equipe e entre
diferentes equipes é um trabalho que exige uma
visão do todo e uma tomada de decisão assertiva.
Epílogo
Uma salva de palmas reverbera no teatro enquanto
o público se levanta para reverenciar os atores,
atrizes e orquestra que estão no Front End. No Back
End, um programa começa a contagem regressiva
para fechar as cortinas do teatro assim que todos
voltarem para os bastidores.

DevOps, nossa pessoa produtora, já está na


bilheteria junto a Dados conferindo a lotação da
próxima apresentação ao mesmo tempo que se
comunica com designers, maquiadores, atores,
atrizes e produção por meio de APIs para garantir
que tudo estará no lugar certo na hora certa.

Nossa pessoa Gestora de tech se emociona num


canto com a qualidade da entrega enquanto, do
lado de fora do teatro, QA e Produto fazem um
brinde a mais um trabalho concluído.

"Saúde!", eles dizem a uma senhora que, vindo da


saída do teatro, atravessa a rua.

"Saúde!", responde Celeste. Ela agora sabe o que fez


aquele formulário da aula de inglês.
Fico muito feliz de você ter chegado até o final deste
material. O mundo de tecnologia é algo incrível, e
quanto mais conhecemos o que faz cada
profissional ali nos bastidores, mais fácil fica nossa
comunicação com essas pessoas no contexto de
recrutamento e seleção.

Se você ainda tem dúvidas e/ou gostaria de se


aprofundar mais em algum dos tópicos citados por
aqui, fique à vontade pra entrar em contato com a
gente pelo meu e-mail: pedro@99hunters.com.br.

Não se esqueça de acessar nosso blog e nossas


redes sociais que estão na última página: Temos
muito conteúdo lá sobre recrutamento para auxiliá-
los no dia a dia.

Acompanhe nossas comunicações para


receber materiais e templates de recrutamento
para outras áreas. E até a próxima! 😉
Sobre o autor

Pedro Ribeiro
Especialista de Marketing
na 99Hunters.

Começou sua carreira como professor de língua


portuguesa e literatura e passou por diversas áreas,
como editorial, produção audiovisual, vendas (onde
atuou como closer e gerente comercial), e Marketing
Digital. Hoje, trabalha aqui na 99Hunters com produção
de conteúdos focados na parte de negócios.

O
Este é um e-book gratuito, distribuído pela 99Hunters.
Mais informações em blog.99hunters.com

Você também pode gostar