Veremos aqui como criar um projeto do zero, e a primeira coisa que devemos fazer é desligar o computador! Isso mesmo!

Se você simplesmente sentar na frente do computador e tentar criar um projeto, você não vai fazer nada.

Para entendermos melhor, utilizaremos como exemplo um cadastro de imagens. A ideia é logar na plataforma e enviar imagens para salvá-las. Mas pegar essa ideia e simplesmente ligar o computador para começar a codificar está errado!

Geralmente quando você tem uma ideia, essa sua ideia é muito superficial. Primeiro precisamos organizar as ideias, fazer um planejamento, colocar tudo no papel, desenhando o sistema.

Toda construção de software, sistema, site, seja o que for, tem etapas de construção: planejamento (que é de extrema importância), codificação e teste. Aqui focaremos apenas no planejamento.

Se você pular o planejamento, terá muito mais trabalho na parte de codificação, pois a tendência de retrabalho é muito maior.

Desenhando o sistema

Continuando com o exemplo do cadastro de imagem, precisamos entender qual a ação principal desse sistema. Como é cadastrar imagens, a primeira entidade do projeto será image.

Essa imagem estará associada a algum usuário, que a enviará para o servidor - o banco de dados da aplicação. Então teremos uma entidade usuário.

A primeira coisa que o sistema precisa ter é um cadastro de usuário. Com isso identificamos uma funcionalidade do sistema.

Depois disso teremos o cadastro de imagem e a associação do usuário com a imagem. Então já temos outra funcionalidade do sistema, que é enviar uma imagem a partir de um usuário.

Como teremos um usuário enviando imagens, precisaremos autenticar esse usuário para saber quem está enviando. Com isso temos mais uma funcionalidade no sistema: autenticação de usuário.


Já temos duas entidades e três funções, e já começamos a identificar as prioridades do sistema, quais etapas que tem pré-requisitos, pois não tem como enviar uma imagem se não tiver um usuário.

Com o desenho do sistema conseguimos entender como refletirá no banco de dados o usuário, a imagem e o relacionamento entre eles, porque cada imagem está relacionada a um usuário.

A partir daí você já começa a perceber que qualquer sistema que precisa armazenar informações tem que ter um banco de dados, e você precisa começar por ele.

Mas calma aí! Temos uma visão pequena do sistema. Precisamos pensar grande, uma visão completa do sistema. É aí que muita gente erra!

Precisamos ter uma visão geral, o quanto ele pode crescer. Podemos colocar toda a modelagem em risco, trazendo problema futuros. Amanhã podemos ter comentário, curtida numa imagem, ranking de imagem mais curtida, tudo isso englobando uma visão macro.

Essa visão facilita o planejamento do sistema e evitar gambiarra, código ruim e modelagem errada. Precisamos deixar o terreno preparado para quando chegarmos nesse ponto.

Veja como já precisamos de mais duas tabelas: curtidas e comentários. Isso nos leva a pensar que: se temos curtidas, precisamos saber quem curtiu e que imagem curtiu. Com isso temos mais uma tabela de relacionamento. O mesmo pensamento vale para os comentários.

Criamos o nosso banco de dados preparando a estrutura do projeto final com essas tabelas, mas nesse momento inicial elas não precisam ser usadas.

Outra ideia é o compartilhamento de imagens. E se agora quisermos compartilhar as imagens? Está vendo como as ideias surgem e o uso do papel e caneta nos ajudam?

Agora temos requisitos! As imagens serão públicas ou privadas? Quem define é o dono do sistema com o atributo de privado ou público. Toda vez que cadastrar uma imagem teremos que verificar seu atributo. Caso seja privado, precisamos liberar para determinado usuário acessar.

Por exemplo, se compartilharmos as imagens com a família, precisamos identificar quem é a família no sistema, ou seja, a família será cadastrada. Agora temos mais funcionalidades e mais requisitos.

O software é infinito. Você pode fazer o que a sua imaginação te permitir. Mas tome cuidado com isso: se planejar um projeto gigantesco, jamais conseguirá concluir.

Agora que temos a visão macro do sistema, precisamos definir o MVP (Mínimo Produto Viável), que nada mais é do que o core da aplicação, ou seja, aquilo que ela foi criada para fazer.

Por exemplo, não conseguimos comentar uma imagem que não existe, nem dar like. Então o mínimo desse projeto é o cadastro de usuário e da imagem, e a sua associação dessas duas entidades.

Partiu codificar!

Com o projeto planejado, agora podemos implementar. Agora sim podemos ligar o computador! É só seguir o roteiro desenhado.

Depois de tudo pronto e funcionando, aí sim podemos ir à documentação criada e ver qual o próximo passo: like, comentário e compartilhamento de imagem.

E o front-end?

Com o projeto funcionando podemos ir para o front-end. Não podemos perder tempo deixando o sistema bonito se ele não é funcional. Essa é a missão do programador.

Se você não é bom com design, recorra a templates na internet que podem ser copiados.

Recapitulando: as etapas para criar um projeto do zero são:

  1. Planejamento;
  2. Implementação do banco de dados, e teste;
  3. Codificação, e teste;
  4. Embelezamento, e teste;

Sempre que novas funcionalidades forem implementadas no projeto, essas etapas serão repetidas, sempre testando ao final.