Resumindo, lembro-me bem de como em 2013 me sentei e escrevi um pequeno site em um dia.
Era um site sobre os acontecimentos da minha cidade natal. Todos os eventos da próxima semana foram exibidos em uma página.
Fiz uma página com eventos e um pequeno painel de administração onde foram editados. Eu tinha um livro sobre PHP, então escrevi o site em PHP, conectei o banco de dados MySQL, coloquei em HTML e CSS e enviei para hospedagem compartilhada. O site foi usado e eu acrescentei diligentemente eventos todas as manhãs até entrar no exército, sem deixar ninguém para apoiar. Então o site morreu.
A ideia do site ainda parecia boa e decidi revivê-la. Parecia, pega e faz, mas o que jogou contra mim é que eu não lembrava muito do PHP, e já tinha conseguido ganhar experiência em desenvolvimento em empresas de muito grande, médio e pequeno porte.
Decidi começar a trabalhar e comecei a pensar.
Hmm, eu não posso simplesmente pegar PHP e escrever algumas páginas misturadas com HTML. Como vou oferecer suporte a isso sem OOP e divisão de código geralmente normal? Além disso, todo mundo diz que o PHP não é muito bom, e quantas novas versões surgiram!
Acho que preciso de algo mais moderno, Node.js ou Python. Mas eu, é claro, não vou escrever sobre eles apenas porque não são as melhores práticas. Talvez eu pegue algum framework, por exemplo, Django ou Express.js. No entanto, esses são os frameworks mais populares, mas existem outros, mais modernos, que você precisa procurar.
Tendo decidido que usaria Python ou Node.js, percebi que apenas fornecer páginas inteiras do servidor não é bom. Como posso fazer pop-ups de autorização ou carregamento dinâmico neste caso? Bem, não com jQuery, Deus me livre! Provavelmente usarei React ou Vue.js para escrever uma interface adequada baseada em componentes. Angular será um exagero, é claro. Usando o framework, eu preciso me conectar ao back-end via API, então eu uso o Django REST Framework ou algo parecido. É bom que o Express.js possa fazer isso sozinho, talvez valha a pena escolher o Node.js no final. No frontend, devo conectar o Axios, embora agora exista o Fetch, mas ele é compatível com todos os navegadores? Ou talvez eu deva usar o Svelte para aprender algo novo ao mesmo tempo ?!
Agora vale a pena configurar o IDE corretamente para respeitar os estilos de código, corrigir o recuo e nunca se esquecer de escrever triplo igual em vez de duplo. A configuração é difícil porque os plug-ins IDE discutem entre si e colocam ponto-e-vírgulas nos lugares errados.
Tendo descoberto isso, entendo que meu código precisa ser armazenado em algum lugar. Como já estou muito cansado, escolho o GitHub mais popular. Depois de configurar a autorização Git e ssh em meu computador, percebi que não sei qual sistema de ramificação usar. GitFlow é muito redundante enquanto estou sozinho, mas não compromete tudo para o branch master? Nunca se sabe, alguém vai entrar no projeto, ou se eu mostrar o repositório na entrevista, todos vão rir. Há também uma questão não ociosa sobre o que escrever nas descrições do commit e em qual idioma, mas vamos deixar isso para depois.
Vale a pena pensar em como implantar tudo isso na hospedagem. Se o back-end estiver em Python, você precisará criar um ambiente virtual e trabalhar nele. Por algum motivo, isso não funciona totalmente no servidor, algo sempre cai. A propósito, você precisa executar o aplicativo como um serviço para que tudo reinicie após uma falha! Tudo, agora com certeza levaremos Noda! Para fazer backup em Node.js, você precisa encontrar um hosting onde o Node.js funcione, e todos eles são baseados em nuvem e muito modernos. Lá você precisa configurar a implantação do projeto a partir do repositório no GitHub, mas não posso simplesmente conectar o branch master, porque então todas as minhas alterações irão imediatamente para o servidor, o que não é muito bom. Claro, você pode implantar manualmente, mas isso também está desatualizado. Talvez eu pense sobre o sistema de ramificação novamente.
Oh, ainda é o mesmo DB! Parece que o PostreSQL é bom e até trabalhei com ele, mas talvez eu precise de um banco de dados nosql? A questão permanece, como implantá-lo no servidor e como manter a mesma estrutura no meu computador e na nuvem sem perder dados, mas isso ainda está muito longe.
Ah, quase esqueci. Desde o front-end em frameworks JS, então você precisa pensar sobre Server Side Rendering, é importante que meu projeto seja indexado. Hmm, você não precisa usar Next.js ou Nuxt.js para isso? Preciso pensar.
Como já comecei a esquecer algo, preciso mexer em algum rastreador de tarefas para rastrear as tarefas e o progresso. Devo usar metodologias Scrum ou Kanban? Ou enquanto estou sozinho, posso fazer isso? Então, como você acompanha os prazos?
Eu também não pensei em TS, ES6, SASS, PUG, GraphQL, OOP, programação funcional, imutabilidade e tudo mais. E será necessário fixar o certificado HTTPS! Talvez eu deva chamar alguns amigos do time para acertarmos juntos? Então você não pode fazer sem Scrum e Pull Requests.
Por falar nisso, finalmente estava cansado e pensei que talvez devesse desenterrar um livro antigo sobre PHP e fazer tudo como em 2013, quando eu não tinha ideia de nada acima e metade das tecnologias ainda não tinha aparecido? Parece que estou pensando muito à frente. Vou resolver tudo isso depois, agora vou assistir a série e irei para a cama, e amanhã com certeza vou começar a programar.