Onde aprender a programar?

04 Dec 2022 » iniciante, carreira, desenvolvimento, desenvolvimento web (aproximadamente 10 minutos de leitura)

Com o boom de vagas, oportunidades, propagandas, a área de programação vem sendo debatida e assunto de diversos focos. A pandemia acelerou bastante o processo de investimento em tecnologia e esse boom, que aconteceu, uns dizem que é similar a bolha imobiliária e vai estourar, outros dizem que nunca vai acabar, e muitas coisas se diz. Como eu tenho aprendido a evitar pensar no futuro maior que 1 dia. Deixo aqui como uma pesca para compartilhar com pessoas que me procuram e pedem informações sobre a área.

A escrita do texto, reflete minha visão sobre o tema, e não verdade absoluta. Fiquem a vontade para discordar.

Vale estudar programação sem fazer faculdade?

Sim! É possível aprender a programar, bem como entrar no mercado de trabalho, sem necessariamente estar cursando uma faculdade de computação ou sem ter feito uma. Em computação, uma das palavras mais usadas, é “depende”. Nesse caso, na minha visão, a faculdade te ajuda a desenvolver uma forma de pensar cientifica que é importante e te mostrar o mundo que existe dentro da computação e que não envolve apenas programação. Isso ajuda, a ter conhecimento mais abrangente, fora o foco em conceitos e não necessariamente apenas em práticas. Embora existam cursos que sejam focados para essa finalidade, como tecnólogos e afins.

Não quero fazer faculdade

Processo envolve em estudar de forma autodidata e isso passa por vários métodos (agradeçam, quando comecei era apenas via livros, que custavam caro!):

  • Youtube
  • Cursos online gratuitos
  • Cursos online pagos
  • Escolas de programação
  • Livros
  • Tutoriais
  • Comunidade de desenvolvimento
  • Programas de formação
  • Programas de estágios de empresas

Quero fazer faculdade

Primeiro passo é decidir se quer um curso técnico, um tecnólogo (nível superior com foco no mercado) ou uma graduação comum. Achei interessante a comparação desse link.

Tipo de faculdade

A diplomação, tem que estar alinhada ao objetivo e programa de carreira. Normalmente, exceto para cargos específicos que alguns empresas exigem titulação, o mercado é focado na sua vivência prática com o que você precisa fazer. Sua capacidade de entrega.

Graduação

O curso de graduação do Ensino Superior é ministrado nas modalidades Bacharelado e Licenciatura. Já falamos sobre as diferenças entre elas nesta matéria aqui da Revista Quero: Qual a diferença entre Bacharelado e Licenciatura?. Em ambas as modalidades, ao terminar o curso o aluno receberá um diploma de faculdade, de bacharel ou de licenciado. Com o diploma de graduação em mãos, é possível fazer cursos de pós-graduação e MBA. Os cursos de graduação têm, em média, duração de quatro a cinco anos.

Assim como nos cursos de graduação (bacharelado e licenciatura), os alunos que concluem uma graduação tecnológica do Ensino Superior também recebem um diploma de faculdade, formando-se Tecnólogos. Os cursos de graduação tecnológica, no entanto, são mais voltados para as demandas do mercado de trabalho e têm duração mais curta, de dois a três anos, e as opções de cursos abrangem as seguintes áreas:

  • apoio escolar;
  • gestão e negócios;
  • hospitalidade e lazer;
  • informação e comunicação;
  • produção cultural e design;
  • produção alimentícia;
  • controle e processos industriais;
  • produção industrial;
  • infraestrutura;
  • ambiente e saúde;
  • recursos naturais;
  • militar;
  • segurança;

A graduação tecnológica também forma alunos qualificados a cursarem, posteriormente, pós-graduação e MBA. No entanto, alguns concursos públicos de nível superior restringem a participação a bacharéis e licenciados.

Curso Técnico

Curso técnico e tecnólogo são coisas bem diferentes. Tecnólogo é o profissional formado em uma graduação tecnológica. Ele tem um diploma de faculdade (Ensino Superior). Já o curso técnico não é de Nível Superior e não dá diploma de faculdade, mas dá direito a um certificado de conclusão do curso técnico de Nível Médio.

Os cursos técnicos podem ser feitos por quem já terminou ou ainda está fazendo o Ensino Médio. Oferecem conhecimento bastante específico sobre o assunto do curso e geralmente são focados em aspectos práticos.

Por terem curta duração - de alguns meses a até 3 anos - podem ser uma solução rápida para entrada no mercado de trabalho, mas não oferecem uma ampla formação na área.

Curso de computação

Uma vez escolhido o tipo da graduação, o outro questionamento feito é sobre o curso, porque existem 3 principais que são associados a programação. Encontrei nesse [link]{https://www.stoodi.com.br/blog/carreira/ciencia-da-computacao-sistemas-de-informacao-ou-engenharia-da-computacao/}{:target=”_blank”} uma definição bacana que trago abaixo. Porém, reforço que o mercado absorve qualquer uma desses formação e as vezes até formações que não são especifica de computação, mas que tem relação, como engenharia, matemático, estatistico, por exemplo.

A figura abaixo resume essa visão:

Ciência da Computação

Responsável por desenvolver softwares. O estudante que estiver pensando em fazer Ciência da Computação deve se preparar para analisar as necessidades dos usuários, desenvolver programas e aplicativos, além de gerenciar equipes. O curso estuda os conceitos e teorias da computação, abordando conhecimentos em estruturas como dados, algoritmos, linguagem de programação, desenvolvimento e análise de sistemas, por exemplo.

Engenharia da Computação

Responsável por planejar e construir computadores, máquinas e equipamentos. Muito parecido com Ciência da Computação, os cursos compartilham algumas disciplinas. Quem escolhe essa graduação estuda para projetar e implementar tecnologias de hardware e software em equipamentos, sistemas embarcados em dispositivos de vários portes, aplicações industriais e redes de comunicação._

Sistemas de Informação

Responsável pela organização, armazenamento e recuperação de dados. Neste curso são aplicados conhecimentos de administração, negócios e relações humanas. Em resumo, esse profissional é a pessoa que soluciona problemas e resolve a vida de pessoas e corporações.

Como inicio no mercado de trabalho

Normalmente, as vagas de iniciante, requer algum tipo de contato, ou experiência, por isso, acredito que estudantes de universidade tem mais chances de entrar em programas de estágio/trainee porque parte das empresas, tem programas especificos com políticas de RH com regras definidas sobre aspectos de formação acadêmmica. Isso não é cravado em pedra, porém , é como vejo acontecer. Existem outros perfis de empresas, que contratam pessoas que conseguem convencer que tem motivação e capacidade de aprendizado e que passam nos processos seletivos, com projetos práticos e questionamentos técnicos. Nesse caso, se aplica aos dois caminhos, com faculdade ou sem. A dor do primeiro, é basicamente similar em ambos caminhos. Acredito que para qualquer carreira.

O github é um serviço de hospedagem de código que serve também como portfílio. Esse link, por exemplo, da um overview sobre o github e suas utilidades, bem como sua função além de guardar código (rede social, porfólio, etc).

Como forma de guardar seu código, existem outros serviços gratuitos como gitlab e bitbucket, mas talvez faça mais sentido falar disso um pouco mais a frente.

Formas de iniciar no mercado:

  • Programas de estágio/trainne
  • Aplicando para vagas divulgadas (Linkedin e outras fontes)
  • Indicações

O que é computação?

Mas antes de falarmos de programação que é um sub área da computação, o que seria computação? Gostei da definição desse link: A computação é a ciência que estuda os algoritmos e as suas aplicações nos mais diversos ramos do conhecimento humano. Além disso, visa o estudo da implementação desses algoritmos em máquinas chamadas Computadores.

Ele falou sobre a divisão do site dele, porém vejo muito sentido em como vejo computação:

  • Redes de Computadores
  • Inteligência artificial
  • Hardware, arquitetura de computadores
  • Sistemas operacionais
  • Banco de Dados
  • Infraestrutura (computadores físicos), Virtualização, Cloud Computing
  • Programação
  • Segurança
  • Qualidade de software (teste de software)

Talvez tenham mais áreas, mas de maneira macro é como vejo. O foco desse post é em programação então vou abstrair as demais áreas, mas fica para mostrar um pouco desse mundo. Não encontrei nenhuma referência formal ou oficial da computação, então convencionei como entendo.

O que é programação?

Diante desse overview, muito se fala de programação, mas o que seria isso? Gostei da definição desse link.

Programação é a ação e o efeito de programar. Este verbo tem várias acepções, entre elas: idealizar e ordenar as ações que vão ser realizadas no âmbito de um projeto; o anúncio das partes que compõem um ato ou espetáculo; a preparação de máquinas para cumprirem uma determinada tarefa a um dado momento; a elaboração de programas para a resolução de problemas através de computadores; e a preparação dos dados necessários para obter uma solução de um problema com uma calculadora electrónica, por exemplo Hoje em dia, a noção de programação é bastante associada à programação em informática. Este é o processo pelo qual um programador escreve, numa linguagem de programação, o código-fonte de um software. Este código indicará ao programa informático o que tem de fazer e de que forma. Essa programação costuma ser chamada de programação de computadores e é usada para criar programas que usamos tanto nos computadores quanto em dispositivos móveis, por exemplo. O programador encarrega-se de escrever, verificar, averiguar e manter o código-fonte. Neste sentido, os modelos de desenvolvimento de software enquadram-se numa disciplina da informática denominada engenharia de software. A programação realiza-se pelo uso de algoritmos, que são sequências finitas, ordenadas e não ambíguas de instruções devendo ser seguidas para resolver um problema.

De maneira bem simplória, podemos entender que a programação é usar uma linguagem de programação para processar ou simplesmente armazenar algo em um computador. A figura abaixo, ilustra ciclo de vida de uma informação.

Subdivisões da área de programação

  • Infraestrutura - rede, servidor, etc
  • Infraestrutura cloud - adminsitra serviços, azure (microsoft), aws (amazon), google cloud platform (Gcp)
  • DBA - administra banco de dados
  • Frontend - programa aquilo que usuario interage.
  • Mobile - programa aplicato para dispositivos móveis
  • Backend- programa aquilo que usuario nao ve, mas eh a parte que guarda os dados, aplicaregras, etc

Meu maior background é em backend, então devo focar em falar um pouco sobre isso.

Frontend x backend x fullstack x full cycle

No aspecto de vagas, temos pessoas focadas em frontend, backend ou fullstack (quem faz os dois). Existe uma nova classificação que é o full cycle que também faz a parte de infraestrutura. Eu acho muito complexo e despendioso, para alguém iniciante focar em aprender todas áreas. Acredito que alguém que domina, deve trabalhar por algum período fazendo esse papel, ou conhece superficialmente e é um sobrevivente naquele ecosistema, o que não tem nada de errado nisso.

Mas afim de mostrar o que seria uma aplicação, vou dar exemplo com uma aplicação web.

Por onde começo?

Vou tentar compilar algumas plataformas de ensino, gratuitas e pagas, não necessariamente conheço qualitativamente, mas algo que ouvi falar e compartilho aqui.

Não sei nada e quero aprender Java (linguagem se aprende outras, depois que aprende a primeira)

Loiane

  • https://loiane.training/curso/java-basico
  • https://loiane.training/curso/estrutura-de-dados
  • https://loiane.training/curso/java-intermediario
  • https://loiane.training/curso/crud-angular-spring

Gustavo Guanabara

  • https://www.cursoemvideo.com/curso/curso-de-algoritmo/
  • https://www.cursoemvideo.com/curso/java-basico/
  • https://www.cursoemvideo.com/curso/java-poo/

Curso em geral

  • https://www.alura.com.br/

Path Java dentro da alura

  • https://www.alura.com.br/formacao-programacao
  • https://www.alura.com.br/formacao-java-web
  • https://www.alura.com.br/formacao-spring-boot-3

Python

  • https://www.coursera.org/specializations/python#courses
  • https://www.coursera.org/learn/ciencia-computacao-python-conceitos#syllabus
  • https://www.coursera.org/learn/ciencia-computacao-python-conceitos-2

Outras plataformas

  • https://www.educative.io/unlimited
  • https://web.dio.me/pricing
  • https://www.casadocodigo.com.br/

Roadmap de aprendizados

  • https://roadmap.sh/computer-science
  • https://roadmap.sh/backend
    • https://roadmap.sh/java
    • https://roadmap.sh/python
    • https://roadmap.sh/golang
    • https://roadmap.sh/javascript
    • https://roadmap.sh/nodejs
  • https://roadmap.sh/frontend
    • https://roadmap.sh/vue
    • https://roadmap.sh/react
    • https://roadmap.sh/angular
  • https://roadmap.sh/devops
  • https://roadmap.sh/postgresql-dba

Tópicos avançados

  • https://roadmap.sh/design-system
  • https://roadmap.sh/software-design-architecture
  • https://roadmap.sh/software-architect

Instituições e comunidades importantes a conhecer (existem diversas outras):

Academico

  • https://www.sbc.org.br/
  • https://www.acm.org/
  • https://www.ieee.org/

Profissional

  • https://www.youtube.com/c/SouJava/videos
  • https://www.youtube.com/@Javabahia

Conclusão

Espero ter esclarecido e ajudado no processo de descoberta da área de computação.