Como começar na programação?

Frederico Batista Emídio
12 min readFeb 2, 2022

--

Olá pessoal!

Decidi escrever esse texto para ajudar muitas pessoas que estão sempre me perguntando como fazer para iniciar no mundo de programação/desenvolvimento de software.

Aqui vou tentar resumir um pouco das diversas dicas que costumo passar, porém, devo alertar que boa parte das dicas fazem mais sentido em determinados contexto do que em outros, então resumir será um desafio.

Essas dicas podem ser seguidas nos seguintes cenários:

— Pessoas jovens, que planejam entrar no mercado de trabalho, e estão avaliando iniciar uma carreira desenvolvimento de software e programação

— Pessoas jovens ou não que já possuem alguma experiência em outra carreira/profissão, e estão planejando uma transição de carreira.

Para esses dois grupos, gostaria de reforçar que aconselho e incentivo esse movimento. O mercado de desenvolvimento de software é enorme e só deve crescer nas próximas décadas.

Mesmo que haja evoluções exponenciais, onde o papel do programador mude, entender de linguagem de programação só irá contribuir com sua carreira, assim como saber uma língua estrangeira.

Vou falar aqui focado em programação, mas é importante saber que o mercado de desenvolvimento de software tem diversos outros papéis técnicos, e para fins de simplicidade, não vou falar dessas carreiras. Caso tenha curiosidade, mande uma mensagem.

Imagem com código genérico.

Por onde começar?

Então vamos ao que interessa… por onde começo as minhas dicas?

É sempre difícil responder essa pergunta, mas minha sugestão é escolher uma linha de atuação e seguir nela até se tornar um programador de verdade, ainda que júnior. Digo isso porque se você realmente aprender a programar, navegar em diferentes linhas de atuação, ou diferentes perfis, ficará muito mais fácil.

E quais seriam esses perfis?

O mercado hoje tem falado principalmente dos seguintes perfis: Frontend Web, Frontend Mobile (Android e iOS) e Backend

Para quem está começando, vejo que esses são os caminhos mais naturais, mas existem diversas outras especialidades que vou evitar de falar em detalhes aqui, como Devops, Dados, Segurança, Jogos, etc, etc, etc…

E o que cada um desses perfis fazem ?

O desenvolvedor Frontend é responsável por desenvolver o que você vê de um programa/aplicativo/sistema. Quando você está usando um site, como o facebook, medium, ou o site do seu banco, o que você vê é o front-end, a tela, a interface do usuário. Programadores que trabalham nessa camada, estão preocupados com temas como layout, cores, adaptação de telas (para diferentes tamanhos de monitores por exemplo), acessibilidade (para pessoas com algum tipo de deficiência visual), legibilidade (para pessoas e máquinas) e usabilidade das aplicações, validações de entrada de dados, etc.

Apesar de falarmos muito de coisas visuais, para uma interface de sistemas funcionar, existe muito trabalho duro de código que ninguém vê ( ou as vezes se vê), mas o que você precisa ter em mente é que você não e um designer ou diagramador ao ser um desenvolvedor front-end. Você passará a maior parte do seu dia desenvolvendo código de programação e seguindo as boas prática de desenvolvimento.

Obs.: Antigamente existia o papel de Web Designer, mas hoje isso já não existe mais dado a complexidade que se tornou fazer uma interface rica para ser usada. A responsabilidade e complexidade de criar a arte visual de uma tela de sistema, conceitualmente acessível e com boa usabilidade em geral fica cargo de uma carreira de Design e User Experience, que não é considerado uma vertente da programação, mas é totalmente necessária para uma boa experiência de uso de aplicativos.

Tendo isso em mente, talvez você já deve imaginar o que diferencia os tipos de desenvolvedores Front-end: Web para interfaces que rodam em navegadores (de computador ou celular), e Mobile para aplicativos nativos de celulares e tablets Android e iOS(iPhone).

O desenvolvedor Backend por outro lado é aquele que desenvolve códigos que são executados em um servidor, longe das vistas de quem usa o aplicativo, mas responsável por tudo que de fato executa aquilo que você diz que seu programa ou aplicativo faz.

Por exemplo, quando você está em um site, como o do seu banco ou do Facebook, ao clicar em um botão que envia uma mensagem ou realizar uma transação, a interface desenvolvida pelo programador front-end irá chamar um código desenvolvido pelo programador back-end, e esse código de back-end que de fato irá realizar a transação. Por exemplo, será no back-end que uma publicação do Facebook será armazenada, que manterá a quantidade de likes, que será replicado para sua rede contato. Ou então, será no back-end que sua transação bancária será validada, verificará para qual banco o dinheiro será transferido, validará todas as informações.

Um desenvolvedor back-end terá preocupações diferentes de um front-end. Suas principais preocupações serão: velocidade da transação, disponibilidade da transação, segurança, etc.

É bem facil saber quando um back-end é mal feito. Você já deve ter ouvido reclamações de que o sistema caiu, de que o sistema está lento, etc. Em geral, esses são problemas de qualidade do back-end (estou simplificando para fins didáticos, pode haver outros motivos para isso acontecer)

É importante saber, que é possível fazer sistemas completos apenas com back-end ou apenas com front-end, isso tudo vai depender do problema que o sistema quer resolver, ou seja, não existe um mais importante que outro, são apenas diferentes, e em geral complementares.

Você pode ouvir falar de um profissional que se denomina Fullstack. No começo do ano 2000 era um profissional mais comum, hoje ele é bem raro, ou talvez até extinto, dado a complexidade que se tornou desenvolver sistema modernos. Para conhecimento, um desenvolvedor Fullstack é aquele com habilidades de desenvolver tanto o Frontend como o Backend.

Quais linguagens preciso aprender em cada um dos perfis?

Essa é a parte mais difícil de dar dicas, porque as opções são quase infinitas, e surgem novas opções a cada dia… mas eu vou tentar apontar as principais linguagens faladas no mercado brasileiro. Isso pode variar bastante de acordo com a região e com o tipo de problema que você venha a trabalhar. Você pode escolher qualquer uma dessas opções para começar do zero, pois não faltará informações na internet.

Opções para desenvolvimento front-end Web.

Eu gosto de desenvolvimento Web porque é o mais fácil de testar. A maioria das pessoas que está começando a aprendendo a programar deve estar fazendo isso em um computador, e em todos eles é possível codificar e rodar o seu código web, sem custo nenhum adicional, além disso, facilmente você também consegue publicar em algum lugar para seus amigos e familiares aproveitarem com você a jornada de aprendizado. Também é uma opção fácil para fazer freelancers.

Todo desenvolvedor Web precisa aprender três linguagens no mínimo: HTML, CSS e JavaScript.

HTML é uma linguagem de marcação (não programação), que define a estrutura dos objetos em uma página Web.

CSS é uma linguagem de estilo (não programação), que define o layout/cores, posições dos objetos em uma página Web.

JavaScript é a linguagem de programação que define o comportamento de uma página Web.

Desse Trio (HTML, CSS e JavaScript), Javascript (ou JS), é talvez a base mais fundamental para todo o resto no desenvolvimento Web. Se você quer escolher esse caminho, dedique-se a aprender JavaScript .

Contudo, atualmente desenvolver para o Web não basta conhecer apenas essas três linguagens, mas framworks (ou plataformas) que foram desenvolvidas sobre esses três pilares.

Aqui vou citar os mais comuns atualmente no Brasil: Angular, React ou Vue.

Então o que você deve fazer aqui se decidir começar aprender desenvolvimento Front-end Web?

Busque cursos ou artigos sobre: HTML, JavaScript, CSS

Após isso, busque cursos, vídeos ou livros sobre um desses frameworks: Angular, React ou Vue. Apenas um deles e não todos. Geralmente um desenvolvedor web conhece apenas um desse muito bem. Conhecer todos leva muito tempo e não é produtivo para quem está começando.

Opções para Desenvolvimento Front-end Mobile Android

Como tudo no mundo de desenvolvimento, aqui também existem muitas opções, porém, a linguagem mais comum para desenvolvimento de aplicativos Android é o Kotlin.

Eu poderia parar por aqui, pois na minha OPINIÃO, Kotlin é a linguagem para começar o desenvolvimento no Android.

De qualquer forma, existem outras boas opções, com suas vantagens:

ReactNative — Uma vantagem do ReactNative é que é baseado no mesmo React da Web (então você talvez consiga desenvolver tanto para o Web como para Android (e também iphone), e a linguagem é fundamentalmente JavaScript. Então se você estiver interessando em ser polivalente, esse pode ser um caminho. Porém, para começar eu acho arriscado. Além disso, ReactNative é o que chamamos de solução hibrida (funciona tanto no Android como no Iphone), então você pode esbarrar em algo que depende de algum desenvolvimento em Kotlin para ter uma solução completa no Android.

Flutter — Flutter é uma linguagem relativamente nova, e bem promissora. Ela tem a característica hibrida como o ReactNative (roda tanto no Android como no iPhone), porém, ainda tem uma comunidade pequena, ou seja, pode ser ruim para tirar duvidas se você estiver aprendendo.

É importante deixar claro que para um desenvolvedor sênior, todas as opções acima são completamente viáveis e o mercado é igualmente bom, então a escolha aqui é apenas para o começo, se você for persistente em qualquer uma delas o sucesso na carreira é garantido.

Como sempre, há outras opções para desenvolvimento Android, mas essas são as mais populares atualmente.

Como para Web, busque algumas dessas opções no google e encontre cursos, vídeos e artigos que ensine Kotlin, ReactNative ou Flutter.

Opções para Desenvolvimento Frontend Mobile iOS (iPhone)

Se você escolher essa opção, os caminhos são muito semelhantes ao Android, com a diferença de substituir o Kotlin por Swift. Swift é a linguagem principal para desenvolver em iOS.

Como no Android, eu poderia parar por aqui, pois na minha OPINIÃO, Swift é a linguagem para começar o desenvolvimento no iOS.

Mas também como no Android, ReactNative e Flutter também são opções válidas para desenvolver para iPhone. Perceba que se você decidir escolher seguir por Flutter ou ReactNative, você já consegue desenvolver para as duas plataformas de celular (Android e iPhone), o que é uma vantagem.

As observações podem ser a mesma que para Android, com o acréscimo de que para desenvolver para iPhone, você precisa ter um MacBook, o que torna a barreira de entrada bem mais difícil para a maioria dos brasileiros. Olhando o copo meio cheio, se ter um MacBook não for um problema para você, o mercado de desenvolvimento iOS é ainda mais aquecido justamente por ter menos desenvolvedores disponíveis devido a essa barreira de entrada.

Busque uma dessas opções no Google (Swift, ReactNative, Flutter)

Opções para Desenvolvimento Backend

Aqui as opções são realmente inúmeras, e vai ser difícil fazer uma lista justa de opções. Mas vou tentar ser direto.

Se você escolheu desenvolvimento Backend, seu foco é aprender bem as linguagens. Você poderá desenvolver e testar em qualquer computador, mas para finalizar um trabalho, provavelmente terá que publicar em algum servidor ou fazer um serviço para o seu computador.

Vamos as opções.

Dotnet/DotnetCore/Asp.Net — Essa é o framework da Microsoft para desenvolvimento de qualquer solução de desenvolvimento. A linguagem principal desse framework é o C# (Se pronuncia C-Sharp). C# está presente em praticamente todas as aplicações da Microsoft, como o Office 365, Xbox, Windows, etc. É uma plataforma muito poderosa e moderna, e você pode testar em qualquer dispositivo. Inclusive, apesar de estarmos falando de backend aqui, é possível desenvolver também para Android, iPhone, Xbox, Macbook, Linux e naturalmente para Windows e Xbox.

Java — Uma das linguagens mais famosas, possui um mercado enorme de trabalho. Tem um modelo parecido com o C# e também roda não só no “Backend”, mas em frontends diversos, como Android, Windows, Macbook, Linux, SmartTV, etc.

NodeJS — Baseado em Javascript, é um solução forte e leve para serviços de servidor, possui um mercado muito ativo e bastante conteúdo para aprender em bootcamps e online. A principal vantagem é utilizar JavaScript, o que te permite também aprender facilmente soluções de FrontEnd Web.

Python — Linguagem muito fácil de aprender. Pode ser um ótimo ponto de partida para quem está aprendendo. É muito mais utilizada em cenários de dados do que de backend, mas é uma opção válida.

Aqui existem dezenas de outras opções, mas não vou me estender. Linguagens famosas para frontend também poderiam ser usadas no Backend, e algumas são bem usadas, como Kotlin e Flutter, mas de fato não são as principais.

Há ainda outras linguagens, como GO para citar uma, mas que não vou explorar aqui pois no Brasil o mercado não é muito aquecido, e depois que você aprender uma das linguagens acima, você já terá condições de escolher a próxima, e ai escolha uma menos popular se assim desejar.

Com qualquer uma das linguagens acima, você terá muito material disponível de graça na internet.

Você decide por onde começar.

Agora que você sabe a divisão comum básica do universo de desenvolvimento, você pode escolher o que te chama mais atenção. É possível começar tanto por um como por outro. Existem cursos e materiais gratuitos na internet para todos os gostos e não tem decisão errada nesse caso.

Você pode estar se perguntando se alguma opção tem menos oportunidade de trabalho que o outra, mas isso não existe. O mercado tem opções para todos os gostos. Se eu falar aqui que talvez um lado ou outro tem mais chances, provavelmente estarei falando das minhas necessidades como gestor de engenheiros de software ou pela minha própria trajetória como desenvolvedor

O mercado está tão aquecido que se você de fato aprender a programar, terá emprego com certeza!

Se eu puder te influenciar, aqui onde trabalho, onde temos dezenas de vagas para todos os perfis, utilizamos as seguintes linguagens:

— Desenvolvimento Web com Angular

— Desenvolvimento Mobile com Swift, Kotlin e Angular (Webview)

— Desenvolvimento Backend com Dotnet (C#) e Java.

Decidi por onde vou começar, o que faço agora?

Independente de qual caminho você decidiu começar, o processo que vou explicar agora é comum.

Para todas as linguagens e plataformas, você vai encontrar toneladas de informações na internet, seja gratuitas ou pagas, e vou listar alguns caminhos básicos.

Alura — Plataforma de treinamentos pagos. Você adquire um pacote e consegue fazer todos os cursos sobre um tema. Se você estiver realmente disposto a aprender rápido, esse pode ser um bom caminho. Todas as linguagens que citei até aqui você encontra na Alura. A ALura também tem o podcast Hipster.tech, que sempre tras boas dicas e curiosidades para o mundo de tecnologia

Udemy — Plataforma de treinamentos pagos. Lá você tem diversos tipos de cursos para todos os fins, diferente da Alura, na Udemy você compra cursos individuais. Todos terão um conteúdo bom para quem está começando. Os preços são sempre bem baratos se você buscar bem.

https://desenvolvedor.io — Apesar de ser uma plataforma mais focada em .Net (backend), muitas pessoas se formam como bons profissionais nessa plataforma. Se você escolheu backend com C#, é um bom lugar para começar.

Google — Faça a pergunta certa que você achará diversas fontes. Naturalmente, se você não sabe nada, talvez não seja a primeira fonte de pesquisa, mas quando você souber o básico, o google vai te ajudar a aprender tudo que falta para ser um programador júnior.

Youtube — Existe conteúdo de todos os níveis, porém, é necessário saber o que buscar, darei algumas dicas de bons canais para quem está começando ou mesmo avançado, onde você encontrará dicas muito melhores do que essas que estou passando.

Stackoverflow — Principal fórum para duvidas de programação no mundo talvez. Bom para tirar duvidas e aprender. Além disso também é possível encontrar empregos lá.

Linkedin — O linkedin é uma rede social profissional onde você irá encontrar oportunidades de trabalhos e artigos. A dica aqui é ver o que estão pedindo nas vagas, e pesquisar no google o que eles pedem se você não sabe ainda. Os requisitos para ser um programador Junior geralmente está na vaga, veja o que pedem, e pesquise no google do que se trata e como aprender.

Além disso, existem dezenas de escolas que promovem bootcamps para pessoas que querem iniciar na programação como primeiro emprego, ou para transição de carreira, então também é possível usar o google para pesquisar esse cenários, algo do tipo: “Onde encontrar bootscamps para iniciar na programação”

No youtube há diversos canais para seguir para começar a desenvolver, vou listar alguns (bem poucos) aqui que eu acho especialmente interessante para quem está começando, onde você encontrará dicas muito melhores do que as que eu listei aqui:

Filipe Deschamps — https://www.youtube.com/c/FilipeDeschamps — Informações em geral sobre tecnologia e desenvolvimento

Erick Wendel — https://www.youtube.com/c/ErickWendelTreinamentos — Muito focado em NodeJS, tem trilhas completas de aprendizado e bootcamps

Código Fonte TV — https://www.youtube.com/c/codigofontetv — Informações gerais sobre desenvolvimento, com muitos vídeos sobre conceitos fundamentais, e ótimas dicas para entrar no mercado.

Coders In Rio — https://www.youtube.com/c/CanalCodersInRio — Canal com diversos temas sobre DotNet.

Além disso, você vai reparar que muita referência está em inglês. É possível programar sem saber inglês, você é muito mais fácil quando você sabe o básico de inglês.

Conclusão

Talvez eu tenha me alongado bastante aqui nos detalhes, mas se fosse resumir, diria que você pode escolher uma linguagem, qualquer uma das citadas acima, e buscar aprender ela muito bem, sem pressa. Nesse aprendizado, uma coisa levará a outra e você começará a ligar os pontos.

Não é um caminho rápido, mas com persistência, disciplina e dedicação, é super possível você aprender e viver de programação em relativo pouco tempo.

Pessoas que se destacam na programação não programam apenas para ganhar dinheiro, mas porque gostam realmente do que fazem. Exige gosto por estudar e curiosidade para aprender. Se você não é uma pessoa que gosta de estudar e não tem curiosidade, as chances de se dar bem com programação são bem pequenas, devo ser sincero. Acredito que isso vale para todas as profissões, mas com a velocidade que as coisas mudam no mundo de programação, isso é realmente importante na programação.

Se você ficou com duvidas e precisar de mais dicas, coloque nos comentários ou me chame no linkedin. Espero que essas dicas possam de ajudar no ponta pé inicial!

Boa sorte nos estudos!

--

--

Frederico Batista Emídio

Engenheiro de Software, com mais de 20 anos de experiência, responsável por canais de investimentos no Banco Itaú