Aprendendo com livros sobre correção e reconhecimento de padrões

Algumas reflexões sobre como criar bem o software.
Recentemente, um amigo perguntou sobre habilidades específicas que os desenvolvedores de software possuem.
Quais são as habilidades únicas praticadas pelos profissionais de desenvolvimento?Com base na minha experiência, formei a seguinte opinião. A ideia que percebi ao longo do tempo é que gosto de meta programação. Aprender meta-habilidades, ou como fazer o que fazemos melhor, envolve a leitura de muitos livros conhecidos, levando em consideração o contexto.
Tomei exemplos concretos do que li ao longo dos anos, apliquei-os às minhas próprias observações nesta área e respondi da maneira mais pragmática.
Na minha opinião, se você pensa universalmente, eu diria que essa é a prática da correção e do reconhecimento de padrões * . Aqui estão algumas das habilidades exclusivas dos desenvolvedores de software.Correção
A correção está muito ligada a
como e
por que fazemos as coisas dessa maneira, e não o contrário. Nas empresas, isso está mais intimamente relacionado à correção de qual tarefa uma empresa deve resolver para seus clientes. Um software bem escrito segue o mesmo pensamento.
A correção é considerada no desenvolvimento como o
quão correto é "como", para que uma solução comercial possa continuar a resolver tarefas com um alto nível de confiabilidade e eficiência. Esse processo é um equilíbrio entre estratégia (design) e tática (execução).
Um estudo sobre o
que é esse "como" no vácuo é melhor representado na quarta parte do primeiro capítulo de
Programming Pearls - Writing Correct Programs .
... manter código simples é geralmente a chave para a correção.
- John Bentley
Reconhecimento de padrões
O reconhecimento de padrões está fortemente ligado à
organização dessa correção , criando as abstrações e limites de componentes necessários.
O reconhecimento de padrões leva ao conceito de reutilização para modular e isolar o código. Rastreamos a duplicação, encontramos áreas que podem ser reutilizadas e redesenhamos partes complexas do código. É isso que os desenvolvedores de software fazem bem. Seguimos os detalhes com muito cuidado. Reconhecemos o conhecimento conforme ele é criado repetidamente. E então simplificamos.
O reconhecimento de padrões é discutido na comunidade e há muitas fontes nas quais você pode ler sobre métodos de reconhecimento. Aprendi sobre isso no segundo capítulo de
O programador pragmático - Os males da duplicação (
O programador pragmático - O mal da duplicação).
Facilite a reutilização. Não repita.
- Andrew Hunt e Dave Thomas
Observação interessante
Assim que eu dei essa resposta, meu amigo fez uma contra-pergunta.
Se correção e reconhecimento de padrões são essas habilidades, como você as aprende?Claro que minha resposta foi bem simples:
Encontre esses livros, configure seu ambiente e trabalhe com exemplos. Defina suas expectativas de aprendizado e aplique essas meta-habilidades enquanto fornece valor ao seu negócio. Porque Complexidade Este é o melhor investimento em treinamento de domínio que eu conheço. Isso também torna os desenvolvedores mais confiantes ao longo do tempo.Meu crescimento tem sido centrado em torno desses livros e em torno dessas habilidades específicas. Mas isso me fez perceber que existem várias habilidades que contribuem significativamente para as meta-habilidades, além de executar diretamente o trabalho. Fiquei interessado na terminologia da meta. Meu trabalho sobre a decomposição de tarefas (correção) e organização (reconhecimento de padrões) não encontrou aplicação no momento de sua publicação. E na mesma época, eu estava pensando em escrever este artigo de meta-habilidades.
Um professor da Universidade de Stanford ministrou um curso de meta-habilidades e isso levou à escrita de um livro no qual ele incluiu alguns dos resultados de seu curso. Fiquei chocado quando descobri que ele tem a mesma atitude em relação à pergunta que a minha. Portanto, comprei um livro e o li com entusiasmo. Capítulo Treze,
Uma Filosofia do Design de Sistemas .
Os desenvolvedores geralmente são muito focados nos detalhes. Adoramos detalhes e gostamos de gerenciar muitos deles; isso é importante para ser um bom engenheiro especialista. No entanto, bons desenvolvedores de software também podem se afastar um pouco dos detalhes e pensar no sistema em um nível superior.
- John Ousterhout **
Conclusão
Na minha opinião, a
correção e o
reconhecimento de padrões são habilidades *** que os desenvolvedores de software devem aprender e desenvolver por si próprios. Como resultado, a qualidade do software melhora. Todas as outras habilidades únicas podem muito bem contar com o exposto acima. Convido outras pessoas a compartilhar exemplos de meta habilidades que eles desenvolveram ao longo do tempo.
Em geral, a correção e o reconhecimento dos padrões estão ligados ao resultado da complexidade (também conhecido como carga cognitiva). Deve haver uma maneira de equilibrar os dois fatores com competência para reduzir a complexidade. É por isso que considero essas habilidades a essência principal de tudo o que fazemos.
* O interessante é a correção e o reconhecimento de padrões fortemente relacionados pelas práticas em torno do aprendizado de máquina.
** Se você quiser saber mais sobre o que John está fazendo, dê uma olhada
no vídeo dele .
*** Os engenheiros também devem praticar um alto nível de
treinamento e comunicação. Esses conceitos não são exclusivos do software, mas estão fortemente associados às ciências.
Artigo original