O contexto:
- é um projeto interno (que eu não acho que muita gente usa)
- é velho
- estamos atualizando
As questões:
- abusa da estrutura mvc (sem uso de modelos, lógica de negócios nas visualizações, etc.)
- o que nos pedem é pequeno, mas devido à baixa coesão, temos duas opções:
- continuar a estragar as coisas
- mover grandes pedaços de código ou reescrever a coisa
As soluções (eu vejo):
- continue trabalhando com ele, ignore as melhores práticas a favor de serem concluídas em breve e não introduza novos erros refatorando / reescrevendo
- refatorar / reescrever
Acho que minha pergunta é realmente: se eu quero fazer grandes alterações neste projeto, como proponho isso sem insultar ninguém? Ou seria melhor eu simplesmente seguir o fluxo, mesmo que isso signifique fita adesiva (metafórica) às vezes?
refactoring
communication
internship
rewrite
7983879342
fonte
fonte
Respostas:
OK Aqui vai.
Você acha que o aplicativo está mal estruturado e mal escrito.
O cliente pensa que faz o trabalho.
Você deseja reescrevê-lo por nenhuma outra razão senão melhorar sua "beleza interna".
Portanto, você está pedindo ao cliente que gaste dinheiro para fazer com que o aplicativo faça exatamente o que faz agora - apenas as partes que o usuário não vê ou entende serão, de alguma forma, "melhores".
A principal objeção ao código mal estruturado e mal escrito é que é difícil de entender.
O código é difícil de entender e possui funcionalidades e recursos que só podem ser facilmente implementados em um aplicativo mal estruturado. Portanto, a menos que você seja muito bom nisso, o novo aplicativo não fará exatamente o que o aplicativo atual faz e, porque você não entendeu completamente o que o código original estava fazendo, provavelmente estará fazendo errado.
Portanto, seu cliente agora gastou muito dinheiro para obter um aplicativo significativamente pior que o aplicativo original. Você não vai ser popular!
Felizmente, suas faculdades mais experientes estão preparadas para fazer graça com você (provavelmente porque cometeram o mesmo erro quando estavam começando, e podem até ter tido o infortúnio de obter a aprovação da gerência para um projeto tão ruim).
Portanto, meu conselho seria manter a antiga base de código em execução e manter-se quieto. O cliente quer apenas um sistema que funcione, ele realmente não se importa se você acha que o código é feio.
fonte
Propor suas alterações. Seja claro no caso de negócios de cada um: Por que a mudança proposta ajudará o sistema como um todo? Caso contrário, espere recuar. Por que gastar dinheiro consertando algo que não está quebrado? Razões como tornar o sistema mais extensível e separações de preocupação podem ser válidas (dependendo de quem você está falando), mas 99% das vezes, apenas dizer "não foi implementado corretamente" não levará a lugar algum. Certifique-se de agregar valor ao projeto e não apenas propor fazer o trabalho (mesmo que ele limpe o código).
Infelizmente, no mundo profissional, apenas porque algo foi implementado de forma errada não significa que ele está quebrado e, portanto, não precisa ser consertado. Além disso, ao corrigi-lo, você pode apresentar problemas imprevisíveis que podem impactar outras áreas do projeto.
fonte
Lendo sua pergunta, estou realmente cético de que reescrever o aplicativo vale a pena. Talvez você não tenha se incomodado em defender a questão na sua pergunta. Mas qual a probabilidade de que o benefício da reescrita valha o custo se for um aplicativo interno antigo e raramente usado? O custo de uma reescrita provavelmente será mais do que a soma de todas as atualizações e patches que ela terá.
Se você acha que isso não é verdade, precisará defender mais do que fez aqui.
Quanto à melhoria do aplicativo, você pode ter alguma chance de refatorar um pouco que acontece naturalmente no decorrer de suas atualizações.
fonte
Você é estagiário. Presumivelmente, você é novo em folha. Eles provavelmente suspeitam de você como um idiota.
Então, ao fazer sugestões, pise levemente . Seja humilde e despretensioso. Deixe suas idéias fluírem de maneira conversacional, enquanto você permite que outros membros também discutam suas próprias idéias sobre a base de código e sob quais pressões elas estejam (pode haver uma boa razão para não ter sido feito um esforço para limpar as coisas).
Você quer ganhar a confiança deles. Você faz isso escrevendo um bom código para as tarefas que você recebe. Escreva de maneira limpa, use as práticas recomendadas que você gostaria que fossem implementadas, mas apenas naquilo que lhe foi designado. Provavelmente serão coisas pequenas, coisas que o resto da equipe provavelmente acha insignificantes. Faça bem essas coisas. Ilumine a esquina onde você está e, à medida que a equipe revisar seu código de maneira favorável, suas idéias também crescerão em estatura.
Eventualmente , ao demonstrar sua competência e conhecimento, você poderá fazer uma ou duas sugestões.
fonte
Eu faria totalmente essa sugestão, mas apenas para um colega desenvolvedor . Eu não sugeriria isso à gerência, como imaginaria que a gerência veria isso como algum tipo de superação de limites.
Depois de fazer a sugestão para um desenvolvedor com quem você está trabalhando, eles provavelmente terão alguns bons motivos para saber como é a base de código. Os motivos podem variar de "não, na verdade o código é bom, você simplesmente não entende o MVC (e é por isso que você é estagiário)" a "é uma ótima idéia, vamos arquitetar o novo aplicativo juntos!"
Lembre-se de que a resposta para refatorar esse aplicativo provavelmente não será; Eu nunca gostaria que um estagiário assumisse a reescrita de um aplicativo interno (o que acontece quando seu estágio é concluído e a reescrita está apenas pela metade?) Além disso, provavelmente há coisas mais importantes nas quais você pode estar trabalhando do que bisbilhotar um aplicativo interno .
Mas nunca é demais perguntar aos seus colegas e, se você o fizer, aprenderá algo. E isso, 7983879342, é sobre o que é um estágio.
fonte
Aconteça o que acontecer, espero que você leve a seguinte mensagem. Como algumas das respostas acima indicaram, algumas vezes, uma reescrita de código, pelo melhor dos motivos técnicos, às vezes é inviável por motivos de negócios / custo. Muitos programadores vivem na solução técnica e se recusam a considerar que sua busca pessoal por elegância / legibilidade / melhores práticas técnicas deve ser equilibrada pelas necessidades da empresa de realizar as tarefas. Na minha experiência pessoal, o cara que não encontra esse equilíbrio (de qualquer direção) é frequentemente visto como um passivo dentro da equipe.
Porém, não pare de questionar as coisas, mesmo que você tenha algumas contrariedades, é o modo como aprendemos e crescemos.
fonte
Outras respostas falaram muito sobre a política da sua situação, e eu tendem a concordar. A menos que você possa apresentar um caso comercial atraente, provavelmente não haverá reescrita nos cartões.
No entanto, isso não significa que você deva esquecer a regra dos escoteiros :
Se enquanto estiver implementando algo nessa base de código, você pode encontrar uma maneira de limpar algum aspecto do design ou implementação, isso é algo que você deve considerar. Você provavelmente não precisará reescrever o aplicativo inteiro para fazer melhor uso do modelo MVC e, se estiver implementando alguma nova lógica de negócios para uma visualização específica, considere mover a lógica da visualização antiga para o modelo e adicionando sua nova lógica a isso.
fonte
Como outros já disseram, peça a outro desenvolvedor (um familiar com este aplicativo) para fazer uma rápida explicação, apenas para que você possa entender como / por que a implementação. Explique que, embora você possa entender os aspectos tecnológicos, você deseja conectar os pontos aos requisitos de negócios (os requisitos de negócios superam todos).
Depois de obter essas informações, você poderá fazer sua avaliação. Se você pessoalmente pensa que deve ser reescrito, mas não acha que os outros o verão como um bom uso do tempo, considere-o como um projeto pessoal. Mesmo se houver uma hora aqui / ali quando você tiver tempo de inatividade, faça a implementação "corretamente". Quando você terminar, apresente ao (s) outro (s) desenvolvedor (es) como "ei, eu senti que isso poderia ajudar a limpar um pouco, então fiz alguns trabalhos durante o meu tempo de inatividade. O que você acha?" Não pressione a mudança nelas - apenas ofereça a elas como um "ei, vocês gostam disso?" e vá de lá.
fonte
A maioria das alterações ocorre de forma incremental, como regra geral.
Algumas coisas a ter em mente;
Uma boa estratégia é trabalhar nas pequenas coisas e fazer uma tonelada de perguntas sobre coisas (perguntas que você não pode aprender com o Google ou a fonte, não perca tempo com as pessoas). Depois de se sentir confortável com a base de código e com os desenvolvedores, você deve ter uma boa idéia de por que o código é do jeito que é. Às vezes, é apenas "Sim, tivemos que cortar algo juntos e empurrá-lo para fora da porta". Se você puder propor mudanças leves em pequenas partes do sistema que ocorrem à medida que você avança no trabalho normal, isso terá mais tração do que reescrições radicais.
fonte
Não há problema em sugerir uma reescrita se você pedir bem e apresentar um argumento lógico (não apenas um palpite ou a melhor maneira de fazê-lo). Há uma grande chance de que a reescrita de um aplicativo de baixo uso seja abatida, e há uma boa chance de que quem escreveu originalmente o sistema ainda esteja por aí (e seja mais alto na hierarquia que você) e não seja gentil com as críticas.
Portanto, não diga "Precisamos reescrever este sistema horrivelmente projetado que viola os princípios básicos da MVC", faça-o como uma pergunta aberta aos superiores apropriados (pessoas diretamente acima de você). Algo como "Gostaria de saber se a reescrita do sistema no modelo MVC pode economizar muito tempo a longo prazo. O que você acha? Aposto que podemos reduzir pela metade o tempo de manutenção com uma grande reescrita (em duas semanas, por exemplo) incorpora o modelo MVC, o TDD, etc. foi feito e, após dois meses de manutenção de rotina, ficaremos quites ". A resposta pode ser: não, achamos que isso não é necessário - discordo de suas estimativas de tempo e da probabilidade de o novo sistema ser um substituto adequado. Ou a resposta pode ser: vá em frente, mas lembre-se se o seu novo sistema não Não funcione tão bem / melhor que o novo sistema no prazo que você propôs que as pessoas o culparão. E mesmo que o sistema seja pouco usado; pode não ser aceitável parar de atualizá-lo com pequenas correções durante o período de reescrita.
fonte