| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/09/2007 12:58:07
|
pcassiano
Virtual Machine Man
Membro desde: 07/06/2005 16:17:56
Mensagens: 730
Offline
|
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!
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.
Fazendo um link com o post do cv, gostaria de lançar aqui o seguinte desafio:
Complete a frase: "Todo programador Java Jr. deve aprender..."
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?
Forte abraço,
Paulo CASSIANO.
This message was edited 1 time. Last update was at 13/09/2007 23:17:48
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/09/2007 13:55:41
|
Mauricio Linhares
Moderador
![[Avatar]](/images/avatar/97af07a14cacba681feacf3012730892.jpg)
Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline
|
...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.
|
Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr
Screencast de Introdução a linguagem Objective-C |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/09/2007 14:06:43
|
peczenyj
Moderador
![[Avatar]](/images/avatar/299dc35e747eb77177d9cea10a802da2.jpg)
Membro desde: 26/03/2006 23:25:37
Mensagens: 3191
Localização: Rio de Janeiro
Offline
|
Todo programador Java Jr. deve aprender...
... que não se compara o conteúdo de strings usando == e sim o método equals
|
http://pacman.blog.br
'Não importa quanto alguém se dedique à tarefa. Ninguém consegue fazer a água da cascata cair para cima.' |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/09/2007 14:32:17
|
sergiotaborda
GUJ Expert
![[Avatar]](/images/avatar/b4a0e0fbaa9f16d8947c49f4e610b549.png)
Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline
|
Manipular Strings correctamente. Usando StringBuilder para concatenar e equals() para comparar.
Saber implementar toString().
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.
Saber implementar equals() e hashCode() e que implicações isso tem ao usar coleções.
Saber criar comparações complexas de objectos usando Comparator e saber usar comparator para
ordenar colecções.
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
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.
Saber que double e float são uma merda para calculos com dinheiro e saber usar BigDecimal
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.
Conhecer patterns, reconhecer o seu uso correto e o seu uso errado.
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.
Pensar em termos de objetos e seus relacionamentos e não em termos de banco e procedimentos.
|
Criando sua própria API de Validação
Blog do MiddleHeaven |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/09/2007 14:48:07
|
bzanchet
Java Ninja
Membro desde: 18/05/2006 20:04:34
Mensagens: 256
Offline
|
... smalltalk, python, ruby ou qualquer outra linguagem dinâmica.
|
http://conceitua-se.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/09/2007 15:32:18
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
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:
Acostumar-se a sempre escrever testes unitários a cada classe nova criada
Para o caso do Jr querer programar para web:
Estudar HTML, javascript e CSS antes de pensar em programar para a web
Estudar um tutorial de HTTP antes de aprender servlets
Estudar servlets antes de aprender JSP
Estudar JSP, taglibs e afins antes de aprender o primeiro framework MVC
Saber fazer um deploy de uma aplicação web na mão antes de usar uma IDE para isto
Estudar SQL e JDBC antes de aprender Hibernate
[]s
Luca
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/09/2007 16:32:50
|
cassio
GUJ Master
![[Avatar]](/images/avatar/8ae7398026ed8f2172aefd6cbc856bc8.jpg)
Membro desde: 19/06/2006 08:25:28
Mensagens: 1336
Localização: Caieiras-SP
Offline
|
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!"
Aprender que nem tudo o que está escrito nos livros é verdade absoluta
Aprender que Java não é a linguagem salvadora e que para diversos problemas existem soluções melhores.
|
Cássio Marques
Blog
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/09/2007 16:34:08
|
Leonardo3001
GUJ Ranger
Membro desde: 04/07/2007 18:28:58
Mensagens: 975
Offline
|
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:
Saber a diferença entre classe e objeto
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
Jamais repetir código, sempre pensar antes
Entender que as mensagens de erros e os stack traces estão aí para serem lidos detalhadamente
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
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 é:
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
Depois eu sugeriria:
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
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
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
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
É isso.
This message was edited 1 time. Last update was at 09/09/2007 16:42:36
|
Leonardo Veríssimo
-------------------------------------------------
Objectzilla |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/09/2007 17:17:11
|
dreamspeaker
GUJ Ranger
![[Avatar]](/images/avatar/c862890c3fd3e3d203580.jpg)
Membro desde: 22/04/2003 10:09:58
Mensagens: 752
Localização: SP - Capitar
Offline
|
sergiotaborda wrote:  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.
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...
This message was edited 1 time. Last update was at 09/09/2007 17:22:13
|
André Barbosa
Para de encher o saco e vai doar sangue!
twitter |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/09/2007 17:25:23
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
Leonardo3001 wrote: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.
Acho que não me fiz entender e vou repetir:
Antes de tentar aprender servlets, estude HTTP
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
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/09/2007 18:24:56
|
Leonardo3001
GUJ Ranger
Membro desde: 04/07/2007 18:28:58
Mensagens: 975
Offline
|
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.
|
Leonardo Veríssimo
-------------------------------------------------
Objectzilla |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/09/2007 18:39:04
|
pacalexandre
Entusiasta Java
![[Avatar]](/images/avatar/705cbc6741682eaaf63f44ce341c08a7.jpg)
Membro desde: 09/09/2007 17:56:30
Mensagens: 17
Localização: Brasilia
Offline
|
Deve aprender a Estudar , correr atras do seu problema , é claro o que todo mundo falow por aqui
Ser aplicado. ( estudar tudo ! de O.O até ANSI se for preciso ).
Ter visão do problema que está enfrentando.( Saber o que está fazendo ... escreva no papel primeiro depois use o micro).
E como foi dito Java é apenas um linguagem que tem tudo mas existem diversas maneiras de resolver os problemas.
Tudo depende do ponto de vista encarado ...
|
_________________________________
Paulo Alexandre
Desenvolvedor Java ...
Ruim não é não saber e não ter onde procurar ...
www.google.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/09/2007 18:47:13
|
Maracuja
GUJ Ranger
![[Avatar]](/images/avatar/aceacd5df18526f1d96ee1b9714e95eb.jpg)
Membro desde: 28/03/2006 10:18:44
Mensagens: 940
Localização: Behind the screen
Offline
|
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)
http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612/ref=pd_bbs_1/102-8036890-8004924?ie=UTF8&s=books&qid=1189374129&sr=1-1
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.
This message was edited 4 times. Last update was at 09/09/2007 18:59:50
|
"Nunca deixarei de reclamar, mas espero reclamar de coisas melhores a cada dia..." Um amigo muito sabio |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/09/2007 19:11:25
|
bobmoe
GUJ Ranger
![[Avatar]](/images/avatar/9cc25407f209e031babdac7d3c520ccb.jpg)
Membro desde: 11/07/2006 20:45:48
Mensagens: 806
Localização: Sampa
Offline
|
a atingir seus objetivos da forma mais fácil possível e a partir disso aperfeiçoar seu conhecimento gradualmente.
|
BOB - Roberto Nogueira - bobmoe.blogspot.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/09/2007 19:46:20
|
dreamspeaker
GUJ Ranger
![[Avatar]](/images/avatar/c862890c3fd3e3d203580.jpg)
Membro desde: 22/04/2003 10:09:58
Mensagens: 752
Localização: SP - Capitar
Offline
|
Leonardo3001 wrote:...
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...
hehehe... desculpa a risada, mas o Luca tava falando do protocolo HTTP, não HTML.
|
André Barbosa
Para de encher o saco e vai doar sangue!
twitter |
|
|
 |
|
|