Neste artigo no Artima, Bruce Eckel disse que a analogia mais correta a ser feita com o ato de escrever software é o próprio ato de escrever - todos podem escrever, mas nem todos têm o dom de ser escritores.
Escrever software é como ... escrever
23 Respostas
Concordo.
O único porem, é que a maioria de nós passa a maior parte de nossas carreiras trabalhando com manutenção onde fica difícil encontrar uma chance de escrever um código do qual nos orgulhemos.
Infelizmente realmente parece que as empresas não se interessam por códigos com uma escrita feita com excelencia; talvez seja a velha questão do custo do projeto. Contrata-se um “lider” de projeto com vários estagiários e se faz o possível para terminar o projeto no prazo menor possível.
A analogia na minha opinião se encaixa muito bem, pois uma das coisas mais chatas de fazer é entender um texto ou código feito por uma pessoa que tem problemas em coordenar as idéias.
Outro fato que este tópico me fez lembrar ocorreu no curso de inglês que fiz; a professora disse que os problemas das pessoas ao escrever uma simples redação em inglês, por incrivel que possa parecer, não éra o idioma e sim o fato de que as pessoas simplesmente não sabem escrever; nem mesmo na lingua nativa. :shock:
flws
num pais onde a maioria das pessoas tem dificuldades gravissimas com matemática como o nosso fica dificil de acredita nisso…
eu acredito que seja isso mesmo, que escrever software é como escrever mesmo, mais isso depois que ja se tem certa lógica, o que é de ceerta forma raridade nesse país tomando como base a minha frase anterior, infelizmente tem muita gente por ai hoje em dia que tem dificuldade pra fazer contas de cabeça como 13 + 15, penso na dificuldade que seria escrever um programinha bem basico e pequeno usando o minimo de OOP…
primeiro aprender um pouco da linguagem, aprender de programação em si, depois escrever código com uma semantica razoavel, que tenha sentido, da mesma forma que se escreve uma redação que seja facil de ler… infelizmente acredito que a maioria das pessoas, se tentassem mal sairiam do hello word, até aprenderiam que um metodo x faz tal coisa, mais não saberiam usa-lo, não saberiam que o xxx.yyy() é um metodo do objeto xxx…coisas do tipo… não saberiam usar direito um retorno do método…
penso que escrever software tem complicações tecnicas que deixam a escrita mais dificil do que escrever uma redação… opinião
Hum… pelo menos a maior parte das pessoas que têm dificuldades muito básicas aqui no GUJ têm problemas para escrever também.
Mas a idéia do Eckel não é que “os analfabetos não devam escrever código”. O que ele disse, mais ou menos, é que "escrever software é uma atividade que é ao mesmo tempo criativa - como escrever um romance - e sujeita a restrições de tempo e custo - como escrever um artigo para o jornal. "
Nem todos são como o Donald Knuth, que escreveu o TEX , o Metafont e outros softwares, além daqueles três volumes do Art of Computer Programming. Eu classificaria o Donald Knuth mais ou menos na categoria do Tolstói (Guerra e Paz, não se lembram? Pelo menos o fôlego e a importância são os mesmos.)
Mas você pode ser um Gavin King (autor do Hibernate), ou até mesmo um programador Cobol de mainframe; todos são necessários, desde que façam as coisas bem-feito.
Eu achei bem interessante o que ele falou.
Mas não concordo muito com isso de “dom” (de tipo “ah, ele nasceu com o dom”), apesar de acreditar que existem pessoas com um certo “a mais”. Eu digo que não concordo porque acho que alguém sem o dom de programar pode, com muita disciplina, esforço e tempo, ficar igual a pessoa com o dom. Ainda mais se essa pessoa sem o dom tiver uma excelente formação (desde o primário) nas coisas que ela quer fazer.
…"escrever software é uma atividade que é ao mesmo tempo criativa - como escrever um romance - e sujeita a restrições de tempo e custo - como escrever um artigo para o jornal. "
Concordo também.
Descobri nesse meio tempo de Java que, para uma na criatividade também é necessário ler outras coisas não técnicas.
O Core Java não é tão atraente de leitura que o Dibs - Em busca de Si mesmo.
[]'s
JL
P.S.: Dibs - Em busca de Si mesmo não é livro de alto-ajuda, rs: http://www.submarino.com.br/produto/1/289214
Eu achei bem interessante o que ele falou.
Mas não concordo muito com isso de “dom” (de tipo “ah, ele nasceu com o dom”), apesar de acreditar que existem pessoas com um certo “a mais”. Eu digo que não concordo porque acho que alguém sem o dom de programar pode, com muita disciplina, esforço e tempo, ficar igual a pessoa com o dom. Ainda mais se essa pessoa sem o dom tiver uma excelente formação (desde o primário) nas coisas que ela quer fazer.
Digamos que o dom de programar seja raciocício rápido, facilidade em resolver problemas, e não ter uma linguagem decorada na cabeça.
Isso ae com certeza nasce com a pessoa, e outras, mesmo se esforçando não conseguem o mesmo redimento que a primeira.
Sem falar que o programador deve ser medido pelo domínio que ele possui nos algoritmos, e não na linguagem.
Já peguei muita gente que sabia java de cabo a rabo, e não conseguia sequer implementar um bobble sort
analisando tudo o que foi dito…em qual ponto deve se ater um iniciante em java, para que ele seja mais completo.
Digamos que o dom de programar seja raciocício rápido, facilidade em resolver problemas, e não ter uma linguagem decorada na cabeça.
Isso ae com certeza nasce com a pessoa, e outras, mesmo se esforçando não conseguem o mesmo redimento que a primeira.
Eu não diria que é o dom pelos seguintes motivos: os melhores em matemática e algoritmos que eu conheço (compreendem poucas “fontes” - TopCoder, ICPC e GCJ) começaram cedo. Eu digo que a facilidade deles em resolver problemas é por essa prematuridade.
Eu tenho amigos que começaram a programar com 10, 11 anos e estes sim eu digo que resolvem problemas com mais facilidade do que eu (que comecei com 17). Mas simplesmente porque começaram praticamente na infância e amadureceram isso com o amadurecimento do conhecimento geral deles. Por isso, a capacidade de resolver problemas computacionalmente é a mesma capacidade que eles adquiriram com o tempo de resolver problemas do dia a dia (tipo decidir se vai de ônibus ou a pé). É tão natural chegar a decisão de “que técnica vou usar pra resolver esse problema” quanto decidir o meio de se locomover de casa para a faculdade (ou outro tipo de problema).
Fico impressionado como alguns “espertos” (ou seria eSperts) querem valorizar o ato de codificar como de um escritor. Nem de perto seria como. Nem pelo valor, que um bom escritor ganha-se bem e um bom codificador nem passa perto, nem pelo ato “criativo”, que convenhamos, a maior parte do desenvolvimento de sistemas são nada mais, nada menos, que cadastros e relatórios. Aperfeiçoa-se o que? O ato de criar um cadastro mais…criativo?
Mesmo que muitos não queiram aceitar, basta olhar a tarefa ao qual trabalham. Se não fazem isso, fazem testes. Os que não codificam quase, os tal “arquitetos”, que eu chamaria mais de “técnicos de edificações” , não entram no caso também, o que resume, na minha nada humilde opinião, em uma total discordância com tal “afirmação”.
interessante isso…
tipo eu até concordo com ele que depende da criatividade ao escrever algo que tenha sentido, que se tenha espressado bem a ideia, a lógica da coisa, tanto em relação a escrever código quanto uma redação em si, ou mesmo um artigo, a regra de negocio do software eu poderia até ligar ao assunto da redação, o conhecimento de quem escreve sobre isso contribui e muito pra fica bem feito, além também da didatica da pessoa para escrever de uma forma mais clara e de facil compreensão. Porém eu acho ainda que ao escrever código, o conhecimento da regra de negocio não basta, também é necessário o conhecimento técnico, não to falando da linguagem de programação em si, mais também conhecimento de redes por exemplo, buferização, sei la… coisas que nos deparamos no dia a dia relacionados a parte de computação mesmo… e sim, de prazos e custos também (na pratica é essencial ter essa noção pra se manter o emprego…hehe) mais essas coisas diferem da escrita de um romance por exemplo
bom…acho que não me espressei direito no outro comentário, concordo com o pouquissimo que eu intendi, e que soma ao que você me explicou, acho que é muito bem colocado também, isso de “saber escrever” é a essencia da coisa, da qualidade, acho que eu tinha dito que concordo em partes, isso que eu honestamente não sei se expliquei direito não é algo que va contra ao que ele disse, penso nisso mais como um complemento… no que se refere a código tem um poco mais de coisa ai também…
Eu não disse que você “tira as coisas da cabeça” como um escritor.
Nem os escritores fazem isso; veja o serviço de investigação que muitos escritores fazem antes de escrever qualquer coisa. Eles não trabalham só com a inspiração.
Acho que o nosso serviço é mais parecido com o de um jornalista: há prazos, custos e você tem de pesquisar suas fontes. E se você tem o costume de ler jornais ou assistir aos noticiários da televisão (ou mesmo vê alguns documentários) sabe que há jornalistas e jornalistas.
Fico impressionado como alguns “espertos” (ou seria eSperts) querem valorizar o ato de codificar como de um escritor. Nem de perto seria como. Nem pelo valor, que um bom escritor ganha-se bem e um bom codificador nem passa perto, nem pelo ato “criativo”, que convenhamos, a maior parte do desenvolvimento de sistemas são nada mais, nada menos, que cadastros e relatórios. Aperfeiçoa-se o que? O ato de criar um cadastro mais…criativo?
Mesmo que muitos não queiram aceitar, basta olhar a tarefa ao qual trabalham. Se não fazem isso, fazem testes. Os que não codificam quase, os tal “arquitetos”, que eu chamaria mais de “técnicos de edificações” , não entram no caso também, o que resume, na minha nada humilde opinião, em uma total discordância com tal “afirmação”.
bom… alguma coisa dar mais dinheiro não significa que ela exige mais criatividade e tecnica, lembrando que nos referimos a raciocinio…
a maioria dos desenvolvedores se resumem a cadastro e relatório? sim isso é verdade, poucos são os softwares que exigem mais da regra de negocio, mais também poucos escritores são como dostoievski ou tolstoi por exemplo…
respondendo a sua pergunta, quem quer se aperfeiçoar, pode faze-lo para criar algo maior do que “cadastro e relatório” como diz você, pode se especializar em alguma coisa mais avançada como IA por exemplo ou mesmo nos cadastros e relatórios, pode utilizar padrões de projeto por exemplo para que a coisa fique mais bem feita, visando facilitar a manutenção.
só um ultimo detalhe, não estou dizendo que uma profissão exige maior capacidade ou criatividade que a outra, na verdade estou dizendo justamente o contrario, que uma não deve ser desmerecida em relação a outra…
Eu não disse que você “tira as coisas da cabeça” como um escritor.
Nem os escritores fazem isso; veja o serviço de investigação que muitos escritores fazem antes de escrever qualquer coisa. Eles não trabalham só com a inspiração.
Acho que o nosso serviço é mais parecido com o de um jornalista: há prazos, custos e você tem de pesquisar suas fontes. E se você tem o costume de ler jornais ou assistir aos noticiários da televisão (ou mesmo vê alguns documentários) sabe que há jornalistas e jornalistas.
hehe…
[teimoso]ainda acho que isso ta mais ligado a analise de requisitos (que convenhamos, é mais pra um analista)[/teimoso]
quanto a jornais normalmente não vejo, leio alguns portais na internet(normalmente 3 ou 4) todo dia, e realmente… há jornalistas e jornalistas… 
assim é claro que a quantidade de programadores ruins é enorme… vo parar de fugir do assunto.
pensando direito no assunto penso que também tem uma outra diferença, uma coisa que o escritor de um livro muitas vezes expressa (os bons ao menos) que o programador não… sentimento.
é…tem la suas diferenças, mais que tem muito mais semelhança ai eu ainda concordo…
Na comparação entre escrever e programar, posso acrescentar o fato de que tanto para um bom texto que quanto par um bom software, é necessário certa paixão pela coisa.
Se o cara não gosta de programar, ele pode até fazer um bom programa, mas nunca como alguém que adora programar e estudar. Com escritores é da mesma forma, bons escritores são caras que adoram ler, e adoram escrever.
lógicamente, IMHO.
É uma discursão interessante, parabéns pelo tópico thingol.
Fico impressionado como alguns “espertos” (ou seria eSperts) querem valorizar o ato de codificar como de um escritor. Nem de perto seria como. Nem pelo valor, que um bom escritor ganha-se bem e um bom codificador nem passa perto, nem pelo ato “criativo”, que convenhamos, a maior parte do desenvolvimento de sistemas são nada mais, nada menos, que cadastros e relatórios. Aperfeiçoa-se o que? O ato de criar um cadastro mais…criativo?
Mesmo que muitos não queiram aceitar, basta olhar a tarefa ao qual trabalham. Se não fazem isso, fazem testes. Os que não codificam quase, os tal “arquitetos”, que eu chamaria mais de “técnicos de edificações” , não entram no caso também, o que resume, na minha nada humilde opinião, em uma total discordância com tal “afirmação”.
O aperfeiçoamento seria criar um frameworks, gerador de código e linguagens que criassem o cadastro mais rápido, e disseminar essa ferramenta com seus colegas, com a comunidade, e ficar famosos por facilitar a vida de todos.
O equivalente na Literatura é fazer um livro que mude a mente das pessoas, criar um sub-gênero e todos começarem a te copiar 
Faço uma pergunta: livros como o Code Complete do Steve Mcconnell e o Beautiful Code do Wilson; Oram ajudam os desenvolvedores a melhorarem no desenvolvimento dos seus códigos, ou é necessário mais algo além de várias literaturas (além das citadas)? :-o
O principal ingrediente é experiência, muita experiência, não só tempo de trabalho mas o quanto desse tempo você passa melhorando, procurando situações e problemas diferentes, saber resolvê-las de várias maneiras.
[/quote][list]Andre Brito[/list][/quote]
Eu tenho amigos que começaram a programar com 10, 11 anos e estes sim eu digo que resolvem problemas com mais facilidade do que eu (que comecei com 17).
Eu também tenho 17 anos e estou entrando na linguagem de programação agora… mais uma dúvida que eu tenho é quando falam assim: TIRE UM TEMPO LIVRE LEIA E PROGRAME.
– Eu estou entrando em programação agora tentando entender e talz… então me explica quando uma pessoa fala pra eu começar a programar eu faço o que ?
Como eu vou começar a programar ? sem ter nenhum livro ou algo do tipo que possa me ajudar ! ? espero que tenham entendido pois estou com sono já são 04:30 né ^^
Neste artigo no Artima, Bruce Eckel disse que a analogia mais correta a ser feita com o ato de escrever software é o próprio ato de escrever - todos podem escrever, mas nem todos têm o dom de ser escritores.http://www.artima.com/weblogs/viewpost.jsp?thread=255898
Most people can put words together into sentences. They can communicate adequately without being great writers. Most programmers can write some kind of program. It probably won’t be very good, but most companies don’t really need it to be very good. Most companies only need basic programming skills. A college degree in computer “science” from anywhere is good enough, and the job is just a job. It doesn’t require much in the way of continuing education, conferences, workshops, or someone who is so interested in the craft of programming that they are always trying to learn more.Such people can write, but it’s just basic writing. They are not essayists or novelists – and keep in mind that there are lots of articles and novels that get published that are not particularly well-written or worth reading. Obviously such things seem to sell well enough to make the effort and risk worthwhile all around.
But someone who dedicates themselves to writing, who goes through the struggle of figuring it all out and discovering their own place in the world – this is a very different kind of writer (of prose or programs) than the average programmer. This person can produce more functionality faster, and the results will be clearer and deeper than ordinary code.
Assim como políticos, alguns escritores podem escrever apenas o que seu público quer ouvir.
Nesse caso, não posso considerar tal pessoa boa escritora.
O que determina a qualidade de um livro ou música? Segundo o Regis Tadeu, o sucesso de um cantor não reflete na qualidade de sua música.
Algumas pessoas podem tentar o quanto quiserem ser sommeliers, mas se não tiverem o dom…
Mesmo que sejam boas no que fazem, não poderão agradar a todos. Que tenham a sorte de não desagradar a elite.
Eu também tenho 17 anos e estou entrando na linguagem de programação agora… mais uma dúvida que eu tenho é quando falam assim: TIRE UM TEMPO LIVRE LEIA E PROGRAME.
– Eu estou entrando em programação agora tentando entender e talz… então me explica quando uma pessoa fala pra eu começar a programar eu faço o que ?
Como eu vou começar a programar ? sem ter nenhum livro ou algo do tipo que possa me ajudar ! ? espero que tenham entendido pois estou com sono já são 04:30 né ^^
Por favor, não ressuscite tópicos. Você desenterrou um de 2009.
Você tem na internet inúmeros livros e tutoriais de programação. Basta procurar um deles e aprender a programar.
Para quem está começando, recomendo ler o Thinking in Python do Eckel: http://www.mindview.net/Books/TIPython
Se você tem problemas com o inglês, procure um livro ou apostila de algoritmos. Ou vídeos no youtube…
Hoje em dia não dá para dizer que você não tem material por aí…
Desculpe, Vinny, por continuar este tópico que foi ressuscitado…
É que este assunto é bastante interessante.
Uma coisa que observo é que ler melhora o raciocínio. Ler todo tipo de livro, faz você aprender a acompanhar o raciocínio do autor e raciocinar melhor. Claro que há livros melhores, mais bem escritos, mas com a prática da leitura a pessoa vai lendo livros mais elaborados.
Outro ponto interessante é que muito da dificuldade que as pessoas têm em matemática não está na matemática em si, mas em português! Quando as pessoas precisam resolver um problema de matemática, antes de mais nada precisam entender o problema. E aí é que está a dificuldade de muita gente, em ler e entender o que está lendo.
Então acho que programar é também uma forma de comunicação. Você precisa aprender uma linguagem para programar, assim como você precisa da linguagem para falar, ou de outras linguagens para outras situações, como a linguagem da música.
A programação precisa ser precisa para que o computador a execute corretamente, mas ao mesmo tempo precisa ser clara, para que outros programadores a entendam quando forem dar manutenção.
Se os programas forem mal escritos, com o tempo começam a virar colcha de retalhos, ninguém entende, e fica uma coisa impossível de manter.
Então acho que a comparação é válida. A programação comunica o raciocínio que a pessoa utilizou para resolver o problema. Essa comunicação precisa ser bem feita para ser entendida depois. Claro que nem todo mundo vai ser um astro da programação, assim como os astros da literatura. Mas com a prática, com a dedicação, as pessoas podem escrever programas melhores, mais fáceis de entender e manter.
Se isso é valorizado nas empresas, é outra questão…
Bom, já que desenterraram este tópico, só vou traduzir a citação do Bruce Eckel, porque, analisando o que muita gente acabou dizendo neste tópico, poucos efetivamente leram a citação, e menos ainda leram o artigo original. Embora hoje exista o Google Translator, muita gente ainda se recusa a usá-lo (como se vê pela quantidade de gente que exige que “ah, eu queria alguma coisa em português
)”