Quais são as piores economias falsas (ou seja, maneiras de economizar dinheiro que acabam custando mais do que economizam) predominantes na indústria de software e como você as combate?
Quais são as piores economias falsas (ou seja, maneiras de economizar dinheiro que acabam custando mais do que economizam) predominantes na indústria de software e como você as combate?
Respostas:
ou seja, "basta fazê-lo rapidamente, refatoraremos mais tarde". Primeiro, porque ainda tenho que ver alguém se engajar nesse comportamento, na verdade, refatorar mais tarde. Segundo, porque fazer as coisas da maneira mais rápida, em vez da boa, torna mais difícil adicionar recursos futuros ou resolver bugs futuros, para que você perca tempo a longo prazo.
Infelizmente, muitos ainda acham que economiza ciclos de desenvolvedor para que eles façam algo rapidamente. Eu acho que é possível, mas ainda tenho que ver isso na prática.
Contratar 2 desenvolvedores baratos em vez de 1 realmente ótimo. (pelo mesmo preço)
Meu exemplo seria o completo oposto do exemplo de NimChimpsky , a saber:
Tentando desenvolver internamente algo que possa ser comprado de prateleira.
Normalmente, isso ocorre devido a uma falha na verificação do mercado para ver se já existe algo que resolverá o problema. Isso pode ser composto por desenvolvedores que gostam de "mergulhar" na codificação antes de fazer qualquer pesquisa e por gerentes de projeto que não consideram esse tempo = dinheiro.
Um dos exemplos mais comuns que já vi em meu campo, desenvolvimento web, são empresas que tentam desenvolver e sistema interno de CMS. Eles invariavelmente começam pequenos, mas logo ficam inchados e fora de controle à medida que os recursos são aparafusados, enquanto o tempo todo há muitos produtos e estruturas gratuitos disponíveis, o que seria muito mais adequado.
Não há recursos dedicados para gerenciamento de projetos
Eu experimentei várias vezes quando alguns programadores foram contratados, e alguém que já tem um trabalho diurno exigente deveria ter gerenciado o projeto, mas na verdade estava muito ocupado com outras tarefas para que o projeto nunca realmente ganhasse impulso. Os programadores criavam "protótipos" e outras coisas, mas sem vantagem, grande parte estava em círculos para parecer ocupada.
Mau equipamento para novos programadores
Uma vez experimentei uma empresa em que a política era "novos programadores precisam trabalhar em um PC muito antigo com uma tela pequena até que provem que são dignos". Não surpreende que essa política tenha causado uma seleção negativa que afugentou pessoas boas que sempre têm a opção de trabalhar em um ambiente mais saudável.
Podemos economizar dinheiro fazendo com que os programadores funcionem como testadores / redatores técnicos
Se você está pagando salários de programador pelo trabalho de testador / redator técnico, está desperdiçando dinheiro e provavelmente obtendo um trabalho de menor qualidade do que alguém que dedicou sua carreira a essa tarefa. Além disso, quando um programador enfrenta um prazo apertado, a documentação e os testes têm grande probabilidade de serem descartados ou feitos pela metade para cumpri-lo.
BTW: Os desenvolvedores SEMPRE enfrentam um prazo apertado.
O código de pesquisa / leitura / escrita não relacionado ao desenvolvimento do produto é um desperdício de recursos.
Alguns programadores e até gerentes acreditam nisso. Normalmente, eles apenas fazem programação com base no conhecimento em suas cabeças, pesquisam e procuram respostas quando enfrentam problemas. Eles não melhoram continuamente seus conhecimentos proativamente. Na minha opinião, devemos sempre nos manter atualizados, e o conhecimento que coletamos nos seria útil para resolver problemas existentes e futuros. Obviamente, você deve alocar seu tempo com sabedoria para fazê-lo.
Isso também é semelhante à resposta de Dan . Alguns gerentes querem apenas que os desenvolvedores mergulhem rapidamente e desenvolvam o produto de acordo com os requisitos, sem pesquisar sobre os produtos existentes no mercado.
Em muitos casos, o offshoring custa mais dinheiro. Na minha empresa, é muito difícil conseguir novos funcionários, somos pressionados a terceirizar. Também é difícil conseguir contratados no local; há uma proporção de 3: 1 offshore para onshore que eles devem manter. Conseqüentemente, muitas equipes contratam uma dúzia de offshore e mal as utilizam, para conseguir 4 contratados no local.
Loops de feedback longos!
Isso acontece com todo mundo: você constrói algo que acha incrível, e acontece que você estava errado. Esse não é o problema. O problema é quanto tempo você gasta construindo antes de descobrir que deve parar.
No nível alto, você vê esse problema com longos ciclos de liberação. Se você construir por um ano sem feedback, estará apostando o ano inteiro. Quanto mais vezes você lança, menores são as suas apostas e melhor você joga.
Mas isso também acontece nos níveis mais baixos. Como desenvolvedor, gosto muito de análises frequentes de código (ou melhor, programação de pares) porque limita a quantidade de tempo que posso continuar fazendo algo estúpido antes que alguém diga: "Ei, há uma maneira mais simples!" Pelo mesmo motivo, eu gosto que meus testes de unidade sejam executados com rapidez e frequência, para que eu possa capturar e matar bugs antes que eles cresçam.
Depois de começar a perceber a importância de pequenos ciclos de feedback, você o verá em todos os lugares. Por exemplo, a noção militar do loop OODA .
Não é minha anedota, mas uma vez ouvi falar de uma loja que parou de fornecer café de graça aos seus desenvolvedores, dizendo-lhes que sempre que queriam tomar café, eles estavam livres para caminhar até a cafeteria mais próxima (algo como dez minutos cada viagem) e compre alguns.
Praticamente a definição de economia falsa.
Fornecer estações de trabalho de tela única porque um segundo monitor é muito caro . Mesmo que você economize apenas uma hora de trabalho por ano, uma segunda tela ainda é um bom investimento. Tenho certeza de que a minha me salvou muitas, muitas horas de trabalho.
Uma configuração de vários monitores pode tornar quase qualquer tarefa mais eficiente, não apenas tarefas de desenvolvimento. Três monitores são ainda melhores que dois, mas o efeito se torna menos pronunciado a cada tela extra.
Configurações para vários monitores:
Hardware mais barato fornecido a um consultor quando o consultor custa mais de 150 $ / hora .
Colocando em perspectiva um hardware melhor, pode pelo menos tornar o trabalho 30 minutos mais eficaz por dia. Isso daria 30min * 20 dias de trabalho por mês = 600min / mês = 10 horas / mês> mais que 1 dia de trabalho = 10 horas * 150 $ / hora = 1500 $
Agora, um consultor não seria mais eficiente se tivesse um computador de US $ 1500? Isso tornaria o consultor menos irritado?
Agora, o problema parece ser que existem dois orçamentos, um para o consultor e outro para o hardware do PC.
Meses de trabalho economizam dias de planejamento
(Não investe tempo suficiente no planejamento)
O mais prevalente suspeito é que os gerentes simplesmente não fornecem aos desenvolvedores as ferramentas necessárias para realizar seu trabalho com eficiência.
Basicamente, o ponto 9 no teste Joel .
"Atirar corpos (suficientes) para o problema" ainda pode ser usado em alguns lugares, infelizmente. A Lei de Brook contraria isso em The Mythical Man-Month , embora alguns exijam experiência para aprender esta lição. Geralmente, isso não é algo ao meu alcance para parar, já que a gerência pode acreditar na falsa afirmação sobre adicionar pessoas e não ter que pagar um preço por isso.
Reuniões diárias :
(meeting duration in hours) x (Y team members) x (average salary per hour) = ...
Comprar software de prateleira em vez de desenvolvê-lo internamente.
Tenho experiência em sistemas de gerenciamento de escala empresarial, focados em laboratórios de RH e biológicos.
Uma solução pronta para uso custa de 50 a 100 mil libras e precisa de mais desenvolvimento e personalização para atender aos requisitos de negócios.
A solução desenvolvida internamente levou (<6) meses para ser desenvolvida, com outros projetos sendo trabalhados em paralelo e utilizando um desenvolvedor já empregado.
Eu fui do setor público, onde tínhamos em funcionamento o LIMS (sistema de gerenciamento de informações de laboratório) desenvolvido internamente, para uma grande indústria farmacêutica internacional, onde a implementação de uma solução pronta para uso durou mais de um ano e não estava completa.
(6 meses de um desenvolvedor já contratado trabalhando em outros projetos em paralelo. Mais ou menos 10 mil. E isso não inclui os custos de suporte associados à solução pronta para uso). O ponto principal é que o sistema desenvolvido internamente estava realmente sendo usado! Então você tem o benefício de custo adicional associado a isso, que não posso calcular.
Eu concordo com sites básicos etc., por que se preocupar em desenvolver o seu próprio? Mas para qualquer sistema grande e complexo, e se você já possui habilidades internas, eu mesmo o construo .
Compra de produtos caros quando as alternativas de código aberto são melhores e gratuitas.
Quantas empresas usam o git? Quantas empresas usam algum controle de versão de baixa qualidade para empresas?
Sim, torna mais fácil encontrar programadores para manter o código, mas torna mais difícil encontrar bons programadores que não aprendem apenas a última palavra da moda que os contratará. Sim, torna o código de bits individual mais fácil de entender, mas também o torna tão rígido quanto um 2x4 e aumenta o volume de código que precisa ser entendido. Sim, é apoiado por uma grande corporação, mas disse que uma grande corporação inova lenta e burocraticamente.
Maus gerentes de projeto / líder de equipe.
Uma vez que uma pessoa incompetente tem o poder de arruinar o trabalho de um grupo de pessoas. No final, o projeto se sairia muito melhor sem as decisões da alta gerência (líder do projeto / equipe).
Escolha a opção "Apenas faça isso rapidamente, refatoraremos mais tarde".
Requisitos de usuário ausentes
Uma etapa importante e difícil de projetar um produto de software é determinar o que o cliente realmente deseja que ele faça.
Acredite ou não, às vezes essa parte está ausente ou está desatualizada. O custo é que se cria funcionalidades que o usuário final nunca solicitou.
Produtividade vale mais que criatividade
A criatividade é difícil de medir em geral e, na maioria das vezes, impossível de observar, não importa medir, quando se trata de desenvolvimento de software. A produtividade, por outro lado, pode ser medida (geralmente mal) e pode ser observada.
Como resultado, desenvolvedores que podem (escrever mais linhas de código | escrever código mais rapidamente | recitar technobabble mais rapidamente em resposta a perguntas | são mais visivelmente produtivos) tendem a ser mais valorizados do que aqueles que (usam menos linhas de código para resolver o mesmo problema | demore mais para escrever código, mas produza um produto mais confiável | entenda o assunto suficientemente bem para responder a perguntas de maneira clara e fácil de entender, inglês | resolva problemas de maneira criativa).
Todos os itens abaixo podem ser ruins quando usados ou não inadequadamente
software externo vs interno
Conformidade com a ISO 9001 (economia - uma atenuação do risco de perda de MSS se a qualidade do produto cair)
terceirização de desenvolvimento / controle de qualidade
procedimentos de desenvolvimento / construção / liberação / suporte
Ter muitos gerentes de entrega não faturáveis.
Há alguns anos, em nossa empresa, tínhamos vários projetos de grande orçamento em andamento e o recrutamento estava no auge. Naquela época, nossa empresa contratou muitos gerentes de entrega (muitos deles não eram de TI!) E muito poucos codificadores / testadores. A proporção de gerente para programador era literalmente 1: 2. Mais tarde, após a conclusão desses projetos, tivemos uma situação em que muitos desses gerentes (alguns deles eram preguiçosos de verdade) sentados no banco sem fazer nada. Tivemos um ciclo de avaliação em que todos obtiveram pouco / nenhum aumento (até nós, programadores esforçados, suspiro), para que a empresa não precise dispensar ninguém! Felizmente, a empresa percebeu essa situação e fez o RIGHTSIZING no primeiro trimestre deste ano!
Otimização antes da criação de perfil (também conhecida como otimização prematura).
Muitas vezes eu vi alguém buscar uma solução inteligente que desnecessariamente complica a manutenção e a legibilidade, porque é mais rápido. Naturalmente, o código não foi marcado como benchmark (nem mesmo com micro-benchmarks), tornando-se rapidamente "mais rápido com base no argumento mais persuasivo" sobre uma seção de código que provavelmente não afetou o desempenho geral de todo aplicação por muito.
Como tal, é uma economia muito falsa e o tipo de economia falsa que ocasionalmente envolve até os profissionais experientes.
Acesso limitado ou inexistente à Internet
Como é óbvio, seus funcionários usarão a Internet para jogar jogos no Facebook, e não pesquisar respostas para perguntas técnicas no Stackoverflow.
Na realidade, é claro que a Internet é um enorme aumento de produtividade e, embora possa ser apropriado usar algum tipo de filtro de site para sites realmente desonestos, há algo de errado se estiver bloqueando o arquivo leia-me do visual studio ou bloqueando as páginas de governo local de Telford por razões "turismo sexual"
Fazendo com que seus desenvolvedores usem um monitor de 15 polegadas e um PC de baixa especificação, pois é o padrão corporativo.
Monitores de tamanho razoável são baratos, rápidos de instalar e tornam os programadores mais produtivos, além de fazer com que seus programadores pensem que você se importa com eles.
Muitos Bacharéis em Administração de Empresas (ou similares), organizados hierarquicamente, que tentam aplicar o que eles acham da gerência moderna: incomodar as pessoas com "KPI" s, "SLA" e outras, exigindo "relatórios" (sem, é claro, se preocupando com a infraestrutura para gerá-los), para que os programadores percam seus dias preenchendo folhas EXCEL sofisticadas, relatórios do quarto trimestre e o que não e copiem de uma excelente nova ferramenta de gerenciamento e colem em outra (parece ser a regra que essas ferramentas nunca são integradas nem integráveis entre si) e participam de reuniões em que os relatórios e figuras são apresentados (e todo mundo se sente culpado por não ter conseguido preencher este ou aquele KPI).