Não vou incomodá-lo com detalhes da minha discussão, por isso a apresentarei na forma de um breve exemplo.
Um cara de java tem seguido artigos e publicações de um programador famoso (uma espécie de Martin Fowler do meu país). Ele diz que está compartilhando alguns segredos que outros programadores famosos não compartilham.
Eu nunca acredito que existem alguns segredos como assistentes na área de programação. Mas alguns programadores que ainda não são bons nessa área acham que outros programadores famosos são bem-sucedidos porque conhecem alguns segredos que nós não conhecemos.
Eu discordo totalmente disso e discuti isso com alguém e, finalmente, ele me disse que você tem 2 anos nessa área e ele (cara de java) é programador profissional de 20 anos, para que ele saiba melhor que você.
Eu queria ter certeza de que não estou errado. É por isso que eu queria saber disso.
Respostas:
Eu quase diria que é o oposto ....
Eu trabalhei com pessoas que gostavam de ser complicadas por qualquer motivo. É verdade que eles eram bons programadores - quando tomados no vácuo - mas o código que eles produziam era geralmente bastante obtuso e difícil de manter por outros. Não faz sentido fazer algo inteligente que economize algumas teclas, quando dois anos depois alguém que mantém o código vai perder um dia quando fica perplexo com o truque.
De fato, se eu tivesse que indicar uma das coisas mais importantes que aprendi em meus dez anos de experiência comercial como programador - é que a manutenção é importante . Ele é supremo, muito acima de saber alguns truques e truques obscuros que podem ser úteis em situações raras, mas que quase certamente tornarão a base de código mais difícil de manter a longo prazo.
Para ser sincero, eu diria que toda a codificação deve ser feita de forma que qualquer recém-formado com conhecimentos básicos relativamente básicos no idioma / plataforma em questão possa pegá-lo e trabalhar com ele. Se é tão complicado e obscuro que você precisa de alguém com 20 anos de experiência no idioma / plataforma que conheça todos os pequenos truques internos, então o projeto está em uma terrível dívida técnica.
fonte
programadores com mais experiência sabem mais coisas
eles não são segredos
Parece que ele está tentando vender alguma coisa!
fonte
<rant>
Eu me deparei com essa merda há mais de 30 anos. Isso me irritou e me irritou ainda mais agora. Chama-se Argumento da Autoridade (AKA Proof by Authority ) e é pura besteira não adulterada * t. Todas as pessoas que conheci que tentaram reivindicar isso por si mesmas tiveram um sério problema de auto-estima ... e muitas vezes sabiam muito menos sobre o assunto do que pretendiam conhecer.
Eu conheci pessoalmente vários programadores assustadores e inteligentes que ainda estavam no ensino médio e estavam codificando há apenas um ano ou dois. Apenas dois exemplos: o sistema original do fórum foi escrito em 1973 por um adolescente de 15 anos e a primeira implementação de mensagens instantâneas para vários usuários foi escrita em 1974 por um adolescente de 13 anos que bebia leite enquanto os outros engenheiros estavam consumindo. uma cerveja na sexta-feira à tarde.
Também conheço alguns dinossauros que não adotam uma nova tecnologia há 10 ou 15 anos. Muitos deles admitem não acompanhar o que está acontecendo no momento, mas há quem veja isso como um distintivo de honra. Não é.
</rant>
Tendo tirado isso do meu sistema, gostaria de expandir um ponto exposto nas respostas do @Bobby Tables e do @Developer Art: usar "segredos", escrever "código inteligente" ou fazer qualquer coisa no código que seja "prova" "de quão obscuro você pode fazer algo está errado . Período. É o ato de uma pessoa imatura e egoísta que não tem em mente os melhores interesses do projeto / empresa. Eles estão colocando minas terrestres de manutenção que sairão em algum momento no futuro, provavelmente depois de terem passado para outras
vítimasempregadoras.O oposto de "inteligente" é escrever um código claro e conciso que use bem a linguagem de programação; usa padrões consistentes de nomeação; comentários apropriados de final de linha; bons comentários em bloco para explicar as principais seções; está documentado (com exemplos, quando apropriado); e testado. É isso que um verdadeiro programador profissional oferece.
E quando terminam, eles se voltam e orientam a próxima geração de programadores profissionais.
fonte
Não sei ao certo como alguém pode falar com o conhecimento hipotético de outra pessoa, mas minha experiência é que não existem "segredos" para a programação de computadores. De fato, é um domínio quase definido por abertura e compartilhamento de conhecimento. Alguns dos projetos mais complexos (aqueles que poderiam se beneficiar mais desses "segredos") são de código aberto, como o kernel do linux.
Acho que a ideia de que os programadores estão secretamente acumulando técnicas especiais é absurda, mas é muito difícil provar um negativo - especialmente quando é puramente hipotético.
fonte
Os únicos segredos que tenho conhecimento são:
umbom trabalhoduro.fonte
[^a]
- isso não apenas torna a expressão mais rápida, mas também inclui vários caracteres estendidos / Unicode que o original perdeu. Eu digo que, pelo menos quando se trata de programação, trabalho duro não faz sentido. Não há substituto para o bom trabalho.Conheço um segredo que os programadores mais jovens não tendem a conhecer ou aceitar. Quando alguém é avançado o suficiente para entender isso, ele geralmente descobre por conta própria.
<TheSecret> Todo o código é péssimo. Especialmente a sua. A minha também. O código de todos os programadores geniais do mundo --- sim, também é péssimo. Aceite e faça o trabalho da melhor maneira possível. </TheSecret>
fonte
Eu tenho 50 anos de experiência. Aprendi muitas coisas que os programadores mais jovens ainda não aprenderam. Estou perfeitamente disposto a compartilhá-los e tento, de várias maneiras.
Aprender é algo que você precisa fazer.
Costumo ouvir que a manutenção é realmente importante e concordo completamente. No entanto, ele não vem de graça. Pode exigir mais ou menos uma curva de aprendizado por parte do mantenedor.
Um programador recém-formado em Ciência da Computação examinaria meu código e diria que é impossível de manter e cheio de segredos. De fato, ele ou ela simplesmente não termina de aprender coisas novas.
Os pilotos têm um ditado, quando você passa nos testes exigidos e recebe o "bilhete" do seu piloto. Eles dizem que é uma licença para aprender.
A educação não para quando você recebe um diploma. Está apenas começando.
fonte
Conhecer pequenos segredos ocultos de certas linguagens ou estruturas de programação tem pouco ou nenhum valor prático.
A maior parte do desenvolvimento prático de software não encontra esses recursos ocultos em sua prática. Ainda mais, uma das práticas recomendadas sugere que você evite deliberadamente se aventurar em áreas ocultas das tecnologias que usa, pois isso torna o código menos sustentável e mais propenso a erros, já que a maioria dos programadores não conhece esses "segredos".
Em vez de gastar / desperdiçar (escolha um) tempo aprendendo os segredos de uma tecnologia específica, geralmente é melhor expandir o alcance de um conhecimento e aprender ferramentas adjacentes ou ainda melhorar suas habilidades de não programação ou aprender mais sobre os negócios em que você está .
Com a velocidade da mudança em nosso campo, não vale a pena investir profundamente em uma ferramenta específica - o conhecimento será preterido em breve.
Agora, somente se você se posicionar como um especialista em tecnologia e pretender oferecer seus serviços de consultoria nesse campo específico, faz sentido investir profundamente. Caso contrário, é um esforço desperdiçado.
fonte
Você está vendendo uma lista de mercadorias aqui. Alguém está tentando empregar o conceito de Mysterious Secrets ™ que faz de você um Elite Programmer ™ com o objetivo de fazer com que você pague por esses Mysterious Secrets ™. O próximo passo é alguém se oferecendo para ensinar esses segredos misteriosos ™ na forma de vídeos, discursos, podcasts ou livros mal impressos pelo preço baixo e baixo de apenas <insira o que o vendedor achar que você estará disposto a pagar>.
Como posso ter certeza disso? Venho programando desde os anos 70 e conheço uma tonelada métrica a mais de linguagens de programação do que apenas Java. Eu já vi programação (profissional e escolarmente) do menor dos pequenos (sistemas embarcados com centenas de bytes - que são bytes - de RAM) até grandes pedaços de Big Iron ™.
Existe um segredo para ser um bom programador e único: você precisa trabalhar para melhorar a si mesmo constantemente. Quem lhe disser o contrário, é um mentiroso e / ou tolo.
fonte
O único segredo que não é conhecido pelos jovens programadores é: os programadores não são tão inteligentes quanto pensam .
Quando você sabe disso, para de escrever um código que não entenderá no próximo mês, começa a apreciar o controle de versão, não corrige o código que já funciona, documenta seu código, não interpreta a especificação, não t recursos de código que possam ser úteis algum dia no futuro, você não rejeita o código legado, ...
Em outras palavras, o segredo é a experiência.
fonte
Obviamente, alguém com 20 anos de experiência terá mais, bem, experiência do que alguém com apenas 2 anos. Mas não há segredos - qual seria o objetivo?
(Claro, alguém tentando manter um segredo se dizer que ...)
fonte
Enquanto a experiência importa, podemos aprender com as experiências dos outros. Acabei de ler "The Clean Coder", onde Robert C Martin (tio Bob) compartilha os erros que cometeu e as lições que aprendeu. Muitos dos quais estão listados nas respostas aqui, como continuar aprendendo.
fonte
Tudo o que poucos sabem pode ser considerado um segredo.
Tudo o que sabemos hoje foi descoberto.
Então, tudo já foi um segredo.
Algum conhecimento se espalha rapidamente e outros se espalha lentamente.
Alguns programadores nunca descobrem nada eles mesmos (mas podem aplicar segredos de outros com muito sucesso).
Alguns programadores (por exemplo, John Carmack, Ken Perlin, Donald Knuth) parecem tropeçar em um novo segredo todos os dias.
Então, sim, existem programadores que conhecem alguns segredos que nós outros não conhecemos ... ainda.
fonte
Conhecimento por si só não é poder, eu garanto. No entanto, alguém pode ter desenvolvido suas habilidades além de você, o que pode significar que ele tem dicas e estratégias que podem ajudá-lo a avançar. Observe que há um par de "may" na última frase, pois não é uma certeza de que eles o moverão realmente. Portanto, existe o potencial de que isso não seja nada novo ou chocante para você.
Ao mesmo tempo, existem várias práticas e estratégias que ao mesmo tempo podem parecer radicais, embora hoje as tomemos por garantidas. O controle da fonte, a integração contínua e o teste de unidade eram todos novos em algum momento, certo?
fonte
É possível que você e a maioria das pessoas que estão respondendo a essa pergunta estejam se concentrando demais na palavra "segredo".
Se retirarmos a parte "oculta" dela, sim, é perfeitamente possível que esse programador famoso tenha algumas dicas e truques úteis ou conhecimentos adquiridos com a experiência que, de alguma forma, o beneficiariam. Estou falando de conhecimentos como você encontraria em livros clássicos de SE ou CS, como Rapid Development ou The Pragmatic Programmer . Isso combinado com trabalho duro pode absolutamente ajudar.
Portanto, nesse sentido, o famoso programador de sucesso pode possuir conhecimentos que outras pessoas ainda não possuem.
Mas não há nenhum tipo de receita secreta que transformará um 'programador não tão bom nesta área' em um famoso com muito sucesso.
fonte
Não existem pequenos segredos. Somente código complicado ... acabou se transformando em código eficiente e simplificado.
fonte
O segredo está no tipo de problema, área do problema e como você o soluciona. Por exemplo, eu escrevi um programa php para abrir um arquivo e ler seus dados e convertê-los em xml. Em seguida, usei esse xml para apresentar dados em diferentes elementos html, por exemplo, caixa de opção etc. Após 1 ano, tivemos um novo programador júnior para participar do como ele era bom em algoritmos, resolveu matematicamente o problema, o que fez o código parecer difícil com as esquerdas de turno e dividir as matrizes etc.etc. mas o tempo de execução foi reduzido em até 40% do que escrevi. Sua abordagem para escrever as declarações php me surpreendeu. Portanto, acredito que existem certos truques que não existem segredos; mais uma coisa é quantas alternativas você pode pensar em sua mente.
fonte
Desculpe se estou perdendo alguma coisa, mas não consegui encontrar isso acima, pelo menos não explicitamente indicado.
O segredo é realmente usar as ferramentas certas para o trabalho. De fato, são as ferramentas que os programadores antigos apreciam e não divulgam com tanta facilidade. Eles falarão com você sobre seus erros de CONCRETE, mas raramente sugerirão qual ferramenta pode ajudá-lo a evitá-los. Suas ferramentas são um dos principais segredos de sua produtividade.
Dando apenas um exemplo, é possível memorizar um livro de 600 páginas sobre serviços da Web, entender os meandros da especificação WSDL (eu tentei uma vez ... compreender os meandros) e ainda não conseguir entender o que há de errado com a API ele usa quando tenta fazer uma chamada para um serviço da web existente.
Por outro lado, pode-se ter pouco conhecimento das especificações (mas uma idéia geral clara) e usar o Wireshark.
Pode-se lembrar de todos os C ++ (oh meu ..) e ainda não entender o que está errado com seu código escrito com vi e compilado com gcc (sem avisos ..). Mas um IDE gráfico com um depurador pode ajudar ..
E então o Google. O maior segredo de todos os dias.
fonte