Estou lendo Coders at Work, de Peter Seibel, e muitas vezes foi mencionado que programadores que não sabem escrever geralmente se tornam pobres - foi afirmado por Douglas Crockford, Joshua Bloch, Joe Armstrong, Dijkstra (e eu leia apenas metade do livro).
Qual a sua opinião sobre isso? A incapacidade de se expressar por escrito em um idioma natural como o inglês é um obstáculo à escrita de um bom código?
Eu não sei sobre habilidade como programador, mas, por se vender como programador, inteligente = sexy no mundo freelancer. Portanto, se você conseguir escrever (e falar) bem, será percebido como inteligente e considerado mais confiável como desenvolvedor (embora possa ser completamente sem fundamento).
Dan Rosenstark 6/11/10
Por "não pode escrever", você quer dizer que a gramática está incorreta? Isso provavelmente é um problema maior do que coisas como fluxo fraco, etc.
Maxpm
1
@ Maxpm: Talvez, mas também uma incapacidade de transmitir seu significado por escrito, apesar de estar gramaticalmente correto.
gablin
Respostas:
30
Há muito mais na programação do que 'escrever código'. Grande parte de ser um programador de sucesso envolve comunicação; Ser capaz de se conectar com os clientes, entender suas necessidades, traduzi-los para o domínio técnico, expressá-los em código e, em seguida, explicar o resultado aos clientes.
Os programadores que têm dificuldade em se expressar claramente por escrito podem não ser capazes de se comunicar bem em geral, enquanto aqueles que têm uma boa compreensão da linguagem e da escrita geralmente conseguem traduzir essas habilidades no código que escrevem.
Eu acho que ser incapaz de escrever bem e, assim, comunicar-se bem, impedirá que um seja um bom programador.
Como Jason Fried e David Heinemeier Hansson (da 37signals) dizem em seu livro Rework:
Se você está tentando decidir entre algumas pessoas para preencher uma vaga, contrate o melhor escritor.
Ser um bom escritor é mais do que escrever. A escrita clara é um sinal de pensamento claro. Grandes escritores sabem como se comunicar.
Sim, e acho que praticamente todo mundo concorda que uma das qualidades de um bom programador é a capacidade de se expressar claramente em código, para que isso não me surpreenda que a capacidade de se expressar claramente por escrito esteja correlacionada com a capacidade de se expressar claramente. no seu código (e vice-versa). 1
n1ckp 6/11/10
2
Eu segundo isso. Você precisa se comunicar - não apenas com a máquina. As pessoas ao seu redor e os programadores que vêm atrás de você precisam de clareza na comunicação, tanto falada quanto escrita. Falado porque mais cedo ou mais tarde você tem que conversar com as pessoas e escrito porque esse é o seu código E SEUS COMENTÁRIOS.
quickly_now
Achei sua resposta muito interessante! Mas quando olhei para trás em minha memória para descobrir quem eram os melhores programadores com quem trabalhei, trabalhei ou trabalhei para mim, descobri que muitos deles eram muito ruins em escrever. No entanto, eles eram ridiculamente bons. No entanto, lembrarei da sua excelente resposta e tentarei no futuro. 1)
16
Se você não consegue explicar algo suficientemente bem, provavelmente não o entende bem o suficiente.
Ser uma pessoa inteligente significa que você trabalhará com outras pessoas inteligentes e terá que se comunicar com elas de maneira eficaz.
Qualquer ótima idéia que você tem é inútil se existir apenas em sua mente
Ser capaz de comunicar suas idéias de maneira eficaz é um sinal de grande entendimento. Isso se aplica a mais do que apenas o campo da programação.
Acho que se examinarmos a questão, obtemos a resposta diretamente:
A incapacidade de se expressar por escrito em um idioma natural como o inglês é um obstáculo à escrita de um bom código?
O que realmente significa escrever um bom código?
Os programas devem ser escritos para as pessoas lerem e, incidentalmente, para as máquinas executarem.
- Abelson & Sussman, Estrutura e Interpretação de Programas de Computador
Significa se expressar de forma clara, concisa, correta e elegante, escrevendo em uma linguagem de programação.
A única diferença entre se expressar com habilidade em inglês ou em um idioma de programação é que o inglês é muito mais tolerante.
Eu não acho que seja um grande obstáculo para um macaco de código (estou assumindo um certo nível básico / capacidade de se expressar em sua língua nativa). No entanto, acho que isso pode rapidamente se tornar um grande obstáculo, já que você (o desenvolvedor) precisa começar a articular melhor os projetos / arco / planos para um público não técnico. Na minha experiência, passar algo para outra pessoa que está mais ou menos no mesmo nível técnico que eu é o meu mais fácil e requer habilidades de linguagem consideravelmente menos naturais do que para articular algo a um cliente e / ou gerente. Da mesma forma, mesmo quando é uma audiência técnica, quando o assunto se torna menos concreto, a pessoa que está escrevendo sobre o assunto (ou falando sobre esse assunto) deve ser bastante articulada.
Isso depende do que você quer dizer com "bom código".
Se você quer dizer código que simplesmente funciona, dificilmente existe relação entre poder se comunicar com humanos e se comunicar com computadores.
Se você quer dizer código que funciona, é sustentável e expressa claramente a intenção do código, existe absolutamente uma relação entre escrever um bom código e escrever em um idioma destinado exclusivamente a seres humanos.
Embora você não precise de todas as habilidades necessárias para ser um bom escritor para escrever código compreensível, ainda existem alguns elementos que precisam estar lá, pois ambos serão lidos por humanos. De certa forma, é ainda mais difícil escrever um bom código, pois ele deve descrever a intenção com o código, sem usar construções que apresentariam um desempenho ruim ao serem executadas pelo computador.
O problema é que a codificação também é uma habilidade de comunicação. Jack Ganssle em seu boletim eletrônico Embedded Muse citou recentemente Doug Abbott:
Quando você escreve um programa, o que realmente está fazendo é comunicar a outro ser humano o que deseja que o computador faça. A programação é sobre comunicação, como qualquer outra forma de escrita. Então, sim, estudantes de ciência da computação devem ser expostos a uma boa redação. Mas como há muito pouco na ciência da computação, talvez eles precisem apenas de algumas aulas básicas de redação criativa.
Programadores que não sabem escrever prosa provavelmente também não sabem escrever código.
Um dos melhores programadores de "rock star" com quem já trabalhei foi um escritor muito ruim. E quando digo "muito pobre", quero dizer o tipo que apareceu como se estivesse extremamente bêbado ou pouco alfabetizado - quando você viu os e-mails dele. Erros de digitação, falta de pontuação, dificuldade em expressar idéias com clareza e erros comuns de ortografia ("eles / eles são" e assim) abundam - quase de forma excruciante às vezes. Lendo alguns de seus e-mails - eu ficaria preocupado com ele enviando clientes diretamente (não é necessário fazer isso naquela empresa) - porque isso faria a empresa parecer ruim!
Ainda assim, ele era um programador super estrela. Uma ordem de magnitude mais produtiva e ligada que a média.
Não sei bem o que fazer disso. Eu já vi isso várias vezes com pessoas diferentes. Alguns simplesmente não parecem ter talento para sentar e escrever as coisas. E, muitas vezes, parece não afetar seus talentos em outras áreas (mesmo relativamente semelhantes, no "trabalho do conhecimento", como programação). Você pensaria que estaria conectado, mas eu já vi vários exemplos vivos como este onde não estava. Embora eu ache que é bem possível que sejam " exceções que provam a regra " - provavelmente nunca pensei em notar os escritores ruins que não são programadores e os bons escritores que são .
Sempre existem exceções à regra. Também trabalhei com algumas pessoas brilhantes, que nunca deixamos perto de um cliente porque elas seriam transformadas em picadinho. Passei anos corrigindo erros de digitação e assim por diante na documentação deles. Porém, dê a eles um problema técnico e os flashes de insights e soluções foram surpreendentes. Tudo isso apenas mostra que as respostas aqui são generalizações. No entanto, generalizações se aplicam à maioria das pessoas.
quickly_now
3
@quickly_now: Eu estaria me perguntando (desde que você não especificou) como o código deles é lido. Eles podem ser muito inteligentes e bons solucionadores de problemas, mas se o código deles for ilegível, eles não serão tão bons programadores se você quiser minha opinião.
N1ckp 06/11/10
@ n1ck: Agora que você mencionou, o cara em que eu estava pensando não era muito bom em documentar seu código. O código em si era bom e bem projetado, mas ele não fez comentários sobre os bits intrinsecamente complexos, o que significava que era mais difícil de manter do que deveria ser. Não tinha pensado nisso. :)
Bobby Tables
Estou de acordo com @ n1ckp. Também estou disposto a apostar que sua escolha de nomes para variáveis / métodos / classes às vezes seria enigmática e confusa. Costumo ser muito cauteloso com programadores com produtividade extremamente alta, porque geralmente custa às despesas um pouco de tempo extra para melhorar a manutenção a longo prazo.
Desiludido
2
Se eles não conseguem escrever bem, como podem convencê- lo de que são bons programadores?
Alguém incapaz de expressar com precisão uma organização do sistema ou uma idéia seria capaz de escrever, seria capaz de escrever código - que são instruções precisas - interpretadas corretamente por um computador (muito) burro?
Mas você recebe um loop de feedback muito claro e imediato do computador, se o seu código não for escrito corretamente. Eu suspeito que você possa ter um inglês escrito extremamente ruim e quase nunca é informado sobre isso, muito menos dado o feedback que você precisa melhorar.
Carson63000
Você precisa aprender a ser claro e correto, mesmo com o compilador, porque, se não o fizer, nunca compilará nada no final.
Klaim
0
Eu acho que é muito importante que um programador seja capaz de se comunicar bem, tanto na linguagem falada quanto na escrita. A capacidade de traduzir uma ideia em palavras é um pré-requisito para escrever código.
Quer estejamos nos comunicando com um computador ou uma pessoa, precisamos colocar as palavras em uma ordem que faça sentido, seguindo as regras da gramática. Temos que pronunciar as palavras corretamente ou soletrá-las corretamente para que o outro lado da conversa as entenda. Os computadores lançam erros de sintaxe, os colegas de trabalho dizem "O QUE?" ou menosprezar o que está sendo dito como tagarelice ou pior, uma distração irritante.
Eu desencorajei fortemente a contratação de candidatos porque eles não conseguiam concluir um pensamento ou permanecer em um assunto. De qualquer maneira, uma pessoa foi contratada pelo nosso chefe e acabou sendo incapaz de entregar uma tarefa simples a tempo, porque estava distraído com qualquer nova tecnologia ou brinquedo chamativo.
Então, sim, é importante que os programadores possam se comunicar bem. Se eles não conseguem se comunicar efetivamente com um humano, não podem fazê-lo com um computador.
Escritores pobres tornam escritores pobres e nada mais. Uma habilidade de escrita ruim não significa que eles não possam se comunicar, mas simplesmente não podem escrever ou se expressar muito bem. É claro que qualquer um pode dizer que a habilidade de comunicação é importante e crucial na empresa e assim por diante, mas isso não significa que um programador com pouca habilidade de comunicação não possa fazer o trabalho bem. A programação e a escrita são arte, mas de um tipo completamente diferente. Escrever é sobre como fazer com que outros humanos entendam o que você está dizendo e / ou aja de acordo, mas a programação não está fazendo o computador entender seus requisitos, porque nenhum computador entenderá os requisitos de usuário (pelo menos dentro de 100 anos a partir de agora da IMO). A programação é sobre como traduzir o requisito para a linguagem de programação, e é por isso que a habilidade de escrever não é tão relacionada.
Parte do trabalho de um programador é se expressar claramente no código (e nos comentários) para que, não apenas o computador, mas também outras pessoas possam ler o código. Faria sentido (mas não está provado AFAIK) que essas habilidades estejam correlacionadas.
N1ckp 06/11/10
0
Absolutamente não!
Um bom escritor nada mais é do que um bom escritor. Peça a um bom escritor que descreva o conceito de banco de dados para uma pessoa não técnica. O que você acha que vai conseguir ...?
Um bom escritor, escreve. Um bom programador escreve um bom código.
Código que outras pessoas podem ler seis meses após o desenvolvimento.
Código que faz sentido às 2:00 da manhã, quando o sistema falha e a depuração está em andamento.
Código que todo mundo gosta de emprestar porque o entende e pode modificá-lo facilmente
Código que funciona 24/7 365
Eu ia continuar, mas prefiro gastar meu tempo respondendo a outras postagens. Eu acho que vocês sabem onde eu estou sobre esse assunto.
Acho que os pontos 1, 2 e 3 exigem que você seja um bom escritor, além de ser um bom programador. Em essência, você está considerando boas habilidades de escrita como uma característica implícita.
Respostas:
Há muito mais na programação do que 'escrever código'. Grande parte de ser um programador de sucesso envolve comunicação; Ser capaz de se conectar com os clientes, entender suas necessidades, traduzi-los para o domínio técnico, expressá-los em código e, em seguida, explicar o resultado aos clientes.
Os programadores que têm dificuldade em se expressar claramente por escrito podem não ser capazes de se comunicar bem em geral, enquanto aqueles que têm uma boa compreensão da linguagem e da escrita geralmente conseguem traduzir essas habilidades no código que escrevem.
Eu acho que ser incapaz de escrever bem e, assim, comunicar-se bem, impedirá que um seja um bom programador.
Como Jason Fried e David Heinemeier Hansson (da 37signals) dizem em seu livro Rework:
fonte
Ser capaz de comunicar suas idéias de maneira eficaz é um sinal de grande entendimento. Isso se aplica a mais do que apenas o campo da programação.
fonte
Acho que se examinarmos a questão, obtemos a resposta diretamente:
O que realmente significa escrever um bom código?
Significa se expressar de forma clara, concisa, correta e elegante, escrevendo em uma linguagem de programação.
A única diferença entre se expressar com habilidade em inglês ou em um idioma de programação é que o inglês é muito mais tolerante.
fonte
Eu não acho que seja um grande obstáculo para um macaco de código (estou assumindo um certo nível básico / capacidade de se expressar em sua língua nativa). No entanto, acho que isso pode rapidamente se tornar um grande obstáculo, já que você (o desenvolvedor) precisa começar a articular melhor os projetos / arco / planos para um público não técnico. Na minha experiência, passar algo para outra pessoa que está mais ou menos no mesmo nível técnico que eu é o meu mais fácil e requer habilidades de linguagem consideravelmente menos naturais do que para articular algo a um cliente e / ou gerente. Da mesma forma, mesmo quando é uma audiência técnica, quando o assunto se torna menos concreto, a pessoa que está escrevendo sobre o assunto (ou falando sobre esse assunto) deve ser bastante articulada.
fonte
Isso depende do que você quer dizer com "bom código".
Se você quer dizer código que simplesmente funciona, dificilmente existe relação entre poder se comunicar com humanos e se comunicar com computadores.
Se você quer dizer código que funciona, é sustentável e expressa claramente a intenção do código, existe absolutamente uma relação entre escrever um bom código e escrever em um idioma destinado exclusivamente a seres humanos.
Embora você não precise de todas as habilidades necessárias para ser um bom escritor para escrever código compreensível, ainda existem alguns elementos que precisam estar lá, pois ambos serão lidos por humanos. De certa forma, é ainda mais difícil escrever um bom código, pois ele deve descrever a intenção com o código, sem usar construções que apresentariam um desempenho ruim ao serem executadas pelo computador.
fonte
O problema é que a codificação também é uma habilidade de comunicação. Jack Ganssle em seu boletim eletrônico Embedded Muse citou recentemente Doug Abbott:
Programadores que não sabem escrever prosa provavelmente também não sabem escrever código.
Mais sobre este artigo interessante:
A escrita ruim reflete habilidades de programação ruins?
fonte
Isso é completamente anedótico, mas:
Um dos melhores programadores de "rock star" com quem já trabalhei foi um escritor muito ruim. E quando digo "muito pobre", quero dizer o tipo que apareceu como se estivesse extremamente bêbado ou pouco alfabetizado - quando você viu os e-mails dele. Erros de digitação, falta de pontuação, dificuldade em expressar idéias com clareza e erros comuns de ortografia ("eles / eles são" e assim) abundam - quase de forma excruciante às vezes. Lendo alguns de seus e-mails - eu ficaria preocupado com ele enviando clientes diretamente (não é necessário fazer isso naquela empresa) - porque isso faria a empresa parecer ruim!
Ainda assim, ele era um programador super estrela. Uma ordem de magnitude mais produtiva e ligada que a média.
Não sei bem o que fazer disso. Eu já vi isso várias vezes com pessoas diferentes. Alguns simplesmente não parecem ter talento para sentar e escrever as coisas. E, muitas vezes, parece não afetar seus talentos em outras áreas (mesmo relativamente semelhantes, no "trabalho do conhecimento", como programação). Você pensaria que estaria conectado, mas eu já vi vários exemplos vivos como este onde não estava. Embora eu ache que é bem possível que sejam " exceções que provam a regra " - provavelmente nunca pensei em notar os escritores ruins que não são programadores e os bons escritores que são .
fonte
Se eles não conseguem escrever bem, como podem convencê- lo de que são bons programadores?
fonte
Alguém incapaz de expressar com precisão uma organização do sistema ou uma idéia seria capaz de escrever, seria capaz de escrever código - que são instruções precisas - interpretadas corretamente por um computador (muito) burro?
fonte
Eu acho que é muito importante que um programador seja capaz de se comunicar bem, tanto na linguagem falada quanto na escrita. A capacidade de traduzir uma ideia em palavras é um pré-requisito para escrever código.
Quer estejamos nos comunicando com um computador ou uma pessoa, precisamos colocar as palavras em uma ordem que faça sentido, seguindo as regras da gramática. Temos que pronunciar as palavras corretamente ou soletrá-las corretamente para que o outro lado da conversa as entenda. Os computadores lançam erros de sintaxe, os colegas de trabalho dizem "O QUE?" ou menosprezar o que está sendo dito como tagarelice ou pior, uma distração irritante.
Eu desencorajei fortemente a contratação de candidatos porque eles não conseguiam concluir um pensamento ou permanecer em um assunto. De qualquer maneira, uma pessoa foi contratada pelo nosso chefe e acabou sendo incapaz de entregar uma tarefa simples a tempo, porque estava distraído com qualquer nova tecnologia ou brinquedo chamativo.
Então, sim, é importante que os programadores possam se comunicar bem. Se eles não conseguem se comunicar efetivamente com um humano, não podem fazê-lo com um computador.
fonte
Escritores pobres tornam escritores pobres e nada mais. Uma habilidade de escrita ruim não significa que eles não possam se comunicar, mas simplesmente não podem escrever ou se expressar muito bem. É claro que qualquer um pode dizer que a habilidade de comunicação é importante e crucial na empresa e assim por diante, mas isso não significa que um programador com pouca habilidade de comunicação não possa fazer o trabalho bem. A programação e a escrita são arte, mas de um tipo completamente diferente. Escrever é sobre como fazer com que outros humanos entendam o que você está dizendo e / ou aja de acordo, mas a programação não está fazendo o computador entender seus requisitos, porque nenhum computador entenderá os requisitos de usuário (pelo menos dentro de 100 anos a partir de agora da IMO). A programação é sobre como traduzir o requisito para a linguagem de programação, e é por isso que a habilidade de escrever não é tão relacionada.
fonte
Absolutamente não!
Um bom escritor nada mais é do que um bom escritor. Peça a um bom escritor que descreva o conceito de banco de dados para uma pessoa não técnica. O que você acha que vai conseguir ...?
Um bom escritor, escreve. Um bom programador escreve um bom código.
Eu ia continuar, mas prefiro gastar meu tempo respondendo a outras postagens. Eu acho que vocês sabem onde eu estou sobre esse assunto.
fonte