BT

Tornando-se artesãos de software

| por Ben Linders Seguir 27 Seguidores , traduzido por Ivan de Aguirre Seguir 0 Seguidores em 14 jan 2015. Tempo estimado de leitura: 5 minutos |

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

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Excelente artigo by Rodrigo Oliveira

Uma pena ser cada vez uma realidade mais distante.

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

1 Dê sua opinião

Faça seu login para melhorar sua experiência com o InfoQ e ter acesso a funcionalidades exclusivas


Esqueci minha senha

Follow

Siga seus tópicos e editores favoritos

Acompanhe e seja notificados sobre as mais importantes novidades do mundo do desenvolvimento de software.

Like

Mais interação, mais personalização

Crie seu próprio feed de novidades escolhendo os tópicos e pessoas que você gostaria de acompanhar.

Notifications

Fique por dentro das novidades!

Configure as notificações e acompanhe as novidades relacionada a tópicos, conteúdos e pessoas de seu interesse

BT