Ao trabalhar em um produto que precisa ser feito em breve e que funcione bem, quando é bom sacrificar a manutenção e a "arrumação" do design, a fim de fazer a coisa sair rapidamente e rapidamente? E até que ponto tudo bem, especialmente quando as técnicas usadas para torná-lo "puro" são novas para mim?
15
Respostas:
Lembre-se de que você está empregado para apoiar um negócio. De alguma forma, seu software está afetando os resultados da empresa. Você precisa encontrar um equilíbrio entre uma solução tecnicamente perfeita e o tempo de comercialização do seu produto e quanto benefício a empresa obterá dele.
Na minha experiência, os desenvolvedores costumam ficar preocupados com a perfeição técnica. Porém, existem razões muito válidas para sacrificar atributos de qualidade, como manutenção ou desempenho, a fim de obter um produto mais rapidamente. Depende do negócio e do produto. Mas "sempre busque um design perfeito" é uma abordagem simplista demais.
No final do dia, a única coisa que importa é o valor para os negócios. Descubra como maximizá-lo a curto e longo prazo e almeje esse objetivo.
fonte
You need to strike a balance between a technically perfect solution, and the time to market of your product
Eu discordo, isso está além da responsabilidade de um desenvolvedor. Eles absolutamente devem permanecer cientes disso, mas devem fornecer as informações a alguém responsável por tomar uma decisão comercial.O termo "dívida técnica" é muito útil para ajudar a informar decisões de negócios como esta. Qualquer trabalho que você não faça agora causará uma quantidade de trabalho mais tarde. Assim como nas finanças, assumir uma dívida é arriscado, mas pode valer a pena alavancar se você puder pagar a dívida mais tarde.
Dito isto, a dívida técnica não é uma proporção de 1: 1 no momento da recuperação. Os erros são mais caros de corrigir após o lançamento, e o impacto na produtividade futura ao desenvolver a partir de um sistema legado confuso pode ser escandaloso. Você pode estar gastando o dobro do tempo corrigindo seus erros, ou talvez 1.000 vezes mais horas de trabalho e recursos.
Seu trabalho nesta decisão é entender as ramificações das peças específicas que você está considerando e depois comunicar essas ramificações às pessoas que tomam a decisão de negócios. Essa habilidade de estimativa específica pode exigir muita pesquisa e trabalho de sua parte para se desenvolver bem agora, mas será inestimável durante sua carreira.
fonte
Quando é aceito e as consequências são entendidas pelo proprietário / cliente / usuário.
Um encanador deve remover um depósito de lixo para reparo. Eu quero usar a pia nesse meio tempo, mas ele teria que me cobrar pelo tempo e materiais para colocar em tubos temporários usando fita adesiva que poderia quebrar. Isso também atrasará a remoção do descarte para a oficina. Se eu aceitar o faturamento adicional com o entendimento de que arrisco um entupimento. Levará um dia mais para consertar o descarte e um atraso ainda maior antes que ele possa devolvê-lo, isso é aceitável.
Você pode estar dentro do prazo e do orçamento agora, mas sacrifique / arrisque uma cobrança ainda maior a longo prazo. Pode ser difícil fazer com que pessoas não técnicas entendam, mas é para isso que serve a equipe de vendas.
fonte
Muitas pessoas desistem rapidamente ao aprender algo novo e apenas fazem isso da maneira que sempre fizeram. Se esse for um padrão, seu código não apenas sofrerá, mas suas próprias habilidades como programador permanecerão limitadas.
Ainda assim, no final do dia, o único software de sucesso é aquele que é enviado.
fonte
Após o prazo final passar. E mesmo assim, é um grau muito baixo de "OK". Após o prazo final, é claro que é discutível. Porque essa é a natureza de prazos rígidos.
Além disso, isso incorre em dívida técnica. A cada hora / dia que você gasta cortando cantos na mentalidade de fazer coisas mais caras, custará aproximadamente o dobro do tempo na próxima vez que você precisar tocar nesse projeto. Se você precisar, é melhor se apressar, enviar e imediatamente começar a consertar toda a sua fita adesiva. Voltar a um projeto hack-eyed anos depois é um pesadelo. Se você nunca mais tocá-lo novamente, que assim seja, ninguém se importará. Mas a única vez que deixei um projeto para sempre é quando troquei de emprego.
Lembre-se, porém, que o cronograma dessas coisas é o trabalho do gerente de projetos. Se você é apressado para cumprir um prazo, a culpa é do MP. Faça certo, faça-o uma vez e faça-o com calma e corretamente. A vida é muito curta para qualquer outra coisa.
fonte
Todas as outras respostas postadas aqui são boas. Gostaria de acrescentar que, como desenvolvedor do projeto, você é o administrador (protetor) do design.
Se você não defender a solução técnica adequada, ninguém mais prometerei. Você deve sempre argumentar por fazer as coisas da maneira certa com seu chefe, e o primeiro-ministro sempre deve argumentar a favor do prazo.
Felizmente, se você estiver em uma organização razoável, será alcançado um compromisso que ajude a cumprir os prazos e também não se afaste muito do design ao mesmo tempo.
Com isso dito, não assuma que, se o prazo do PM não for atingido, o mundo terminará e o projeto falhará. Geralmente não é tão preto e branco e, na maioria das vezes, o prazo do PM é suave e tem espaço para ajustes.
Quase todos os prazos em que estive dentro do cronograma da MP eram principalmente artificiais. Eles vão defendê-lo com unhas e unhas e fingem o contrário, porque se o PM adiar o prazo, o PM parecerá ruim!
Só porque o PM parece ruim não significa que o projeto falhou. Se você entender isso, ficará surpreso com o quanto você consegue dobrar um PM.
fonte
Cite o cliente para o design elegante. Se essa cotação for inaceitável para eles, descreva quanto custará cada componente (geralmente custa == tempo de desenvolvimento). Deixe-os retirar itens "à la carte", se assim o desejarem. Muitos apostam no tempo de poupar para coisas "inúteis", como testes e design. Explique os riscos dessa abordagem, mas se eles aceitarem o risco, proceda como indicado. Se eu só tiver dinheiro suficiente para comprar um carro velho, comprarei um carro velho, mesmo que eu saiba que provavelmente quebrará em 8 meses. Seu cliente tem a responsabilidade de ponderar esses riscos e aceitar as consequências.
A única coisa que você não deseja fazer é informar ao cliente que ele possui um software muito bem projetado, quando paga apenas por (e recebe) um lixo não testado. Se algo der errado (o que provavelmente ocorrerá), no primeiro cenário, eles parecerão ruins, mas no segundo cenário, você parecerá ruim.
fonte
Nunca é bom, mas às vezes você precisa se comprometer para finalizar um projeto. A triste realidade é que a maioria dos empresários é completamente ignorante e está mais do que disposta a sacrificar a manutenção mais tarde por algo agora. O truque é saber como encontrar um equilíbrio; talvez o projeto não seja tão elegante quanto poderia ser, mas contanto que não seja um porco, é um compromisso digno.
fonte
Isso depende inteiramente da pergunta "Você ou alguém mais deseja modificá-lo mais tarde?" Se sim, você deve tentar ter um design "elegante", caso contrário corre o risco de jogar tudo fora e começar de novo 6 meses depois.
Obviamente, você pode levar muito longe a limpeza, mas geralmente um pouco de limpeza o poupará mais tarde.
fonte