Vous êtes sur la page 1sur 63

The Cathedral and the Bazaar: o que aprendemos

na faculdade realmente vale para indústria?

1
Agenda
■ Porque essa palestra?
 Visão de ex-alunos sobre a graduação
 Como melhor se preparar para “pós-formatura”
 O que é de se esperar na indústria

■ Tópicos:
 O que aprendemos na graduação, é o que realmente
deveríamos aprender?
 O que estudar para entrevistas?
 O que as empresas esperam?

2
O que aprendemos na graduação
■ Graduação:
 BCC
➔ 4 anos dentro da faculdade
 EnC
➔ 5 anos dentro da faculdade

■ O que aprendemos durante todo esse tempo?


 Matérias básicas:
➔ Cálculo, GA, Probabilidade & Estatística, …
 Optativas:
➔ Administração de empresas, sociologia, filosofia, …
 “Estranhas”:
➔ Práticas esportivas, Comunicação & Expressão, ...

3
O que aprendemos na graduação
■ Matérias de computação:
 Computação básica:
➔ Algoritmos, Estruturas de Dados, ORI, ..
➔ Orientação a objetos, …

 Teoria da computação:
➔ Lógica digital, Teoria de Grafos, LFA, ...
 Programação:
➔ C, C++, Java, Delphi, ...
➔ Prolog, Lisp, ...

➔ Assembler, VHDL, …

 Engenharia de Software:
➔ Introdução a Sistemas de Informação, Engenharia de
Software, Lab. Engenharia de Software, …
➔ Alguns tópicos mais específicos (gerenciamento de projetos,

processos, metodologias, etc).

4
O que aprendemos na graduação
■ Matérias mais específicas:
 Bases de dados:
➔ SQL, Normalização, modelagem, transações, …
➔ Oracle, DB2, MySQL, ...

 Sistemas operacionais:
➔ Sistemas operacionais, redes de computadores, Lab. SO,
Lab. Redes, …
➔ Arquitetura de computadores, Lab. Arquitetura, …

➔ Compiladores e Lab. Compiladores, ...

 ...

5
O que aprendemos na graduação
Resumindo, o que aprendemos na graduação??

???

6
O que aprendemos na graduação?
■ Curso de graduação:
 Noções de principais tópicos.

 Vamos ver com mais detalhes a seguir...

7
O que aprendemos na graduação?
■ Matérias básicas:
 Matemática:
➔ Cálculo, Cálculo numérico, GA:
- Em 90% de casos, após passar em todas as provas, os
conhecimentos adquiridos nunca mais serão utilizados.
- Em outros 10% de casos, esses conhecimentos serão essenciais.

➔ Onde que se aplica?


- Algumas entrevistas para emprego;
- Empresas que trabalham no ramo (softwares específicos, otimização
de algoritmos, projetos mais sofisticados, computação de alto
desempenho);
- Desenvolvimento de algoritmos (inteligência artificial, modelagem do
ambiente, projetos de alto desempenho, roteamento);
- Pós-graduação.

8
O que aprendemos na graduação?
■ Exemplo: matemática na computação

Rede neural RBF

Roteamento em redes Ad-Hoc

9
O que aprendemos na graduação?
■ Matérias básicas:
 Estatística:
➔ Introdução à probabilidade:
- É possível resolver muitos problemas aplicando os conceitos
adquiridos.
- Entretanto, o que aprendemos na graduação serve somente como
base para utilizar na prática...

➔ Onde que se aplica?


- Algumas (muito poucas) entrevistas de emprego;
- Todas as áreas que trabalham com estatística, probabilidade e
modelagem
. Mercado financeiro
. Modelagem e simulação
. Otimização
. Roteamento
. Avaliação de desempenho
. Logística
. Programação de baixo nível.

10
O que aprendemos na graduação?
■ Exemplo: estatística na computação

Modelagem de
comportamento do sistema

Avaliação de desempenho

11
O que aprendemos na graduação?
■ Matérias de computação:
 Colocando tudo de forma resumida:

A graduação nós fornece uma base de tudo o que


vamos utilizar na vida profissional

 Entretanto, mais de 80% do que vamos utilizar na vida


profissional não aprendemos na graduação.

12
O que aprendemos na graduação?
■ Computação básica:
 Algoritmos, Estruturas de Dados:
➔ Conceitos introduzidos há algumas décadas...
➔ ...continuam sendo mais de que atuais hoje em dia!

 Onde que se aplica?


➔ Em todas (sem excessão) áreas da vida profissional
➔ 100% de entrevistas de emprego:

- Se você tem que escolher um funcionário/estagiário de 50


candidatos, de faculdades e universidades diferentes, o que você
pode perguntar a eles?
- Como um candidato pode trabalhar com novos sistemas, ambientes,
aplicações, etc, se ele não sabe os conceitos básicos?
- Se a sua empresa utiliza software específico, diferente de que as
faculdades ensinam, quem pode aprender mais rápido?
➔ Durante a vida profissional:
- O SO/Ambiente/Linguagem de programação/Metodologia muda...
mas os conceitos permanecem!
13
O que aprendemos na graduação?
■ Computação básica:
 Orientação a Objetos:
➔ A grande maioria de empresas utiliza conceitos de
orientação a objetos.

 Onde que se aplica?


➔ (Obviamente) entrevista de emprego;
➔ Desenvolvimento de software em equipe:

- Se uma parte da equipe fica em SP, e outra fica na India, mesmo


sem saber os detalhes da implementação do código elas conseguem
desenvolver software em conjunto.
➔ Desenvolvimento de software grande (por exemplo, 500
funcionários trabalhando no mesmo projeto):
- Empresa pode contratar e demitir funcionários na hora que quiser;
- Mesmo demitindo (ou contratando) metade da equipe, é possível
continuar o desenvolvimento;
- Manutenção e suporte.
➔ Desenvolvimento de software pequeno:
- Facilidade, velocidade e eficiência do processo. 14
O que aprendemos na graduação?
■ Computação básica:
 Organização e Recuperação de Informação:
➔ Técnicas que vieram da década de 70..
- ..mas vieram para ficar!

 Onde que se aplica?


➔ Entrevistas de emprego (mais uma vez)
➔ Desenvolvimento de software eficiente:

- Não precisa reinventar a roda


- Otimização de memória, disco, sistema de arquivos, …
➔ Será que ainda é útil hoje em dia?
- Os discos são grandes (1TB para mais)
. … mas ainda temos celulares, PDAs, sistemas embarcados, que
operam com KBs de dados.
. E logo-logo a nano-tecnologia está aqui!
- A memória/CPU/barramento é rápido o suficiente!
. Lembrem-se de sistemas embarcados e pequenos
- Não quero usar arvore B, um java.util.Vector resolve tudo!
. Imagina a lista de clientes de Claro num java.util.Vector..
15
O que aprendemos na graduação?
■ Exemplo: Oracle 10g Lista ligada

HASH

B-Tree
16
O que aprendemos na graduação?
■ Teoria da computação:
 Lógica Digital:
➔ Base para tudo na computação.

 Onde que se aplica?


➔ Entrevistas de emprego;
➔ Programação

- Unsigned long x = y << 0x1000;


- If (x == 1 || y == 2) { … }
➔ Depuração
- “A gente demitiu o fulano, mas ele apagou a fonte, só temos o
binário.. Quero um relatório de como ele funciona para amanhã!”
➔ Otimização
- O que é mais rápido na arquitetura x86-64 – deslocar os bits, ou
multiplicar com SSE?
➔ Desenvolvimento de hardware
➔ ...

17
O que aprendemos na graduação?
■ Teoria da computação:
 Teoria de grafos:
➔ Ajuda bastante

 Onde se aplica?
➔ Entrevistas de emprego
- Qual é a complexidade deste algoritmo? Como podemos otimizar
ele?
➔ Avaliação e otimização do código
➔ Inteligência artificial

- Como eu faço a minha logística para percorrer as 1000 cidades da


região e gastar menos gasolina?
➔ Análise de desempenho
- Onde está o gargalo desse software, que está rodando faz 8 horas
para calcular a média do meu vetor?
➔ Base para outras matérias

18
O que aprendemos na graduação?
■ Teoria da computação:
 Linguagens Formais e Automatas:
➔ Explica como os computadores, compiladores, e sistemas
computacionais funcionam.

 Onde se aplica?
➔ Projeto de sistemas (tanto de hardware quanto de software)
➔ Projeto de compiladores

➔ Depuração de aplicações

➔ Avaliação do sistema

➔ Criptografia

➔ ...

19
O que aprendemos na graduação?
■ Exemplo: uso de teoria de computação

Lógica

Complexidade de algoritmos

Modelagem do comportamento

20
O que aprendemos na graduação?
■ Linguagens de Programação:
 Porque aprendemos TANTAS linguagens na
graduação??
➔ A resposta correta é: aprendemos muito poucas
linguagens..

21
O que aprendemos na graduação?
■ Linguagens de Programação:

22
O que aprendemos na graduação?
■ Linguagens de Programação:
 E ainda tem:
➔ Logo, Ada, Fortran, ABAP, MATLAB, RPG (OS/400),
FoxPro/xBase, Prolog, Transact-SQL, Awk, LabVIEW, PL/I,
DC, Euphoria, Haskell, Smalltalk, Tcl/Tk, REXX, Groovy,
Bourne shell, ML, Forth, Objective-C, Erlang, CL (OS/400),
Alice, Scala, Natural, Caml, APL, …

➔ E MUITOS outros!
➔ Veja você mesmo:

- http://www.tiobe.com/
- http://www.langpop.com/

 Detalhe: qual é a linguagem, cujos programadores


ganham mais??
➔ Cobol (isso mesmo, em 2008!)
23
O que aprendemos na graduação?
■ Linguagens de programação:
 Porque aprendemos tão POUCAS linguagens então?

 Na graduação:
➔ São ensinadas os conceitos válidos para todas (ou, pelo
menos, grande maioria das) linguagens:
- Pascal (conceitos de programação e estruturas de dados)
- C (programação eficiente, noções de ponteiros e estruturas de
dados variáveis)
- C++, Java e .NET (orientação a objetos, programação voltada à
reutilização de código, e utilização de frameworks)
. São as três linguagens mais utilizadas para desenvolvimento de
software enterprise.
- Prolog, Lisp, Delphi, PHP: conceitos de diversos estilos de
programação (funcional, iterativa, visual, etc)

➔ Conhecendo os conceitos, é possível aprender novas


linguagens sem muitas dificuldades!
- Estima-se que Python e RUBY serão as linguagens mais utilizadas
nos próximos 2-5 anos. 24
O que aprendemos na graduação?
■ Linguagens de Programação:
 O que podemos concluir?

 Enquanto a graduação dá uma base excelente, tem


que ir atrás por conta própria para aprender mais!

 Exemplo:
➔ Dois candidatos passaram em todas as entrevistas, mas
teve somente uma vaga. Dois da mesma faculdade, e com
mesma média da graduação, e mesma formação.
- Como eu escolho o mais adequado para a minha empresa?
- Qual é a vantagem competitiva entre os candidatos?
- O que eu tenho a mais a oferecer para empresa de que outro?

 Conhecimento nunca é demais! 25


O que aprendemos na graduação?
■ Linguagens de programação:
Erlang
-module(quicksort).
-export([qsort/1]).
qsort([]) -> [];
qsort([Pivot|Rest]) ->
qsort([ X || X <- Rest, X < Pivot]) ++ [Pivot] ++ qsort([ Y || Y <- Rest, Y >= Pivot]).

Haskell
hamming = 1 : map (2*) hamming `merge` map (3*) hamming `merge` map (5*) hamming
where merge (x:xs) (y:ys)
| x < y = x : xs `merge` (y:ys)
| x > y = y : (x:xs) `merge` ys
| otherwise = x : xs `merge` ys

Ruby
hash = { :water => 'wet', :fire => 'hot' }
puts hash[:fire] # Prints: hot

hash.each_pair do |key, value| # Or: hash.each do |key, value|


puts "#{key} is #{value}"
end

# Prints: water is wet


# fire is hot

hash.delete :water # Deletes :water => 'wet'


hash.delete_if {|k,value| value=='hot'} # Deletes :fire => 'hot'

Objective CAML
let rec quicksort = function
| [] -> []
| pivot :: rest ->
let is_less x = x < pivot in
let left, right = List.partition is_less rest in
quicksort left @ [pivot] @ quicksort right

26
O que aprendemos na graduação?
■ Engenharia de Software:
 Afinal, o que é tal de Engenharia de Software?

 Como funciona uma empresa?


➔ A aplicação é especificada
- Como ela é especificada?
➔ A aplicação é desenvolvida
- Como o desenvolvimento é gerenciado?
➔ A aplicação é testada
- Como ocorrem os testes? Quando a aplicação está “pronta”?
➔ A aplicação é avaliada
- Como? Por quem?
➔ A aplicação é vendida
- Como? Por quanto? Para quem?
➔ A aplicação é mantida
➔ A aplicação é aperfeiçoada (e re-vendida?)

- Windows 3.11 → Windows 95 → … Windows Vista

27
O que aprendemos na graduação?
■ Engenharia de Software:
 É o que faz tudo isso funcionar :).

 Pensando em uma empresa, temos:


➔ Gerentes de projeto
- Estabelecem metas, gerenciam o desenvolvimento, o produto, etc
➔ Programadores
- Desenvolvem a aplicação
➔ Q&A
- Testam, validam, controlam e mantem a aplicação em
funcionamento
- Fazem documentação, controlam bugs, etc.
➔ Marketing, Vendas, Contatos com clientes..
- É a “interface” da empresa
➔ CEO
- É a “cara” da empresa
. Faz contatos estratégicos, aparece nas notícias e demite
funcionários :).
➔ Parte administrativa 28
O que aprendemos na graduação?
■ Para que serve engenharia de software?

29
O que aprendemos na graduação?
■ Engenharia de Software:
 Afinal, o que aprendemos na graduação?
➔ Especificar um projeto de software
- São as coisas “chatas”, como especificação, escopo, metodologia,
prazo, e por aí vai..
➔ Gerenciar a execução do projeto
- Em trabalhos em grupo, quem gerencia o andamento do projeto? E
na empresa?
➔ Testar e validar a aplicação
- Quem já “compilou” e “executou” as coisas no notepad? :)
➔ Documentar
- Porém, quem conhece os padrões de documentação?
➔ Controle do código:
- Porém, quem conhece CVS, SVN, BZR, GIT, Perforce,
Mercurial, ???
➔ Relacionamento com cliente:
- Software vendido = apresentar um trabalho para conseguir 10!
➔ ...
30
O que aprendemos na graduação?
■ Engenharia de Software:
 O que mais aprendemos?
➔ UML, CASE, MER, Redes de Petri, …
➔ Como modelar o sistema?

➔ Rational Rose, Erwin, MS Project, …

➔ …

 O que NÃO aprendemos?


➔ Quem sabe as metodologias XP, RUP, Agile, Scrum, TDD,
BDD, ....
➔ Quem conhece diagramas de Gantt, PERT, CRM, ERP, …

➔ ...e mais umas 200 siglas diferentes :).

➔ Testes funcionais, de black/white/grey box, validação vs

verificação, code-completeness, testes de usabilidade, ...

 A solução?
➔ Ir atrás!
31
O que aprendemos na graduação?
■ Engenharia de Software:
 O que podemos concluir?
➔ Mesmo tendo diversas matérias, não é possível aprender
tudo durante a graduação.

➔ A área está em constante evolução!


- Experimentem ler hoje a 1a edição do livro de ES!

➔ Mais uma vez: conhecimento nunca é demais!

32
O que aprendemos na graduação?
■ Engenharia de Software:
 ...em outras palavras :)

33
O que aprendemos na graduação?
■ Bancos de dados:
 Por um lado, faz parte de engenharia de software.
➔ Por outro lado, é uma área completamente diferente!

 Definição “informal”:
➔ Engenharia de software:
- Ensina como planejar, gerenciar, documentar, manter, avaliar e
aperfeiçoar um projeto de software.

➔ Bancos de dados:
- Ensinam como planejar, otimizar, armazenar, gerenciar e obter as
informações.

 Onde se aplica?
➔ Praticamente em todas as áreas de computação você acaba
trabalhando, diretamente ou indiretamente, com BDs.

34
O que aprendemos na graduação?
■ Bancos de dados:
 O que aprendemos na graduação?
➔ Conceitos essenciais:
- Estrutura de bases de dados
- Relacionamentos entre os elementos
- Normalização de dados
- Structured Query Language (SQL)

➔ Exemplos práticos:
- Diversos tipos de BDs
. Oracle, DB2, Ingress, MySQL, Cache, ...
- Planejamento e construção de BDs eficientes
- Bancos de dados com lógica embutida
. Triggers, PL/SQL, ...
- Utilização de BDs para solucionar problemas comuns
. “Rent-a-Car”, “Loja de CDs”, …

35
O que aprendemos na graduação?
■ Bancos de dados:
 O que não aprendemos?
➔ Otimização e gerenciamento eficiente de BDs
- Denormalização
- Funcionamento detalhado de BDs
. SQL EXPLAIN, etc
. Sharding
- …

 Onde vamos usar conceitos adquiridos?


➔ Entrevistas de emprego
➔ Trabalhando como DBAs

➔ Projetando e desenvolvendo sistemas

➔ E, obviamente, fazendo sites, portais, blogs, etc :).

- “Se eu postar uma notícia interessante no meu blog, o que acontece


se ela for publicada no Slashdot, e eu tiver 1 milhão de acessos?”

36
O que aprendemos na graduação?
■ Modelagem de bases de dados:

37
O que aprendemos na graduação?
■ Sistemas operacionais:
 “Para que vou querer saber disso se eu só uso
Windows??”
➔ Você usa celular? PDA? Caixa eletrónico do banco para
sacar dinheiro? Playstation?
- A maioria destes aparelhos não roda Windows.
➔ Mesmo se você não quiser usar Linux/FreeBSD/QNX nunca
na sua vida:
- Só por não querer nem saber como ele funciona você acaba
descartando uma série de empresas que teriam interesse em te
contratar!
- Só por ser focado 100% no Windows, você acaba se misturando
com a grande maioria dos candidatos àquela vaga
. “Os dois candidatos são bons, mas aquele sabe só windows, e
esse aí também Linux e BSD.”
➔ “O mercado de Linux é minúsculo, comparando com
Windows”
- Comparativamente, sim. Mas, mesmo sendo 5% do mercado de
Windows, isso acaba dando centenas de milhões de
computadores! 38
O que aprendemos na graduação?
■ Sistemas operacionais
 SO e Lab. SO:
➔ Conceitos de construção e funcionamento de sistemas
operacionais
➔ Noções de programação de alto desempenho e distribuída

➔ Programação de sistemas

 Onde se aplica:
➔ Algumas entrevistas de emprego
➔ Em áreas que trabalham com programação:

- Qual é a diferença entre thread e processo em Windows?


- Porque o meu software, que funcionava perfeitamente antes, parou
de funcionar no novo Core 2 Duo?
- Como eu faço para diversos processos se comunicarem?
- Como faço para tirar proveito de todos os 64 processadores que a
minha estação de trabalho tem?
➔ Em empresas que trabalham com programação embarcada,
ou de alto desempenho, ou com sistemas próprios:
- Motorola, Nokia, LG, BMW, Microsoft, Google, IBM, ... 39
O que aprendemos na graduação?
■ Sistemas operacionais
 Porque aprender?

 Existem centenas de sistemas operacionais com


código aberto, e milhares de projetos de software
➔ Porque não aprender como outras pessoas resolvem
problemas similares aos seus?
➔ Porque não utilizar ferramentas e bibliotecas existentes no

lugar de reinventar a roda?

 Vantagens competitivas:
➔ Muitas empresas preferem candidatos que conhecem
diversos sistemas operacionais e linguagens de
programação:
- Isso demonstra que o candidato tem vontade e capacidade de
aprender
- Paradoxo: muitas das pessoas de Microsoft, que trabalham com
desenvolvimento de Windows, vieram de Linux :). 40
O que aprendemos na graduação?
■ Sistemas operacionais

41
O que aprendemos na graduação?
■ Redes de computadores:
 O mundo inteiro utiliza Internet hoje em dia
➔ Computadores interconectados
➔ Google, Gmail, Hotmail, Orkut, …

➔ WEB 2.0, MSN, BitTorrent, …

➔ Counter Strike..

 Convergência de diversos paradigmas:


➔ Computadores
➔ Celulares

➔ GPS, IRDA, WiFi, WiMAX, …

➔ HPC, Cloud Computing, GRIDs, ...

 Entretanto, mesmo com todas essas tecnologias, os


conceitos são os mesmos!
➔ E são ensinados na disciplina de Redes de Computadores.
42
O que aprendemos na graduação?
■ Redes de Computadores
 Onde que se aplicam os conhecimentos adquiridos??
➔ Entrevistas
➔ StartUps

➔ Logística, avaliação da capacidade do sistema, ambientes

de alto desempenho
➔ Programação para celulares

➔ Solução de problemas comuns

- “Porque não consigo acessar Internet? Será que preciso ligar este
cabo azul?” :)
➔ etc.

43
O que aprendemos na graduação?
■ Arquitetura de computadores
 Os conceitos antigos são utilizados até hoje.

 Onde se aplicam os conhecimentos?


➔ Entrevistas de emprego
➔ Projetos de hardware, software embarcado, otimização de

código, …
➔ Desenvolvimento de sistemas operacionais, sistemas de

comunicação, ambientes heterogêneos


➔ Computação de alto desempenho, redes de computadores.

44
O que aprendemos na graduação?
■ Compiladores
 Explicam como o software funciona
 Juntam todos os conhecimentos adquiridos na
graduação
➔ Dá para pensar no trabalho de compiladores como em uma
prévia de um projeto grande, desenvolvido na empresa

 Onde que aplica?


➔ Algumas entrevistas de emprego
➔ Desenvolvimento de sistemas operacionais, projetos de

hardware, e sistemas embarcados.


➔ Otimização

➔ Depuração

➔ Engenharia reversa

➔ Construção de aplicações específicas (antivirus,

processamento de texto, browsers, etc).


➔ De forma geral, podem ser aplicados em diversas áreas.

45
O que aprendemos na graduação?
■ Pequena conclusão
 A graduação nós dá uma base para tudo o que vamos
utilizar na vida profissional

 Entretanto, a área de computação está em constante


evolução.

 Para ser competitivo, não é suficiente somente


decorar tudo que é apresentado na sala de aula.
➔ Tem que ir atrás!
➔ Hoje em dia é bem mais fácil que há 10 anos:

- Google :)
- Diversos projetos OpenSource
- Aprendizado pela internet
- Milhares de sites de howto, tutoriais, cursos, etc.

46
Entrevistas

Entrevistas de emprego

47
Entrevistas
■ Qual é o procedimento para ser contratado por
uma empresa?
 Anúncio de emprego
➔ Descreve o que a empresa espera de você, e o que você
pode esperar da empresa
- PJ, CLT, e outras siglas estranhas.
 Dinâmicas de grupo (geralmente para estágios)
➔ Avalia se você se daria bem no ambiente de trabalho
 Avaliação do currículo (passo mais importante)
➔ Passo mais importante!
- O seu currículo descreve o que você sabe, o que pode trazer para
empresa, e porque você deve ser O Escolhido para a vaga.
 Entrevista (2o passo mais importante)
➔ Verifica se você não mentiu no seu curriculo.
➔ Avalia a sua personalidade, o seu jeito de trabalhar, e suas

abordagens para solucionar problemas e desafios.


48
Entrevistas
■ Antes de entrevista: currículo (ou resumé)
 Seu documento mais importante na vida profissional
➔ O essencial
- Seu email, telefone, endereço, possibilidade para viagens e
disponibilidade, conhecimento de línguas.
➔ Descreve a sua formação
- Graduação, pós-graduação, cursos adicionais
➔ Descreve a sua experiência profissional
- Empresas onde trabalhou, e por quanto tempo
- Projetos que realizou, destacando o seu trabalho
➔ Descreve os seus conhecimentos
- O que você sabe, e porque a empresa poderia se interessar por
você
- Apenas conhecimentos relevantes
. Não precisa colocar que você sabe cozinhar, jogar xadrez e
tocar piano.
➔ Descreve os seus destaques
- Publicações
- Prémios recebidos
➔ Descreve tudo isso resumidamente 49
Entrevistas
■ Currículo:
 Quanto menos páginas, melhor
➔ Dependendo da empresa, chegam mais de 200 currículos
por dia. Ninguém vai ler as 10 páginas que você elaborou
 Destacar-se entre os demais
➔ O que você tem a mais (cursos a mais, conhecimentos a
mais, trabalhos a mais, certificados a mais):
- Participei de desenvolvimento de diversos projetos OpenSource
(Kernel do Linux, Apache), trabalhando com sistema de arquivos
EXT3 e com módulo de balanceamento de carga para Apache.
- Tenho MBA em Negócios na Internet
- Tenho 15 publicações nacionais e internacionais na área de Grid
Computing.
- …
 NÃO MENTIR
➔ “..Conhecimentos avançados sobre compiladores de C++..”
- O que é um destrutor virtual? Quando é melhor usar templates? O
que são funções friend? O que é STL? Qual é a diferença entre
struct e class? Quando devemos (ou não) usar namespaces?
50
Entrevistas
■ Currículo ideal:
 Evolução do currículo ao longo do tempo
➔ Recém-formado:
- Currículo de 5 páginas, detalhando todos os projetos de graduação
que fez, todos os trabalhos, e a ementa de todas as disciplinas.
➔ Trabalhando na indústria por uns 2 anos:
- Currículo de 4 páginas, com a lista de empresas onde trabalhou e os
trabalhos que fez, alguns dos tópicos que viu na graduação, e
algumas referências de emprego.
➔ Trabalhando na indústria por uns 5 anos:
- Currículo de 3 páginas, detalhando todas as empresas onde
trabalhou, alguns dos projetos que participou, todas as publicações e
todas as referências de emprego.
➔ Trabalhando na indústria por uns 10 anos:
- Currículo de 2 páginas, listando as empresas onde trabalhou, as
funções e principais tarefas exercidas.
➔ Trabalhando na indústria por mais de 10 anos:
- Currículo de 1 página, listando as empresas onde trabalhou e as
funções exercidas.
51
Entrevistas
■ Curriculo: exemplo

52
Entrevistas
■ O seu currículo foi escolhido, e você foi chamado
para entrevista. E agora?
 Uma entrevista típica de empresa de computação:
➔ Introdução
- Fale um pouco de você
➔ Uma pergunta sobre atividades recentes
- Onde você trabalhou ultimamente, em qual projeto, o que você
achou da empresa e do trabalho
➔ Uma pergunta impossível
- “Como você faria um algoritmo para resolver o cubo mágico?”
- A ideia é ver o que o candidato faria para tentar resolver o problema.
➔ Uma pergunta básica
- Pergunta de C, ou C++, ou de algoritmos, ou de estrutura de dados
➔ Uma pergunta técnica (depende da vaga)
- Pode ser pergunta de testes, ou de design, ou de redes, ou de HPC..
➔ Desafio
- “O que tem de errado com esse código/essa consulta/esse caso?”
- “Você tem certeza disso?”
➔ Sua vez de perguntar! 53
- “Alguma pergunta?”
Entrevistas
■ Dicas para entrevistas:
 Procure saber mais sobre o contexto a pergunta
➔ “Este algoritmo é para ser executado numa máquina local ou
pela rede?”
➔ “Quantos usuários tem no BD para listar nesta página?”

 Mesmo se você não sabe a resposta..


➔ ..procure chegar à solução!
- “Bem.. para resolver o cubo mágico, podemos supor que..”
- A idéia nem sempre é chegar a solução, mas apresentar qual
caminho você vai tomar!
 Lembra do que você falou no currículo!
➔ “Aqui no seu currículo você diz que tem 15 anos de
experiência com Windows 2008..”
➔ “Você tem conhecimentos avançados de C++.. Me explica a

diferença entre new() e malloc()”


 Lembrete: você é avaliado na entrevista..
➔ ..mas você avalia a empresa também!
54
Entrevistas

55
O que as empresas esperam?

O que as empresas esperam de você?

56
O que as empresas esperam?
■ O que você tem que ter para se virar bem na
empresa?
 Capacidade de aprender
➔ Mesmo aprendido tudo na graduação, ao entrar na empresa
você vai ter que aprender novos métodos, aplicações,
ferramentas, procedimentos, …

 Capacidade de trabalhar em grupo


➔ A sua produtividade é proporcional à sua capacidade de se
lidar bem com a equipe.

 Capacidade de “se virar”


➔ Mesmo trabalhando em grupo, é você que tem que ir atrás
para aprender mais e mais coisas.

57
O que as empresas esperam?
■ Quais problemas você vai encontrar?
 Horas extra
 Relacionamentos informais
 Nenhum prazo é adequado
 Os planos mudam
 As vezes você não tem vida fora-da-empresa
 Pressão constante
 …

 Em outras palavras, “nem tudo são flores na vida” :)

58
O que as empresas esperam?
■ O que é de se esperar?
 Empresas pequenas e micro-empresas:
➔ Poucas pessoas para poucos projetos
- Demanda irregular por serviços
➔ Poucas pessoas para muitos projetos
- Geralmente os funcionários acabam em vários cargos ao mesmo
tempo
. Programador é ao mesmo tempo gerente de projeto
. Gerente de marketing também é gerente de vendas
- Demanda irregular por serviços
. Horas-extras se transformam em dias
➔ A empresa tem interesse em você continuar nela
➔ Problemas comuns

- Contratação menos formal


- Ambiente menos formal e burocratizado
- Freqüentemente não tem políticas internas
- Plano de carreira inexistente
- Previsibilidade de futuro baixa
- Diversas frentes de atuação
- Benefícios irregulares
59
O que as empresas esperam?
■ O que é de se esperar?
 Empresas médias
➔ Muitas pessoas, setores, filiais e escritórios
- Geralmente você fica só no seu setor
➔ Plano de carreira estabelecido
- Você sabe qual é a sua perspectiva dentro da empresa
➔ Diversos benefícios (plano de saúde, transporte,
alimentação, …)
➔ Estrutura bem-definida

- Gerentes de projeto, programadores, área de testes e Q&A


➔ Contratação mais formal
- Sem “ganhar por fora”.
➔ Problemas comuns:
- Estrutura as vezes é inadequada para todos os projetos, setóres,
etc.
- É difícil mudar de área ou setor
- Alta rotatividade de pessoas
- A empresa não quer investir em você mais de que necessário
- Burocracia
60
O que as empresas esperam?
■ O que é de se esperar?
 Empresas grandes
➔ Ampla estrutura, com diversas áreas de atuação
➔ Plano de carreira bem-definido

- Avaliações internas, formalização de requisitos


➔ Estrutura bem-definida e documentada
- Todo o processo é gerenciado de acordo com uma metodologia
➔ A empresa pode ter interesse em investir em você
- Pós-graduação, cursos adicionais, etc
➔ Diversos benefícios adicionais
- Almoço de graça, áreas de recreação, etc.
- Horários mais flexíveis
➔ Problemas comuns:
- Tudo é extremamente burocratizado
- Crescimento difícil
- Grande variedade interna
- Dificuldades de gerenciamento
- Ninguém é único e insubstituível
- Foco somente nos objetivos e metas da empresa
61
Agora que me formei..
■ Que mais posso fazer?
 Pós-graduação
➔ Stricto-sensu
- Mestrado e Doutorado

➔ Lato-sensu
- Pós-graduação especializada, em tempo parcial

 Cursos de especialização
➔ MBA, cursos práticos, certificações, …
- Tudo isso acrescenta valor no seu currículo

 …

62
Fim
■ Perguntas?

63

Vous aimerez peut-être aussi