Executando verificação de segurança...
1

A Primeira Missão de um Júnior: Um Desafio Cheio de Dúvidas

Recentemente, consegui meu primeiro "sim" como desenvolvedor Júnior e, desde então, enfrentei vários desafios com demandas menores. Apesar disso, sempre resolvi o que me passaram de forma rápida. O pessoal parece estar gostando bastante da minha desenvoltura profissional.

Porém, recentemente me designaram um sistema grande e complexo para desenvolver. E sim, aceitei o desafio; na verdade, não tinha escolha: era aceitar ou aceitar.

Esse projeto consiste em recriar um sistema legado que está em produção usando Laravel 5.8 e migrá-lo para a versão Laravel 11. Até aí, tudo bem...

O problema é que as tabelas do banco de dados foram criadas sem seguir os padrões esperados pelo framework. Isso é algo que, pelo que venho estudando, consigo contornar nos models, sem grandes complicações.

Contudo, vou precisar configurar o fluxo de autenticação do projeto e, ao rodar o comando composer require laravel/breeze --dev, surgem algumas dúvidas. Ele cria migrations que geram tabelas, mas já existem tabelas no banco atual que conflitam, incluindo a tabela que gerencia as migrations executadas no projeto com Laravel 5.8.

Queria saber de vocês: qual seria a melhor estratégia para resolver esses problemas? Podem compartilhar ideias comigo?

Minha vontade de acertar nesse projeto é enorme. Sem dúvida, este será um divisor de águas na minha carreira dentro da empresa.

Carregando publicação patrocinada...
2

O que EU faria é o seguinte:

1- Desenvolveria o sistema novamente utilizando todos os padrões do Laravel de boas práticas, nomes de controllers, models, migrations, relacionamentos etc. Inclusive em Inglês, pois isso ajuda 1000% em tudo, além de demonstrar para a empresa a qualidade do meu serviço.

2 - Faria tipo um script para migrar as informações do banco. Retirar as informações do banco original e migrá-las para o novo. Pode fazer isso usando, por exemplo, DBeaver, exportando csv e tudo mais, vai depender do seu caso. Primeiro crie o sistema no padrão e depois pense em como migrar as informações. Dependendo de qual banco você usa, você pode criar um script para automatizar tudo isso fazendo um backup já na estrutura das suas tabelas e depois é só restaurar no seu sistema.

3 - Sendo feito dessa forma, já arruma esse sistema de uma vez, e deixa tudo no padrão Laravel. Vai ser fácil e rápido? Com certeza não, nunca é. Mas só de estar consertando tudo isso, já vai demonstrar um bom trabalho.

2

Cara, primeiramente, parabéns pelo trampo! Essa fase de resolver demandas rápidas e conquistar confiança é essencial pra te destacar, e pegar um projeto grande assim logo de cara mostra que a galera confia no teu potencial.

Agora, sobre o desafio: dá pra resolver isso tranquilo. A questão das tabelas fora do padrão é chata, mas nada que um ajuste nos models não resolva. Você só precisa configurar o table, primaryKey, e, se necessário, definir relações nos models pra seguir o esquema legado. Isso já deixa as coisas alinhadas.

O ponto crítico mesmo é o conflito com as migrations do Breeze. Quando você instala o pacote, ele vem com umas migrations padrão que criam tabelas como users, password_resets, etc. Como seu banco já tem essas tabelas, a solução é deletar essas migrations logo de cara, ou então só comentar tudo nelas pra evitar conflitos. Não precisa seguir à risca o que o Breeze gera, só use o que realmente faz sentido pro teu projeto.

Sobre a tabela migrations, verifica se ela já existe no banco legado. Se existir, você vai precisar dar um jeito de sincronizar isso. Tipo, insere manualmente nela os registros das migrations que já foram aplicadas no sistema atual. Isso vai evitar que o Laravel tente rodar de novo algo que já tá lá.

Outra dica: antes de meter tudo em produção, testa localmente com uma cópia do banco legado. Assim você garante que nada vai explodir na hora H.

Por fim, relaxa. Esses ajustes são chatos, mas você tá no caminho certo.

1

Além dos comentários dos colegas abaixo, aqui vai uma dica: sempre alinhe com sua liderança (TL, arquiteto, etc.) o trabalho que está sendo realizado e a sua complexidade. Isso evita surpresas futuras, como: "Como assim vai levar todo esse tempo para fazer isso?" ou "Essa tarefa está demorando demais." Minha sugestão é sempre dividir o trabalho em tarefas menores e entregáveis, para que isso não prejudique seu desempenho. No mais, acredito que você está indo muito bem. Continue assim.