Um pequeno guia para quem quer iniciar em programação
Este texto foi pensado como um guia para quem quer iniciar em programação, mas sabe pouco ou nada sobre o assunto. Imagino que a maior parte do público do tabnews sabe programar, porém esse post pode ser útil para mostrar para um amigo(a) ou familiar que esteja interessado em entrar na área.
O objetivo aqui é ser direto e simples. Em nenhum momento o objetivo é esgotar qualquer tema citado no texto abaixo. Por isso também, a linguagem do texto tenta ser o mais coloquial e acessível possível.
Se acharem que ficou faltando algo, ou se encontrarem algum erro, use os comentários, que eu vou fazendo os updates necessários no texto. Mas lembre-se que do que escrevi nos dois últimos parágrafos, ok?
O que é programação?
Programação é o ato de definir passos lógicos para a realização de alguma tarefa.
Na verdade, você sempre programou e nunca percebeu.
Lembra daquela última viagem que você fez?
Lembra que você definiu – ainda que inconscientemente - um passo a passo para atingir um resultado, considerando se ou por quantas vezes você deveria repetir alguma tarefa? Lembra que você, inclusive, definiu tratativas caso algo desse errado no meio do processo?
Deve ter sido algo assim. Vamos ser simples:
(...)
Confirme no seu trabalho qual mês você sairá de férias.
Confirme o destino que você pretende passar suas férias.
Veja se você terá dinheiro suficiente.
Procure uma agencia de viagens e compre passagens para o destino e data definidos anteriormente.
Se não houver passagens para os dias ou nos preços planejados, então pense em um segundo destino.
Se ainda assim não houver passagens para os dias ou nos preços planejados, repita o passo anterior até obter passagens para o destino que você escolheu.
(...)
Então... foi assim que você programou uma viagem, certo?
Agora, programação de computadores — de maneira bem simples — é a arte de construir soluções através da definição de um "passo a passo" semelhante ao da sua viagem paradisíaca, mas que deve ser executado pelo computador.
No fim, é isso que seu celular, computador, TV, videogame fazem. E essa lista de aparelhos automatizados por computadores só tende a aumentar.
Já existe, inclusive, campos da ciência da computação que estudam exatamente isso: a internet das coisas e a automatização robótica de processos (RPA). Dá um Google!
Qual linguagem devo escolher para aprender a programar?
Primeiro, vamos definir o que é linguagem de programação: é a forma como você se comunicará com o computador, de modo a programar o passo a passo que ele deve executar para realizar uma tarefa.
Imagina que você está programando um joguinho onde... O seu personagem precisa programar suas férias (really?)
Você poderia definir o passo a passo de como comprar uma passagem exatamente da forma como exemplificamos lá em cima, certo?
Mas, quando utilizamos uma linguagem de programação, a sintaxe é um pouco mais “robótica”:
(...)
mesFerias = funçãoConfirmarMesFerias()
destino = funçãoConfirmarDestino()
dinheiro = funçãoAlocarDinheiro()
enquanto viagemProgramada = [vazio] faça:
_____viagemProgramada = funçãoComprarPassagem(utilizando dados de mesFerias, destino, funçãoProcurarAgenciaViagem())
(...)
Na verdade, a ideia por trás de linguagens de programação é formalizar a passagem de instruções para o computador, de forma que seja fácil entender e reproduzir. Tenho certeza que, mesmo sem conhecimento em programação, não foi difícil entender o que aconteceu no trecho de pseudocódigo acima.
Mas, no fim, é importante dizer que computadores não entendem linguagem humana. Computadores armazenam dados através de modulações eletrônicas binárias, ou seja, que tem apenas dois estados (verdadeiro-falso, zero-um, etc.). Daí o “zero-um” que você já deve ter visto em filmes como Matrix.
Mas você não respondeu a minha pergunta: qual linguagem devo escolher para aprender a programar?
A linguagem que você deve aprender está relacionada com o que você pretende fazer em programação. Segue algumas sugestões, sempre lembrando que a área é muito dinâmica, e linguagens estão ascendendo ao sucesso, sendo adaptadas para outras utilizações e até mesmo caindo em desuso a todo o momento:
- Você pretende controlar o que acontece na tela do navegador, como botões, formulários, animações e outros objetos interativos? JAVASCRIPT (além de HTML e CSS, que não são propriamente linguagens de programação)
- Você pretende controlar como a informação imputada na tela é processada e armazenada, respeitando a lógica das regras de negócio que sua aplicação atende? JAVASCRIPT, PYTHON, C#, JAVA, PHP
- Você pretende manipular, limpar, transformar, reduzir bases de dados ou fazer análises estatísticas? SQL, PYTHON, VBA, R, JAVA
- Você pretende criar modelos de Machine Learning ou Inteligência Artificial? PYTHON, R, JULIA
- Você pretende desenvolver jogos para videogames, celulares e computadores? C#, C++, JAVA, SWIFT, JAVASCRIPT
- Você pretende criar aplicativos para celulares? JAVA, KOTLIN (para Android), SWIFT (para iPhones)
- Você pretende trabalhar com sistemas embarcados, arduíno e robótica? C
- Você pretende criar sistemas desses que são utilizados por grandes empresas para fazer gestão de estoques, parte financeira, pessoal e coisas do tipo? JAVA, C#, ABAP, PYTHON
- Você quer turbinar os seus dashboards no PowerBI? M, PYTHON, R
- Você quer ensinar programação aos seus filhos ou alunos pequenos? SCRATCH
Preciso saber matemática para programar?
Eis aqui uma polêmica e provavelmente você encontrará posições divergentes nos comentários.
De fato, para abstrair componentes de um site ou sistema via código, não é necessário saber mais matemática do que a média da população.
Talvez, por "matemática", o que você quer dizer, na verdade, é "lógica". E raciocínio lógico sim, é necessário.
Voltemos ao exemplo da viagem. Esse exemplo, embora amplamente utilizado, é falho por um motivo: os passos necessários para planejar uma viagem são bem conhecidos, pertencendo a um senso comum.
Você não teve que "desenvolver um processo" para entender que é necessário ver qual mês você estará de férias, pesquisar preços das passagens para o seu destino favorito, ver se você tem malas, roupas, passaporte, vacinas em dia... E estar no aeroporto no dia e hora marcada. Quando você nasceu, já era assim que se programava viagens.
Mas quando o seu cliente te pedir um projeto de um novo jogo, aplicativo ou sistema, pode ser que seja apenas mais um “jogo de plataforma” ou mais um e-commerce. Mas pode ser também que você tenha que criar algo realmente "novo".
Imagina que há 20 anos, existiam taxis, mas não existiam aplicativos como Uber. E então, uma equipe de profissionais teve que, pela primeira vez, abstrair todo o processo relativo a um serviço de taxi (p. ex.: pedir um taxi, medir e cobrar uma corrida, definir ‘bandeiras’, cadastrar taxistas, etc.) na forma de código!
Caberá a você, como programador, o papel de "deus" que traz a existência a ideia que ainda não existe. Caberá a você definir os passos lógicos para o atingimento do objetivo. Aqui, todos os caminhões de raciocínio lógico ainda serão coisa pouca.
Agora, saber (ou melhor, ser bom em) matemática é meio caminho andado, sim. Pois, quem domina matemática, costuma dominar "de brinde" as habilidades de raciocínio lógico. E matemática é sim uma bela forma de desenvolver o raciocínio lógico. Afinal, o que mais fazemos em matemática é interpretar problemas e definir um passo a passo rumo à solução, não é?
Da mesma forma que ter uma boa interpretação de texto também é necessário para entender o que o cliente necessita, interpretar problemas e compartilhar as possíveis formas de “passo a passo” com a sua equipe. Mas pouco se fala sobre...
Mas, em termos práticos, creio que será muito raro você ter que codificar uma equação na unha. A menos que você decida ir para área de dados ou jogos. Pois, para programar uma rede neural ou fazer o Angry Bird voar de acordo com as leis da física, realmente você vai precisar de dominar matemática.
Precisa faculdade ou curso já basta?
Tecnicamente, programação não é uma profissão regulamentada no Brasil.
Ou seja, você não será preso por "exercício ilegal da profissão" se for pego programando sem um diploma ou uma autorização de um conselho de classe. Logo, não é necessário ter formação universitária para ser tornar um programador.
De fato, a área da programação é uma das mais democráticas que existem. Há uma infinidade de cursos e matérias gratuitos, você não precisa pagar para utilizar a grande maioria das ferramentas e linguagens, e as comunidades são numerosas e proativas em "se ajudar" (me permita o português ruim, rs).
E se você estiver disposto a pagar por cursos, encontrará uma infinidade de boas opções e facilidades de pagamento: desde plataformas que oferecem assinaturas de cursos “à la Netflix” até escolas que te deixam pagar as mensalidades apenas quando você estiver trabalhando.
Assim, não é difícil encontrar bons profissionais na área que nunca tenham comido uma coxinha cara de faculdade na vida.
Mas, não tem como desprezar o ensino universitário, na minha opinião, pelo menos.
Nas boas universidades, os bons alunos não objetivam apenas tirar nota 6 para passar de ano. A universidade pode ser uma bela oportunidade para desenvolver skills como trabalho em grupo, gestão de prazos, criar portfólio, além de desenvolver pesquisas e pensamento crítico, cada vez mais requisitado em um mundo de LGPD e inteligências artificiais.
Logo, se você tem essa oportunidade, por que não?
Dicas para quem quer aprender programação sozinho
- Assim como qualquer outra coisa, a pratica leva a perfeição. Reserve algumas horas por dia para se dedicar;
- Se envolva em grupos, fóruns e comunidades: sempre bom quando a dúvida surgir;
- Pratique. Ninguém nunca se tornou no próximo LeBron ao assistir uma temporada de NBA. Da mesma forma, ninguém se torna programador ao apenas assistir vídeos e tutoriais.
- Stack Overflow – apenas google it!
- Aliás, aprenda a fazer buscas no Google!
- Conheça a documentação da sua linguagem de programação
- Assim que se sentir minimamente seguro, se envolva em algum projeto. Tem vídeo no canal do Deschamps com dicas sobre, aliás.
Aprender lógica de programação ou “mergulhar” logo em uma linguagem?
Outra polemica, rs.
Particularmente, defendo que se invista alguns dias no estudo de lógica de programação, antes de partir para uma linguagem. Penso que dominar estruturas de condição, repetição, tipologia de dados é a base necessária para o aprendizado de qualquer linguagem (embora no futuro você será exposto a outros paradigmas de programação, como orientação a objetos e funcional).
Mas é possível ir levando os estudos teóricos em lógica e os estudos práticos com uma linguagem de forma paralela. Vai depender muito de cada pessoa, no fim.
Preciso de computador bom para programar?
Não necessariamente.
Hoje, graças a computação em nuvem, é possível ter acesso – gratuito na maioria das vezes – a plataformas onde é possível digitar código sem ter que instalar nada no computador, como Repl.it e Google Colab, por exemplo.
Mas, não se engane.
Em algum momento você vai precisar ter IDEs e outras ferramentas rodando na sua máquina. Então, pode ir sim preparando o pix, rs.
Vamos dar um Google? Termos para pesquisar, se você quer saber mais sobre a área
- Desenvolvimento Front-end: todos os botões e interações que acontecem na sua tela
- Desenvolvimento Back-end: a “cozinha do restaurante” - a programação que acontece lá no servidor
- Computação em nuvem: o “computador do outros”
- Internet das coisas: já ouviu falar que, em breve, a sua geladeira estará conectada à internet? Então...
- Big Data: num mundo cada vez mais conectado, cada vez mais dados são gerados...
- Ciência de Dados: o ramo da Ciência responsável por extrair insights dessa multidão de dados
- Inteligência Artificial: a automatização de processos e máquinas que replica a inteligência humana
- Machine Learning: ensinando máquinas a aprender
- DevOps: A área da computação responsável por fazer tudo isso funcionar
- Computação Quântica: a próxima “grande coisa” no mundo da computação
- Ethical Hacking: a arte de manter a internet segura
- LGPD: a Lei Geral de Proteção de Dados, que define responsabilidades quanto ao armazenamento de dados pessoais