Aqui estão algumas informações sobre mim, antes de começar com a pergunta.
Sou graduado em Ciência da Computação, sendo Java minha principal linguagem de codificação.
O problema básico da minha universidade são os padrões de ensino. Ninguém está preocupado em ensinar conhecimento de codificação para os alunos, em vez de apenas conhecimento teórico.
O efeito é que a maioria dos meus colegas de faculdade não entende de programação.
Mesmo eu não consegui sair do ambiente de programação tradicional, o que limita minha codificação a uma extensão.
Quais são as possíveis maneiras pelas quais posso desenvolver e expandir minhas habilidades de programação / codificação.
Além disso, você pode sugerir as fontes para o mesmo?
Editado : Fontes que sugerem o desenvolvimento de habilidades de codificação.
Respostas:
A programação é um dos campos em que a experiência importa. Portanto, para se tornar um codificador melhor, você deve codificar mais. No entanto, escrever não é a única coisa que você deve fazer. Você também deve ler o código de outros desenvolvedores e aprender com ele o que é um bom código. Consulte as perguntas SO sobre isso .
Você também pode encontrar livros úteis especificamente para codificação; como "Código completo". Eles contêm descrições do que é um bom código que, combinado com seu conhecimento fundamental, pode fazer de você um bom programador.
fonte
must-read
lista. :) Obrigado!(push 'code-complete must-read)
Minha citação favorita é de Confúcio:
Todo o conhecimento que obtive foi da aplicação de uma única estratégia:
Você quer aprender c #? Consiga um emprego como desenvolvedor de C #.
Você quer aprender italiano? Vá lá com um dicionário inglês / italiano e fale italiano
Você quer aprender a codificar? Código!
fonte
A codificação é um ótimo conselho, mas sem alguém para fornecer feedback, você apenas repetirá seus erros. Encontre um emprego, trabalhe em um projeto de código aberto, encontre um mentor e faça com que eles analisem seu código.
fonte
Aqui está uma apresentação que Dan North fez e a QCon sobre como passar de programador iniciante para especialista chamado Sharpening the Tools . Abaixo estão as principais sugestões da apresentação:
fonte
Tente escrever um compilador para uma linguagem simples do zero. Você irá melhorar muito suas habilidades ao longo do caminho (com algumas boas técnicas teóricas da teoria formal da linguagem como um bônus). Tentei escrever uma versão simples do Excel, e também é um exercício muito bom.
Como outros disseram, a única maneira de melhorar suas habilidades de codificação é realmente fazê-lo. Deixe sua mão suja com alguns projetos grandes. Porém, para programas grandes, é ainda mais importante que você domine as técnicas de design de software; caso contrário, o tamanho do programa parece incontrolável.
Há uma bela citação de Nate Kirby:
Portanto, alternar entre esses dois níveis de abstração é a habilidade que você deve dominar.
Além disso, a velocidade de quantas linhas de código você pode escrever por hora não é o que você deve procurar. Eu gosto de uma citação de David Parnas :
fonte
Eu implementei um pool de apostas ou um jogo de Bacará em quase todos os idiomas que aprendi.
Este tipo de software cobre
O blackjack e o pôquer para vários jogadores também funcionariam.
Uma ressalva é que, no meu trabalho diário, trabalho em sistemas financeiros e há uma enorme sobreposição entre as coisas a serem consideradas ao escrever um jogo de azar multijogador e um sistema de negociação.
fonte
fonte
Pense assim ... Tiger Woods não chegou a ser "o melhor" jogador de golfe assistindo golfe ou lendo sobre ele. Ele ficou assim, como qualquer outro atleta, estudando, praticando, descobrindo onde ele pode melhorar seu jogo e fazendo algo a respeito.
Codificação é a mesma. A melhor maneira de melhorar é estudar o que os outros fazem, entender por que eles fazem dessa maneira e depois fazer você mesmo.
fonte
Como em qualquer outra atividade humana, a melhor maneira de melhorar é praticar seu conhecimento, mas você precisa de alguns exercícios para isso. Dave Thomas , um dos autores do livro The Pragmatic Programmer, introduziu o conceito de Code Katas , semelhante ao conceito de kata nas artes marciais.
Você pode dar uma olhada lá: http://codekata.pragprog.com/
fonte
Pule na água, pode estar frio a princípio e você ficará tentado a sair, mas logo seu corpo se acostumará e se aquecerá novamente. À medida que você se sentir confortável na água, poderá nadar por aí, talvez entrar final profundo.
Acabei de terminar a faculdade há alguns meses, onde estudei Java. Igual a você, eu não tinha idéia de como codificar corretamente. Há cerca de um mês, eu queria criar um aplicativo da web em PHP. Eu não sabia o que estava fazendo, mas apenas fui em frente. Foi intimidador e esmagador no começo, mas à medida que você pratica, isso se torna natural. Até escrevi o aplicativo várias vezes, simplificando-o ainda mais. Agora estou trabalhando no aplicativo a partir do zero, mas desta vez estou descobrindo como fazê-lo orientado a objeções e usando o PEAR e seu módulo quickform, que é outro obstáculo que tenho de superar, mas determinado e empolgado.
Então pratique. Pule na água! Boa sorte :)
fonte
Sugiro que você aprenda toda a sintaxe do seu idioma favorito. Entenda como usar funções virtuais, herança, lambda, se existirem. etc. Uma coisa que fiz foi pegar uma grande biblioteca assustadora (fiz isso com boost e STL para C ++) e ver se todas as linhas e palavras-chave fazem sentido.
Ou, como alternativa, você pode ler a referência de sintaxe do idioma, se houver uma boa que cubra a versão mais atualizada. Como exemplo, aqui está a referência de C # (não a versão na parte superior. Cometi o erro olhando uma versão antiga mais popular que não tinha a sintaxe que eu estava procurando)
fonte
O consenso geral é "escrever mais código", com o qual concordo, mas acrescentarei a esse conselho que você deve escrever muitos tipos diferentes de código. O Java é bom no que diz respeito às linguagens, mas você definitivamente deve escrever um código para cima e para baixo no espectro de potência. Além do Java, sugiro fazer alguns pequenos projetos em uma linguagem de nível inferior (C é bom para isso), uma linguagem de script (eu prefiro perl, mas python também é uma boa opção), uma linguagem funcional ( lisp é a recomendação geral aqui, mas OCaml e Haskell também são boas escolhas) e, pelo menos, se sentem confortáveis com a leitura de uma linguagem assembly.
Além disso, escolha alguma variedade nos tipos de programas que você implementa. Veja como implementar pelo menos uma GUI de área de trabalho, um aplicativo da Web rico, um cliente e servidor de rede, um driver, um utilitário de transferência de dados, um rastreador de raios e uma simulação de física.
Todos os projetos devem ter um alcance relativamente pequeno, o objetivo não é ter um programa completo, mas obter uma ampla experiência nos diferentes domínios em que você pode se deparar, para aprender os diferentes tipos de pensamento necessários para cada um, e descobrir onde estão seus interesses.
Depois de fazer isso, você terá uma boa idéia de que tipo de programação está mais interessado e poderá encontrar ou iniciar um projeto de código aberto para obter experiência trabalhando em grandes bases de código, lidando com projetos de longo prazo e trabalhando com outros desenvolvedores.
fonte
Você está recebendo algumas respostas semelhantes e as minhas também serão as mesmas. Escreva código. Existem duas boas maneiras de fazer isso.
Qualquer uma dessas opções fornecerá a experiência direta de programação necessária, bem como o envolvimento nas comunidades de programação, à medida que você aprender e precisar fazer perguntas para tirar mais proveito dela. Você cometerá muitos erros. Isso é bom - se você para de cometer erros, para de aprender e precisa encontrar uma nova maneira de se desafiar.
fonte
Minhas sugestões
fonte
As revisões por pares realmente ajudam a melhorar a qualidade do seu código. Se você não tiver um mentor real, poderá postar seu código [depois de reduzi-lo ao mínimo necessário] em StackOverflow ou RefactorMyCode ou em listas de correio, e as pessoas o ajudarão a melhorar a qualidade do seu código.
fonte
"Prática!" Isso é um clichê.
Você deve revisar o que aprendeu nas aulas de matemática e criar alguns programas que lidam com os problemas. Além disso, implemente um programa de elevador, uma máquina de venda automática (que calcula as alterações nas moedas), para aprimorar suas habilidades lógicas. Pense em tudo na vida cotidiana e implemente-os.
fonte
Sim, a prática é extremamente importante para desenvolver habilidades de programação e mantê-las afiadas. No entanto, somente a prática o levará tão longe. Você também precisa aprender com pessoas que sabem mais do que você. Existem técnicas de que você nunca ouviu falar, práticas cujos benefícios não são imediatamente óbvios e truques que você nunca conseguiu inventar.
A maneira de aprender novas técnicas, truques legais e práticas úteis são muitas. Leia livros. Converse com colegas de trabalho. Pergunte. Reveja o código de outras pessoas e peça que elas analisem o seu. Leia blogs e artigos sobre programação, incluindo este site. Em resumo, não trabalhe no vácuo.
Ah, e se você não tem certeza do significado de NP-completo, ou se a notação big-O o assusta, provavelmente você deve fazer alguma teoria das classes de computação e algoritmos.
fonte
Eu diria que você deve ler sobre os padrões de design, como Builder, Factory, Composite e, eventualmente, Observer, Mediador e Flyweight. Os padrões de design não são o fim de tudo para soluções de codificação, mas demonstram como implementar conceitos teóricos de programação orientada a objetos.
fonte
Só posso sugerir o que funcionou para mim. Eu sonhei em aprender uma linguagem de programação e criar um mecanismo de xadrez com ela. Saí gastando tempo com livros, artigos e pequenas amostras. Por isso, decidi verificar projetos reais com melhor documentação para o desenvolvedor. Eu escolhi um e comecei a ler o projeto dia a dia. Não pense que os dias que passam perdem tempo enquanto lê. É muito melhor do que gastar tempo lendo artigos e livros. Você encontrará muitas coisas que não estão claras à primeira vista, mas dia após dia isso mudará se você tentar pesquisar com paciência. Não espere entender tudo em uma semana. Você precisa manter sua baixa auto-estima quando não entender algumas coisas. Apenas tente descobrir como essa coisa incrível está funcionando e se divertindo.
Escolha um projeto existente que tenha paixão por ele. Comece a ler códigos, depure-o e tente entender como as coisas funcionam todos os dias. Também use o projeto para si mesmo. Então comece a adicionar alguns recursos que você deseja. Tente escrever um aplicativo igual ou semelhante.
fonte