sugerindo grandes alterações / reescrita como estagiário [fechado]


15

O contexto:

  • é um projeto interno (que eu não acho que muita gente usa)
  • é velho
  • estamos atualizando

As questões:

  1. abusa da estrutura mvc (sem uso de modelos, lógica de negócios nas visualizações, etc.)
  2. o que nos pedem é pequeno, mas devido à baixa coesão, temos duas opções:
    1. continuar a estragar as coisas
    2. mover grandes pedaços de código ou reescrever a coisa

As soluções (eu vejo):

  1. 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
  2. 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?


7
Considere pesquisar primeiro por que é como é. Pode haver boas razões sobre as quais você ainda não aprendeu.

Como outros estados, provavelmente uma boa razão - lembre-se de que isso pode ser dado a você porque é de baixa prioridade. Eles não têm tempo / orçamento para reescrever todos os projetos em que trabalham, aprendem a fracassar - provavelmente todos os outros têm.
Jonno

2
Lembre-se de que qualquer solução que você propor deverá atender a duas das três condições a seguir: boa, rápida e barata. Parece que você está apenas propondo o que considera "bom". Não vejo sua recomendação rápida ou barata para a empresa; portanto, você terá dificuldades para convencer as pessoas que devem pagar por isso.
Joel Etherton

1
Não sei por que você refatorou e reescreveu os textos como se fossem os mesmos. Eles não são.
CaffGeek #

Eu sei que eles não são, mas se você viu o aplicativo que você saberia como eles são semelhantes neste contexto
7983879342

Respostas:


5

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.


Eu acho que vou manter isso. Vou tentar limpá-lo um pouco antes de sair, mas parece que grandes mudanças não serão bem-vindas.
7983879342

Desculpe por parecer tão difícil sobre o assunto, mas a refatoração pode ser realmente difícil, a menos que você possa mostrar algum benefício tangível aos seus usuários, isso é bastante ingrato.
James Anderson

22

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.


11
+1, especialmente para "no mundo profissional, apenas porque algo foi implementado de forma errada não significa que ele está quebrado"
StuperUser

4
+1 e vice-versa ... apenas se torna algo implementado corretamente, não significa que funcione.
Joel Etherton

11

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.


1
+1 para obter baixo benefício em uma grande reescrita de um aplicativo interno de baixo uso. Seu tempo poderia ser mais rentável usado em outro lugar (a menos que eles querem usar isso como um exercício de treinamento para você)
uɐɪ

10

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.


4

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.


2

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.


2

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 :

Sempre deixe o acampamento mais limpo do que o encontrado.

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.


1

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á.


0

A maioria das alterações ocorre de forma incremental, como regra geral.

Algumas coisas a ter em mente;

  • Qual é o histórico do aplicativo?
  • Por que está feio hoje?
  • Qual é o benefício das mudanças arquiteturais?

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.


0

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.

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.