Bacana demais! Parabéns pelas suas iniciativas, e mais ainda pelas "finalizativas"! Muita gente começa muita coisa mas não termina. Finalizar 1 projeto vale mais do que ter começado 100 projetos e não ter terminado nenhum! Ter colocado no ar dois projetos já te deixa muito à frente de muita gente!
Sobre sua pergunta, é muito difícil responder como definimos o nível de um dev.
Alguns pontos a se considerar:
-
Trabalhar sozinho é diferente de trabalhar em equipe.
Não é só saber fazer.
Tem gente que diz pra ser considerado um Sênior, você tem que saber ensinar. -
Relacionado ao 1, temos que lembrar que outras pessoas trabalharão com nosso código. Por isso existem as métricas de qualidade de código. Fazer o site funcionar é uma coisa. Fazer outras pessoas conseguirem entender nosso código, continuar de onde paramos, e adicionarem mais coisas, é outra. Tem muita gente que acha que tem um código limpo, mas na verdade é um espaguete que só ela entende. A pessoa usa abstração? SOLID? Design Patterns? Existe duplicação de código? Quantos code smells? Qual a quantidade de "What The Fuck"s por minuto que outras pessoas soltam ao ler o código daquela pessoa? Se forem poucos WTFs, indica um nível maior de senioridade. Aqui, até a qualidade dos seus commits conta! São vários commits pequenos? Commits resolvem o problema de forma direta? As mensagens dos commits são adequadas?
-
Existe a qualidade de código mencionada no 2, e também a qualidade de arquitetura e engenharia do sistema. DDD, DevOps, AppSec, mensageria, protocolos adequados, modelagem de BD, arquitetura de microsserviços, desacoplamento, automações, testes unitários, testes de integração... Muitas dessas coisas nem a faculdade ensina e se pega com o tempo, e principalmente com contato com outras pessoas mais experientes.
-
Além de saber "desenvolver aplicações", tem gente que diz que também temos que ter as manhas em algoritmos e estruturas de dados. Podemos resolver um mesmo problema de várias formas diferentes, mas será que estamos fazendo da melhor forma? Por exemplo, estamos usando hashmaps quando adequado, para diminuir a complexidade computacional e a complexidade cognitiva do leitor?
Estamos paralelizando chamadas assíncronas para otimizar o tempo de carregamento das páginas? E se precisar resolver um problema menos comum que um CRUD, seríamos capazes? -
Resumindo os pontos 2, 3 e 4: tem gente que diz que o junior adiciona poucas linhas de código, enquanto o pleno adiciona muito mais linhas que o Junior, no mesmo tempo. E o sênior... retira linhas de código! Seguindo essa ideia de otimizações, adequações, etc.
-
Também há pessoas que dizem que um sênior é capaz de fazer uma aplicação inteira, sozinho, partindo do zero. Ele tem conhecimento de todas as etapas e áreas relacionadas ao desenvolvimento. Desde a criação do CI/CD na plataforma de DevOps, até o deploy da aplicação na Google Play (se for um app mobile, por exemplo).
-
Além da parte técnica, ainda há todas as outras partes relacionadas a desenvolvimento de projetos como um todo: gerenciamento de tempo (previsão assertiva de entrega); priorização de tarefas; divisão de um problema maior em subtarefas; comunicação com clientes, stakeholders e pessoas de outras áreas (designers, jurídico, etc.)... Enfim, tudo que ajuda a fazer um sistema valioso e robusto, mas que não é diretamente relacionado à parte técnica. Isso também afeta a senioridade dos desenvolvedores. Nas descrições das vagas, você encontrará requsitos do tipo "experiência com metodologias ágeis", por exemplo.
Bom, essas são algumas das coisas que eu lembrei que definem a senioridade de alguém na nossa área.
Então não é tão simples quanto "tenho 5 anos de experiência" ou "já coloquei 20 projetos no ar" ou "Consegui resolver todos os problemas do LeetCode" ou "Eu criei o Facebook no primeiro ano da faculdade". Não existe uma fórmula mágica que define a qualidade/senioridade holística de um desenvolvedor... Apesar de que essa seria uma ótima tese de doutorado!
Pensando assim, só nos resta seguir em frente e continuarmos estudando, e evoluindo, independente de qual nível estamos. Seja focando em nos especializar naquilo que já sabemos, seja aprendendo coisas novas que não tivemos contato ainda. Siga em frente com suas empreitadas! Boa sorte!