Pular para o conteúdo
Desenvolvimento de Software é Criativo
Gestão de Times Ágeis

Desenvolvimento de Software é Criativo

#desenvolvedor#desenvolvimento#desenvolvimento de software#insight

Por Rodrigo de Toledo

Publicado em Atualizado em 2 min de leituraK21

Em 1973, Peter Drucker [1] identificou uma categoria de trabalho na qual as pessoas passaram a ser chamadas de “trabalhadores do conhecimento”. Diferente de outros trabalhadores, o principal material de trabalho é algo intangível: o intelecto próprio de cada um. Os desenvolvedores de software certamente estão classificados como tal e, conforme os demais trabalhadores do conhecimento, seu trabalho inclui inovação, aprendizado contínuo e geração de informação.

Um trabalhador braçal, diferente do trabalhador do conhecimento, tem como característica a repetição. Por exemplo, numa linha de montagem, o mesmo movimento é repetido inúmera vezes. Em outro exemplo, o pedreiro repete o procedimento de colocação de um tijolo, um após o outro. Em especial, o desenvolvimento de software é não repetitivo na sua essência. O computador é justamente uma ferramenta criada para evitar repetições de cálculos. Em código não existe “copiar e colar”, quando um programador faz isso, é porque está programando errado. De fato, a criação do software é sempre um processo único a cada produto.

Quando ensinamos programação a alguém que está aprendendo pela primeira vez, uma das dificuldades do aluno está na percepção sobre o processo criativo que existe ao programar. Cada vez que um problema é exposto, não existe solução única, o resultado vai depender da criatividade de quem implementa. Não basta esse aluno ter feito todos os cem exercícios da lista, pois na prova sempre haverá uma questão nova que depende da sua criatividade para propor uma solução. Ao corrigir, não existem duas provas iguais (a não ser em caso de cola), mesmo que esses alunos só saibam comandos básicos. Cada um dará nomes diferentes às variáveis, a condição do loop varia, em uns a atribuição vem antes, em outros a condição é que vem primeiro, etc.

O trabalho de um programador pode ser comparado ao de um artesão. Cada programador, usando ferramentas conhecidas, desenvolve um produto que é único. Esse produto é bastante maleável, talvez comparável ao da argila molhada. O manifesto ágil [2] também reflete essa ideia ao afirmar que “indivíduos e suas interações estão acima de processos e ferramentas”. Estendendo essa linha, foi criado até o manifesto do software artesanal [3].

Idee

CONCLUSÃO

O desenvolvimento de software traz algumas características inerentes a todo trabalhador do conhecimento: processo criativo, intangibilidade em boa parte desse processo, complexidade intelectual, alta variabilidade e imprevisibilidade, e múltiplas soluções corretas para o mesmo problema (por isso não deveria ser comparado à Engenharia Civil). Quando o movimento ágil surgiu, as pessoas estavam tomando consciência dessas características da nossa área e resolveram ir contra a ideia de um processo unificado para todo o desenvolvimento de software, que era a onda vigente naquela época. Era o início do surgimento de uma sequência de quebras de paradigmas, tais como: entrega em iterações curtas; times auto-organizados; e escopo flexível.

Nos próximos posts pretendo abordar alguns desses pontos.

[1]  Drucker, Peter F, 1973. Management: Tasks, Responsibilities, Practices. Harper & Row, New York
[2] agilemanifesto.org
[3] manifesto.softwarecraftsmanship.org

Textos sobre esse tema:

Perguntas frequentes

Por que o desenvolvimento de software é considerado um trabalho do conhecimento?

O desenvolvimento de software é um trabalho do conhecimento porque lida com o intelecto e materiais intangíveis, exigindo inovação e aprendizado contínuo. Ao contrário do trabalho braçal, focado na repetição de tarefas como na construção civil ou linhas de montagem, a criação de software envolve processos únicos e não repetitivos a cada novo produto desenvolvido.

Existe apenas uma solução correta para resolver um problema de programação?

Não existe uma solução única para resolver um problema de programação. Cada implementação depende da criatividade do desenvolvedor, resultando em códigos diferentes para o mesmo desafio. Mesmo programadores iniciantes utilizam estruturas, nomes de variáveis e lógicas variadas, tornando a prática de copiar e colar inadequada no desenvolvimento de software.

Qual é a relação entre o desenvolvimento de software e o artesanato?

O trabalho do programador é comparado ao de um artesão porque utiliza ferramentas conhecidas para criar um produto único e maleável. Essa visão valoriza os indivíduos e suas interações acima de processos e ferramentas, estando alinhada aos princípios do Manifesto Ágil e servindo de base para o manifesto do software artesanal.

Por que o desenvolvimento de software não deve ser comparado à engenharia civil?

O desenvolvimento de software difere da engenharia civil por apresentar alta variabilidade, imprevisibilidade, complexidade intelectual e múltiplas soluções corretas para o mesmo problema. Essas características motivaram o surgimento do movimento ágil, que substituiu processos unificados e rígidos por entregas em iterações curtas, times auto-organizados e escopos flexíveis adequados a essa imprevisibilidade.

Pronto pra dar o próximo passo?

Conheça os cursos da K21 e leve essas ideias pra prática com quem vive agilidade todo dia.

Ver cursos K21

Continue lendo