Os desenvolvedores de software que ignoram a qualidade / padrões são melhores para a empresa? [fechadas]


10

Os desenvolvedores de software que optam por não colocar a otimização de código, os padrões e as melhores práticas como prioridade máxima, criam códigos mais úteis do que aqueles que desejam se preocupar com otimização, implementação de padrões e práticas de codificação antes de concluir as tarefas no prazo?

Como essas metodologias diferentes se comparam quando se trata de análises de desempenho individuais?

Como esses estilos se comparam nas revisões por pares?

Qual é a melhor maneira de influenciar sua equipe a implementar mais práticas recomendadas durante o SDLC?


2
@ Haylem - Eu acho que a edição original que fiz foi melhor. Se o título for igual à primeira frase, qual é o sentido do título?
BlackJack

11
@BlackJack Trouxe seu título de volta e refinei a pergunta um pouco mais. Acho que nós três fomos pegos pisando no mesmo post no histórico de edições. Deve ser bom agora.
Thomas Owens

4
O SE não é um lugar para reclamações sobre seu chefe. Todos nós temos chefes e a maioria de nós tem alguém na cadeia de comando que eles acham que não pertence a ele (não eu, eu acho que eles são ótimos / sugadores). Discutir sobre eles aqui não é bom.
precisa saber é o seguinte

11
@ Chad: Embora eu concorde com tudo o que você disse, não tenho muita certeza de que o OP pretendesse reclamar com seu chefe (diretamente).
haylem

2
@ Chad: Eu li isso e, embora eu possa entender sua reação, Jitendra não diz que tudo o que ele fez foi corrigir o código das pessoas. Mas eu concordo com sua argumentação - e algumas outras respostas - de que a entrega de funcionalidades primeiro pode ser de maior importância do que um produto inacabado com qualidade perfeita. Ninguém terá que manter um produto que nunca verá a luz porque foi morto cedo ou falhou em natimorto.
haylem

Respostas:


32

Não, eles só terão respeito do dono do projeto no momento.

Eles serão destruídos por anos por:

  • futuros mantenedores,
  • testadores futuros,
  • futuros proprietários do projeto,
  • futuros gerentes,
  • e praticamente qualquer pessoa envolvida com a base de código no futuro.

Eles podem até receber o mesmo tratamento de:

  • os testadores atuais,
  • os escritores de documentação técnica atuais.

@ Ivan: Obrigado. O pensamento de longo prazo sempre vence.
haylem

@haylem - Eu concordo com você porque as pessoas estão mudando de emprego rapidamente. então é melhor código será útil para novos jogadores para understnad o código rapidamente
Jitendra Vyas

Tudo verdade, mas por causa de seu desempenho, eles ficarão longe dos peões que vivem a dor que sobrou. Triste mas verdadeiro!
anon

6

Falsa dicotomia: qualidades são ortogonais.

                Alta Qualidade Baixa Qualidade

Rentável IMPRESSIONANTE Esboçado

Iffy não lucrativo FOGO PRIMEIRO

5
Iffy é melhor ou pior que Sketchy?
HLGEM 19/08/11

11
@HLGEM: Rentável é sempre melhor do que não rentável.
Donal Fellows

que ignora custos futuros criado por qualidade esboçado
Rudolf Olah

11
Atribuir lucratividade apenas às costas do desenvolvedor é uma simplificação excessiva. E quanto ao gerenciamento de produtos, infraestrutura de implantação? Eles também não têm um papel a desempenhar na lucratividade?
Davids

5

Não. As melhores práticas são as melhores, porque, por definição , ajudam a executar os projetos de maneira mais correta, em menos tempo, com modificações mais rápidas no caminho, de modo que seu descaso é garantido para diminuir os lucros. Obviamente, seus gerentes podem prescrever práticas que acham que são melhores, mas na verdade não são, ou podem julgar mal o que os clientes pagarão e o que não - então todas as apostas serão canceladas.

Os padrões de codificação são mais complicados; é possível prescrever muitos detalhes aos seus codificadores, o que leva a uma menor eficiência. Porém, com a experiência, torna-se bastante fácil distinguir diretrizes úteis do microgerenciamento anal-retentivo, de modo que o mesmo se aplica: as melhores práticas reais sempre valem a pena, as pseudo-melhores práticas geralmente não.

Geralmente, não vale a pena otimizar o código, a menos que você tenha medido quais são seus gargalos, confirmado que é necessário fazer uma otimização e medido que seu truque inteligente realmente atende às exigências de pré-desempenho. Caso contrário (que é principalmente), não vale a pena fazer e, portanto, não é o ideal.


6
As práticas recomendadas não ajudam a executar todos os projetos corretamente em menos tempo. São simplesmente coisas que foram observadas para funcionar bem na maioria dos projetos na maioria das vezes.
Thomas Owens

2
A adesão cega às "melhores práticas" ou à melhor maneira declarada de fazer as outras pessoas é no processo de desenvolvimento o que a codificação do culto de carga é no processo de codificação. Você deve ser capaz de entender o que significa uma prática, se é realmente a melhor coisa em sua situação e, se não, o que deve substituí-la.
Blrfl

5

Concordo com desenvolvedores que não se importam com a otimização e práticas de código? Não.

Eles fazem o trabalho que precisam fazer? Sim.

Um negócio é ganhar dinheiro, e a única maneira de ganhar dinheiro é lançar produtos. Isso geralmente significa que os projetos têm cronogramas rígidos, o que significa qual pode ser a melhor maneira de fazer algo e pode não ser a maneira mais rápida de fazer algo.

Embora eu não concorde com esse estilo de desenvolvimento, pode ser visto como respeitável pela empresa se os produtos estiverem sendo lançados.


Eu estava me preocupando muito com a otimização de código no meu último trabalho, mas meus colegas desenvolvedores não estavam se preocupando, mas eles fizeram mais projetos do que eu. Quando conversei com o gerente do projeto, ele disse que o cliente quer o projeto no prazo e ele nunca vê como o código foi escrito.
Jitendra Vyas

11
@Jitendra - Se você passar o dia todo otimizando coisas que já foram escritas e não obtendo novas funcionalidades, eu também não ficaria feliz. A menos que a otimização obtenha algo além de ser menos número de linhas e caracteres no código-fonte, você não estará realizando nada.
precisa saber é o seguinte

3
@Jitendra - Eu não disse que não. E escrever seu código de maneira legível é ótimo. Indo por aí 'consertando' a aparência do código de outras pessoas quando você tem tarefas próprias não é.
precisa saber é o seguinte

11
@Chad -Não se trata de reescrever meu próprio código ou corrigir o código de outras pessoas, ele está prestes a escrever o código pela primeira vez com indentação adequada para boa legibilidade, comentários adequados para futuros desenvolvedores e uso das melhores práticas que tornam o código reutilizável e leva tempo para escrever o código da bagunça que somente o desenvolvedor original pode entender. Um bom código sempre leva tempo.
Jitendra Vyas

4
@ Ivan: Eu tive experiência direta com essa mentalidade. É assim. A empresa inicia um projeto greenfield. O Hotshot Developer X reúne as coisas o mais rápido possível, usando grandes quantidades de ctrl + ce ctrl + v. O produto é lançado em um prazo muito curto. A empresa está entusiasmada com o Desenvolvedor X. Os relatórios de bugs e as solicitações de recursos são recebidos. O Desenvolvedor X não pode acompanhar e é demitido / passa para o próximo trabalho. Os próximos 3 anos de desenvolvimento são uma porta giratória de novas equipes de engenheiros que não podem progredir e a Empresa X perde todas as vantagens de mercado que já teve.
22616 Greg Burghardt

4

Não, e eu encontraria o caminho mais rápido para sair dessa empresa que aprecia esses vícios.


2
+1 por ser curto, direto ao ponto e correto. Uma empresa que não se importa com os padrões de qualidade é estúpida, ignorante ou uma farsa.
Wayne Molina

3

Sim e não, o que é um pouco insolente, mas é uma prática recomendada e não uma prática perfeita. Idealmente, você deve segui-los constantemente, mas sempre haverá uma situação em que a empresa deseja colocar suas necessidades antes de seus produtos.

Você será odiado pelos mantenedores, mas amado por seu chefe.


3

Práticas recomendadas é um pouco como o senso comum, todos concordam que todos devem conhecê-lo até que duas pessoas comecem a discuti-lo em detalhes. Não há duas pessoas que concordem completamente com a definição e não há fonte lógica de verdade que se aplique a todas as situações.

Você está escrevendo o sistema de orientação para um satélite espacial (provavelmente não está)? Então o inferno Nenhum código de baixa qualidade / desempenho nunca é aceitável nesse tipo de trabalho.

Você está escrevendo um site descartável por um impulso de marketing único (você provavelmente não está fazendo isso também ou não teria feito a pergunta, mas é mais provável que o satélite)? Então Inferno Sim, tire esse pedaço de lã da porta por todos os meios necessários para cumprir o prazo, o próximo diretor de marketing provavelmente fará outra coisa com uma empresa diferente. O QUE VOCÊ FAZ NÃO É ARTE OU CIÊNCIA - SEJA PAGO.

Todo o resto: negociável, especialmente enquanto o desenvolvedor estiver no gancho para suporte inicial.

Até que ocorra a segunda vinda de qualquer ser santo que você preferir, e ele / ela / ela defina práticas de desenvolvimento de maneira milagrosa, haverá espaço significativo para o debate sobre qualquer projeto que não seja diretamente responsável por decisões de vida ou morte que não sejam tão insignificante para ser descartável.

Tudo fora das práticas recomendadas rotuladas como essenciais para a vida é geralmente mais como política da empresa, especificações do cliente ou opinião pessoal. Muitos deles são opiniões pessoais com as quais muitas pessoas concordam atualmente, mas isso não o torna um guia imutável para todas as situações.


2

Quanto dinheiro eles ganham para a empresa é discutível. Se houver um nível de revisitar o código em questão, os custos de manutenção aumentarão e alguém não ficará feliz. Os altos custos de manutenção a longo prazo são mais caros do que fazê-lo corretamente na frente.

Quanto respeito eles têm provavelmente é caso específico. Em algum momento, no entanto, alguém notará.


2

Não se importar com essas coisas pode tornar a empresa mais dinheiro a curto prazo, mas pode custar à empresa mais dinheiro a longo prazo em mais correções de bugs e codificação de manutenção.

Às vezes, um trabalho rápido e sujo pode ser necessário se houver pressa nas empresas concorrentes para obter produtos similares no mercado ao mesmo tempo, mas os custos futuros de tais ações devem ser considerados com cuidado.


2

Tudo depende do cliente.

Um cliente que gosta de trabalhar rápido e sujo (e geralmente mais barato) não se importa em apresentar problemas no futuro.

Pense na construção do gabinete.

Alguns pagarão e apreciarão armários personalizados de boa qualidade. Eles não se importam com o gasto extra de gavetas de madeira e hardware de primeira qualidade. Eles não se importam que levará uma semana extra ou até um mês para criar e instalar as coisas.

Muitos não. Muitos optam pelo material barato produzido em massa de painéis de partículas que você obtém de uma grande loja de caixas. Eles querem que eles sejam instalados em 2 dias. Uma pequena lacuna aqui e ali é perfeitamente aceitável. Eles não se importam em desmoronar em 10 anos.

Portanto, se seus gerentes estão elogiando o desenvolvedor que o faz de forma rápida e suja, seus clientes não querem alta qualidade ou os mentores estão mentindo para os clientes.

Só o tempo irá dizer. Faça o que os gerentes querem ou encontre outro emprego.


11
é claro que o software pode vir com suporte, portanto, fazer as duas coisas pode ser uma opção. ou seja, seremos os primeiros a comercializar com a v1, apesar dos problemas conhecidos, no entanto, o dinheiro que ganharmos com isso nos permitirá corrigir problemas no futuro etc.
jk.

1

Não nunca. Otimização de código da IMO, melhores práticas, artesanato real são a coisa MAIS importante a ter em uma base de código; sem ele, tudo se transforma em lodo e é mantido unido com fita adesiva. É um design insustentável. É como ignorar um tumor porque é pequeno e você está saudável agora; Certifique-se de que você está saudável agora, mas alguns anos depois, ele se torna terminal porque você o ignorou por tanto tempo.

Não só não concordo com os desenvolvedores que não se importam com essas coisas, mas tenho zero respeito por eles. Uma maneira infalível de fazer com que eu pense em deixar uma organização, não importa por quanto tempo eu esteja lá, seja cercada por uma equipe na qual eu sou a única pessoa (se não a única pessoa em toda a empresa) que se importa sobre os conceitos adequados de engenharia de software.


1

Uma boa leitura: http://www.joelonsoftware.com/items/2009/09/23.html

Mas IMHO, as melhores práticas de um homem são outro pesadelo. E toda base de código não trivial será um pesadelo para quem está de fora.

Tudo o que você pensa, não seja um idiota sobre isso.

Edição: Eu não estou defendendo nenhuma das posições, dependendo da tarefa que eu possa inclinar para os lados.


Depende da OMI das "melhores práticas". Coisas como ter testes (não necessariamente TDD, mas testes automatizados em geral), seguindo os SOLIDprincípios, usando padrões de design, usando abstrações / interfaces são a linha de base que qualquer desenvolvedor competente deveria estar fazendo.
Wayne Molina

Por mais que eu goste de testes ... eles não são a linha de base.
CaffGeek

1

Melhor para a empresa? Depende.

Para uma startup com fundos limitados, faça-a e divulgue-a - não importa se é confusa, que pode ser corrigida mais tarde, quando houver mais recursos.

Para um produto maduro, onde há muitos usuários confiando na qualidade do software, tudo deve ser feito "adequadamente".

Melhor para o desenvolvedor individual? Na verdade, é irrelevante. Faça o mesmo que seus colegas estão fazendo e deixe a gerência lidar com as consequências - esse não é o seu trabalho. Se você está consertando a porcaria de outras pessoas o tempo todo, você será visto como lento, e será você quem ainda está lá enquanto os outros foram promovidos acima de você. Entre no programa ou saia enquanto pode, se é tão ruim assim.


"não importa se está confuso, isso pode ser corrigido mais tarde, quando houver mais recursos." Em teoria, com certeza. Na prática, isso nunca acontece porque, quando você envia algo para fora, fica preso, mantendo-o e adicionando coisas novas, para que você nunca tenha os recursos para voltar e consertá-lo.
Wayne Molina

Discordo. Certamente aconteceu em muitos projetos da Web de pequeno e médio porte nos quais eu já participei, e também existem muitos casos mais famosos de empresas voltando e refatorando sua base de código das principais maneiras - por exemplo, o Twitter mudando de Ruby para Scala, o Facebook e sua busca por otimizar a linguagem PHP, etc. De fato, tenho certeza de que a maioria dos aplicativos maduros de sucesso (web e desktop) que usamos todos os dias não tem muito código em comum com seus ancestrais v1.
TimH

Talvez, mas em seis anos de desenvolvimento corporativo, encontrei exatamente uma empresa capaz de refatorar o código ao longo do tempo; em todos os outros lugares nunca teve recursos para se dedicar a "consertar o que não está quebrado", mesmo quando o código é incontrolável.
Wayne Molina

0

Depende do desenvolvedor e do projeto / situação.

Tempos extraordinários requerem medidas extraordinárias.

Então, se eu precisar de algo entregue agora, e alguém tiver um aplicativo java de nível empresarial de engenharia excessiva que aproveite nada menos que 14 das estruturas mais recentes de buzzword, enquanto um simples script python fará o trabalho é tão pior quanto o desenvolvedor que faz as coisas e pensa código de buggy fará em tempos normais.

Parte de ser desenvolvedor é ser flexível. Você não deve ser escravo de suas ferramentas e seguir cegamente as práticas - sempre haverá um caso em que elas falharão com você. Saber quando quebrar e dobrar as regras é uma das coisas que trazem muita experiência e são valiosas.

No seu caso - se ele oferece mais valor do que você porque a velocidade é crítica, mesmo depois de considerar o aumento do custo de manutenção no caminho, ele merece uma melhor compensação. Por outro lado - se você está preso na limpeza da bagunça -, você tem um problema de comunicação com a gerência.

É caso a caso. Exceto o estilo de codificação - não há desculpa lá.


0

Sinto muito, mas precisaria discordar da maioria das respostas para esta pergunta, exceto a principal.

O principal valor do software é que ele é flexível.

Eu não acho que você deve reescrever o código de outras pessoas sem justa causa. Se você precisar alterar um módulo por qualquer motivo para implementar seu recurso, agora você é, para o bem ou para o mal, o proprietário desse módulo. Altere, reescreva parte disso, reescreva tudo.

Nunca produza baixa qualidade em termos de flexibilidade. Não existe algo que jogue fora qualquer software. Se o cliente declarar temporário e não precisar dele após uma determinada data e não se importar com a qualidade, diga "ruim" ou escreva que o código não será alterado por você ou qualquer outro programador uma vez ele é implantado na produção ou você tem o direito de processá-los.

A suposição mais fraca que vejo em algumas dessas respostas é que algum código limpo de alguma forma reduz a velocidade do desenvolvimento. Para qualquer projeto de qualquer substância (mais de 6 horas de trabalho), o código limpo acelera o desenvolvimento a longo prazo (algo maior que uma semana). Eu já vi isso várias vezes.

Código de baixa qualidade é apenas desrespeitoso com a profissão e com seus colegas de trabalho. Desculpe, mas é verdade.

Portanto, não à má qualidade, em termos de flexibilidade, sempre!


11
Nunca diga nunca. Aplicativos inteiros são jogados no lixo. As conversões de dados de um sistema para outro são usadas uma vez e apodrecem.
JeffO

Manter o código sempre limpo reduz um pouco a velocidade de desenvolvimento a curto prazo . A parte importante é que o código impuro causa uma redução muito maior a longo prazo. Vejo algumas outras respostas que mencionam isso.
Ixrec 19/03/16
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.