Tentações prejudiciais na programação

97

Apenas curioso, que tipos de tentações em programação acabaram sendo realmente prejudiciais em seus projetos?

Por exemplo, quando você realmente sente vontade de fazer alguma coisa e acredita que isso beneficiará o projeto, ou então você se engana, acreditando que é, e depois de uma semana percebe que não resolveu nenhum problema real , mas criou novos ou , na melhor das hipóteses, agradou sua fera interior sem impacto visível.

Pessoalmente, acho muito difícil não refatorar códigos incorretos. Eu trabalho com muitos códigos herdados ruins e é preciso respirar fundo para não tocá-lo quando não tenho testes para provar que minha refatoração não quebra nada.

Outro demônio para mim na interface do usuário, eu posso literalmente passar horas mudando o layout da interface do usuário apenas porque gosto de fazê-lo. Às vezes eu digo a mim mesma que estou trabalhando em usabilidade, mas a verdade é que eu amo mover botões.

Quais são seus demônios de programação e como evitá-los?

Dan
fonte
19
Acho engraçado que ninguém tenha sido capaz de responder à segunda parte da sua pergunta - "[e] como evitá-las?".
Craige 24/02
3
Alguém já reparou que esta tem sido a principal pergunta no SE o dia todo.
24411 msarchet
+1 em "... passe horas alterando o layout da interface do usuário ..." Caio nessa armadilha com muita frequência.
7wp

Respostas:

67

Generalização prematura é o meu grande bugaboo; em vez de resolver o problema em questão primeiro e esperar até que haja uma necessidade real de resolver o caso geral, eu sempre vou atrás do caso geral e acabo escrevendo uma tonelada de código mais complexo do que precisa ser.

Atualizar:

Veja " Pecado 1 - Generalização prematura " para uma descrição detalhada.

k3b
fonte
6
Eu odeio quando astronautas de arquitetura fazem isso!
ozz
13
Ah, a alegria das metafactoryfactories :(
+1 "Um estudo de grandes designers descobriu que todos eram bons em antecipar mudanças" (Código Completo 2). É bom poder dizer que tipo de mudança é provável. Depois, você pode decidir se há algo a ser ganho resolvendo o caso mais geral desde o início - se isso pouparia tempo mais tarde. Às vezes, não vale a pena, seria tão fácil modificar o código posteriormente.
25411 MarkJ
1
Você já ouviu falar sobre o princípio YAGNI (você não vai precisar disso) ?
Oscar Mederos 27/02
1
Este. Eu culpo o fato de que criar um código bonito, generalizado e reutilizável é muito gratificante, especialmente se o problema em si não é muito desafiador e / ou é apenas uma repetição do que você fez antes. Caso em questão, operações genéricas de banco de dados CRUD (interface do usuário, responda à ação do usuário, faça algo com um banco de dados).
Cthulhu
197

"Voltaremos a isso e corrigiremos mais tarde. Só precisamos trabalhar agora!"

user18041
fonte
16
Este é o diabo absoluto.
24711 alesplin
6
Eu daria a você +100 por isso, se pudesse. "Mais tarde" NUNCA ACONTECE. Faça as coisas certas da primeira vez ou não.
quickly_now
12
não é este o complemento de passar horas refatorando códigos ruins? Podemos dividir o mundo em programadores que "corrigem mais tarde", mas não o fazem, e programadores que tentam acertar na primeira vez e passam horas "refatorando códigos ruins".
6
re-frase isso "Vamos voltar e corrigir isso próxima iteração " e soa muito mais estruturada
Chris S
4
Você deve fazer isso. Se você gastar todo o seu tempo tornando-o perfeito, ele nunca será enviado. Conclua o projeto e depois faça o polimento.
Zan Lynx
105

O prazo é muuuuito longe, tenho tempo mais do que suficiente para fazê-lo, então por que não gastar um pouco de tempo navegando na web?

user281377
fonte
72
substituir "web", com "programmers.stackexchange.com" :)
davidhaskins
1
Há mais alguma coisa na web que valha a pena ler? Eu tinha esquecido que havia mais alguma coisa!
James McLeod
3
aka 'Damn you, Minecraft'
johnc
1
@ David, isso é apenas o ponto de partida na web - questão é quão longe você começa ...
Eu diria que isso não é mais tão válido devido ao Agile.
vartec
103

"Este é apenas um código de prova de conceito descartável. Quando eles gostarem, eu realmente o tornarei bom."

davidhaskins
fonte
13
Isso é chamado de Desenvolvimento Rápido de Aplicativos; e nunca funciona em um ambiente de negócios. :)
John Kraft
12
É engraçado que, para mim, seja o contrário - simplesmente não consigo escrever código descartável, mesmo quando é exatamente o que é necessário.
Dan
6
Eu trabalho em finanças e a RAD ainda está forte, especialmente em VBA / Excel. Há um talento especial para isso, porém, RAD não tem que significar desleixado.
Ian
5
E, às vezes, o aplicativo que você passou dois anos aperfeiçoando acaba sendo código descartável, porque alguém mais alto decidiu "oh, não podemos fazer isso" ou alguma outra versão de "não importa".
PSU
12
Este. Eu: "Esta é apenas a minha prova de conceito. Se você gostar, escreveremos a versão de produção". Gerente: "Sua versão funciona, vamos enviá-la!" Eu: "Bem, isso não cobre todo o uso ca ... você já enviou, não foi?"
74
  1. Refatorando parte do código alguns dias antes do lançamento.
  2. Internet: A maior distração de todas.
  3. Nova tecnologia : não consigo tirar minhas mãos da nova tecnologia.
  4. Otimizar: otimizar, otimizar. .. e mais Otimizar
  5. Perfeição : nunca foi satisfeito com o código.
  6. TODO: Falta tempo todos, que nunca serão feitos.
  7. Estimativa de tempo: muitos PMs não consideram isso como "estimativa". Eles tomam como fato.
  8. Promessas: Fazer muitas promessas.
Amir Rezaei
fonte
1
Uma vez trabalhou em um projeto que tinha 100 pessoas em uma sala grande e apenas dois PCs compartilhados tinham internet. A produtividade foi muito alta. A gerência deu a todos internet e se perguntou por que a produção do trabalho caiu pela metade.
quickly_now
2
Em relação à estimativa de tempo ... muitos gerentes tomam isso como ponto de partida da negociação (como barganha por um preço). Aqueles que tomá-lo como um fato equivocada, mas, na verdade, acima da média ...
dbkk
@quickly_now Cortar a rede provavelmente funciona para tarefas comuns, como entrada de dados ou correções de rotina, nas quais você não precisa procurar nada. Para muitas coisas fora do comum (por exemplo, pesquisar documentos da API / código de exemplo), o Google é seu amigo - leva cinco vezes mais tempo para descobrir por conta própria. Além disso, se as pessoas não estiverem motivadas e quiserem se distrair, encontrarão maneiras.
dbkk
@ dbkk - sim até certo ponto. Estava tudo em Ada, não havia APIs para procurar, era em hardware especializado e classificado em segurança nacional. Colocar máquinas conectadas à Internet não classificadas nesse ambiente também foi um pesadelo de segurança.
quickly_now
55

Presa por tentar construir tudo internamente, quando existem estruturas e bibliotecas existentes.

FrustratedWithFormsDesigner
fonte
6
Às vezes, as estruturas e bibliotecas existentes são marcadas como Verboten em grandes letras vermelhas pelo departamento jurídico de TI.
Christopher Mahan
22
E, é claro, a temperatura oposta: usando uma estrutura ou biblioteca desconhecida e assumindo que ele fará o que você precisa e que tudo corra bem.
Carson63000
"mas isso só vai levar uma semana para escrever e nossa estrutura vai fazer exatamente o que queremos, a livre um um on-line é provavelmente cheio de bugs"
2
@ Christopher: Então isso seria um bom motivo para reimplementar (ou encontrar uma biblioteca diferente com licença aceitável). Mas muitas vezes a razão para reimplementar é apenas NIH ...
Donal Fellows
@Carson: +1 :-)
Macke
48

Meus demônios recorrentes: otimização prematura e superengenharia.

E ainda não consigo evitá-los 100% ...

Tomas Narros
fonte
10
+1 para engenharia excessiva. Uma vez escrevi todo um "quadro de configuração" com "adaptadores de parâmetros de configuração" para arquivos ini, arquivos XML, tabelas e camadas de rede (porque todo mundo quer hospedar um serviço de configuração web, certo?)
TMN
8
Excesso de engenharia prematuro?
Christopher Mahan
@ Chris "overengineering prematuro" se aplica também. Também foi mencionado em outras respostas . Eu sei que é uma das minhas proibições.
Matthew Scharley
Que tal mega-engenharia prematura e otimizada
demais
4
Isso é meu. Eu culpo a gerência, dando-me liberdade para reinar / prazos futuros e não me dando prazos para componentes específicos.
Cthulhu
46

Estimativas excessivamente otimistas

Quando o seu gerente está te encarando, e você sente a sensação de queimar, para dar uma estimativa mais baixa do que seu instinto está lhe dizendo ... não faça isso!

Afinal, seu intestino provavelmente já está muito baixo!

Nicole
fonte
13
Quando lhe perguntam se ele vai realmente levar tanto tempo, basta dizer sim e, em seguida, sentar-se em silêncio até que eles sentem a falta de jeito ...
PeterAllenWebb
4
Uma vez meu professor universitário me disse para "descobrir sua melhor estimativa e depois duplicá-la". Isso funcionou para mim até agora.
zzzzBov
2
Como alternativa, tente a abordagem SMBC .
detly
4
Um de meus antigos chefes triplicou as estimativas dos desenvolvedores e depois negociou para dobrar com os clientes. Os clientes pensaram que tinham um acordo, os desenvolvedores tinham o tempo de que precisavam, mesmo que não soubessem. Vantajoso para as duas partes!
DaveE
2
Programação baseada em evidências pode ajudar com este problema: joelonsoftware.com/items/2007/10/26.html
Rei Miyasaka
33

Usar uma tecnologia / ferramenta / linguagem em seu projeto apenas porque você o aprendeu.

Para tentar provar o quão bom você é um desenvolvedor.

Considere o código que você escreveu para ser seu.

Biziclop
fonte
Se eu pudesse apenas votar de cada vez. Felizmente, metade das soluções acabou sendo muito boa. Metade não.
Dan
Ou um que você ainda não aprendeu. Só não se esqueça de prender suas esporas, porque será uma longa viagem.
Evan Plaice
32

Vou apenas fazer uma pausa e olhar para stackoverflow.com;)

Richard Miskin
fonte
2
Eu sempre adoro quando o stackoverflow é a resposta para uma dessas perguntas
Bill Leeper
31

A pior tentação:

Bem, acho que um truque / truque / correção sujo não vai doer.

Adivinhe, isso dói. :)

vamos para

Goran Jovic
fonte
11
"Gateway fixes"
Mark C
4
Usar uma gotodeclaração resultará em um ataque de raptor.
Maxpm 25/02
1
@ Maxpm: Bom pensamento! Incluído.
Goran Jovic 25/02
1
@ Mark C, o que é uma correção de gateway? Meu gøøgle-fu não é bom o suficiente.
1
@ Thorbjørn Ravn Andersen: pt.wikipedia.org/wiki/Gateway_drug_theory
Jimmy
23

Característica Creep

Faça um plano, cumpra-o e implante. E depois volte e adicione o que as pessoas estão pedindo.

Eu já vi isso repetidamente. Você se senta, elabora o design e começa a codificar. Os usuários ouvem algumas bobagens confusas sobre a falta de seu recurso favorito e começam a fazer lobby por isso. Seu chefe exige que você o adicione na 11ª hora, comete uma falha na implantação, introduz bugs em todos os lugares e, 3 meses depois, quando todos se acalmarem, você será solicitado a removê-lo, porque ninguém pode descobrir por que você colocou esse recurso retro porcaria em primeiro lugar! Você não poderia dizer que o resto do design tornou inútil?

Satanicpuppy
fonte
Deixando as especificações descongeladas e abertas como concessão porque o primeiro PM (que agora foi demitido) não sabia nada sobre desenvolvimento de software e projetou um cronograma de lançamento completamente irrealista. Pior idéia de todas.
Evan Solha
20
  1. Adicione mais recursos

  2. A competição tem esse recurso. Portanto, este é um recurso obrigatório, portanto, mais programação do que analisar estratégia, posicionamento etc.

  3. A competição NÃO possui esse recurso. Portanto, esse é um recurso diferenciador, portanto, mais programação do que análise de estratégia, posicionamento etc.

  4. Resolvendo um problema de negócios com mais programação. por exemplo, não é possível obter melhores conhecimentos na administração do servidor linux no qual seu site está hospedado, através da programação de mais recursos. Às vezes, você apenas precisa aprender a corrigir o problema, em vez de recodificar tudo em C # .Net

  5. Resolvendo um problema de marketing com mais programação. por exemplo, abusando do conceito de vaca roxa de Seth Godin, de que você está indiretamente resolvendo um problema de marketing, programando mais recursos em seu produto para torná-lo uma "vaca roxa". Às vezes, é apenas um monstro mutante.

  6. Resolvendo um problema de produtividade com mais programação argumentando consigo mesmo que o tempo gasto escrevendo esse script será economizado em horas no futuro, em vez de realmente programar coisas realmente importantes

  7. Planejando codificar, mas ainda não codificando, porque você deseja "acertar"

  8. Codificando uma versão suja e prometendo que você "melhorará mais tarde", mas nunca voltou a "melhorar"

  9. Não fazendo uma maquete ou um mapa do site porque é "muito problemático". Posso apenas capturar as páginas dos concorrentes para maquetes e desenhar o mapa do site à mão livre "mais tarde", o que nunca é. E então vá direto para a programação da primeira página que visualizo em minha mente.

Confissão: Eu cometi pessoalmente os erros 1, 3, 7, 8. Eu também cometi 2, 4, 5, 6, mas muitas vezes me iludei de mim mesma.

Atualmente, estou corrigindo 9.

EDIT Não percebeu que a pergunta requer que colocássemos soluções.

1) Adicione mais recursos Apenas não faça isso. Trabalhe com seus negócios, marketing, fundadores, consultores etc. e reduza seu aplicativo a apenas uma coisa.

Leia sobre o twitter, o Groupon , etc. sobre como eles simplificam as coisas para apenas uma coisa que levou ao seu sucesso.

Se você acha que só funciona se você deseja criar grandes empresas, pense novamente. Ctrl + F para esta linha "Quanto mais recursos eu adicionar ao software, pior ele vende. (É desnecessário dizer que isso é altamente intuitivo para a maioria dos desenvolvedores de software.)" Neste link

2) A competição tem esse recurso. Portanto, este é um recurso obrigatório

Veja a solução 1

3) A competição NÃO possui esse recurso. Portanto, este é um recurso diferenciador

Veja a solução 1

4) Resolvendo um problema comercial com mais programação.

Se precisar contratar alguém para ensiná-lo, faça uma consulta ou faça isso por você e depois documente como ele o fez, para que você possa fazê-lo da próxima vez. APENAS FAÇA!! Não reescreva o código, não passe no GO, não colete US $ 200.

5) Resolvendo um problema de marketing com mais programação.

Se as pessoas não entendem o que você está vendendo, é um problema de marketing. Volte para a solução 1 e gire.

6) Resolvendo um problema de produtividade com mais programação

Esperar.

Aguarde até sentir que sua produtividade sofreu com um problema específico de produtividade por um período superior a 2 semanas e isso acontecerá razoavelmente por mais 2 semanas.

Agora, avalie a quantidade de tempo gasto para programar um script para resolver esse problema. Lembre-se de fazer sua pior estimativa e multiplicar por 2.

Multiplique sua estimativa pela sua taxa horária.

Agora revise soluções alternativas: terceirize, compre uma solução pronta para uso, não faça nada a respeito, etc.

Escolha a solução mais econômica.

Cumpri-lo.

7) Planejando codificar, mas ainda não codificando, porque você deseja "acertar"

Faça exercício. Você sentirá uma onda de endorfinas que motivarão sua bunda e farão você planejar agir. Eu sei disso porque acabei de fazer supino 5x5 e agachamento 5x5.

8) Codificando uma versão suja e prometendo que você "melhorará mais tarde", mas nunca voltou a "melhorar"

Configure um sistema de arquivos do tickler no GTD. e acompanhar agressivamente. Acompanhe todas as promessas para si e para os outros.

9) Não está fazendo uma maquete ou um mapa do site porque é "muito problemático".

Vá gastar US $ 75 em uma edição para desktop de maquetes balsamiq. Eu sei disso porque eu comprei há 3 semanas. Isso me fez refazer minhas maquetes, porque me sinto como um artista, arquiteto e visionário, tudo em um, mesmo que meu desenho no mundo real seja péssimo. A fonte usada no balsamiq, inconscientemente, lembra que isso é apenas uma maquete, não gravada em pedra que ajuda na RAD.

Fim da edição

kimsia
fonte
Marcou com +1 esta resposta, mas achei um pouco difícil de ler. Eu realmente não entendo o contexto dos 9 primeiros pontos. Importa-se de esclarecer? Ainda bem, bom trabalho.
@MattFenwick Olá, obrigado pelo seu +1. Os pontos 1 a 5 geralmente são aplicados no cenário de criação de um produto para venda, embora você também possa aplicá-lo a cenários em que sua tendência a encontrar a melhor resposta o leva a pesquisar extensivamente a técnica anterior. Por exemplo, na pesquisa.
Kim Stacks
Os pontos 6-9 referem-se mais às tendências neuróticas de um programador. Li em algum lugar (não consigo encontrá-lo) que um designer sempre abordava qualquer problema com uma solução de design; um profissional de marketing com uma solução de marketing; e um programador com uma solução de código. Sim, o temido "Quando você tem um martelo de ouro, tudo o que vê é a síndrome das unhas". Isto é particularmente evidente no ponto 6) Resolver um problema de produtividade, com mais de programação
Kim Stacks
@MattFenwick desculpe se você ficou confuso com o meu nome. Mudei meu apelido depois de escrever esta resposta. Vejo que sua formação é mais em pesquisa. Minha resposta deriva em grande parte da minha experiência no desenvolvimento de soluções para vender. Mas tenho certeza, há certas semelhanças entre minha linha de trabalho e a sua, já que nós dois fazemos programação.
Kim Stacks
17

Um par de cervejas vai me ajudar a trabalhar melhor e por mais tempo.

Adam Crossland
fonte
11
Espere ... você quer dizer que não? ( xkcd.com/323 )
Craige
4
@Craige: após 21 anos de experiência com bebida e 20 anos como engenheiro de software profissional, ainda estou trabalhando na parte de calibração.
Adam Crossland
4
@ Adam, você levou um ano para beber para se tornar um engenheiro?
17
Codificar enquanto bebe cerveja ajuda a criar redes sociais populares que valem bilhões em alguns anos. É verdade, eu vi isso em um filme.
janosrusiczki 25/02
1
@Kitsched: Sim! Especialmente se você tiver o design pré-existente de outra pessoa para executar.
Mason Wheeler
16

"Sim, eu posso refatorar essa bagunça gigantesca de espaguete com 2000 linhas em um dia ..."

Hila
fonte
13
Alternativamente: "o novo cara [que não sabe absolutamente nada sobre o software ou a estrutura de seu código] não está fazendo nada, pode consertá-lo". Pontos de bônus quando o cara nunca usou o idioma em que o código está escrito.
wildpeaks
16

"Eu posso passar sem um teste para isso. É muito difícil de testar."

e é irmão do mal,

"Eu preciso fazer um teste para isso, não importa o quão difícil seja escrever ou entender."

Wayne Conrad
fonte
2
Se um teste é difícil de escrever, você pode não estar programando-direita :)
Merlyn Morgan-Graham
2
@Merylyn Morgan-Graham, é verdade. Mas existem algumas áreas, como concorrência, que são simplesmente mais difíceis de testar.
Wayne Conrad
1
@ Merlyn: Se você se encontra escrevendo um simulador de instruções para poder forçar uma troca de contexto nos lugares certos, provavelmente já foi longe demais nos testes de concorrência. :)
Zan Lynx
1
@Zan: Eu concordo - no momento em que é necessário, eu pressionaria os desenvolvedores e tentaria fazê-los refatorar seu código e me permitir inserir zombarias. Eu trabalho contra linguagens de alto nível, nas quais analisamos o Big-O, otimizamos gargalos, precisamos pensar na simultaneidade principalmente na integridade dos dados, em vez da velocidade bruta, e enviar (e geralmente nenhum deles porque é rápido o suficiente caixa).
Merlyn Morgan-Graham
15

Procrastinação e estimativa otimista de tarefas são meus maiores pecados.

Alongamentos, flexões ou flexões (ou qualquer outro exercício físico) para o primeiro e humor pessimista antes de fazer estimativas para o segundo.

Nikita Barsukov
fonte
Esclarecimento ... Por "estimativa de tarefa otimista", você quer dizer 'síndrome fácil da merda', certo? :)
Evan Solha
@Evan Plaice - exatamente. Como "oh, é tão trivial" e depois pesquisando todas as letras do seu código depois que você começou a codificar.
Nikita Barsukov
13

"É muito mais ' fácil ' para reimplementar a funcionalidade a partir do zero do que para entender o código existente."

k3b
fonte
2
Sim, c2.com/cgi/wiki?RewriteCodeFromScratch afirma que essa é uma das "Coisas que você nunca deve fazer".
David Cary
Trabalhar em código aberto ajuda a essa tendência. Eu pessoalmente observei os patches antes de olhar velozmente, depois fui em frente e escrevi minha própria implementação apenas para perceber que era quase idêntico ao patch (mesmo depois de melhorar / refatorar meu código). É engraçado como isso funciona.
Evan Plaice
10

Uma tentação massivamente prejudicial que o projeto em que eu sofri é o 'Efeito da Plataforma Interna'. Essa é uma abordagem que os arquitetos, que há muito se dedicam, estabeleceu em sua infinita sabedoria, que criou um projeto que gera cerca de 20 milhões de dólares por ano, mas custa 60 milhões para atualizar e manter (números aproximados, obviamente, mas essa é a magnitude do problema).

AlexC
fonte
10

NIH - Não Inventado Aqui

Tenho muita dificuldade em dar uma chance justa às soluções de terceiros. Todos devem ser naturalmente céticos em relação a soluções de terceiros que não foram feitas sob medida para eles, mas eu tenho dificuldade em ser 100% objetivo sobre isso.

A economia de tempo pode ser tão grande que mesmo que 9 em cada 10 vezes a solução de terceiros deve ser evitada, eu preciso ser objetivo o suficiente para perceber o um que irá trabalhar.

Nicole
fonte
1
Entendo o seu ponto e tenho que conviver com ele o tempo todo. Às vezes, sou totalmente oposto a um ponto em que mereceria uma resposta próxima à sua. No entanto, acho difícil acreditar que posso fazer melhor em uma semana do que um grupo de especialistas sobre o assunto que há anos faz isso. Claro que você precisa garantir que as pessoas por trás desse terceiro sejam realmente especialistas. Uma boa investigação sobre o ambiente circundante do componente ajudou muito na escolha correta entre a adoção ou a codificação.
Newtopian
1
@ Newtopian a maneira "correta" está definitivamente em algum lugar no meio. Meu problema com bibliotecas de terceiros não é se eu posso fazer melhor do que uma equipe de especialistas com meses ou semanas, mas que raramente , talvez nunca encontre uma biblioteca exatamente o que precisamos. Há sempre a adaptação a fazer, e muitas vezes eu e outras pessoas gastamos tanto tempo lutando com isso quanto escrevendo uma solução que é exatamente o que precisamos.
25411 Nicole
Eu mesmo, vindo do extremo oposto do espectro, estava curioso para saber como você conseguiu alcançar esse "meio termo", se é que realmente. Também estava curioso sobre o que faz com que você não queira usar terceiros na tentativa de entender o que me leva a usá-los, pois tenho certeza de que ambos são igualmente prejudiciais à produtividade.
Newtopian
@ Newtopian, minha explicação acima faz sentido quanto ao porquê? Minha tentativa de tentar alcançar o meio é simples para ser mais objetivo ao avaliar e procurar soluções de terceiros.
25411 Nicole
9

Projetar, codificar e / ou testar a unidade com base nos "dados de amostra" fornecidos em vez de analisar uma cópia do banco de dados real do cliente. O prazo era curto e eles continuavam dizendo que chegaria, mas nunca chegou. Quando foi implantada, a explosão foi espetacular. Realmente, quem esperaria que um cliente tivesse três clientes principais.

Nunca mais vou iniciar um projeto até ter uma cópia dos dados reais .

dwidel
fonte
Se ainda não houver um produto, haverá dados para copiar?
Svish
Se não houver dados, sempre haverá papel. Os registros da empresa também ajudariam aqui.
burnt_hand
9

O Não tem que ser uma biblioteca que faz isso em algum lugar síndrome.

intimamente relacionado com

O Plugin Fetish

Newtopian
fonte
2
Sempre pareço capaz de encontrar a biblioteca que "faz". Meu problema geralmente é fazê-las funcionar como anunciadas. :(
Ben L
Fácil de encontrar uma biblioteca - Difícil de encontrar uma biblioteca que tem bons testes de unidade construída em
burnt_hand
8

O perfeccionismo mata; provavelmente a maior razão pela qual os projetos não são bem-sucedidos.

Naftuli Kay
fonte
Eu acho que é possível que isso seja verdade, mas eu nunca participei de um projeto que falhou, ou estava atrasado, por esse motivo.
PeterAllenWebb
Depende de como você define a perfeição e em que nível deseja atingir.
Svish
7

Bem, às vezes a programação me leva à garrafa.

mipadi
fonte
7

Reescrevendo em vez de refatorar.

Dave O.
fonte
Aceita. Se você estiver disposto a se comprometer com a quantidade de esforço necessária para uma reescrita, é quase sempre melhor refatorar. Ainda vai demorar mais do que você pensava, mas você está fazendo a refatoração incremental, certo? Você pode parar antes que seja "perfeito".
PeterAllenWebb
1
como um corolário .... escrevendo novamente em outro lugar, em vez de realçar. Nossa base de código tem tantas implementações diferentes das mesmas coisas que é impossível obter qualquer tipo de consistência.
Newtopian
6

Pensando que tem que haver uma maneira melhor de fazer isso. Não vou me contentar com algo que pode ser "bom o suficiente". Estou levando nada menos que perfeição! Geralmente, isso é evitado conversando com outras pessoas que podem ter uma perspectiva diferente sobre um problema ou vendo uma solução de um ângulo diferente.

JB King
fonte
5

Automatizando tudo ao ponto, mais tempo é gasto na manutenção das ferramentas do que no trabalho real.

Solução: assim como na otimização de código, primeiro encontre gargalos de produtividade e somente depois que eles forem descobertos, cure-os com uma boa automação .

Dan
fonte
Posso concordar com isso em princípio, mas nunca vi automação excessiva na prática. Ainda assim, essa poderia ser apenas a minha experiência.
PeterAllenWebb
4

Quais são seus demônios de programação?

Além do que alguns outros mencionaram.

Priorização : Ignorando o trabalho de alta prioridade em relação ao projeto e trabalhando em outras coisas no projeto primeiro, porque são mais interessantes!

Como você os evita?

Com um pouco mais de autodisciplina. Sério, a auto-disciplina e a auto-motivação para fazer a coisa certa ajudam a evitar a maioria desses "demônios".

Mahesh Velaga
fonte
3

Ainda não obtivemos a aprovação do cliente, mas o prazo está próximo. Aqui estão algumas composições preliminares para que você possa começar ...

Mais tarde, depois de concluir a construção do projeto para corresponder às composições ...

Ah, aqui estão as revisões do cliente, eles só querem mudar algumas coisas menores *

(* as principais funcionalidades são totalmente diferentes)

Então você continua refatorando seu código original, com base no modelo defeituoso original, em vez de apenas começar do zero, porque você está sob pressão de um prazo curto e assume que essas foram as últimas revisões.

Eu fico com esse cara o tempo todo. É difícil evitar como desenvolvedor web. Meu melhor conselho é pressionar por mais tempo para que você possa fazer as alterações da maneira correta.

travis
fonte
2
Adote uma política em que você não inicie o desenvolvimento até ter a assinatura de um cliente.
Ben L
1
@ Ben: Se ao menos isso estivesse sob nosso controle!
sevenseacat