Webcast Tutorial: Análise de dumps de memória no GNU/Linux
Formando desenvolvedores efetivos: como melhorar a formação inicial
1. Formando
Desenvolvedores
Efetivos
Fernando Lozano
Arquiteto de Soluções – 4Linux
lozano@4linux.com.br
2. CUIDADO!
● Vou apresentar várias opiniões minhas sobre o que
poderia mudar na formação usual de desenvolvedores
Java e não-Java para aumentar sua efetividade
● Fique à vontade para discordar ;-)
Capítulo 1 www.4linux.com.br 2 / 36
3. Temos um Novo Projeto...
● Precisamos contratar mais desenvolvedores !
Capítulo 1 www.4linux.com.br 3 / 36
4. Temos um Novo Projeto...
● Precisamos contratar mais desenvolvedores !
● Será fácil conseguir BONS desenvolvedores ?
Capítulo 1 www.4linux.com.br 4 / 36
6. Temos um Novo Projeto...
● Precisamos contratar mais desenvolvedores !
● Será fácil conseguir BONS desenvolvedores ?
● Será fácil conseguir desenvolvedores
RASOÁVEIS ?
● Vou ter que me virar com o que conseguir...
Capítulo 1 www.4linux.com.br 6 / 36
7. Temos um Novo Projeto...
● Precisamos contratar mais desenvolvedores !
● Será fácil conseguir BONS desenvolvedores ?
● Será fácil conseguir desenvolvedores
RASOÁVEIS ?
● Vou ter que me virar com o que conseguir...
SE conseguir :-(
Capítulo 1 www.4linux.com.br 7 / 36
9. Precisamos Formar MAIS
Desenvolvedores
● As faculdades não atendem o mercado
● Treinamento in-house demora...
● A solução é:
● Certificação Profissional ?
Capítulo 1 www.4linux.com.br 9 / 36
10. Precisamos Formar MAIS
Desenvolvedores
● As faculdades não atendem o mercado
● Treinamento in-house demora...
● A solução é:
● Certificação Profissional ?
● Graduações Tecnológicas ?
Capítulo 1 www.4linux.com.br 10 / 36
11. Precisamos Formar MAIS
Desenvolvedores
● As faculdades não atendem o mercado
● Treinamento in-house demora...
● A solução é:
● Certificação Profissional ?
● Graduações Tecnológicas ?
● Contratar quem já conhece o “padrão de
mercado” ?
Capítulo 1 www.4linux.com.br 11 / 36
13. Precisamos Formar
MELHORES Desenvolvedores
● Vamos aumentar a produtividade dos desenvolvedores
que já temos usando:
● Melhores IDEs ? (RAD)
Capítulo 1 www.4linux.com.br 13 / 36
14. Precisamos Formar
MELHORES Desenvolvedores
● Vamos aumentar a produtividade dos desenvolvedores
que já temos usando:
● Melhores IDEs ? (RAD)
● Melhor Modelagem ? (UML)
Capítulo 1 www.4linux.com.br 14 / 36
15. Precisamos Formar
MELHORES Desenvolvedores
● Vamos aumentar a produtividade dos desenvolvedores
que já temos usando:
● Melhores IDEs ? (RAD)
● Melhor Modelagem ? (UML)
● Melhores Metodologias ? (RUP)
Capítulo 1 www.4linux.com.br 15 / 36
16. Precisamos Formar
MELHORES Desenvolvedores
● Vamos aumentar a produtividade dos desenvolvedores
que já temos usando:
● Melhores IDEs ? (RAD)
● Melhor Modelagem ? (UML)
● Melhores Metodologias ? (RUP)
● Melhores Frameworks ? (Spring)
Capítulo 1 www.4linux.com.br 16 / 36
17. Precisamos Formar
MELHORES Desenvolvedores
● Vamos aumentar a produtividade dos desenvolvedores
que já temos usando:
● Melhores IDEs ? (RAD)
● Melhor Modelagem ? (UML)
● Melhores Metodologias ? (RUP)
● Melhores Frameworks ? (Spring)
● Melhores Processos ? (Ágeis)
Capítulo 1 www.4linux.com.br 17 / 36
18. Você Já Ouviu Falar de
● Graduação de duração reduzida em Direito ?
● Certificação para Neurologista ?
● Máquina de Tomografia/Ressonância/etc que dispensa
um Cardiologista ?
● Easy Building CAD para construção de edifícios – você
não precisa mais de um Engenheiro Civil para levantar um
prédio !
Capítulo 1 www.4linux.com.br 18 / 36
19. Você Já Ouviu Falar de
● Graduação de duração reduzida em Direito ?
● Certificação para Neurologista ?
● Máquina de Tomografia/Ressonância/etc que dispensa
um Cardiologista ?
● Easy Building CAD para construção de edifícios – você
não precisa mais de um Engenheiro Civil para levantar um
prédio !
● POR QUE assumimos que as soluções para
desenvolvimento podem dispensar / reduzir a qualificação
do desenvolvedor ?
Capítulo 1 www.4linux.com.br 19 / 36
20. Desenvolver Software É
Complicado
● Nenhuma solução vai magicamente transformar em algo
simples
● Especialmente as soluções que isentam o profissional de
ter o nível de conhecimento e especialização necessários
● A sociedade não pode depender da iniciativa individual e
auto-estudo
Capítulo 1 www.4linux.com.br 20 / 36
21. Desenvolver Software É
Complicado
● Nenhuma solução vai magicamente transformar em algo
simples
● Especialmente as soluções que isentam o profissional de
ter o nível de conhecimento e especialização necessários
● A sociedade não pode depender da iniciativa individual e
auto-estudo
● 80% ou mais dos desenvolvedores não acompanham
Blogs, não lêem revistas, não comparecem a eventos...
Capítulo 1 www.4linux.com.br 21 / 36
22. Nós Temos Uma GRANDE
Parcela da Culpa
● Gostamos de apresentar exemplos “hello world” para
novas APIs, novas linguagens, novos frameworks...
● Gostamos de apresentar exemplos “simplórios”, tipo
● Aplicação CRUD, JSF chama direto JPA
(cadê a camada de negócios ?)
● Tela de login
(cadê o JAAS, LDAP, Kerberos, Token, PKI...)
● Locadora de DVDs / Biblioteca / Pet Shop
(algum desses já foi colocado em produção ?)
(eu poderia fazer as mesmas “simplificações didáticas”
em um sistema real ?)
Capítulo 1 www.4linux.com.br 22 / 36
23. Tem Que Resolver NA
ORIGEM
● Como “todo mundo” aprende a desenvolver software ?
● Olhando exemplos “hello world”
● E daí partindo para escrever aplicações completas
Capítulo 1 www.4linux.com.br 23 / 36
24. Tem Que Resolver NA
ORIGEM
● Como “todo mundo” aprende a desenvolver software ?
● Olhando exemplos “hello world”
● E daí partindo para escrever aplicações completas
● SOZINHO
Capítulo 1 www.4linux.com.br 24 / 36
25. Tem Que Resolver NA
ORIGEM
● Como “todo mundo” aprende a desenvolver software ?
● Olhando exemplos “hello world”
● E daí partindo para escrever aplicações completas
● SOZINHO
● O profissional vai copiar os primeiros exemplos que
encontrar – precisamos que estes exemplos sejam MUITO
bons!
Capítulo 1 www.4linux.com.br 25 / 36
26. Tem Que Expor o (Futuro)
Profissional à Complexidade
● Como você espera que alguém desenvolva “direito” sem
nenhum referencial para reconhecer a “cara” de um bom
código ?
● Como exigir que um profissional lide com a complexidade
de aplicações reais se só viu aplicações simplórias ?
● Como querer que um profissional aprenda a juntar Ajax,
Java, ORM, SQL, REST etc se ele normalmente vê
exemplos que usam um de cada vez ?
Capítulo 1 www.4linux.com.br 26 / 36
27. Tem Que Ensinar a Fazer
Manutenção / Evolução
● Em vez de criar aplicações do zero...
... Entender uma (parte) de uma aplicação bem-escrita
Capítulo 1 www.4linux.com.br 27 / 36
28. Tem Que Ensinar a Fazer
Manutenção / Evolução
● Em vez de criar aplicações do zero...
... Entender uma (parte) de uma aplicação bem-escrita
● Depois acrescentar uma nova funcionalidade nesta
aplicação...
... Sem introduzir uma regressão
Capítulo 1 www.4linux.com.br 28 / 36
29. Tem Que Ensinar a Fazer
Manutenção / Evolução
● Em vez de criar aplicações do zero...
... Entender uma (parte) de uma aplicação bem-escrita
● Depois acrescentar uma nova funcionalidade nesta
aplicação...
... Sem introduzir uma regressão
● Tem que aprender a lidar com código escrito por
outros !
Capítulo 1 www.4linux.com.br 29 / 36
30. Tem Que Priorizar Nas
Faculdades e Formações
● O desenvolvedor pode aprender novas linguagens, APIs e
frameworks com o Google, estudando exemplos pontuais
ou cursos livres ...
... Mas ele não vai aprender a lidar com complexidade e
manutenção se isto não for apresentado a ele DESDE O
INÍCIO
Capítulo 1 www.4linux.com.br 30 / 36
31. Tem Que Priorizar Nas
Faculdades e Formações
● O desenvolvedor pode aprender novas linguagens, APIs e
frameworks com o Google, estudando exemplos pontuais
ou cursos livres ...
... Mas ele não vai aprender a lidar com complexidade,
manutenção e equipes se isto não for apresentado a ele
DESDE O INÍCIO
● Se a formação inicial fugir destas questões, o
desenvolvedor fica com o “vício” de fugir delas pelo resto
da sua carreira :-(
● Aí Metodologias, Processos, IDEs, etc não vão fazer
diferença real
Capítulo 1 www.4linux.com.br 31 / 36
32. Desenvolvedores Efetivos
● O mercado hoje forma desenvolvedores “de curto prazo”,
pensando em entregar apenas a versão 1.0 da aplicação
Capítulo 1 www.4linux.com.br 32 / 36
33. Desenvolvedores Efetivos
● O mercado hoje forma desenvolvedores “de curto prazo”,
pensando em entregar apenas a versão 1.0 da aplicação
● Mas a maior parte do esforço, tempo e dinheiro está
em manter as aplicações funcionando pelos próximos
anos
Capítulo 1 www.4linux.com.br 33 / 36
34. Desenvolvedores Efetivos
● O mercado hoje forma desenvolvedores “de curto prazo”,
pensando em entregar apenas a versão 1.0 da aplicação
● Mas a maior parte do esforço, tempo e dinheiro está
em manter as aplicações funcionando pelos próximos
anos
● Tudo que ajuda a manter a aplicação funcionando
no futuro acaba ajudando a entregar mais cedo e
com mais qualidade a primeira versão
Capítulo 1 www.4linux.com.br 34 / 36
35. Formando Desenvolvedores
Efetivos
● A formação dos profissionais deve ser baseada em
atividades práticas envolvendo:
● Escrever partes de uma aplicação, que devem ser
integradas a outras partes que já estão prontas
● Identificar e corrigir bugs em uma aplicação que
normalmente funciona
● Implementar nova funcionalidade que envolve modificar
funcionalidade já existente
● Lidar com regras de negócios complexas
● Retornar depois de um tempo a uma aplicação /
módulo escrito previamente, em vez de abandonar
depois de apresentar ao professor
Capítulo 1 www.4linux.com.br 35 / 36