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?
code-quality
teamwork
Jitendra Vyas
fonte
fonte
Respostas:
Não, eles só terão respeito do dono do projeto no momento.
Eles serão destruídos por anos por:
Eles podem até receber o mesmo tratamento de:
fonte
Falsa dicotomia: qualidades são ortogonais.
fonte
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.
fonte
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.
fonte
ctrl + c
ectrl + 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.Não, e eu encontraria o caminho mais rápido para sair dessa empresa que aprecia esses vícios.
fonte
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.
fonte
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.
fonte
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á.
fonte
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.
fonte
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.
fonte
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.
fonte
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.
fonte
SOLID
princípios, usando padrões de design, usando abstrações / interfaces são a linha de base que qualquer desenvolvedor competente deveria estar fazendo.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.
fonte
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á.
fonte
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!
fonte