ti-enxame.com

Como você compartilha seu trabalho com não programadores?

Às vezes me sinto como um músico que não pode tocar shows ao vivo. Programar é uma habilidade bem legal, e um mundo muito amplo, mas muito disso acontece "fora da câmera" - na sua cabeça, no seu escritório, longe dos espectadores.

É claro que você pode falar sobre programação com outros programadores, e há programação por pares, e você cria algo que pode mostrar às pessoas, mas quando se trata de explicar aos não programadores o que você faz ou como foi seu dia de trabalho, é meio complicado.

Como você faz com que os não programadores de sua vida entendam o que você faz?

NOTA: isso não é uma repetição de Fazendo com que os não programadores entendam o processo de desenvolvimento , porque essa pergunta era sobre o gerenciamento das expectativas do cliente.

43
EpsilonVector

Três palavras:

dumb it down

A programação é complexa. É preciso muito trabalho para entender isso. E as alegrias da programação são ainda mais sutis.

Para que eu comunique meus sucessos e outros a outros (ou seja, família), tenho que me comunicar em um nível mais comum. Compare a programação com as coisas normais do mundo real.

(ou seja, um objeto para um carro com um painel de instrumentos e assentos e ....)

É ainda melhor se você souber algo sobre o seu público, porque pode usar coisas que eles entendem que são mais complexas do que os conceitos cotidianos normais.

Por exemplo, minha esposa era professora, então eu posso comparar alguns dos meus processos de desenvolvimento de software com os processos de ensino que ela teve que usar. Isso ajuda imensamente.

Mas no final você precisa simplificar, simplificar e simplificar um pouco mais. E mesmo assim, é difícil fazer com que alguém entenda o quão legal é uma aula bem trabalhada com bons testes de unidade. :)

31
Vaccano

Eu nem tento. Se eles não são orientados para a tecnologia o suficiente para ter pelo menos um entendimento básico de programação, eu vou apenas aborrecê-los com os detalhes. Normalmente, eu apenas escolho algo muito alto, como "eu crio sites" ou "eu escrevo programas de computador para fazer o X"

49
JohnFx

Meu irmão Rob me perguntou sobre isso. (Ele é um artista e ilustrador, como livros infantis, interiores de museus, coisas assim.)

Tentei explicar isso mostrando a ele Computador de retransmissão de Harry Porter , porque acho que captura a essência dos computadores e da programação de uma maneira que parece instintiva.

Não era isso que ele queria, e eu fiquei meio confusa.

Só mais tarde eu percebi qual era o problema real. Lembrei-me dessa citação de Oscar Wilde:

O fato é que a civilização requer escravos. Os gregos estavam bem ali. A menos que haja escravos para fazer o trabalho feio, horrível e desinteressante, a cultura e a contemplação se tornam quase impossíveis. A escravidão humana é errada, insegura e desmoralizante. Da escravidão mecânica, da escravidão da máquina, o futuro do mundo depende.

O que me excita como engenheiro é que estou construindo escravos mecânicos. Quando criança, eu queria colocar uma barragem no riacho e ter uma roda d'água produzindo eletricidade, para que pudesse fazer algo por mim , enquanto eu apenas assisti. No motor de um carro, há uma árvore de cames. Na verdade, é um programa primitivo. Ele abre e fecha as válvulas quando eu quero , então não preciso fazer isso.

O mundo de um artista é completamente diferente. Se você ouvir, com os olhos fechados, uma versão da 9ª sinfonia de Beethoven, você será transportado. Você deve dar toda a sua atenção e, quando terminar, anseia por isso. Se você visitar a obra-prima de Frank LLoyd Wright, Falling Water, será transportado. Sinceramente, não sei como alguém poderia viver nela. Onde você pode fazer uma bagunça? Ele captura você completamente. É uma sinfonia arquitetônica.

A arte não faz algo para você, faz algo para você .

Eu tentei encontrar a arte no que faço. Há beleza nela, se você olha, mas precisa olhar. Isso é o que teria nos conectado.

12
Mike Dunlavey

Eu tento explicar isso em termos de solução de um problema. Eu apenas escolhi usar um programa de computador para resolver o problema. Dessa forma, você pode discutir o que fez em termos do problema que está tentando resolver. Quando eles entendem isso, o salto para resolvê-lo através da programação não é muito longe e geralmente pode ser feito por tipos não técnicos.

12
mpenrow

Conte uma história. Não se concentre no que você faz, mas em como você se sente quando o faz, em como está apaixonado ou entediado com isso, no relacionamento com seus colegas de trabalho.

7
mouviciel

Minhas duas analogias principais para esse fim são: uma receita e uma burocracia maciça. Foi o que expliquei neste controle de qualidade: minutos para explicar a programação a uma criança de 15 anos

Eu usei a analogia da receita várias vezes para explicar como a programação consiste em escrever um conjunto rigoroso de instruções que têm um resultado tangível e previsível quando seguidas.

Na verdade, só usei a analogia da burocracia algumas vezes, porque a maioria das pessoas não precisa entender além da analogia da receita, mas as duas vezes foram muito esclarecedoras para a pessoa. Eles pareciam pensar que a programação significava a recuperação total de todas as linhas de código (por exemplo, "Mas se você tem uma memória tão ruim, como pode programar um computador?"), Mas na verdade trata-se de criar muitos módulos independentes que funcionam juntos para atingir o objetivo maior. Os módulos de um programa são como os departamentos de uma grande empresa: unidades independentes que lidam principalmente com o seu próprio pedaço do todo e se comunicam com outros departamentos por meio de memorandos.

3
jhocking

Acho que recebo mais respostas quando explico algo em termos da idéia por trás do código, em vez do próprio código. Eu apenas retiro todo o jargão técnico, evito mencionar termos relacionados à programação e apenas falo sobre a idéia e o que realmente está sendo pronto.

Por exemplo, recentemente tentei explicar como funciona um filtro de spam. Eu apenas disse que mantém um registro das palavras normalmente encontradas em spam e daquelas não encontradas em spam. O registro é criado usando e-mails conhecidos e não spam. Depois disso, sempre que um novo e-mail chega, apenas checamos quantas palavras aparecem com spam (ou seja, ocorrem em nosso registro de palavras com spam) e quantas parecem sem spam. Se houver muitas palavras com spam, provavelmente é spam e, portanto, é enviado para a caixa de spam. As pessoas não-tecnológicas com quem eu estava conversando seguiram muito bem a ideia.

2
MAK

Metáforas

Muitas vezes, eu não o descrevo como um programa, tento representá-lo como um conceito completamente diferente, com inter-relações semelhantes.

Isso torna a visualização do programa muito mais interessante e, às vezes, me ajuda a vê-lo sob uma nova luz.

Você não descreve a eletricidade para alguém que nunca trabalhou com ela falando sobre corrente e voltagem, não é? Além disso, é divertido descrever alguns conceitos como se algum processo de computador ultra-consciente os fizesse acontecer como se por meio de mágica. Uma pequena história de imaginação não os prejudica como a realidade de como os computadores são frios e racionais.

1
Evan Plaice

Respondi a uma pergunta semelhante em mais detalhes , mas o Gist é: "Programação é como construir uma fábrica ou uma linha de montagem".

1
Huperniketes

Muitas pessoas que não programaram parecem acreditar que os programadores passam muito tempo caçando bugs, pesquisando visualmente milhares de linhas de código em busca de vírgulas erradas. Por isso, primeiro asseguro a eles que não é esse o caso e, se fosse, seria completamente inútil.

Costumo comparar programação de computadores a escrever um livro de receitas. Um livro de receitas é um conjunto de instruções para pessoas, enquanto um programa de computador é um conjunto de instruções para um computador. Alguns programas são muito mais complexos que os livros de receitas e os programas são modificados com mais frequência, mas há alguma semelhança na estrutura. Se um livro de receitas contém sete cópias das instruções para fazer um molho e a receita precisa ser alterada, alguém precisa encontrar todas essas cópias e consertá-las.

1
kevin cline

Eu acho que uma boa analogia é construir uma fábrica. A maioria das pessoas viu algo como "Como é Feito", onde você vê algum item sendo embaralhado por diferentes correias transportadoras e máquinas, com a esperança de que um produto acabado seja lançado no final. Eu digo às pessoas que construo coisas assim, mas, em vez de serem fábricas físicas trabalhando em itens físicos, elas são virtuais e trabalham com dados. Claro que isso não é uma boa analogia para todos os tipos de programação, mas acho que se dá uma boa idéia da complexidade e é paralelo a muitos tipos de aplicativos.

1
frankc

Comparo-o à construção de uma casa, se vivêssemos em um universo estranho, com partículas exóticas e antitempo:

Você tem uma idéia para uma casa muito legal, então cria um esboço de como ela será e tem um plano geral de como proceder. Você vai à loja de ferragens e compra madeira para construir os muros, mas eles continuam caindo porque o chão é irregular. Então você compra cimento para definir a base, mas o cimento não seca e você não consegue entender o porquê. Você volta à loja de ferragens e pergunta o porquê, mas o funcionário fica catatônico. Você vai a 8 lojas de ferragens diferentes até que uma delas lhe diga que o cimento que você usou foi desenvolvido no outono de 1989, mas você comprou sua propriedade no inverno de 1989, portanto elas são incompatíveis e ele vende o cimento 2013.1.1 mais recente. Você volta a lançar as bases e, assim que faz, o cimento desaparece. Desta vez, todos os funcionários ficam catatônicos, então você pesquisa sua casa no Google e descobre que ela já foi um site de testes nucleares. Então você pesquisa no Google os efeitos dos testes nucleares no solo e descobre que ele causa radicais livres. Você pesquisa no Google e começa a pesquisar radiação eletromagnética, depois férmions, bóson, teoria das cordas e algo sobre um gato. Você não quer desistir porque perdeu muito tempo e bateu com força na garrafa. Você chega tarde em casa e irrita sua esposa, alegando que ela é a razão de você não poder construir a casa porque ela e os filhos estão ocupando todo o seu tempo ... Cerca de três meses depois, você percebe que foi - quase terminando a casa, sem nem mesmo saber por que você queria construir a casa.

0
puk

Você realmente não pode compartilhar sua arte - apenas manchetes sobre seu trabalho com outras pessoas

No entanto, o que você pode fazer é, em vez de compartilhar sua arte, é compartilhar sua vida com pessoas que estão na mesma arte que você (:

0
mireille raad

Normalmente não falo sobre como é feito, mas sim características do trabalho.

Eu costumo enfatizar que é incrivelmente complicado, tão complicado que nenhuma pessoa poderia esperar começar a entender em detalhes perfeitos exatamente o que está acontecendo. Provavelmente exigiria 30 anos estudando as várias partes que interagem (eletrônica através de estruturas), mais cerca de uma hora por linha de código ativa, e nesse momento você teria que voltar a estudar porque o hardware teria mudado tanto que são outros 10 anos grokking a versão mais recente.

A outra parte importante é como pode ser gratificante criar algo tão flexível que milhares, talvez milhões de pessoas possam usá-lo para enriquecer suas vidas, algo único (pelo menos em detalhes) e algo de que você aprendeu bastante.

Se ninguém encheu minha boca de meias nesse momento, eu demonstraria com satisfação um aplicativo, mostrando um pouco da complexidade e flexibilidade possíveis.

0
l0b0

Como uma abordagem diferente para as outras 15 respostas ...

Em vez de explicar os detalhes do meu trabalho (programação), tento me concentrar nas soluções que o trabalho resolve, ou seja, quais problemas os sistemas/software que construo realmente resolvem para o usuário. Geralmente, esse é um domínio que não é de programação, a menos que você esteja escrevendo um compilador ou algo assim; nesse caso, você teria que explicar por que isso é útil.

Dessa forma, torna mais fácil para as pessoas entenderem que é uma natureza complexa e como ela se relaciona com o "mundo real".

Como analogia, como um ferreiro medieval, eu provavelmente explicaria (para a senhora da taberna local) que faço espadas para cortar o inimigo em pedaços, não como tempero o aço e o martelo com um certo ângulo e força (a menos que eles perguntaram). Felizmente, ela entenderia que cortar um inimigo em pedaços é útil (...) e pode ser difícil de fazer (falta de aço, inimigos blindados, ambiente de trabalho enfumaçado, etc.) e, assim, você ganha alguma apreciação por executar uma tarefa complexa.

(Então, moldar bigornas seria equivalente a criar compiladores, e você teria que explicar para que eles são usados ​​...)

0
Macke

Digo a eles que, além de escrever sinfonias, teses e romances matemáticos, a programação é a única chance de você se envolver em tarefas/estruturas com esse nível de complexidade e complexidade. Obviamente, não dizendo que um aplicativo da web decente é uma obra-prima histórica, mas quando as pessoas percebem que você usa sua mente nesse tipo de nível todos os dias, então elas 'entendem'. Muitos empregos são dignos e bem remunerados, mas se resumem a uma tarefa processual bastante simples, repetida várias vezes.

Pelo menos, é assim que eu vejo. Eu poderia estar errado.

0
Andrew M