À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 muita coisa 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 Como os não programadores entenderem o processo de desenvolvimento , porque essa pergunta era sobre o gerenciamento das expectativas do cliente.
fonte
Respostas:
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. :)
fonte
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 os aborrecerei com os detalhes. Normalmente, eu apenas uso algo de alto nível, como "eu crio sites" ou "eu escrevo programas de computador para fazer o X"
fonte
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.
fonte
Meu irmão Rob me perguntou sobre isso. (Ele é um artista e ilustrador, como livros infantis, interiores de museus, coisas assim.)
Tentei explicar, mostrando a ele o computador de retransmissão de Harry Porter , porque acho que ele 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 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 observava. 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, para não precisar 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.
fonte
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.
fonte
Minhas duas analogias básicas para esse fim são: uma receita e uma burocracia maciça. Foi o que expliquei neste controle de qualidade: 30 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 tenham 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 programação significava recall 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 é sobre a construção de 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.
fonte
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. Apenas retiro todo o jargão técnico, evito mencionar termos relacionados à programação e apenas falo sobre a idéia e o que está realmente sendo feito .
Por exemplo, recentemente tentei explicar como funciona um filtro de spam. Acabei de dizer 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 das 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. O pessoal não técnico com quem eu conversava seguiu muito bem a ideia.
fonte
Metáforas
Muitas vezes, 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 extremamente 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.
fonte
Respondi a uma pergunta semelhante em mais detalhes , mas a essência é: "A programação é como construir uma fábrica ou uma linha de montagem".
fonte
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.
fonte
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. 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 todo tipo de programação, mas acho que se der uma boa idéia da complexidade e for paralelo a muitos tipos de aplicativos.
fonte
Você meio que não pode realmente 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ê (:
fonte
Normalmente não falo sobre como é feito, mas sobre as características do trabalho .
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 seria necessário 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 nessa época 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 com o qual você aprendeu bastante.
Se ninguém encheu minha boca de meias neste momento, eu demonstraria com satisfação um aplicativo, mostrando um pouco da complexidade e flexibilidade possíveis.
fonte
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.
fonte
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 ...)
fonte
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 estabelecer 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 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, você pesquisa sua casa no Google e descobre que 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 se irrita com 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 saiu de casa. 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 se irrita com 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 saiu de casa. 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 se irrita com 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 saiu de casa.quase terminando a casa, sem nem saber por que você queria construir a casa.
fonte
Eu apenas digo a eles que o que faço é analisar o que eles fazem para o trabalho deles e criar um software de computador que facilite o trabalho deles.
fonte
Como alguns de vocês disseram, use analogias que façam sentido para eles. Eu sempre tento trazer o Google de alguma forma, se meu código faz algo semelhante ao google, ou mostra os benefícios financeiros, ou como isso ajuda as pessoas de alguma forma ...
fonte
Às vezes, desisto e digo que passo o dia editando arquivos de texto. O que geralmente é verdade, se não a história completa.
fonte