Problema
Atualmente o conteúdo da 4noobs está distribuído em diversos repositórios. Para quem já tem alguma experiência com programação, isso normalmente não é um problema.
Por exemplo, alguém que deseja aprender Flutter provavelmente sabe que antes precisará aprender Dart. Da mesma forma, quem quer estudar PHP costuma entender que conceitos como HTTP, lógica de programação, algoritmos e estruturas de dados são fundamentos importantes antes de se aprofundar na linguagem.
No entanto, esse caminho nem sempre é evidente para quem está começando do zero.
Muitos iniciantes chegam à comunidade sem qualquer contato prévio com desenvolvimento e, hoje, isso tem se tornado ainda mais comum com a popularização das IAs. É fácil encontrar pessoas que começam a criar aplicações utilizando ferramentas de IA sem compreender os conceitos fundamentais que estão por trás do código, o mesmo vale para pessoas em transição de carreira (como é o meu caso :V)
Nesses casos, surgem dúvidas como:
- Por onde eu começo?
- Qual repositório devo estudar primeiro?
- Quais conhecimentos preciso adquirir antes de aprender determinada tecnologia?
- Existe uma sequência recomendada de estudos?
Sem uma orientação inicial, alguns acabam estudando assuntos em uma ordem que dificulta o aprendizado ou até desistem por não saber qual deve ser o próximo passo. Daí pode resultar em pouca adesão dos membros da comunidade aos projetos da he4rts :/
Proposta
A ideia não é substituir os repositórios existentes nem criar um curso completo, mas oferecer um ponto de entrada para novos membros, organizando uma sequência sugerida de estudos e indicando os conhecimentos prévios recomendados para cada tecnologia.
A solução mais simplória é um roadmap simples, estilo roadmap.sh, só para dar um norte à galerinha mais perdida. Talvez tenha algo até mais simples, como um markdown no GitHub, enfim.
Um exemplo de organização seria:
Fundamentos
Todos, ao meu ver, têm que passar por aqui pelo menos uma vez.
Antes de escolher uma linguagem ou framework, o iniciante poderia ter contato com conceitos como:
- Lógica de programação
- Algoritmos
- Estruturas de dados
- Git e GitHub
- Terminal/Linux
- Banco de Dados (Poderia até ir para especializações também, mas pelo menos o básico de como funciona um banco deveríamos ter aqui).
- Como funciona a Web (HTTP, Cliente x Servidor, APIs, etc.)
Linguagens
Após concluir os fundamentos, o usuário poderia escolher uma linguagem, por exemplo:
Aprender os conceitos básicos da linguagem, antes de se aprofundar ou usar um framework.
- PHP
- Python
- Java
- JavaScript
- C#
- Go
- Rust
- etc.
Especializações/frameworks/quaisquer outra coisa.
Depois da linguagem, seguir para áreas mais específicas:
Aqui o céu é o limite :D.
- Flutter
- React
- Vue
- Laravel
- Spring Boot
- Docker
- Kubernetes
- Cloud
- etc.
Talvez incluir projetos da comunidade ou sugestões de projetos para cada etapa para melhorar o entendimento ou até mesmo servir como autorreflexão do que tu sabe fazer ou não. A própria IA pode fazer isso, mas enfim, só uma sugestão.
Benefícios
- Facilita a entrada de novos membros.
- Ajuda iniciantes a entenderem uma sequência lógica de aprendizado.
- Valoriza e organiza melhor os repositórios que já existem.
- Diminui a sensação de "não sei por onde começar".
- Pode aumentar o engajamento e a retenção de novos membros na comunidade.
Considerações
A ideia não é definir uma única forma correta de estudar, mas fornecer uma referência para quem está começando do zero.
Como devemos observar, além dos cenários felizes, também pensei em uma problemática aqui e abro para debate. Um problema que observei enquanto escrevia a proposta, além da mão de obra kk, é a terceirização das decisões. Aprender é um processo de tentativa e erro; caso criemos um "guia para iniciantes", talvez privemos os membros de terem o pensamento crítico, levando-os a tomar decisões baseadas nas experiências daqueles que fizeram o guia e não nas deles próprios. Enfim, seria legal colocarmos isso em pauta também; discussões são sempre bem-vindas.
Naturalmente, cada pessoa poderá seguir um caminho diferente conforme seus objetivos, mas uma trilha inicial pode servir como guia para evitar que conceitos importantes sejam ignorados ou aprendidos fora de contexto.
Gostaria de saber a opinião dos primos sobre essa proposta e discutir possíveis formas de implementá-la.
ATENÇÃO: Eu não estou há nem um mês na comunidade, então talvez eu tenha cometido algum erro na elaboração dessa issue. Também sou um iniciante, então meu objetivo é só ajudar. Por favor, caso eu tenha cometido algum engano ou causado algum problema, peço desculpas já adiantadas.
Problema
Atualmente o conteúdo da 4noobs está distribuído em diversos repositórios. Para quem já tem alguma experiência com programação, isso normalmente não é um problema.
Por exemplo, alguém que deseja aprender Flutter provavelmente sabe que antes precisará aprender Dart. Da mesma forma, quem quer estudar PHP costuma entender que conceitos como HTTP, lógica de programação, algoritmos e estruturas de dados são fundamentos importantes antes de se aprofundar na linguagem.
No entanto, esse caminho nem sempre é evidente para quem está começando do zero.
Muitos iniciantes chegam à comunidade sem qualquer contato prévio com desenvolvimento e, hoje, isso tem se tornado ainda mais comum com a popularização das IAs. É fácil encontrar pessoas que começam a criar aplicações utilizando ferramentas de IA sem compreender os conceitos fundamentais que estão por trás do código, o mesmo vale para pessoas em transição de carreira (como é o meu caso :V)
Nesses casos, surgem dúvidas como:
Sem uma orientação inicial, alguns acabam estudando assuntos em uma ordem que dificulta o aprendizado ou até desistem por não saber qual deve ser o próximo passo. Daí pode resultar em pouca adesão dos membros da comunidade aos projetos da he4rts :/
Proposta
A ideia não é substituir os repositórios existentes nem criar um curso completo, mas oferecer um ponto de entrada para novos membros, organizando uma sequência sugerida de estudos e indicando os conhecimentos prévios recomendados para cada tecnologia.
A solução mais simplória é um roadmap simples, estilo roadmap.sh, só para dar um norte à galerinha mais perdida. Talvez tenha algo até mais simples, como um markdown no GitHub, enfim.
Um exemplo de organização seria:
Fundamentos
Todos, ao meu ver, têm que passar por aqui pelo menos uma vez.
Antes de escolher uma linguagem ou framework, o iniciante poderia ter contato com conceitos como:
Linguagens
Após concluir os fundamentos, o usuário poderia escolher uma linguagem, por exemplo:
Aprender os conceitos básicos da linguagem, antes de se aprofundar ou usar um framework.
Especializações/frameworks/quaisquer outra coisa.
Depois da linguagem, seguir para áreas mais específicas:
Aqui o céu é o limite :D.
Talvez incluir projetos da comunidade ou sugestões de projetos para cada etapa para melhorar o entendimento ou até mesmo servir como autorreflexão do que tu sabe fazer ou não. A própria IA pode fazer isso, mas enfim, só uma sugestão.
Benefícios
Considerações
A ideia não é definir uma única forma correta de estudar, mas fornecer uma referência para quem está começando do zero.
Como devemos observar, além dos cenários felizes, também pensei em uma problemática aqui e abro para debate. Um problema que observei enquanto escrevia a proposta, além da mão de obra kk, é a terceirização das decisões. Aprender é um processo de tentativa e erro; caso criemos um "guia para iniciantes", talvez privemos os membros de terem o pensamento crítico, levando-os a tomar decisões baseadas nas experiências daqueles que fizeram o guia e não nas deles próprios. Enfim, seria legal colocarmos isso em pauta também; discussões são sempre bem-vindas.
Naturalmente, cada pessoa poderá seguir um caminho diferente conforme seus objetivos, mas uma trilha inicial pode servir como guia para evitar que conceitos importantes sejam ignorados ou aprendidos fora de contexto.
Gostaria de saber a opinião dos primos sobre essa proposta e discutir possíveis formas de implementá-la.
ATENÇÃO: Eu não estou há nem um mês na comunidade, então talvez eu tenha cometido algum erro na elaboração dessa issue. Também sou um iniciante, então meu objetivo é só ajudar. Por favor, caso eu tenha cometido algum engano ou causado algum problema, peço desculpas já adiantadas.