Qual é o mito mais absurdo sobre questões de programação?


101

Em outras palavras ... Qual é o mal-entendido mais frustrante e comum sobre programação que você encontrou?

Quais mitos / equívocos generalizados e antigos você acha difícil para os programadores dissipar / corrigir .

Por favor, explique por que isso é um mito.


24
Eu gostaria de ver os Caçadores de Mitos enfrentar alguns deles.
spong

8
Alguém está inscrito no canal do YouTube Mythbuggers? :-)
Tamara Wijsman

1
Ooooh, MythBusters e condições de corrida! Meesa gosta!

@ TomWij que seria ótimo ter um site com esse nome!
Junior M

Respostas:


272

Isso porque você é um programador, sabe como consertar a máquina contra vírus de [pessoa].


34
Analogia do carro / cláusula de saída: "Sou piloto de corrida e não mecânico".
Peter Boughton

15
Este quadrinho é relevante: theoatmeal.com/comics/computers
lunixbochs 9/09/10


21
@ Tim, se ela puder cozinhar, comece a oferecê-la para atender às festas de seus amigos
Steven A. Lowe

19
Não é que eu não saiba ... É que eu não quero perder horas consertando sua máquina que você quebrará em duas semanas de qualquer maneira.
ChaosPandion

267

Uma coisa comum de RH que me deixa maluco quando estou procurando emprego: a suposição implícita de que todas as habilidades de codificação são específicas de um idioma, que não há nenhum conhecimento em engenharia de software que transcenda os conjuntos de comandos. Esses dez anos de experiência em Java e outros cinco em Perl significam que você seria completamente inútil em um projeto que usa, por exemplo, C #.

"Sim, há uma curva de aprendizado. Mas fiz transições mais difíceis do que isso. Farei um acordo, pague-me 80% no primeiro mês e no final desse período, se não estiver ... oh , espere, na verdade não estamos tendo essa conversa, porque seu macaco de RH simplesmente excluiu meu aplicativo ".


91
+ INF para o macaco HR.
Rusty

67
Eu tive um funcionário de RH que me recusou a participar porque sabia como C #, mas ele estava procurando alguém que pudesse codificar no dotNet.
Burnt_hand 14/09/10

11
@burnt_hand: Sim, eu sei dotNet. Eu também conheço o Excel e o Internet Explorer. Eu posso haz contrato agora?
Alan Plum

Embora eu concorde que haja enormes sobreposições de sintaxe, estrutura, SDLC, etc, entre Java e C #, se elas fornecerem um teste C # razoavelmente complicado em sua entrevista, como você se sairá?
JBRWilkinson

2
@ Kyralessa - Acho que agora sei o suficiente sobre a teoria subjacente da computação e das funções dos computadores para não cometer erros básicos em nenhuma linguagem de programação. Eu posso ler a documentação. No entanto, algo que um idioma específico contrata com habilidades / vontade de fazer limitadas de engenharia é cometer erros básicos na estrutura, design, correção, escalabilidade, confiabilidade e manutenção do programa que, potencialmente, custarão grandes quantias a serem corrigidas. Se você não perder todos os seus clientes devido à baixa qualidade do software nesse meio tempo (supondo que seu projeto realmente chegue a algum lugar).
Flamingpenguin

261

Se você não está digitando, não está trabalhando.

Acredito que olhares em branco de zumbis e caminhadas de café são essenciais para programadores que organizam as coisas em suas cabeças.


9
Página acima, página abaixo ... página acima, página abaixo ...
adolf garlic

139
Eu não sou pago para digitar, sou pago para pensar. Eu forneço digitação como um bônus.
Kevin Laity


11
É por isso que não penso muito nos mercados de freelancers online que oferecem "tempo de trabalho" de gravação com um captador de tela e uma webcam. WTF? Se você acha que minha cotação é boa, por que se importa exatamente com o que eu faço no momento em que estou cobrando?
Alan Plum

10
"Se eu tivesse mais tempo para codificar, escreveria menos linhas". - decolar na citação de Abe Lincoln.
JeffO 27/09

158

que você pode acelerar um projeto atrasado, simplesmente jogando mais pessoas para ele.


28
Ah, do mês do homem mítico. pt.wikipedia.org/wiki/The_Mythical_Man-Month
spong

2
Na verdade, você pode. -1 (sim, eis um transportador mito!)
P Shved

63
Usamos um ditado colorido: "Você não pode colocar 9 mulheres em um quarto e fazer um bebê em um mês".
Walter Walter

10
Na semana passada, adicionamos 4 pessoas sem experiência em projeto para "ajudar" a cumprir um cronograma irrealista. O relatório desta semana do projeto leva a listas da alta gerência: "Deslize no cronograma Causa: eficiência reduzida devido à curva de aprendizado dos novos membros da equipe" e "Plano de recuperação: continuando a adicionar mais pessoas onde houver oportunidade". Inacreditável.
ASHelly #

7
@ Walter, mas você pode ter 9 bebês em 9 meses e um time de beisebol em 7 anos.
Huperniketes 19/10/10

132

Esse software de escrita é fácil.

De que outra forma você explica todos esses projetos que decorrem com o tempo, o orçamento e as pessoas (políticos, mídia etc.) ainda ficam surpresas, e os clientes reclamam quando você lhes diz que seu "pequeno site" (ou qualquer outro) meses para desenvolver e custar vários milhares de dólares (libras, euros, [inserir moeda da escolha])

Com requisitos nebulosos e sempre em mudança, às vezes acho incrível que qualquer software seja finalizado!

Eu sei que é um pouco mais complicado que isso;)


11
E é aí que eles tentam levar o desenvolvimento a alternativas offshore mais baratas. Só para descobrir muito mais tarde que acabou sendo ainda mais caro. E menos do que eles realmente precisavam, devido aos desafios de separação física e comunicação entre a equipe de desenvolvimento e o cliente.
7wp 9/09/10

1
Este não é apenas um problema entre os gerentes, mas também os próprios programadores. O problema real tende a ser que o tempo que não é gasto ativamente escrevendo código é frequentemente esquecido (possivelmente devido ao amplo mito de quantificação da produtividade LOC = produtividade).
Alan Plum

3
Não é que os requisitos tenham mudado, simplesmente não é o que eles pensavam que queriam.
JeffO 27/09/10

1
Alguém mandou a programação como "apenas um monte de instruções 'if'". OK, talvez seja ... nesse caso, a poesia é "apenas um monte de palavras" ... a produção de filmes é "apenas um monte de cenas", etc.
JoelFan 13/12/10

2
Eu trabalhei para o tipo de gerente que achava que a parte da programação era a parte mais fácil do trabalho. E não, ele não tinha nenhuma experiência em programação.
Captain Sensible

114

A complexidade do aplicativo é diretamente proporcional à complexidade da interface do usuário. Por esse raciocínio, você poderá criar o Google ou o Twitter durante um fim de semana.


2
isso é verdade, eu poderia criar o Twitter e o Google em um único fim de semana. Não é o software deles que é complexo; para o Google, é o algoritmo de pesquisa (que é mais comparável a uma biblioteca de códigos ou driver de banco de dados) e o Twitter (até os últimos 1,5 anos) era extraordinariamente simples, com apenas problemas de escalabilidade e banco de dados complexos. Agora que é mais complexo (exigindo mais funcionários), também possui uma interface de usuário muito mais complexa e muito mais.
orokusaki 9/09/10

3
Acho que li no blog de Joel Spolsky, mas o artigo mencionado mostra apenas como progresso da GUI em relação ao progresso de back-end. Dessa forma, você pode dar uma estimativa realista do progresso para os caras de cabelos pontudos que são burros demais para entender que a maioria dos programas consiste em muito mais do que colírio para os olhos.
Evan Plaice

3
1+ Houve um tempo em que demonstrei um projeto relacionado ao SharePoint (um complemento multilíngue) ao meu ex-chefe, depois de passar horas trabalhando no código de back-end complexo. O resultado final não foi muito feito na interface do usuário, o que levou meu chefe a acreditar que pouco foi feito no projeto. Isso me irritou. Ele não estava sentado no teclado por horas tentando contornar as esquisitices do SharePoint, bem como a lógica de substituição de texto.
Jason Evans

1
Você não odeia quando alguma enorme, quase impossível, pedido é formulado como "você pode adicionar um botão para fazer ..."
JoelFan

Eu me pergunto o que venho fazendo nos últimos anos. Todos os projetos nos quais trabalhei em tempo integral não deveriam ter sido concluídos rapidamente, porque não possuíam nenhuma interface do usuário. :-)
Bart van Ingen Schenau

95

Todos os programadores são bons em matemática. :-)


Comentaristas : os comentários destinam-se a buscar esclarecimentos, não a discussões prolongadas. Se você tiver uma solução, deixe uma resposta. Se sua solução já estiver publicada, faça um voto positivo. Se você quiser discutir esta questão com outras pessoas, use o bate-papo . Veja o FAQ para mais informações.

Eu acho que os recursos em matemática estão de alguma forma relacionados às habilidades de programação.
Diego

@ Diego: Embora isso não signifique necessariamente que todos os programadores são bons em matemática, no entanto.
Omega

95

Qualquer adolescente que invadir computadores é equivalente (ou superior) em habilidade a um programador veterano que trabalha.

Meu sobrinho de 14 anos é bom em computadores e estou pagando US $ 10 / hora para cortar a grama. Por que devo pagar seis dígitos para escrever o próximo FaceBook?


5
Eles provavelmente estão em seu próprio ambiente, isto é, trabalhando por conta própria, de acordo com seus próprios padrões. Coloque-os em uma equipe onde eles precisam se comunicar e é onde eles sofrem.
adolf garlic

36
A contra-pergunta poderia ser: "O que você pagaria a ele para construir sua casa?"

7
Uma criança sem qualificações, mas que escreve códigos legais, pode derrotar Spaghetti a qualquer dia.
Zaz

13
Eu culpo hollywood para que
MAK

6
Quando comecei, esperava que o que eu estava ensinando a mim mesmo e aprendido na universidade fosse apenas o começo, e estaria trabalhando com pessoas mais experientes, melhores programadores e desenvolvedores mais experientes, e eu aprendesse muitos deles. A experiência me ensinou o contrário. É absolutamente importante, mas sem habilidade e paixão, a experiência é apenas perda de tempo.
Peter Boughton

69

Isso em tempo real significa rápido.

Indicando "Os pacotes precisam ser processados ​​em tempo real." é inútil e o gêmeo do mal ... respondendo "Quão rápido X precisa acontecer?" com "tempo real" é possivelmente menos do que inútil ... mais estúpido do que ignorante.

Tempo real significa que, simplificando, a função Y sempre levará X uma quantidade de tempo e que qualquer desvio indica um erro grave. A duração de X não define "em tempo real", pode ser seis microssegundos ou seis dias. O fato de você poder determinar a função Y levará tempo X define "em tempo real". Os sistemas em tempo real são determinísticos por esta definição.

Então pare com isso ..


real-time = near-time
brian chandley 09/09/10

4
Eu sempre pensei que em tempo real significava que o que estava acontecendo estava acontecendo como você exige, não uma referência ao tempo gasto.
Burnt_hand 9/09/10

14
Provavelmente, esse é apenas um daqueles casos em que um conceito mal nomeado contribui para a confusão.
JohnFx 10/09

2
@JohnFx Bem colocado. Os conceitos precisam de contexto.
Rusty

2
@ Richard: De fato, o iTunes sempre leva alguns minutos antes de reproduzir qualquer coisa. Oh, não foi isso que você quis dizer?
configurator

69

Por que vocês simplesmente não escrevem certo da primeira vez, em vez de gastar tanto tempo digitando o código de buggy e depois lendo o código tentando encontrar os bugs?

:-) :-) :-) :-)


34
Francamente, essa é uma boa pergunta. O momento mais fácil para tornar o código bom é quando ele está sendo escrito pela primeira vez.
quer

10
Nós temos uma configuração na configuração do aplicativo: <add Key = "Bugs" Value = "true" />
burnt_hand

1
@ DJClayworth - isso nem sempre funciona. Em alguns casos, o problema é tão grande, mal definido ou simplesmente difícil que chegar perto do "certo" na primeira vez é demais para se esperar. Nesse caso, é melhor escrever um "primeiro corte" que não esteja totalmente errado, do que gastar dias / semanas / meses infinitamente projetando e redesenhando, na tentativa de acertar da primeira vez.
Stephen C

Esta poderia ser a versão do leigo de "Por que vocês não estão fazendo TDD?" O que, para ser justo, é uma boa pergunta, se for simples demais para o desenvolvimento do mundo real.
Dan Ray

1
@ Stephen C: sim, mas há uma diferença em acertar na maioria das vezes (em vez de perfeitamente na direita) vs fazer praticamente qualquer coisa esquerda e direita para fazê-la funcionar. Sei que não foi isso que você disse, mas ainda acho que precisa ser dito.
N1ckp 24/10/10

65

Se você ainda não estudou, não é adequado para o trabalho


27
Além disso: um programador com um diploma é melhor que um programador sem e deve ser pago em conformidade. O mesmo provavelmente acontece com o envelhecimento e o sexismo. Esse tipo de bobagem me enfurece - se você não sabe escrever um bom código, eu não me importo com onde você foi e o que fez. Este pode ser outro caso de cultura de programador / nerd (habilidade == autoridade) colidindo com a cultura corporativa (classificação == autoridade).
Alan Plum

1
E, no entanto, as pessoas que ensinam na Universidade também parecem pensar que podem generalizar o comportamento de programadores e projetos observando como os alunos operam quando se unem. As comunicações da ACM são boas para 4-6 desses artigos por ano.
MIA

1
@ Billy Que tal por aqui, onde um diploma universitário significa jack, mas um diploma universitário lhe concederá tudo? Ambos vão para a escola, ambos são sem dúvida melhor do que o outro, mas há uma diferença sociológica
Tarka

4
@ Billy: no Canadá, a universidade concede um diploma e as faculdades oferecem diplomas. Faculdades são mais como "escolas onde você aprende coisas práticas". Pense em uma faculdade comunitária nos EUA versus uma faculdade / universidade normal. Aqui eles costumam ter programas aplicados especializados de dois anos. Você não pode obter um diploma de bacharel (mestrado, etc.) em uma faculdade. Basicamente, você iria para a faculdade para estudar como escrever software e para a universidade para estudar ciência da computação. Os diplomas universitários recebem preferência muito mais forte na contratação.
Adam Lear

4
As universidades ensinam pelo menos uma coisa importante: a mentalidade . Isso é muito importante, mas aqueles que não sabem disso ... bem, não sabem disso.

61

Essa otimização prematura significa que você não deve otimizar nada. Eu vi bancos de dados terrivelmente ruins porque ninguém queria considerar o desempenho (crítico para qualquer sistema de banco de dados) no design, pois isso era uma otimização prematura do que qualquer outro problema de design de banco de dados. Lixo, existem assassinos de desempenho conhecidos, pare de usá-los como sua primeira escolha.

Outro mito, é muito difícil refatorar o banco de dados. Não, mas você deve considerar como fazer a refatoração na fase de design para fazê-lo de forma eficaz. E, BTW, quanto mais você esperar para corrigir esse problema irritante de desempenho baseado em design, mais difícil será corrigir.

Outro mito ruim, o design do banco de dados deve refletir os princípios de POO. Não, os bancos de dados são projetados para trabalhar com conjuntos e não com princípios de POO. Algumas coisas de POO causarão problemas horríveis de desempenho e outras são muito tolas em termos de banco de dados.

Por fim, você deve impor a integridade dos dados no aplicativo. Os bancos de dados vão durar mais do que o aplicativo e perderiam as regras quando o aplicativo for substituído, vários aplicativos os acessarão e, muitas vezes, haverá a necessidade de executar consultas diretas para corrigir coisas que não passam pelo aplicativo. Eu nunca vi um banco de dados que se recuse a impor a integridade dos dados no banco de dados que possui bons dados.


+1 em particular nos comentários sobre as verificações de integridade do banco de dados.
Frank Shearar

+1 Especialmente para o último parágrafo. Eu bati esse tambor mais de uma vez.
Binary Worrier

5
+1 no primeiro parágrafo. Otimização prematura é a raiz de todo o mal; escrever código ruim sem motivo sangrento é ainda pior.
configurator

3
"Algumas coisas de POO causarão problemas horríveis de desempenho e outras são muito tolas em termos de banco de dados" - você poderia dizer qual? Eu sei sobre POO, mas não muito sobre bancos de dados, e estou interessado em saber até onde posso levar idéias de um lado para o outro.
Tom Anderson

@HLGEM Eu também estaria interessado nos exemplos que @Tom está se perguntando ...
Armand

53

Que existe alguma fonte mítica de melhores práticas absolutas.

Nenhum desvio pode ser justificado.

Nenhum documento que defina algo como uma prática recomendada pode ser questionado.


1
melhor um membro da equipe do que seus gerentes ...
Bill

5
Você pode encaminhar esse documento para mim?
AShelly

1
Concordo plenamente. Quem se importa se você mistura guias e espaços no código Python?
Zaz

4
@ Josh - alguém que precisa visualizar seu código-fonte usando uma cadeia de ferramentas com uma ideia diferente de onde estão as posições das guias.
Stephen C

1
Interpreto "é uma prática recomendada" como "não posso justificar isso". Eu certamente o uso dessa maneira.
Tom Anderson

51

O fato de o marketing parecer pensar que adicionar uma tonelada de recursos pequenos é menos trabalhoso do que adicionar um recurso único, mas bastante pesado. O que provavelmente é um caso mais específico do equívoco de que "a alternância de tarefas não tem sobrecarga".


12
E a coisa ainda mais divertida do marketing é não ter idéia de quais recursos são fáceis e quais são quase impossíveis.
derobert

4
@derobert Exatamente, muitas vezes tive a experiência de que algumas das pessoas mais atenciosas de marketing têm medo de perguntar sobre algum recurso simples / fácil que eles achavam muito difícil de implementar. Embora eu experimentar o oposto muito mais oftenly: aqui está um lote de X recursos "fáceis" que já vendidos ao cliente, por favor, fazê-lo por ontem ....
Giel

50

Esse código de comentário é desnecessário ou esse "código bom não precisa de comentários". Às vezes, você precisa explicar o que um código complexo está fazendo. Além disso, comentar seções do código ajuda você a ler muito mais efetivamente.


14
@DisgruntledGoad - Mas é verdade. O mal-entendido neste "mito" vem do fato de que muitos programadores consideram seu código confuso monolítico "bom". if user.is_logged_in: print('Welcome')não precisa de um comentário.
orokusaki 9/09/10

3
@orokusaki Nem todo algoritmo é tão simples.
Jouke van der Maas

25
@orokusaki você está confundindo "bom código não precisa de comentários" com "código simples não precisa de comentários". Um bom código nem sempre é simples.
usar o seguinte

3
@Jouke van der Mass: é claro. Mas não importa quão complexo seja o algoritmo, o objetivo é expressar o algoritmo de maneira simples. ou seja, um bom código expressa algoritmos complexos, regras, otimizações, de maneira simples e sem ambiguidade. Expressar coisas simples simplesmente é comparativamente fácil. Expressar coisas complexas simplesmente é onde está a habilidade.
Flamingpenguin

2
@orokuskai: bom código é simples. As coisas que ele está fazendo podem ser complexas, mas a simplicidade (elegância) do código é o que o torna bom na minha opinião! Obviamente, o código faz muitas outras coisas, e o código do lixo pode gerar muito dinheiro. Mas meu objetivo é escrever código simples, mesmo em situações complexas.
Flamingpenguin

50

O pior mito: se você está programando por um longo tempo, pode ser um gerente de projeto facilmente.

E que você deve se tornar um gerente de projetos se estiver programando há muito tempo.


3
Ou pior ainda, se você nunca programou ou gerenciou um projeto de programação, lendo alguns livros e fará magicamente o software acontecer. Estive nessa estrada com um PM anterior e não me importo de repeti-lo enquanto eu viver.
Evan Plaice

4
Pior ainda: como todos os grandes programadores da equipe preferem escrever código em vez de escrever relatórios, devemos promover o programa medíocre ao gerente de projetos. O pensamento é que ele será "técnico o suficiente". O fato é que ele acaba sendo um filtro de desinformação entre a equipe e a gerência superior.
ASHelly

2
Além disso: se você é o melhor programador, obviamente você deve se tornar o gerente de projetos e, a partir desse momento, parar de fazer qualquer programação real! Não, muito obrigado, mas ainda assim aceitarei o aumento. Nota: não estou falando em me tornar um programador líder ou algo parecido, estou falando sobre os gerentes que acham que é uma idéia inteligente promover todos ao seu nível de incompetência suficiente.
Alan Plum

1
Também conhecido como Peter Principle. pt.wikipedia.org/wiki/Peter_Principle
Spoike

bem dito, na verdade
Michael Páscoa

50

Se usarmos algo diferente de Java, C # e C ++ em nosso projeto, não encontraremos programadores para suportá-lo.


Eu nunca tinha ouvido falar sobre isso, mas é válido. Obviamente, se você usar uma linguagem obscura, isso aconteceria.
Maniero

5
@ Bigown, "obscuro"? Quão obscuro? O TCL é obscuro? Haskell? Pascal (Delphi)? Pitão? Eu acho que eles não são obscuros. Muitas pessoas pensam que são, e apenas um conjunto muito restrito de linguagens (C ++, C # e Java) é permitido no desenvolvimento "sério".
usar o seguinte comando

5
@ Bigown: oh, você quer dizer obscuro como COBOL? : p
AnonJr

2
Certa vez, trabalhei para uma pequena empresa que fazia o código Objective-C no Linux. O CEO - que não era engenheiro, mas tinha algum conhecimento técnico - não podia acreditar que havia programadores da ObjC por perto ou que alguém mais o usava. Na verdade, eles nunca tiveram problemas para contratar bons desenvolvedores.

4
Li um argumento de que exatamente o oposto é verdadeiro: para linguagens obscuras (ou pelo menos comercialmente insignificantes), mas legais, divertidas e interessantes (que nesse contexto significavam Python e Ruby), há mais programadores do que trabalhos. Além disso, são todas as pessoas que gostam de idiomas legais, divertidos e interessantes, por isso devem ser inteligentes. Então, na verdade, trabalhar em Python significa que você achará mais fácil contratar programadores inteligentes do que se estiver trabalhando em Java. Não sei se acredito, mas é pelo menos tão plausível quanto a ideia ortodoxa!
Tom Anderson

42

Java é apenas C ++ com diferentes classes.


57
+1 Certa vez, um entrevistador me perguntou: "qual é a diferença entre C ++ e Java?" Então, listei algumas diferenças. Compilador nativo vs. JVM, padrão ANSI vs. proprietário, coleta de lixo, carregadores de classe etc. Ele rugiu: "ERRADO! Não há diferença! Eles são idênticos!" Ele não era um estudante, ele era o gerente de engenharia.
Bill Karwin

11
@ Bill, minha resposta seria: "então por que consultá-los com nomes totalmente diferentes?"
Jesse C. Slicer

2
@ Bill, então você falhou no teste e foi contratado?

20
Minha resposta seria "adeus".
Foole

6
@Foole Você não quer dizer System.exit (1)?
Barry Brown


33

Provavelmente, a mais perigosa que eu já vi, porque é aceita com tanta facilidade, é que ser capaz de escrever código rapidamente é bom e, portanto, quanto mais rápido você puder codificar [inserir recurso aqui] em um determinado idioma, melhor o idioma é.

Este é um exemplo sério de otimização prematura, pois muito mais trabalho é na manutenção do código do que na sua criação. Isso significa que é muito mais importante escrever código fácil de ler, compreender e depurar do que o código fácil de escrever rapidamente, e facilitar o código fácil de ler é uma medida muito mais útil da qualidade da linguagem.


14
Foi exatamente isso que aconteceu com um dos produtos em que trabalho; desenvolvimento apressado foi visto como brilhante. O produto parecia OK e o desenvolvedor foi altamente elogiado pela alta gerência. Outro desenvolvedor júnior foi encarregado de consertar um bug "pequeno" e, depois de uma semana tentando entender o código, desistiu e procurou orientação de um sênior. Que não conseguia acreditar no quão ruim era o código. A gerência superior se recusou a aceitar é como uma questão importante por dois anos, após o qual o finalmente concordou que era uma pilha de lixo e precisava ser codificado novamente a partir do zero - e certo desta vez
Sk93

4
Há um mito bem estabelecido entre os gerentes técnicos de que seus desenvolvedores qualificados são dez vezes mais produtivos que os desenvolvedores não qualificados. O resultado direto desse mito é que qualquer desenvolvedor que possa produzir código rapidamente - independentemente de quão difícil ou difícil de manter - receba elogios e promoção.
usar o seguinte comando

3
Você precisa de uma linguagem poderosa. Veja a discussão de Paul Grahams sobre os idiomas e o que você permite: paulgraham.com/power.html

4
@ Thorbjørn: Eu li esse artigo e Paul Graham está errado. Ele é um defensor do Lisp, então ele transforma os fatos em argumentos de auto-serviço para fazer com que Lisp pareça bem. Talvez nem mesmo de forma consciente, já que realmente não é preciso muita torção. Há muita sobreposição entre legibilidade e sucessão, como ele aponta no final do artigo. Mas as conclusões que ele tira estão completamente fora de sincronia com o estado de desenvolvimento de software no mundo real. Sim, você precisa de uma linguagem poderosa, mas ele está medindo o poder pelos critérios errados, e é prejudicial acreditar no que ele diz.
Mason Wheeler

3
@ rtperson: Que a produtividade pode variar em um fator de dez não é um mito. Que as pessoas que terminam rápido são necessariamente mais produtivas é.
David Thornley

31

As lições de fabricação podem ser aplicadas ao processo de desenvolvimento de software.


6
Depende das lições. Quando trabalhei em uma fábrica de colchões, descobrimos que a troca de tarefas era prejudicial à nossa produção. Meio importante, já que fomos pagos pelo número de colchões fabricados e não por uma hora ... e uma lição que também se aplica aqui pelas mesmas razões.
AnonJr

Esse é um mito tão persistente quando você trabalha em um local que produz principalmente hardware. Os aros que saltar através para atender nosso software 'construir' para o mesmo modelo como um hardware 'parte' são incríveis ...
AShelly

5
A coisa é, fabricar software é trivial. É fácil fazer cópias e não custa muito para fazer milhões de cópias. Isso leva as pessoas a ignorar completamente a peça de fabricação e tentar aplicar a fabricação ao processo de design.
David Thornley

+100 para isso, especialmente as pessoas que estudaram economia acho que isso
Kugel

1
Todos devem ler Jack Reeves: developerdotstar.com/mag/articles/reeves_design_main.html - essa é a origem (ou pelo menos uma declaração inicial e poderosa) da ideia de que o código-fonte é um design, não um produto . Os programadores são como os projetistas na sala de desenho, não os maquinistas no chão de fábrica, e o gerenciamento da programação deve ser como o gerenciamento de outros tipos de projetos de engenharia, não de fabricação.
Tom Anderson

31

que, como programador, você sabe tudo sobre as últimas tendências de hardware, overclocking, case mod, etc. amigos e parentes o consultam quando compram suas engrenagens.


5
Eu costumava acompanhar algumas dessas coisas na escola, mas hoje em dia acho que elas geralmente são irrelevantes para o que eu faço e, enquanto algumas são legais, prefiro pagar a alguém que conhece suas coisas e usar o tempo que salvar fazendo o que eu gosto (ou seja, escrever código). Talvez outro mal entendido "bom com computadores".
Alan Plum

2
+1 ou uma tangente ligeiramente diferente - como você é um programador, você tem uma ventoinha de 300 LED resfriada a água super-giratória, girando no topo da gama, nova marca enviada da fábrica antes da liberação do gabinete. Não é verdade! É uma máquina decentemente rápida, está em um estojo preto muito barato. Realmente não me importo além disso!
Coder cirúrgico

Risos, há um assistente de PM no trabalho que tem um equipamento de jogo onipotente em casa, sempre rola para a área de Dev para perguntar se ele deve comprar (Produto A) ou (Produto B) ... em uma nota não relacionada, ele também assume a equipe dev tudo sair no 4chan, (que ele realmente faz.) - suspiro
ocodo

+1 palavra. Este é o local. Sou desenvolvedor de software e me pediram para configurar a Internet de alguém por tantas vezes e basicamente tudo o que faço é tentativa e erro, além de pesquisas no Google. Eu gosto mais quando algo completamente não relacionado se quebra depois que você faz um favor a alguém e então a culpa é sua.
Anne Schuessler

30

Que quando os programadores dizem que é muito difícil de fazer / simplesmente impossível, o RH pensa que é preguiçoso e desmotivado


2
Incluir gerenciamento também
Prasham

Quando você diz não, eles pensam que você é simplesmente uma pessoa difícil de trabalhar.
Captain Sensible

+100, e que, com "motivação" suficiente, eles podem mudar sua resposta. Ou vá para outro desenvolvedor [menos experiente] e propositalmente deixe de fora metade dos detalhes para fazer com que ele diga sim, apenas para terminar na metade do desenvolvimento e esbarrar no problema exato que você os alertou.
wildpeaks

28

Deve haver um programa de código aberto para os meus negócios. Você não pode simplesmente fazer o download e ajustar meus requisitos.


2
+1. Ah, sim, tudo o que precisamos fazer já deve estar em código aberto.
Sharptooth 10/09/10

7
a maior parte do tempo existe ... pelo menos isso é verdade para o desenvolvimento web.
precisa saber é o seguinte

@ WalterJ89: Pode estar lá, mas isso não significa que é uma boa ideia usá-lo. Código aberto não significa automaticamente um bom código.
Alan Plum

verdade .. mas no caso do Wordpress, Drupal, jQuery, ... pode haver áreas em que o livre não é ótimo, como o comércio eletrônico, mas na maioria das vezes a web é muito aberta e acho que gosto de trabalhar com um comunidade open source muito mais que um help desk proprietário.
precisa saber é o seguinte

7
O oposto também é um mito. Que você não pode usar o FOSS para satisfazer suas necessidades de negócios.
terminus

27

Já tive mais de uma pessoa me perguntando como é programar, apenas para perceber no meio da conversa que elas realmente acham que programamos diretamente em binário ou usando símbolos matemáticos.

Não sei se quero dissipar esse mito, me faz parecer realmente inteligente!


6
Não ajuda que a maioria das pessoas nem saiba o que é realmente a programação ... elas têm essa vaga idéia de que estão criando software ... mas elas realmente não têm uma idéia clara do que é o software ...
Spudd86

7
"Nós escrevemos receitas de tricô". Avós tendem a entender isso.

Conheço pessoas que escreverão um programa em C e refazerão as peças mais críticas para o desempenho em Assembly.
Zaz

1
@ Josh - a menos que haja um problema de desempenho, isso parece uma perda de tempo.
JohnFx 12/09

1
@oosterwal - Assembly não é binário, nem usa símbolos matemáticos.
JohnFx

26

Acho que o maior equívoco é que é mais importante poder escrever o código facilmente do que ler e entender o código.


5
* v (int) (void) ++
Rusty

1
@Rusty: Eu posso criar exemplos muito, muito piores, se eu nem precisar estar sintaticamente correto.

4
Ahh, sim, código "Write only" ...
Paddyslacker em 9/09/10

24

A programação é como o trabalho da linha de montagem. Você está trabalhando em um produto por um certo tempo (talvez com colegas de trabalho) e finalmente o envia. Assim como construir uma casa de tijolos.

Contra: a programação contém muita criatividade e planejamento. Isso é arte. Como o pedreiro, também um programador sabe a diferença entre dar forma a um tijolo e planejar uma catedral inteira.


6
Concordo com a diferença do trabalho na linha de montagem - mas, de muitas maneiras, não acho que seja muito diferente de construir uma casa.
Billy ONeal

24

A portagem de um programa para C ++ fará com que ele seja executado mais rapidamente.


Eu estenderia a outros idiomas de baixo nível. É possível obter o oposto quando o programador não sabe o que está fazendo.
Maniero

2
Outra variante comum é alternar para uma arquitetura cliente-servidor. "A atualização para o SQL tornará meu aplicativo muito mais rápido!" Não necessariamente.
JohnFx

Sim, é o contrário várias vezes. Os bancos de dados do tipo SQL são bons para serem ACID ou quase isso, vem com preço. E, o pior, pensar errado sobre as técnicas de SQL pode prejudicar o desempenho.
Maniero

6
Portando para C ++ / C para aqueles escritos em Python / Perl / Ruby / etc. Portando para asm para aqueles escritos em C / C ++: P. Gostaria de saber o que você portaria ASM? projetá-lo no hardware?
MAK


21

Qualquer ambiente de programação com algum tipo de designer visual fará com que os usuários comerciais possam "escrever" o programa e não sejam necessários programadores reais.


9
Ah sim. É sempre divertido quando uma empresa cria uma nova ferramenta de autoria para tornar os programadores redundantes e, em seguida, todos que a adotam vão em frente e contratam especialistas em <ferramenta de autoria> altamente remunerados para realmente usá-la. Caso em questão: Joomla! e tudo isso sem sentido.
Alan Plum

HA HA HA HA HA HA HAAA +1 :)
Billy ONeal

Cobol já tentou isso :)
Carra 12/03

20

Reutilização de POO. É a maior falácia comercializada em programação.


1
Bem. O HP XL WESM é aproximadamente 85% o mesmo que o Symbol WS5100 (há OEMming acontecendo). Você deseja que eu copie e cole essa porcentagem do meu código de monitoramento e configuração para que haja o dobro de bugs ou você prefere que eu o reescreva do zero e demore quarenta vezes mais e que cinco vezes mais? Ou você está apenas pressionado pela administração tola, que acha que é uma das várias panacéias mágicas fazer $ project mais rápido?

1
A reutilização no pequeno foi resolvida há 40 anos e mais. Reutilizar no geral é difícil e ainda não foi resolvido IMHO. Assim como Robert Glass diz em Fatos e falácias da engenharia de software
MarkJ
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.