JavaRush /Blogue Java /Random-PT /Kay Horstmann e suas 1.500 palavras sobre como se tornar ...

Kay Horstmann e suas 1.500 palavras sobre como se tornar um programador Java melhor

Publicado no grupo Random-PT
Provavelmente você já ouviu o nome Cay S. Horstmann. Ele é uma pessoa bastante proeminente no mundo Java e autor de muitos livros sobre nossa amada linguagem. Entre eles estão o curso clássico “Core Java” (publicado em russo no livro de dois volumes “Java. Professional’s Library” ) e uma série com um breve resumo da essência de “Java for Impacient” (publicado em russo “Java SE 8. Curso Introdutório” e “Java SE 8. Curso Básico " ). Ele carrega o orgulhoso título de “Campeão Java”. E neste link você encontra o site da velha escola com informações interessantes.
Kay Horstmann e suas 1.500 palavras sobre como se tornar um programador Java melhor - 1
Chamamos sua atenção para a tradução de um artigo para o recurso InformIT , no qual Kay dá algumas dicas para programadores iniciantes e continuados sobre como se tornarem melhores em sua profissão. Um dia, Jennifer Bortel, diretora editorial da InformIT, me pediu para falar sobre como me tornar um programador Java melhor. Ela sugeriu que eu, o autor de Core Java for the Impaciente, pudesse saber algo sobre isso. “Não há nada mais fácil, basta comprar um livro”, pensei a princípio. Mas essa resposta não funcionou, porque tenho que encaixá-la em 1.500 palavras, e até agora são apenas 62 * ( claro que, ao traduzir o artigo, não tentamos manter o número de palavras - aprox. trad. ). Recentemente recebi um e-mail de um amigo desenvolvedor que foi questionado em uma entrevista por que o código a seguir não era thread-safe:
class ThreadSafeClass extends Thread
{
     private static int count = 0;

     public synchronized static void increment()
     {
         count++;
     }

     public synchronized void decrement()
     {
         count--;
     }
}
Meu amigo decidiu que o código neste exemplo era thread-safe e eu concordei com ele, observando que faltava uma palavra-chave staticno segundo método e, uma vez inserida, o acesso era controlado pelo bloqueio interno do objeto de classe. Eu também disse que essa não é uma boa pergunta para entrevista porque se você precisar de um contador de threads, é melhor usar AtomicInteger. Mas aí, no meio da noite, acordei e me perguntei: e se essa palavra staticfosse deixada de fora por algum motivo? Talvez algum entrevistador sorrateiro tenha estruturado deliberadamente este exemplo de forma a enganar os candidatos? Então, respondi ao desenvolvedor que fez a pergunta e disse que provavelmente estava errado antes: em um universo paralelo chamado Interview Questions, a resposta a esta pergunta é: “O segundo método contém um bloqueio de objeto”. Depois dessa resposta, o cara perguntou se eu tenho um canal no YouTube onde ensino como lidar com esse tipo de problema de entrevista. Infelizmente, eu não faço isso. Eu ensino ciência da computação e escrevo livros, mas meu principal objetivo não é ser melhores “solucionadores de problemas em entrevistas”, mas sim tornar meus alunos melhores programadores. Era uma vez, Peter Norvig ( cientista americano na área de inteligência artificial, diretor de pesquisa do Google - aproximadamente. trad. ) escreveu um artigo maravilhoso em seu blog. Ele argumentou que os livros que prometem ensinar Java em 24 horas ou 21 dias são simplesmente ridículos. É difícil discordar dele: são necessários 10 anos, ou talvez 10 mil horas, para se tornar um especialista em qualquer área. E é sabido que os especialistas processam a informação de forma diferente dos novatos. Em um experimento clássico, jogadores de xadrez experientes e novatos viram um tabuleiro de xadrez com uma certa disposição de peças por alguns segundos, e então ele foi escondido e solicitado a organizar as peças como estavam. Os iniciantes não lidaram muito bem com a tarefa, mas os especialistas não tiveram problemas. Mas apenas sob uma condição importante: a disposição das peças deve corresponder ao jogo real . Se as peças fossem colocadas aleatoriamente, os especialistas não seriam melhores na reconstrução do tabuleiro do que os novatos.
Kay Horstmann e suas 1.500 palavras sobre como se tornar um programador Java melhor - 2
É por isso que respondi à pergunta da carta exatamente da maneira que fiz. Minha formação é em programação real, não em entrevistas, então instintivamente adicionei a palavra-chave que faltava e cheguei à conclusão “errada”. Gostaria de pensar que ainda seria contratado depois de explicar o que aconteceu e por que nunca escreveria código como o exemplo sem minha adição. Talvez, se tal resposta não os satisfizesse, eu próprio não gostaria de trabalhar com eles.
Bem, não acho que estudar para exames de certificação ou entrevistas irá transformá-lo em um programador melhor. Também tenho certeza de que comprar um grande número de livros sobre programação e depois lê-los de capa a capa também não funcionará (embora eu, como autor desses mesmos livros, não queira admitir isso!). Na verdade, uma boa maneira de se tornar um programador melhor é criar o máximo de software possível . De tempos em tempos, ministro um curso introdutório à ciência da computação na minha universidade. Este é de longe o curso mais difícil que já ensinei. É ainda mais difícil que a pós-graduação. Quando comecei a trabalhar como um jovem professor, dava palestras diligentemente para alunos nas quais abordava questões de programação, como a diferença entre loops fore whileloops do. Em seguida, atribuí aos alunos quatro projetos de três semanas. E essa matéria tem sido ensinada dessa forma desde o início dos tempos em todas as universidades. Após minha primeira tentativa, o instrutor do curso do segundo semestre reclamou que a maioria dos meus ex-alunos não entendiam realmente nem mesmo os loops simples após o primeiro semestre de programação. E tais resultados também ocorreram desde o início dos tempos. Lembra do artigo “FizzBuzz ou por que os programadores não conseguem programar” ? Quando você aprende uma língua estrangeira, a maioria das tarefas são exercícios e prática, e não teoria. É extremamente importante “empurrar” o conhecimento para o subconsciente. O ponto de virada ocorre quando você não precisa mais pensar ativamente em cada ciclo ou (no caso do francês), em cada verbo irregular. Se esse momento chegou, você está pronto para passar para o próximo nível. E não há nada de revolucionário nesta ideia.
Kay Horstmann e suas 1.500 palavras sobre como se tornar um programador Java melhor - 3
A chave para tudo é o feedback instantâneo. Alguns psicólogos acreditam que poderíamos fazer muito mais com a aprendizagem baseada em computador e com feedback instantâneo. Por exemplo, em outro experimento clássico, aspirantes a pilotos em treinamento passaram por uma sessão de treinamento na qual foram obrigados a olhar repetidamente para o painel de instrumentos e descrever o movimento do avião. Ao mesmo tempo, eles receberam feedback instantâneo indicando se fizeram isso corretamente ou não. Após duas horas de treinamento, eles superaram os pilotos experientes. É claro que isso não significava que eles pudessem ser enviados imediatamente para um vôo real, mas eles não estavam mais nervosos com os variados e numerosos mostradores do painel de instrumentos. Portanto, se você está apenas começando a aprender Java, fazer muitos exercícios práticos para praticar é a melhor ideia. Há um grande número de sites e cursos online que verificam automaticamente a exatidão do seu código. Escolha um que ofereça desafios reais em vez de bobagens. Afinal, você deseja que seu subconsciente seja bom no código que você realmente escreverá na prática. É por isso que não gosto muito de programar exemplos que utilizem situações inventadas, como classes de animais com métodos que miam e latem. Depois de algum tempo, você dominará os fundamentos da programação. Para passar para o próximo nível, você pode escrever alguns projetos. Vários anos atrás, o portal InformIT fez uma pergunta a programadores experientes: “Qual é a melhor maneira para um programador aprender uma nova linguagem?” Se resumirmos suas respostas, podemos concluir o seguinte: “use esta linguagem em seu projeto atual”. Então, pense no que você sempre quis implementar – e vá em frente. Vinte anos atrás, quando Java ainda era muito jovem,meu amigo e às vezes coautor Gary Cornell me ligou e disse: “Kay, vamos escrever um livro sobre Java”. Minha resposta foi que nem ele nem eu sabemos nada sobre esse Java, ao que ele respondeu: “E daí? Já temos um contrato para um livro." Nada para fazer. Tivemos que nos apressar porque outra pessoa anunciou o lançamento iminente do livro "Ensine-se a ser um Java Dummy em 24 horas" ... Acho que se chamava algo assim ( Kay zomba da série de livros "For Dummies" - "para manequins" a palavra "manequim" pode ser traduzida como "manequim" - nota do tradutor ). Para aprender um novo idioma, comecei com projetos - escrevendo um programa que criava uma interface de usuário para planejamento de aposentadoria e, em seguida, um programa que se conectava a um site meteorológico e exibia um boletim meteorológico. Depois vem um programa que simula a movimentação de carros na rodovia. Naquela época, esses programas eram simplesmente incríveis!java.awtjava.nete fios ( threads). E eu tive que aprender como fazer isso funcionar, não apenas o que a documentação diz. Naquela época eram coisas completamente diferentes. É por isso que Core Java [1] foi um sucesso: não era para manequins.
Kay Horstmann e suas 1.500 palavras sobre como se tornar um programador Java melhor - 4
Naquela época, aprender Java era muito mais difícil. Não tínhamos sites como Stack Overflow ( e também não tínhamos JavaRush - nota do editor ). Neste ponto, passo a formular os seguintes conselhos para melhorar sua “habilidade” de programação. Então, quando você trabalha em seu próprio projeto, você certamente ficará preso em algum lugar. Nesse caso, vá a um fórum especializado e tente encontrar respostas. Acredite, esta é uma ótima ideia . Primeiro, você fará perguntas que já foram feitas muitas vezes. Mas logo você adquirirá conhecimento e suas dúvidas se tornarão mais exclusivas. Esta é uma maneira incrível de aprender! Claro, não se trata apenas de copiar e colar um trecho de código e perguntar: “O que devo fazer com isso agora?” Você precisa ir ao fundo da questão, explicar quais tentativas você já fez para resolver o problema antes de ficar preso. Aliás, na maioria dos casos, enquanto formulo uma pergunta por escrito, eu mesmo encontro a resposta e tudo o que preciso fazer é dizer para mim mesmo: “Qual é o problema aqui, é óbvio” antes mesmo de enviar a pergunta . Mas mesmo que isso não aconteça... Acredite, perguntas ponderadas tendem a atrair respostas ponderadas. Apenas lembre-se de retribuir o favor social respondendo às perguntas ponderadas de outras pessoas. Fazer perguntas e responder perguntas ponderadas fazem de você um programador melhor. “Então, e os livros? - você pergunta. “Eles realmente se tornaram completa e irrevogavelmente obsoletos graças ao Google e ao Stack Overflow ?” Sempre que navego em uma nova tecnologia, acredito que sou uma pessoa corajosa e consigo superar todas as dificuldades sozinho. Mas uma hora de tormento sem sentido dá lugar a uma hora de sanidade - e eu compro um livro. Os livros técnicos são uma pechincha impressionante hoje em dia. Se eu pagar US$ 40 por um e-book e obtiver resposta rápida apenas para uma pergunta, já terei meu dinheiro de volta. Odeio decepcionar meus colegas escritores, mas nunca li um livro técnico do início ao fim. Começo onde acho que meu problema e sua solução estão escritos e leio até entender como resolvê-lo. Por esse motivo, estou atualmente tentando escrever livros que possam ser lidos dessa forma. Essa abordagem deu origem à série “Para os Impacientes”. E neste ponto devo parar - ultrapassei o limite editorial de 1.500 palavras. Deixe-me apenas acrescentar que para se tornar um programador melhor, comece reconhecendo que existem muitos níveis de conhecimento.
  1. Primeiro, “puxe” as estruturas básicas da linguagem para o seu subconsciente, ou seja, leve seu conhecimento ao automatismo, resolvendo um grande número de exercícios.

  2. Comece a trabalhar em projetos reais de seu interesse o mais rápido possível.

  3. Em seguida, junte-se a uma comunidade onde você pode fazer e responder perguntas.

  4. Depois de fazer isso, você poderá falar com conhecimento e experiência em entrevistas. E realmente não importa se você resolve o quebra-cabeça inventado.
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION