"Todo programador Java Jr. deve aprender..."

45 respostas
P

Olá a todos.

O cv abriu um post para criticar/zoar/caçoar/falar mal/etc de todo tipo programador ruim. O post foi um sucesso, tendo mais de 10,000 visitas e sendo amplamente citado em diversos blogs! :shock:

Isso prova que criticar/zoar/caçoar/falar mal/etc é fácil, e disso ninguém duvida. Difícil mesmo é orientar/ensinar/apontar o caminho/etc para aqueles que têm pouca ou nenhuma experiência prática . Algumas pessoas chegam a pensar algo do tipo: “Como ninguém me orientou quando eu era Jr., então que se f* todo programador Jr!”.

Tenho certeza que aqui tem gente que não pensa assim, e que sempre está disposto a ajudar aqueles que estão nesta vida a pouco tempo, ralando. Se você está neste grupo, no grupo daqueles que sempre que pode, compartilha o que sabe e, mais importante, aponta “o caminho das pedras”, para que o Jr. possa se desenvolver por si só, então você deve responder a este post. :wink:

[color=red]Fazendo um link com o post do cv, gostaria de lançar aqui o seguinte desafio: [/color]

Complete a frase: [color=blue]“Todo programador Java Jr. deve aprender…”[/color]

Não vale escrever coisas do tipo: “… deve aprender Orientação a Objetos, Design Patterns etc”, pois isso não acrescenta p* nenhuma na vida daqueles que estão estudando a linguagem, os conceitos, os frameworks etc. Saber OO, por exemplo, é pré-requisito básico e obrigatório. O que muitas vezes nos falta são conselhos extremamente práticos, relacionados não só à teoria, mas muito mais à prática.

Será que eu e os demais Jr’s. podemos contar com seus conselhos extremamente práticos? :roll:

Forte abraço,

Paulo CASSIANO.

45 Respostas

Mauricio_Linhares

…a ter vergonha na cara e estudar de verdade, porque chega a ser triste ver gente falando coisas abomináveis como “estudar padrões de projeto não acrescenta nada”, além de aprender que saber orientação a objetos não é saber porque quadrado herda de polígono.

Na boa, se tem alguém aqui querendo ser “programador Java”, vá pra uma escola técnica fazer um cursinho de Java e pronto.

peczenyj

Todo programador Java Jr. deve aprender…

… que não se compara o conteúdo de strings usando == e sim o método equals

sergiotaborda

:arrow: Manipular Strings correctamente. Usando StringBuilder para concatenar e equals() para comparar.
Saber implementar toString().

:arrow: Usar a API de colecções. Collection, List, Set , Queue e Map e as suas repectivas implementações mais importantes : ArrayList, HashSet, HashMap e LinkedList. Connecer as classes Arrays e Collections e seus muitos métodos utilitários.

:arrow: Saber implementar equals() e hashCode() e que implicações isso tem ao usar coleções.

:arrow: Saber criar comparações complexas de objectos usando Comparator e saber usar comparator para
ordenar colecções.

:arrow: Saber usar Formater para fazer fomatações: ou seja, converter objetos em String e se possivel a operação inversa. Saber usar SimpleDateFormat e DecimalFormat

:arrow: Saber usar Date e Calendar. Sobretudo Calendar. Compreender que manipular datas é complexos e que dividir milisegundos por umas constantes nem sempre dá o resultado esperado.

:arrow: Saber que double e float são uma merda para calculos com dinheiro e saber usar BigDecimal

:arrow: Reconhecer que Java não é igual às outras linguagens e tem sua própria forma de funcionar. Não ha que ter vergonha de construir classes e usá-las. Se o problema é muito complexo é preciso reconhecer as suas partes e criar um objeto para cada parte. Depois de estiver funcionando é que pode ser otimizado.

:arrow: Conhecer patterns, reconhecer o seu uso correto e o seu uso errado.

:arrow: Não usar sockets directamente a mesmo que seja uma implementação de baixo nivel. Usar HTTP e WebServers para as operações de transferência de dados em rede. Em casos complexos usar RMI e/ou SOAP.

:arrow: Pensar em termos de objetos e seus relacionamentos e não em termos de banco e procedimentos.

bzanchet

… smalltalk, python, ruby ou qualquer outra linguagem dinâmica.

Luca

Olá

A lista do Sérgio já foi muito boa e bem abrangente. Só vou acrescentar algumas poucas coisas básicas em termos de caminho a seguir:

:arrow: [color=red]Acostumar-se a sempre escrever testes unitários a cada classe nova criada[/color]

[color=darkblue]Para o caso do Jr querer programar para web:[/color]

:arrow: Estudar HTML, javascript e CSS antes de pensar em programar para a web

:arrow: Estudar um tutorial de HTTP antes de aprender servlets

:arrow: Estudar servlets antes de aprender JSP

:arrow: Estudar JSP, taglibs e afins antes de aprender o primeiro framework MVC

:arrow: Saber fazer um deploy de uma aplicação web na mão antes de usar uma IDE para isto

:arrow: Estudar SQL e JDBC antes de aprender Hibernate

[]s
Luca

cassio

:arrow:Aprender a dar valor às aulas de Estrutura de Dados e Análise de Algoritmos da faculdade ao invés de pensar: “Pô, mas em Java já tem tudo isso pronto!”
:arrow:Aprender que nem tudo o que está escrito nos livros é verdade absoluta
:arrow:Aprender que Java não é a linguagem salvadora e que para diversos problemas existem soluções melhores.

L

Primeiro, vou criticar pcassiano porque disse que orientação a objetos e padrões não acrescentam nada. Na verdade é o contrário, pois um programador ruim é aquele escreve tudo orientado a procedimentos e com soluções ruins para problemas corriqueiros. Portanto eu digo que um programador java jr deve:

[list]Saber a diferença entre classe e objeto[/list]
[list]Aceitar que ele não é o único a ter determinados problemas de programação e que podem existir padrões, bibliotecas e frameworks para resolvê-los [/list]
[list]Jamais repetir código, sempre pensar antes[/list]
[list]Entender que as mensagens de erros e os stack traces estão aí para serem lidos detalhadamente[/list]
[list]Ter disconfiômetro quando algo é muito difícil de fazer e se questionar se é assim mesmo ou não tem um jeito mais fácil[/list]

Agora, eu vou criticar o Luca porque deu uma linha de aprendizado que segue exatamente a evolução do java na web, só faltava dizer para aprender CGI antes de aprender servlet.

Não foi assim que eu aprendi, e não é assim que eu recomendo pra ninguém. A primeira coisa que um programador web deve fazer é:

[list]Aprender e saber o que é o MVC, a tal ponto que ele seja capaz de fazer o desenho desse pattern no papel, sem a consulta de nenhum livro e que seja capaz de explicar a algum amigo da área o que acabou de desenhar[/list]

Depois eu sugeriria:
[list]Faça uma aplicaçãozinha qualquer usando apenas Servlet e JSP, sem nenhum framework, mas usando os princípios do MVC. Não há ordem de aprendizado entre Servlet e JSP, mas eu dou preferência ao segundo[/list]
[list]Busque usar IDEs, como o Eclipse com WTP, pois aprender tudo a mão na base do vi e ant é desestimulante para qualquer novato e, além disso, detalhes de configuração de servidor devem ser aprendidos quando houver mais experiência[/list]
[list]Anote, classifique e coloque numa lista de prioridades os frameworks que as pessoas vão falando por aí, pois são muitos e podem causar confusão para quem está começando[/list]
[list]O aprendizado de CSS e JavaScript é ortogonal ao aprendizado de frameworks. Portanto, já que você já está criando as páginas, aproveite e aprenda um jeito de deixá-las com cara de profissional[/list]

É isso.

dreamspeaker

Sua lista esta boa, eu colocaria algum item sobre Threads aí. Mas você quis dizer “a menos que” ou “mesmo que” seja uma implementação de baixo nível?

Tem (poucas) horas que não dá pra fugir dos sockets…

Luca

Olá

Acho que não me fiz entender e vou repetir:

[color=red] Antes de tentar aprender servlets, estude HTTP[/color]

Fazendo isto aprenderá servlets e JSP bem mais rápido porque saberá de cara para que servem os métodos das classes do pacote de servlets.

Por falta de conhecimento de HTTP aparecem aqui no GUJ muitas perguntinhas bobas sobre cache, enconding, etc. E estudar HTTP não custa nem 4 horinhas.

Quem não aprendeu assim foi mal orientado.

[]s
Luca

L

Luca,

discordo de você pois tenho opiniões divergentes da sua, e não porque você não foi claro antes (até porque seu português é muito bom).
Pra mim, um programa web é mais do que apenas uma série de páginas HTML, é uma aplicação gráfica complexa onde a camada de visão é apenas uma parte entre várias outras, e que, para lidar com essa complexidade, será necessário disciplina e organização.

Por isso enfatizo a necessidade de conhecer o MVC ao invés da necessidade de conhecer o HTML, pois a capacidade de lidar com a complexidade precede a capacidade de conhecer os detalhes do protocolo.

Outra, acredito que o aprendizado não tem que seguir o estilo tradicional. Endendo a sua raiva com dúvidas consideradas por você bobas, mas será que estudando 4 horas de HTML (que pra mim é muito pouco, se considerar que a formatação de páginas é algo complexa, exigindo CSS e às vezes JavaScript) a pessoa vai descobrir certas coisas antes de se aventurar em Servlet? Talvez sim ou talvez não. Pode ser que a causa seja mais de um professor não muito bom ou de um tutorial sem didática que faz com que pessoas tenham esse tipo de problema, e não sobre um suposto erro na ordem da aprendizagem.

Pra mim, um novato, hoje em dia, quer fazer uma aplicação web parecido com um site web 2.0 e/ou ajaxificado. E começar com simples páginas HTML é uma frustração e tanto. Aprendizagem não pode ser chata, devemos apenas mostrá-los o caminho das pedras, ou seja, o MVC. A maneira como irão aprender depende apenas deles.

pacalexandre

Deve aprender a Estudar , correr atras do seu problema , é claro o que todo mundo falow por aqui :slight_smile:

:arrow: Ser aplicado. ( estudar tudo ! de O.O até ANSI se for preciso ).

:arrow: Ter visão do problema que está enfrentando.( Saber o que está fazendo … escreva no papel primeiro depois use o micro).

:arrow: E como foi dito Java é apenas um linguagem que tem tudo mas existem diversas maneiras de resolver os problemas.

:arrow: Tudo depende do ponto de vista encarado … :smiley:

B

a atingir seus objetivos da forma mais fácil possível e a partir disso aperfeiçoar seu conhecimento gradualmente.

dreamspeaker

Leonardo3001:

Outra, acredito que o aprendizado não tem que seguir o estilo tradicional. Endendo a sua raiva com dúvidas consideradas por você bobas, mas será que estudando 4 horas de HTML (que pra mim é muito pouco, se considerar que a formatação de páginas é algo complexa, exigindo CSS e às vezes JavaScript) a pessoa vai descobrir certas coisas…

:stuck_out_tongue:

hehehe… desculpa a risada, mas o Luca tava falando do protocolo HTTP, não HTML.

L

dreamspeaker:
Leonardo3001:

Outra, acredito que o aprendizado não tem que seguir o estilo tradicional. Endendo a sua raiva com dúvidas consideradas por você bobas, mas será que estudando 4 horas de HTML (que pra mim é muito pouco, se considerar que a formatação de páginas é algo complexa, exigindo CSS e às vezes JavaScript) a pessoa vai descobrir certas coisas…

:stuck_out_tongue:

hehehe… desculpa a risada, mas o Luca tava falando do protocolo HTTP, não HTML.

Putz! Que mico!

Olhei HTTP e mentalmente li HTML!

Bom, nesse caso, em 4 horas dá pra aprender HTTP.

P

[color=red][b]PELAMORDEDEUS!!!

EU NUNCA DISSE ISSO!!! :shock:

O QUE EU QUIS DIZER É JUSTAMENTE O CONTRÁRIO: COMO ESTES CONHECIMENTOS SÃO BÁSICOS, NÃO ADIANTA VIR DIZER QUE É ISSO QUE TENHO DE APRENDER POIS ISTO EU JÁ SEI QUE TENHO DE APRENDER! :wink:

SERÁ QUE AGORA FICOU MAIS CLARO??? :shock: [/b] [/color]

Forte abraço,

Mauricio_Linhares

Melhorou.

Todo programador Java que se prese deve ler o “Effective Java” vezes o suficiente pra decorar tudo o que tem lá.

Ironlynx

Excelente dica, maurício.E para quem quer começar, é só ler os resumos do Effective Java da Bani:
http://www.java.blogger.com.br/

luistiagos

C#

Leozin

poxa como o GUJ é legal, só tem cara Sênior plus plus que sabe o que um Jr. deve aprender ou não

vou seguir todas essas dicas :slight_smile:

Thiago_Senna

Effective Java com certeza é o livro top não apenas para jr’s. Infelizmente tem até arquiteto que desconhece a existência deste livro.

Para desenvolvimento web considero html e css muito importante. É algo básico que se não usado eficientemente transforma os jsp’s e cia em uma verdadeira macarronada. Minha dica é que pelo menos estude o conteúdo deste site: http://www.htmldog.com

Uma dica que faria um jr diferente dos outros é se ele já aplica Refactoring e Testes Unitários no seu dia a dia. Essas são duas ótimas práticas que fariam você diferente de muito programador por aí.

Um dica básica é ser crítico com o seu próprio código. Analise o código dos outros e veja quais práticas deles são melhores que a sua. Como já foi dito anteriormente, se seu código estiver muito extenso ou dificil, desconfie. Pare, pense e procure uma solução mais simples. Cada pedacinho de código tem que nascer do que sua inteligência tem de melhor para oferecer! :wink:

josenaldo
  • … a não ter ciúmes de código
  • … que a primeira solução nem sempre é a melhor (e muitas vezes não é)
  • … que Java não é a solução para os problemas do aquecimento global nem muito menos pra TPM da sua mãe. Existem outras linguagens que se aplicam muito bem a determinados tipos de problema.
  • … a pesquisar antes de iniciar a resolução de um problema. Seu problema muito provavelmente já foi encontrado por alguém.
  • … a ler para aprender uma tecnologia. passar o olho em um “tutorial rápido e veloz que se aprende rapidinho em pouco tempo” não vai te dar conhecimento suficiente para manipular a tecnologia de forma adequada
  • … a usar ferramentas como depurador, analisador de código, ant, profiler…
  • … a saber quanto tempo leva para realizar uma tarefa.
  • … a usar bem uma IDE
  • … a aprender. Aprender uma tecnologia muito bem e se especializar nela pode ser pior que saber pouco de uma. Se ficar estagnado nessa tecnologia, o trem da inovação passa e você fica para trás.
  • … a diferença entre ser persistente e teimoso.
  • … a ser um “preguiçoso pragmático”. Compre/Adquira. Se não puder, altere. Se não puder, só então faça.
  • … que se parar de estudar, volta a ser algo pior que júnior… rrssrsr
fabim

que encapsular um objeto não tem nada a ver com ficar criando gets e sets pros atributos.

sergiotaborda

Sua lista esta boa, eu colocaria algum item sobre Threads aí. Mas você quis dizer “a menos que” ou “mesmo que” seja uma implementação de baixo nível?

Tem (poucas) horas que não dá pra fugir dos sockets…

Sim, eu quiz dizer “a menos que”.
Essas poucas ocasiões em que não dá para fugir são aquelas que se enquadram em “uma implementação de baixo nivel” :wink:

mchiareli

qual o “padrão” adotado para classificar um programador java como jr ,pleno ou senior?

olhaomarcosaqui

boa pergunta, alguem ai se dispõe a explicar esta classificação?

francisco.rodrigues

Deve evitar o maldito System.out.println. Eu dei manutenção num sistema que tinha uns 500 sysout, questionei o programador, ele me disse que era só fazer um replaceAll!! PQP…

Todo Programador Java jr. acha muito bonito tratar todas as exceções assim:

try{ //código }catch(Exception e){ }

ou assim:

catch (Exception e){ e.getMessage(); }

Kenobi

Bom, levar cafezinho sempre pro arquiteto do grupo e trazer donuts de vez em quando :-).

Ler também a série Progmatic Programmer e Getting Real da 37Signals :slight_smile: , além de procurar entender profundamente conceitos, não somente produtos, como DDD, programação paralela e por aí vai …

Começar a assinar boletins dos principais players, como BEA, IBM , Sun , Oracle pra estar antenado com o que está vindo e principalmente veículos de respaldo no meio como Infoq.com , TheServerSide.com entre muitos outros que deverão estar no seu bookmark :slight_smile:

Aqui uma boa dica também são alguns blogs do povo que manda bem no guj, como Louds, Shoes, Luca, Akita e por aí vai … ( o meu tá ruinzinho, mas um dia melhora :stuck_out_tongue: ) .

lrpfeliciano

Tentarei não ser repetitivo, porém na minha concepção, todo programador jr deve:

.Seguir as opiniões sugeridas nesse tópico (elas são boas, parabéns pelo tópico pcassiano);

Não ter preguiça de estudar. Estudar sempre;

Pesquisar antes de perguntar;

Sempre antes de usar uma IDE ou framework, procurar fazer um exemplinho na mão;

Eu sei que o pessoal do GUJ vai me dar um tiro, mas antes de ir atrás de grana, procurar enriquecer (enriquecer mesmo, e não colocar letras) o seu currículo.

Calvin

Olá,

lrpfeliciano:
Tentarei não ser repetitivo, porém na minha concepção, todo programador jr deve:
[…]
Pesquisar antes de perguntar;
[…]

Esse é o mais importante de todos!

Abraços

rissato

a buscar tópicos no GUJ antes de sair postando dúvidas bestas…

P

Sempre que posso posto umas coisas legais aqui, levanto discussões sadias etc. :wink:

Se você que está lendo estas letras agora ainda não deu sua sugestão, tá esperando o quê?

Ajude um Jr. a crescer! :lol:

Forte abraço,

guilherme.chapiewski

… a usar o Google direito.

uncoloredmind

deve estudar UML

mto importante pra dar base

Leozin
  • a ver as datas dos tópicos e não ficar revivendo a toa
peerless

Leozin, o guj não é orkut para -ser ruim reviver um tópico-, as vezes até vale a pena.

Marcio_Nogueira

…a se aperfeiçoar e se reciclar sempre, pois se há uma certeza é que “tudo muda o tempo todo”. :wink:

cgomesnet

… ficar longe dos MMORPG se estiverem desempregados ou em período de aprendizado (estudando em casa).

P

É impressionante como minha vida mudou desde que criei esse tópico!

Hoje minha cabeça é completamente diferente…

O tempo é sinistro…

victorwss

pcassiano:
É impressionante como minha vida mudou desde que criei esse tópico!

Hoje minha cabeça é completamente diferente…

O tempo é sinistro…

Porquê? O que aconteceu?

P

Falando beem resumidamente, e focando apenas no ato de programar, descobri que Java não resolve tudo e, mesmo no que a linguagem/plataforma “resolve”, existem bons “concorrentes”…

Hoje um dos meus dilemas é trabalhar ou não no que realmente gosto (coisas menos “engessadas”), ou trabalhar no que me dá mais dinheiro… Java sabidamente “paga mais”, todavia os tempos são outros, diferentes de quando eu postei este tópico e também de quando a linguagem foi criada…

Enfim, não dá para ser muito objetivo na resposta, já que estou falando de “impressões”, ou de “percepções”…

J

pcassiano:
Falando beem resumidamente, e focando apenas no ato de programar, descobri que Java não resolve tudo e, mesmo no que a linguagem/plataforma “resolve”, existem bons “concorrentes”…

Hoje um dos meus dilemas é trabalhar ou não no que realmente gosto (coisas menos “engessadas”), ou trabalhar no que me dá mais dinheiro… Java sabidamente “paga mais”, todavia os tempos são outros, diferentes de quando eu postei este tópico e também de quando a linguagem foi criada…

Enfim, não dá para ser muito objetivo na resposta, já que estou falando de “impressões”, ou de “percepções”…

Acredito que qualquer linguagem dê dinheiro. O importante é a qualidade do projeto. Paga-se 10.500 em petrópolis para se pesquisar usando fortran.

P

Isso é exceção, e não regra! :shock:

A regra é o mercado morder tua carne, chupar teu sangue, roer teu osso, chupar o tutano e, quando o ossin já tiver sequin, jogar você fora! Triste, mas é assim…

A coisa fica um pouco mais amena nos grandes centros, para quem conhece [color=red]Java + Struts + Hibernate + Oracle e/ou SQL Server e tem PJ. A “regra” para se ganhar um pouquinho mais programando em Java é esta, IMHO.[/color] Não significa que eu necessariamente condorde com isso… :roll:

luistiagos

não ressucitar topicos mortos…

JMan

Acrescentando a mensagem de Maurício Linhares…

Estudar é mto, mto importante, canso de ver “programadores” java que nunca pegaram um livro para estudar, tipo o cara sabe programar aquele feijão com arroz básico, agora se você pedir pro cara levantar um sistema do “chão” usando coisas como Struts e Hibernate por exemplo (que é mínimo hoje em dia) ele ele simplesmente não consegue, não sabe montar um projeto, configurar (Tiles, Validator) por exemplo, não sabe que existem ferramentas como o Xdoclet por exemplo para gerar mapeamentos via anotações e etc… O cara só faz algo, se você der tudo pronto pra ele… com exemplos e etc… e ainda tem uns que usam scriplet (sic)… ja vi nego que diz que sabe java… mas na verdade não sabe po*** nenhuma; não têm a mínima noção de JAVA!!!

E todo programador deve ler no mínimo os seguintes livros …

Effective Java Programming Language by Joshua Bloch

http://java.sun.com/docs/books/effective/

Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma (Author), Richard Helm (Author), Ralph Johnson (Author), John Vlissides (Author)

Todo programador Java Jr. deve aprender…

… que estudar deve ser algo que ele deve fazer ao longo da vida.

… que não adianta ficar de bla bla bla, tem que programar muito.

… que ele não vai ganhar 50 a hora, só pq ja sabe fazer Hello World.

… aprender a usar ANT. http://ant.apache.org/

… a rapudara é doce, mas não é mole.

E ainda, reforço todos os ítens propostos pelo Luca impreterivelmente.

vance

:arrow: … a falar, escrever e ler em português corretamente.

Resolvendo esse problema, boa parte das dúvidas que aparecem no guj, e dos códigos/especificações ruins que enfrentaremos sumirão.

Edit:
Acrescentem interpretação de texto também. E, se possível, tudo isso em inglês, já que é o idioma internacional. Mas se ele(a) ficar bom no português já tá de bom tamanho. :smiley:

Criado 9 de setembro de 2007
Ultima resposta 10 de set. de 2007
Respostas 45
Participantes 33