Parece-me que a indústria da programação está correndo para o fundo. Se adotarmos as práticas de:
- Não está demorando para implementar as melhores práticas
- Usar o código de outras pessoas o máximo possível (código personalizado como responsabilidade)
- Usando linguagens de nível cada vez mais alto para melhorar a produtividade
- "Ferramentas" de desenvolvimento baseadas em GUI que simplificam bastante a "programação" e não exigem que as pessoas entendam o encanamento por trás do código
Essas coisas implicam para mim que estamos na corrida para nos tornarmos como qualquer outro funcionário de escritório. É do interesse do empregador que as coisas não exijam habilidade (mais fácil de substituir), que as coisas sejam pré-construídas (menos tempo do projeto).
Meu argumento aqui é que: a) existe um desalinhamento entre a habilidade e os interesses econômicos do empregador? eb) se houver, como você o mitiga para fazer cumprir os padrões profissionais?
Respostas:
Eu acho que você fez uma pergunta muito comovente.
A criação de ferramentas de codificação da GUI coloca os programadores fora de um trabalho, assim como os robôs colocam os trabalhadores da linha de montagem fora de um trabalho. Na minha opinião, embora haja perda de empregos, também há uma mudança na localização dos próximos empregos.
A tecnologia para executar uma tarefa é alterada, mas a tarefa ainda precisa ser concluída: Os carros ainda precisam ser fabricados / montados antes de serem conduzidos; o código / lógica de negócios ainda precisa ser montado para que o aplicativo funcione.
Mudanças na tecnologia apresentam opções para programadores: Aprenda programação baseada em GUI ou ferramentas de GUI de programas ... ou ... algo completamente diferente.
Pode haver um desalinhamento entre as habilidades dos funcionários e os interesses do empregador, mas não por muito tempo, especialmente se o empregador for experiente. Portanto, é no melhor interesse do empregador e do empregado que eles busquem o que é para seu benefício mútuo. Mas um estará inevitavelmente à frente do outro. Espero que seja você (-:
Muitas felicidades,
KM
fonte
Nas tendências que você mencionou, eu acrescentaria mais uma, que o IMHO as explica:
Há muito mais programadores (necessários) do que nunca.
A quantidade de tarefas que requerem ou incluem programação está sempre aumentando e em uma taxa ainda maior que o número de programadores. Hoje em dia existem vários microchips em um carro comum. Em 5 anos, pode haver um chip na sua geladeira e na sua torradeira. Em 10 anos, sua roupa de baixo? ... E alguém precisa produzir todo esse software para fazer isso funcionar. Portanto, todo esforço possível é feito para automatizar o que é automatizável e para melhorar a "produtividade" (como definido). E mais e mais cérebros frescos são recrutados.
Isso implica que a maioria dos programadores ativos de hoje é inexperiente e / ou mal preparada para seu trabalho. Leva vários anos para chegar a um nível adequado de experiência e é preciso aprendizado constante para se manter lá. Em resumo, cada vez mais tarefas de programação estão se tornando cada vez menos desafiadoras. Mas ainda há desafios suficientes para quem os procura .
Deixe-me jogar com o advogado do diabo contra seus pontos acima:
Muitas pessoas não, muitas pessoas fazem. Dez anos atrás, quando descobri o teste de unidade e a abordagem ágil, nenhum dos meus colegas tinha a menor idéia do que era. Atualmente, é quase um material padrão nas universidades, e muitos recém-formados já o entendem.
Ao contrário de quê? Reinventando a roda? Ou usando o código de outras pessoas para evitar isso?
Eu acho que é importante notar que somos pagos (principalmente) para resolver problemas, e escrever código não é o fim, apenas o meio para isso . Se um problema puder ser resolvido sem escrever uma única linha de código, ele ainda ficará satisfeito. Especialmente se assim conseguirmos produzir uma solução mais confiável, mais rápida e barata. Não vejo nenhum problema com isso.
Ao contrário de codificar tudo na montagem? ;-)
IMHO qualquer ferramenta pode ser mal utilizada. O que não quer dizer que os construtores de GUI fossem necessariamente perfeitos ou até bons - a maioria (ou pelo menos alguns) deles é utilizável dentro de seus limites. Mas se alguém não conhece esses limites, é um problema da ferramenta ou de seu usuário?
Em geral, acredito (embora não tenha provas para provar isso) que nos dias de cartões perfurados e de código de máquina, aproximadamente a mesma proporção de código existente era horrível como agora, apenas ambos
foi muito, muito menos.
Agora, com a Internet e o Daily WTF, somos expostos aos piores exemplos dia a dia. É como assistir a todas as notícias sobre terrorismo, terremotos e divorciar celebridades, e gritar o quão perigoso e imoral esse mundo se tornou.
fonte
Você resume a situação corretamente, mas interpreta completamente o significado.
À medida que o software se torna mais poderoso, as tarefas que ele leva em escala. Portanto, hoje em dia, talvez não seja necessário ser um programador de banco de dados para criar um banco de dados de contatos telefônicos quando você puder usar o Access. E pode não ser necessário ser um programador da web para criar um blog quando você pode simplesmente acessar o wordpress. Porém, enquanto há 15 anos seria necessário ser um programador para fazer essas coisas, o que os programadores fazem agora é uma ordem de magnitude maior do que o que poderia ser feito há 15 anos.
Deixe-me colocar desta maneira, daqui a 100 anos, será trivial configurar um sistema tão complexo quanto o facebook ou o google. Não estou falando das páginas deles, quero dizer dos data centers. Qualquer pessoa será capaz de fazê-lo. Ele será incorporado aos telefones, desde que ainda os utilizemos. MAS, ainda haverá programadores e, embora possam não estar trabalhando em sistemas 'triviais' daqui a 100 anos, eles estarão trabalhando em sistemas tão mais complexos e sofisticados que ninguém aqui pode sequer começar a entender seu escopo e escala. E esses sistemas, como os atuais, estarão fora do alcance do trabalhador de escritório comum, porque algumas pessoas, chamadas programadores, escolherão se especializar em levar a tecnologia daquela época ao extremo.
fonte
Eu li esse tipo de coisa há quarenta anos e não estava no início das previsões. Ainda não aconteceu.
COBOL era a ferramenta de desenvolvimento original destinada a remover a necessidade de programadores de negócios e era uma linguagem de nível muito superior ao assembler. As bibliotecas de código (para evitar a necessidade de escrever o próprio código) são de antiguidade semelhante.
De vez em quando, surge algo que permite que os não programadores façam algo mais como o trabalho de programação. Havia os "idiomas de quarta geração" dos anos 80, planilhas sofisticadas como o Excel, geradores de relatórios e similares. O que eles fizeram de maneira uniforme, se bem-sucedidos, é remover parte da escória da programação e permitir que os programadores façam outras coisas mais interessantes.
Esse padrão não vai durar para sempre, mas vou precisar de algo mais do que argumentos e previsões teóricas para me convencer de que a programação está realmente indo ladeira abaixo.
A questão do COBOL para as modernas ferramentas de desenvolvimento é que elas não substituem a capacidade de pegar uma especificação inexata e transformá-la em algo preciso e útil. Essa é a capacidade fundamental dos programadores e por que não vamos embora por um longo tempo.
fonte
Os programadores de Assembly e FORTRAN provavelmente disseram o mesmo quando entraram em cena a programação estruturada e os intérpretes generalizados.
No final do dia, o software é uma criação destinada a automatizar algo que anteriormente havia sido feito à mão. Um departamento de contabilidade em uma corporação moderada já exigia dezenas de pessoas, agora todo esse trabalho pode ser realizado pelo trabalho de uma ou duas. Como resultado, as postagens de meta foram movidas e agora esperamos que esse padrão de capacidade extra seja fornecido por um contador.
A Pixar leva mais tempo para renderizar filmes do que nunca. Apesar do enorme aumento na velocidade da computação, os animadores exigiram cada vez mais complexidade e detalhes em suas cenas. A animação do calibre do Toy Story não é aceitável em 2010 como em 1995. Como suas ferramentas avançaram, também têm suas capacidades e, portanto, suas expectativas.
Quando arrastar e soltar ou outras metodologias de programação são comuns, o mundo exigirá soluções para problemas ainda mais desafiadores e complexos e precisará de programadores que usem essas novas ferramentas sofisticadas para resolvê-los. As postagens da meta serão movidas.
fonte
Embora eu concorde com a maioria das respostas que apontam que ainda haverá muito trabalho a fazer, darei uma resposta diferente para você considerar:
Sim, é, e DEVE ser
Estou aqui para projetar uma solução para problemas que outros não podem. Qualquer coisa no conjunto de ferramentas que me demore a resolver problemas para lidar com todos os pequenos detalhes de como implementar meu design é desperdício.
A única razão pela qual eu temeria recorrer a uma linguagem de nível superior ou a uma ferramenta mais simples e mais abstrata é que essas ferramentas geralmente fazem suposições que me atrapalham e exigem tempo para contornar as suposições para obter a implementação desejada.
Sempre há mais problemas a resolver do que bons solucionadores de problemas. Mesmo que toda a cadeia de desenvolvimento se tornasse tão simples, as crianças em idade pré-escolar poderiam usá-la, a maioria das soluções projetadas seria insuficiente ou ineficiente o suficiente para que as pessoas pagassem por uma solução melhor, porque a maioria das pessoas é ruim em ver a solução correta para os problemas de todos os casos extremos e what-ifs que você precisa considerar para criar uma boa solução.
Nosso trabalho é resolver os problemas melhor do que a maioria, a complexidade da cadeia de ferramentas não é muito relevante na visão geral, desde que ela se afaste e permita que você construa e construa algo de bom.
fonte
Embora as tecnologias de programação possam mudar, a complexidade subjacente de um produto de software ainda está lá. Se o software puder ser escrito completamente usando diagramas ou fluxogramas (ou alguma outra maneira "simples"), toda a complexidade do software ainda precisará ser entendida e tratada. Por esse motivo, é importante que os empregadores tenham programadores que conhecem os produtos da empresa de dentro para fora para atualizá-los ou adicionar novos recursos. E pode demorar um pouco para os funcionários aprenderem um produto de software.
fonte
Não importa o que você possa automatizar ou retirar da prateleira, a maioria dos pacotes de software se enquadra em duas categorias:
Acho que esqueci o terceiro. É um software de produtividade padrão (e-mail, navegador, proc de palavras etc.) O software da categoria um leva as empresas a contratar desenvolvedores de software para personalizar o software de prateleira (se possível) .O software da categoria 2, bem eles também podem contratar um desenvolvedor, porque a pessoa que conhece esse sistema personalizável por dentro e por fora é muito procurada (pense na SAP, PeopleSoft etc.) ou em uma raça em extinção (pense em qualquer sistema semelhante ao SAP e PeopleSoft que não seja exatamente penetração no mercado).
Sempre haverá uma necessidade de desenvolvedores. O que estou vendo é que mais do que costumava ser trabalho manual, tedioso e repetitivo se tornou automatizado (pense em escrever código para acesso a dados manualmente, em vez de usar um O / RM). Isso permite que os desenvolvedores agreguem mais valor aos negócios com menos esforço.
fonte
Não aceito seus argumentos:
exceto aquilo.
A reutilização de código é uma prática recomendada. O código usado é testado. Obviamente, você deve usar código de boas fontes, que é mantido e usado por muitos.
A produtividade não é ruim por si só - é?
Se a ferramenta executar o trabalho: Use-a. Caso contrário: recuse-o. Se a promessa se mantiver, e as pessoas realmente não precisam entender o código - muito bem! Você parece dizer que esta é uma promessa que não se mantém?
(Os números aqui são automaticamente renderizados incorretamente. :))
fonte
A programação visual não é menos válida ou merece desprezo do que a programação baseada em texto.
Existem certos déficits e desafios ao programar visualmente, mas o encanamento do componente subjacente sendo potencialmente perigoso quando ignorado não é monopolizado por componentes visuais e, mais relevante, por designers visuais. O encanamento subjacente a ser ignorado é um risco para qualquer desenvolvimento.
Se você tiver a chance de experimentar o Labview, poderá ver o potencial (ou mesmo uma variante especializada no ambiente Lego NXT). Embora não sem falhas ou deficiências, há benefícios herdados. Ver é crer.
fonte
As práticas de programação não apenas aumentam a produtividade e reduzem os custos de certos tipos de desenvolvimento (sua corrida para o fundo), mas também aumentam os recursos de aplicativos e as expectativas dos clientes (incentivando uma corrida ao topo). Testemunhe os bônus que Goole e Facebook estão pagando para obter os melhores tecnólogos.
fonte
Não existe outra profissão que lide com a engenharia da existência que se esforce para mudar tanto quanto para a programação. Assim que você simplifica algo, basta abrir uma lata para novos problemas que geram novas idéias.
Portanto, eu não sujaria os esforços de outras pessoas para compartilhar código e soluções, a fim de nos ajudar a avançar em direção a novos desafios, idéias e experiências do usuário com as más práticas, os hábitos e as maneiras desprovidos de humanismo do praticante individual.
fonte
Se adotarmos as práticas de:
WTF? Você queria que essa lista fosse inconsistente? As listas devem vir do mesmo lado para cada elemento, em vez de alternar sem aviso prévio. Assim, sua lista deve ser:
Se adotarmos as práticas de:
fonte