BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Tornando-se artesãos de software

Tornando-se artesãos de software

O movimento Software Craftsmanship, Artesanato de Software, afirma que a prática é um caminho para desenvolver as habilidades de programação necessárias para se tornar um artesão de software. Habilidades técnicas são consideradas primordiais, levam tempo para seu aprendizado e tornam os seus praticantes melhores desenvolvedores.

O manifesto pelo artesanato de software declara:

Como aspirantes à artesãos de software estamos elevando o nível do desenvolvimento profissional de software praticando e ajudando outros a aprender o artesanato. Através deste trabalho nós valorizamos:

Não apenas software funcionando, mas também software bem feito.

Não apenas responder à mudanças, mas obsessivos com a entrega de valor.

Não apenas indivíduos e interações, mas também uma comunidade de profissionais.

Não apenas colaboração do cliente, mas também parcerias produtivas.

Assim, ao buscar os itens à esquerda percebemos que os itens à direita são indispensáveis.

Na postagem do blog the codesmith Chris ODell compartilhou sua definição de artesão:

Em minha opinião, um artesão é alguém que não somente cria produtos com as suas ferramentas, mas sim alguém que normalmente coloca parte de si naquilo que faz.

Os produtos de um bom artesão demandam mais tempo e esforço, contudo o resultado final é um produto de qualidade e que atende a funcionalidade desejada. Bom artesanato é sinônimo de produtos de qualidade.

Utilizando uma analogia com ferreiros, Chris criou o termo "codesmith" ( algo como ferreiro do código) que segundo o autor "implica um certo nível de artesanato e implica uma progressão de aprendiz para mestre". Em uma outra postagem, ele explicou que qualquer um se tornar um codesmith e ele explica como os "codesmiths" podem se desenvolver para se tornarem mestres:

A barreira para se tornar um codesmith deve ser baixa. É por isso que penso que qualquer um que escreve código deve se sentir livre para se denominar codesmith. Os ideais do artesão deveriam ser seguidos, com uma saudável dose de pragmatismo, pois o aprendizado das habilidade para se tornar um bom codificador leva tempo e experiência.

Anteriormente neste ano a InfoQ publicou uma texto sobre a importância das práticas técnicas no desenvolvimento ágil, onde diversos desenvolvedores que estão envolvidos no movimento de artesanato do software enfatizaram a importância das práticas técnicas.

Matt Badgley: "Nós precisamos renovar a ênfase nas boas práticas de engenharia ágil e abraçar as idéias do artesanato - sem isso, agilidade não acontece."

Robert Martin: "Se você não usa [as 13 práticas do XP], seria melhor utilizar algumas que são tão boas quanto ou melhores. E as práticas que você usará vão definir sua cultura e serão a expressão dos seus valores."

Ruud Wijnands: "todas as empresas que tenho visto que foram bem sucedidas na adoção do agile avaliaram e implementaram práticas técnicas. As empresas menos bem sucedidas não.

Como os programadores podem desenvolver suas habilidades para se tornarem artesãos de software? John Sonmez escreveu o texto porque eu não faço code katas no qual ele afirma que programadores não podem melhorar suas habilidades fazendo o mesmo exercício repetidamente. Para aprender algo, é preciso se desafiar continuamente.

Escrever código repetidamente para resolver o mesmo problema diversas vezes é exatamente a mesma coisa, exceto se você introduz novos desafios adicionando restrições e alterações, você está apenas se beneficiando do exercício na primeira, e talvez, na segunda vez, que você desenvolve a atividade.

(...) se você quer ser melhor em algo, repetindo uma prática sozinha não é suficiente. Você deve praticar com dificuldade e desafios crescentes.

De acordo com John o melhor caminho para desenvolver a habilidade é através da prática. Programadores tem que programar para se tornarem artesãos:

Eu recebo muitos e-mails perguntando qual o melhor caminho para aprender a programar ou como alguém pode melhorar suas habilidades de desenvolvedor. Recentemente, tenho recebido muitos e-mails perguntando como aprender a desenvolver para Android. Sabe o que eu digo para essas mentes inquisidoras?

Faça aplicações Android.

Mas, hmm, que livro devo ler?

Livro nenhum, apenas venha como uma ideia e tente criá-la. Descubra do que você precisa ao longo do caminho. Quando você travar, procure pela resposta ou procure ajuda.

Steve Ropa escreveu sobre a construção de artesãos de software. Universidades ensinam a teoria do desenvolvimento de Software, para se tornarem artesãos, programadores precisam obter "experiência do mundo real e aplicação prática de conhecimento" diz Steve. Programas de treinamento de artesanato podem fornecer isso:

Minha sugestão é voltar o relógio em algumas centenas de anos, e transformar a sala do seu time em um workshop. Vamos popular esse workshop com artesãos. Nós podemos não ter todos os artesãos que precisamos para começar, então precisamos construí-los e fazê-los crescer. Isso pode ser feito aplicando um programa de treinamento e utilizando o modelo de artesão para o desenvolvimento de carreira futuro.

Em um post em seu blog Steve fornece cinco áreas principais para um aprendiz de desenvolver de Software se tornar um artesão:

  1. Criando Código - a arte de usar uma ou mais linguagens de programação para criar código limpo e bem construído;
  2. Aplicando Princípios Aplicados - (...) um aprendiz precisa entender princípios como SOLID , e sabe como aplicá-los;
  3. Tecnologias e Ferramentas - enquanto programadores precisam ser capazes de praticar atividades como refatoração manualmente eles também precisam saber como utilizar certas ferramentas, bem como qual ferramenta escolher para uma determinada tarefa;
  4. Hábitos de Trabalho - (...) precisamos ser capazes de construir memória muscular para atividades que fazem bons programadores serem ótimos, como TDD, Integração Contínua, etc.;
  5. Habilidades Comportamentais (Soft Skills) - (...) aprendizes de Software devem aprender a trabalhar em um time, como se comunicar com outros, e outras habilidades comportamentais que tendem a ser esquecidas nos ambientes de aprendizado tradicionais.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT