quinta-feira, 1 de dezembro de 2011

Como explicar o que é programação para sua mãe

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/

Nenhum comentário:

Postar um comentário