Por que os desenvolvedores precisam manter-se atualizados com tecnologias e metodologias? [fechadas]

28

Sempre recebo o conselho de que os desenvolvedores precisam manter-se atualizados com as mais recentes tecnologias - coisas como webrtc, atualizações em html5 e css3 e novas bibliotecas js, metodologias de software como TDD, DDD e BDD.

A questão é por quê ? Por que precisamos nos atualizar constantemente? Não podemos ficar com o que sabemos e melhorar com isso?

Wern Ancheta
fonte
16
No desenvolvimento de software, há um esforço para fazer as duas coisas: conhecer algumas tecnologias em profundidade e acompanhar as novas tecnologias em constante mudança. Isso é parcialmente porque é tão difícil encontrar bons desenvolvedores.
Joshin4colours
2
Para abordar as votações apertadas até agora, acho que é uma pergunta justa e não consigo encontrar uma duplicata exata no site. Apenas tente ficar de olho nas respostas ruins para que possamos limpá-las.
Maple_shaft
4
Não consigo entender por que os programadores como uma classe devem "manter-se atualizados" com as mais recentes tecnologias da Web para o que quer que esses dois conceitos realmente signifiquem na prática. Uma mente curiosa e um aprendizado contínuo são certamente críticos para o crescimento pessoal em qualquer profissão, mas o falso dilema assumindo que "tecnologia da web" é o único eixo para o crescimento pessoal faz com que isso seja um pouco carregado de uma pergunta para os meus gostos. Observando criticamente as respostas mais votadas - alguma delas responde a outra pergunta que não seja oferecer banalidades de encorajamento e slogans motivacionais para "permanecer no jogo"?
bmike
1
@ Mike: Eu concordo com você: é claro que uma mente curiosa vai querer aprender coisas novas o tempo todo. Nesse caso, coisas novas significam algo que você não conhece, que pode ser uma linguagem de programação interessante que existe há 40 anos ou mais (por exemplo, Lisp). A indústria nos leva a atualizar e considerar as coisas mais recentes interessantes, mais eficazes por padrão. Meu ponto principal: aprender uma tecnologia que você não precisa apenas porque é nova é uma perda de tempo.
Giorgio
1
@RobertHarvey Não é como se a pergunta estivesse perguntando "Como?" ou o que?" como isso seria NC. Está perguntando POR QUE e eu pessoalmente acho que é relevante e responsável.
maple_shaft

Respostas:

42

Novas tecnologias surgem por uma razão. Geralmente, esse motivo é porque eles são mais eficientes ou poderosos na realização de uma tarefa específica.

Ainda há valor a ser mantido com a tecnologia antiga em prol dos sistemas legados, mas quando eles finalmente chegarem ao fim da vida, você estará por trás do jogo.

Razões comerciais à parte, o aprendizado constante de novas tecnologias mantém você alerta e abre seus olhos para diferentes maneiras de abordar tarefas, mesmo em tecnologias antigas e assim por diante.

Anônimo
fonte
3
+1: aprender novas tecnologias geralmente é útil, mesmo que você nunca aplique diretamente essa tecnologia: as novas visões e perspectivas fornecidas por ela certamente podem ser aplicadas usando a tecnologia "antiga".
Joachim Sauer
7
Por outro lado, saltar a cada nova tecnologia também pode ser contraproducente, porque muitas delas desaparecem tão rápido quanto surgem.
Gordon Bell
@GordonBell - É verdade ... eu não posso falar por mais ninguém, mas geralmente não testo as águas com novas tecnologias até que elas ao menos mostrem sinais ou potencial de se tornarem mais populares - o que traz os benefícios de muitos documentação à educação ajuda e uma base de usuários etc.
Anônimo
Eles geralmente surgem para atender às necessidades da academia, mas não do mundo real. Você tem que escrever sua tese sobre algo .
Dbracey
@dbracey: Certo, e vinte anos depois, uma grande empresa pode encontrar essa tese que, enquanto isso, os pesquisadores se desenvolveram em alguma tecnologia madura e começaram a vendê-la como nova tecnologia .
Giorgio
27

Embora seja certamente possível construir uma carreira em uma única pilha de tecnologia, se você tiver sorte 1 , é quase certo que a tecnologia mudará mais de uma vez durante o período em que você estiver empregado com bons resultados. Você pode (e deve) melhorar o que já sabe, mas aprender coisas novas com antecedência o ajudará a reduzir a curva de aprendizado quando a próxima mudança tecnológica chegar ao seu canto da indústria.

Também há um lado menos aparente: aprender coisas novas muitas vezes ajuda a ver as coisas que você já sabe de uma perspectiva diferente, da mesma maneira que aprender uma nova língua ajuda a aprender mais coisas sobre a sua língua atual 2 .

Por fim, um valor puro de entretenimento para aprender coisas novas não deve ser subestimado: para mim, é melhor do que assistir TV de mãos dadas.


1 Por exemplo, escolhendo COBOL sobre PL / I no início de sua carreira em 1965.

2 Isso funciona para linguagens naturais e de programação.

dasblinkenlight
fonte
1
+1 @dasblinkenlight Adoro esta afirmação: "... aprender coisas novas com antecedência ajudará você a reduzir a curva de aprendizado quando a próxima mudança tecnológica chegar ao seu canto da indústria". É por isso que estou aprendendo Opa agora
Anthony
12

Não podemos ficar com o que sabemos e melhorar com isso?

Você pode , mas é realmente fácil cair na armadilha de nunca querer aprender algo novo. Suas perspectivas de emprego diminuem, seus colegas de equipe param de querer trabalhar com você porque você é "o programador que está completamente fora de contato".

Principalmente, você precisa manter um equilíbrio. Tentar aprender tudo de novo o tempo todo vai levar você a ser pobre em muitas coisas, percebido como um funileiro arrogante. Aprenda algumas coisas bem e concentre-se pelo menos em saber o que existe, mesmo que você não possa usá-lo efetivamente.

Telastyn
fonte
2
Nada me enfurece mais no trabalho, do que ter que ficar preso em uma equipe com um programador que escreve código como ele fez 10 anos atrás. Os quadros evoluíram. As ferramentas evoluíram. Você não quer facilitar seu trabalho? Você não vê carpinteiros usando brocas de manivela e serrotes o dia todo, quando eles têm ferramentas elétricas agora. Eles evoluíram. E, como toda profissão, novas ferramentas são inventadas para resolver necessidades. Não usar a nova ferramenta, e tentar hackear algo da maneira antiga geralmente é prejudicial à qualidade do que está sendo construído. Seja em código ou em madeira.
CaffGeek
2
"As estruturas evoluíram. As ferramentas evoluíram. Você não quer facilitar seu trabalho?": Existem inúmeras maneiras de resolver certos problemas e, às vezes, uma nova ferramenta ou linguagem não é melhor, mas apenas equivalente à antiga. Mas você tem muito mais experiência com o antigo, para poder ser mais produtivo com ele. Assumimos com demasiada frequência que NEW == MELHOR. Em vez disso, devemos sempre contestar esta afirmação.
Giorgio
2
@ Giorgio - Uma coisa é ter um ceticismo saudável com 'a próxima grande novidade'. Outra coisa é colocar a cabeça na areia enquanto o progresso real passa por você. O posterior é muito comum.
Telastyn 16/08/2012
4
@Telastyn: Atribuiria 50% a ambas as atitudes: às vezes tenho a impressão de que uma nova tecnologia é lançada apenas por ser nova. E é apenas uma maneira alternativa (não melhor) de fazer as coisas. Portanto, temos de passar meses nos tornando proficientes com a nova tecnologia e depois disso somos novamente tão produtivos quanto costumávamos com a antiga. Mas é claro que você está certo que colocar a cabeça na areia também está errado e deve-se sempre prestar atenção a coisas novas.
Giorgio
@Giorgio, como você sabe se o novo caminho é melhor ou não, se você não aprender ou experimentar?
CaffGeek
7

Bem, é provavelmente devido ao fato de você ser um desenvolvedor web e as tecnologias nesse campo serem muito voláteis, com linguagens, plataformas, ferramentas e metodologias aumentando e diminuindo em popularidade. É um campo que é muito MUITO alto nível. Se alguma das camadas abaixo dela for alterada, isso muda a posição na parte superior. E, francamente, é novo (ish). Novos campos têm muito espaço para inovação.

Pessoalmente, trabalho em dispositivos embarcados, aprendi C e isso funcionou muito bem para mim.

Mas ainda estou aprendendo coisas novas regularmente. Soquetes, bibliotecas SQL, ncurses, objetos em C. E as metodologias são pouco acopladas às tecnologias. O teste de unidade foi ensinado horrivelmente na minha escola, e agora estou passando a cabeça nisso. Acabei de ouvir falar sobre injeção de dependência outro dia e percebi que foi exatamente assim que resolvi meu último problema com o teste de unidade de uma função de console.

A maioria dos programadores não é operária de fábrica que faz a mesma coisa todos os dias. Esses trabalhos podem (e devem) ser automatizados. Ninguém paga por mais uma implementação de classificação de bolhas. Já foi feito.

Philip
fonte
+1: boa resposta. Deve-se aprender as tecnologias de que precisa ou considera úteis. Novas tecnologias são importantes e deve-se olhar em volta para saber o que está acontecendo. Mas NEW não deve ser o único critério para escolher o que aprendemos. Além disso, se C atender às suas necessidades de programação, eu concordo que pode ser uma boa linguagem para se trabalhar, mesmo que ela já exista há muito tempo.
Giorgio
Isso também indica que as novas tecnologias geralmente são mais camadas sobre as tecnologias antigas existentes. Em que sua VM foi implementada? C ou C ++.
dbracey
Injeção de dependência é apenas um novo nome para uma idéia muito antiga.
MarkJ
6

Eu diria que você pode ignorar muito do que está por aí. Muito disso é hype, modismo e novos nomes para a tecnologia antiga. Os verdadeiros avanços serão substituídos em breve pelos mais recentes, que realmente não dependem dos antigos, mesmo que os veteranos digam que você deve entender os antigos para entender o novo. Se você deixar o campo por 10 anos, quando voltar, estará apenas 2 anos atrás.

Dito isto, identificar a nova e verdadeira tecnologia pode ser complicado. Fico feliz por não ter perdido o OOP, mas com certeza pareceu apenas um punhado de palavras em primeiro lugar. E muitas vezes você precisa usar a tecnologia atual para fazer um trabalho, mesmo que todos a tenham esquecido em três anos.

O hype e a confusão da tecnologia de software multiplicam a mudança que temos de lidar no dia-a-dia. Mas a tecnologia eletrônica na verdade está avançando rapidamente e empurrando o software junto com ela. Há muitas mudanças reais por aí. Ainda estamos dirigindo os carros, pilotando os aviões e indo para o espaço com os mesmos veículos que usamos em 1965. Mas o hardware eletrônico de 1995 é irremediavelmente obsoleto.

Portanto, a resposta profunda à sua pergunta é que os cientistas e engenheiros que trabalham com eletricidade têm estado muito ocupados. O software precisa evoluir para tirar proveito do hardware. Pior (ou melhor - melhor?), Acho que o software foi deixado para trás pelo hardware. Se todo o pessoal de hardware se aposentasse amanhã, o software evoluiria furiosamente pelas próximas duas décadas, pelo menos.

Se você precisar da nova tecnologia para fazer um trabalho, precisará aprendê-la. Se houver uma chance de ser uma nova tecnologia que ainda estará aqui daqui a 20 anos, você precisa ficar de olho nela - e se assistir a 20 técnicos que morrem por todos que vivem, você está se saindo muito bem. E você realmente pode ignorar todo o resto. Exceto por um pouco de fumaça óbvia que subjaz a todo o software dos anos 2020.

RalphChapin
fonte
+1: concordo com você em relação ao hype. Muita inovação é (infelizmente) exagerada e devemos escolher as novas tecnologias em que passamos o tempo com muito cuidado. Um dos hypes do momento é lambdas (que, a propósito, considero um conceito muito útil): toda linguagem moderna deve tê-las (C #, C ++, Java?), Caso contrário não é mais legal! Mas as lambdas existem há 50 anos e ninguém se importava quando esses idiomas foram projetados inicialmente. Agora eles estão sendo adicionados como uma reflexão tardia apenas para seguir o hype mais recente. ;-)
Giorgio
@Giorgio: Espero que não Java. Lambdas são um bom exemplo (embora mais simples e menos problemático do que alguns). Eu os uso em C # e os amo, mas a única pessoa que se arrependerá de não saber o que são é a pessoa que acabou de receber instruções para corrigir o código que está cheio delas.
RalphChapin
O que você quer dizer com "Espero que não seja Java"? Que eles não serão introduzidos? Gosto e uso lambdas (em Scheme, Haskell): são um conceito bastante fácil. Mas, em C #, C ++ e Java, eles me parecem uma adição tardia que, de alguma forma, não se encaixa no restante da linguagem. Duvido que os inventores não conhecessem nenhum Lisp, mas decidiram que os lambdas não pertenciam a esses idiomas. Agora eles se tornaram uma obrigação. Então, eu gosto muito de lambdas, mas em C #, C ++ e Java eles parecem apenas um hype que é usado para vender novos compiladores, livros e assim por diante.
Giorgio
1
@Giorgio: Java é (ou era) um pouco uma linguagem minimalista. Você não precisa saber muito (lambdas, por exemplo) para entender o que outra pessoa escreveu. Eu gosto disso. C # é uma linguagem maximalista. Toda nova linha pode introduzir tecnologia que você nunca viu antes. É uma explosão para escrever, menos para ler. Também não precisa de lambda, embora ajude mais em C # do que em Java por razões de sintaxe. Mas eles são legais e salvam algumas linhas de código. Em outras palavras, você está certo. Mas isso é c #, não Java. Ainda.
RalphChapin
1
@iconoclast: Com 20 anos de experiência como programador, não me considero iniciante. No entanto, o fato de Java ser (era) uma linguagem relativamente simples e limpa me torna mais produtivo (posso desenvolver software mais complexo com menos esforço). Eu acho que é um equívoco que uma linguagem simples seja para iniciantes: uma linguagem simples permitirá que qualquer programador com algum grau de experiência se concentre mais em certos aspectos do desenvolvimento (por exemplo, gerenciando uma arquitetura complexa, refatorando) porque gasta menos tempo lidando com outros aspectos (por exemplo, gerenciamento de memória, sintaxe enigmática, etc.).
Giorgio
3

IMHO, você precisa encontrar um equilíbrio. Isso requer habilidade e experiência.

Você precisa encontrar um ou dois idiomas nos quais se especialize, manter-se atualizado nas mudanças de estrutura / estilo que evoluem nesse idioma e manter suas habilidades de primeira.

Mas você também precisa ver como essa linguagem evolui e entender a dinâmica do desenvolvimento de software como um todo. O Java estará disponível daqui a 10 anos, Phyton está aí para ficar, o PHP será substituído pelo .NET e Mono?

São perguntas estratégicas em grande escala, respostas para as quais permitirão que você se torne um profissional altamente valorizado em seu campo, além de ter um backup sólido (1 ou 2 idiomas) e saber quando seguir em frente a partir da plataforma principal.

IMHO, acompanhar todas as linguagens modernas que estão sendo desenvolvidas todos os dias é um dos maiores problemas para toda a indústria. Temos toneladas de idiomas não desenvolvidos e sem saída, com quase nenhum profissional, e as pessoas que perdem tempo com eles raramente são profissionais reais em até um idioma. Principalmente, eles escrevem código que mistura todas as línguas e não faz nada certo. Ao mesmo tempo, a quantidade de anos-homem desperdiçados nessas linguagens fora do padrão poderia ser gasta na melhoria de algumas estruturas e especificações de linguagem principais.

Codificador
fonte
2

Como outros já apontaram, muitas novas tecnologias emergem para atender a novas necessidades e, portanto, facilitam a solução de certos problemas. Portanto, você deve manter-se atualizado e, pelo menos, saber o que está acontecendo em seu campo e entender quais novas tecnologias são relevantes para você.

Por outro lado, acho que, às vezes, também há um fator de hype em certas inovações: algumas idéias são extremamente antigas, mas somente nos últimos anos elas estão sendo pressionadas a se tornar mainstream. Às vezes, tenho a impressão de que uma nova linguagem de programação (ou uma nova versão dela) é apresentada apenas porque "nova é melhor" e uma nova tecnologia significa novos livros, novas ferramentas de programação, novos compiladores, novos cursos de programação ou, em outras palavras, receita.

Assim, pode ser que você precise aprender uma nova tecnologia sem ver nenhuma vantagem real da tecnologia que estava usando antes; caso contrário, corre o risco de ficar fora do mercado porque suas habilidades parecem antiquadas. . Cabe a você acompanhar o desenvolvimento de novas tecnologias e tentar entender quais podem torná-lo mais produtivo e quais são convenientes para melhorar a aparência do seu currículo.

Conclusão: acho que você deve tentar aprender o que realmente considera útil, independentemente de ser novo ou antigo.

Giorgio
fonte
2

Porque "manter o que você sabe" representa um fracasso em "melhorar". Você não precisa adotar todas as novas práticas e estruturas que surgirem, mas você deve pelo menos ter uma opinião informada sobre as populares. No desenvolvimento web, apenas a pergunta seria horrível para um entrevistador. O desenvolvedor da Web está cheio de cadáveres de pessoas que queriam parar de aprender coisas novas depois de 2000, e é assim que deve ser porque elas fazem mais trabalho para o resto de nós. Fique longe do dev se não lhe interessar. É uma péssima relação de $ / hora se a parte em que você aprende coisas novas parecer trabalho.

Erik Reppen
fonte
Porque "manter o que você sabe" representa uma falha em "melhorar o desempenho".: Uma maneira de ler isso é que, mantendo a mesma tecnologia por mais tempo, você obtém um conhecimento mais profundo sobre ela, enquanto salta de uma tecnologia para o próximo a cada dois ou três anos só permitirá que você tenha conhecimento superficial, ou seja, você nunca estará realmente familiarizado com nenhum deles.
Giorgio
Eu não entenderia o JavaScript tão bem quanto eu, se não tivesse me ramificado um pouco e entendido de uma perspectiva de como outras línguas realmente funcionam ou de olho nas noções atuais de melhores práticas e explorado o que as pessoas estão realmente fazendo sob o capô de suas estruturas e bibliotecas. Não acho que seja realmente possível melhorar como desenvolvedor a uma taxa razoável de carreira, sem exposição regular a novas idéias.
precisa saber é o seguinte
Reppen: Eu concordo totalmente com você sobre isso.
Giorgio