Como explicar o que é programação para sua mãe
Autor: Lucas Bessa | Publicado: 2011-12-01T10:37:00-02:00



Olá pessoal! Encontrei esse artigo no iMasters e achei bem interessante!
É uma forma de explicar aos leigos o que é programação!

Tradutor

Uma maneira de explicar o que fazemos dia sim, dia não, é pensar em 
nós como tradutores entre o mundo humano e o mundo dos computadores. 
Como programadores, temos a habilidade duramente conquistada de pegar um
 problema do espaço humano e traduzi-lo para o espaço computacional. Não
 somente isso, mas o computador com o qual estamos falando é brilhante, 
mas também muito, muito pedante. Temos que remover toda a imprecisão do 
problema humano e deixá-lo extremamente claro para o computador. É como a
 diferença entre um mapa e um conjunto de direções. Com um mapa, você 
pode achar seu caminho e precisa somente de um. Um conjunto de direções é
 bem claro, mas bastante específico, e, se você cometer um erro, o resto
 das instruções se torna uma bela porcaria. Lidar com um computador é 
como lidar apenas com conjuntos de direções.





Às vezes, essa tradução é fácil, como pedir para um computador para 
realizar somas; muitas vezes, muitas e muitas somas complicadas. Mas, em
 grande parte do tempo, a tradução é muito difícil. 





Infelizmente, as coisas que geralmente são difíceis para os 
computadores (por exemplo, processamento de linguagem natural, 
reconhecimento de rosto) são aspectos que as pessoas consideram muito 
fáceis. Uma maneira interessante de ajudar as pessoas a começar a ver a 
grande diferença entre pessoas e computadores é pedir a uma pessoa para 
juntar um bilhão de números aleatórios em menos de um minuto. Ela irá 
dizer que é impossível. Então pergunte a ela por que ela não consegue 
fazer, mas seu computador consegue. Da mesma maneira, os humanos acham 
muito fácil reconhecer pessoas, falar com várias pessoas diferentes, ler
 todos os tipos de letras cursivas (mas não de médicos) e outras coisas 
que são muito difíceis para computadores. 

Designer/arquiteto

Como programadores, nós também somos designers e arquitetos (mas 
raramente algum de nós consegue de fato desenhar). Depois de termos 
traduzido um problema do espaço humano para o do computador, nós temos 
que quebrá-lo em vários conjuntos de direções específicas. Isso é ok se 
você quiser que um programa faça apenas uma coisa, mas nós queremos que 
nossos programas tenham um pouco (ou muita) de flexibilidade. 





Essa flexibilidade adiciona complexidade, e essa complexidade precisa
 ser gerenciada. Faça bem o seu design e seu programa será flexível e 
poderá ser modificado. Faça isso errado, e você deixará sua vida bem 
difícil. 





A analogia do arquiteto é boa quando as pessoas continuam querendo 
mudar seu programa quando você já está no meio do caminho. As pessoas 
não pedem para os arquitetos construírem um arranha-céu e então voltam 
seis meses depois e pedem que ele também voe, mas isso parece normal com
 computadores. O problema é que a arquitetura está escondida por trás da
 interface, e o custo de modificá-la não é visto pelo usuário. É como ir
 ao teatro, na frente o cenário é lindo e fabuloso, mas assim que você 
chega por trás das cenas é tudo industrial. O perigo é que se você não 
mantém o cenário, um dia ele pode cair ou pegar fogo. Mesmo sendo 
improvável que seu código irá pegar fogo, ter seu código entrando em 
colapso (travando) muito é um sinal de que ele precisa de um trabalho de
 manutenção. 

Sumário

Tradutor, artesão, arquiteto, designer, criador de direções. Podemos 
usar todas essas analogias para tentar explicar o que fazemos como 
programadores. Cada uma delas toca uma parte do que fazemos, mas sem ser
 um é difícil saber de fato o que significa ser um programador.





Quais analogias, metáforas ou histórias você usa para explicar o que você faz?



⁂


Texto original disponível em http://www.programming4scientists.com/2009/08/18/how-to-explain-programming-to-your-mum/