Aprenda a codificar: sabedoria e ferramentas para a jornada
Publicados: 2022-03-11A programação é uma grande habilidade para se ter. É extremamente recompensador tanto a nível pessoal como profissional, dando-lhe a capacidade de construir, mexer e inventar. Ele pode abrir portas para todos os tipos de carreiras com grandes benefícios, seja um salário respeitável, liberdade para trabalhar quando e onde quiser, ou todos os itens acima.
Não é surpresa que mais e mais pessoas, de todos os tipos de origens, estejam decidindo aprender a codificar. Mas, cada pessoa que enfrenta a tarefa logo se depara com uma realidade desagradável: aprender a programar é difícil.
Complicado e confuso, a princípio, grande parte da codificação não faz nenhum sentido. Ao contrário das expectativas, a sensação de “não entendo” pode persistir inabalável por muito tempo na jornada, fazendo com que os iniciantes de olhos brilhantes se sintam sem esperança, perdidos e prontos para desistir.
A moral da história é esta: Esteja preparado. O caminho para o paraíso do programador é longo e, sem a mentalidade certa no início, pode perder rapidamente seu apelo.
Neste artigo, tentarei fornecer algumas orientações sobre o que esperar em sua jornada, a melhor forma de fazê-lo e quais ferramentas e recursos você pode achar úteis ao longo do caminho.
O que esperar
Talvez seja óbvio, mas a primeira coisa a se certificar de que você entende é que a programação, em sua essência, é uma disciplina técnica. As primeiras habilidades que você aprende exigirão muita “exatidão” e “correção”, e tentar cortar custos não o levará a lugar algum. Você terá que aprender pelo menos um pouco de matemática, bem como muitas coisas que podem parecer matemática, como lógica processual.
O ponto é que aprender os fundamentos da programação exige muito foco e prática. No entanto, inúmeras pessoas, tecnológicas e não tecnológicas, fizeram essa jornada antes de você, então não desanime. Como veremos, há uma abundância de recursos para pessoas como você para ajudar a tornar o processo o mais fácil possível.
A curva de aprendizado para programação é mais íngreme no início. Há uma enorme quantidade de “fundamentos” a serem absorvidos, incluindo as várias partes de uma linguagem de programação (expressões, variáveis, tipos de dados, operadores, loops, declarações condicionais, funções, classes) e as técnicas para entender quanto do seu computador tempo e espaço de memória que seu código vai usar (complexidade). Você escreverá muito código que não funcionará na primeira vez, então terá que aceitar a ruína da existência de todo programador: depuração.
Depois de aprender a escrever código, você poderá aprender a escrever código robusto . Tornar o código eficiente, fácil de ler e entender e fácil de expandir é uma arte que está em constante evolução. Você poderá começar a explorar diferentes filosofias de software e deixar de ser simplesmente um “codificador” para ser um “arquiteto de software”. Este também é um processo que leva muito tempo e prática, mas quanto melhor você conseguir, mais oportunidades se abrirão para você.
Como aprender a codificar
A jornada de cada pessoa para o paraíso da programação é diferente, mas existem alguns bons princípios dos quais todos os viajantes podem se beneficiar. Aqui está o processo básico que eu recomendo se você está apenas começando:
1. Escolha seu destino: escolha um idioma, qualquer idioma
Se você leva a sério aprender a codificar, a linguagem que você escolhe realmente não importa muito. As linguagens de programação mais populares compartilham os mesmos conceitos fundamentais, e quando você realmente pegar o jeito de programar em sua primeira linguagem, pegar uma nova será mais fácil do que da primeira vez. Se você estiver aprendendo por meio de um programa de graduação universitária ou similar, seu idioma provavelmente será escolhido para você.
De qualquer forma, a menos que você saiba exatamente o que quer fazer a longo prazo, existem apenas cinco idiomas que recomendo considerar, que equilibram a facilidade de aprendizado, a versatilidade do conhecimento adquirido e uma abundância de trabalho a longo prazo. perspectivas: Ruby , JavaScript , Python , C e Java .
Aqui estão algumas notas gerais sobre cada um, para ajudá-lo a decidir:
Idiomas Interpretados
Os idiomas interpretados são mais fáceis de começar . Isso ocorre porque seu código-fonte pode ser executado assim que for escrito. Em contraste, as linguagens compiladas exigem uma etapa extra entre escrever e executar o código.
Como resultado, as linguagens interpretadas permitem uma codificação mais rápida , mas não usam os recursos do computador com a mesma eficiência , e é mais fácil que os bugs passem despercebidos . Eles são mais adequados para aplicativos em que o desempenho não é uma prioridade. Essas linguagens são muito populares para desenvolvimento web. Na verdade, uma delas, JavaScript, é a única linguagem que pode ser executada diretamente em um navegador da web, contribuindo para sua rápida ascensão como uma das linguagens mais lucrativas de se conhecer.
Linguagem | Prós | Contras | Comumente Usado Para |
Rubi |
|
|
|
JavaScript |
|
|
|
Pitão |
|
|
|
Idiomas compilados
Quando o código é compilado , ele é convertido de código legível por humanos em código de máquina otimizado antes de ser executado. O resultado é executado com muito mais rapidez e eficiência do que as linguagens interpretadas. O compilador que faz isso deve, como parte de seu trabalho, certificar-se de que tudo o que foi codificado “faz sentido” e, como resultado, pode identificar e prevenir muitos tipos de bugs aos quais as linguagens interpretadas são suscetíveis.
Por esse motivo, é mais difícil evitar erros ou códigos ruins com essas linguagens. Eles irão forçá-lo a obter uma compreensão mais profunda do que realmente está acontecendo “por baixo do capô”, e você aprenderá muito mais sobre como um computador realmente funciona . O preço é que esses idiomas são mais trabalhosos e geralmente mais difíceis de aprender para iniciantes.
As linguagens compiladas são usadas em aplicativos que exigem desempenho e confiabilidade, incluindo aplicativos incorporados, que podem ser executados em hardware com limitações de recursos apertadas, e aplicativos grandes e complexos, onde até mesmo um pequeno bug pode causar estragos.
Linguagem | Prós | Contras | Comumente Usado Para |
C |
|
|
|
Java |
|
|
|
HTML e CSS: não são linguagens de programação
Deve-se notar que HTML e CSS, que são usados em praticamente todas as páginas da web que já existiram, não são linguagens de programação . São linguagens de apresentação, usadas para definir como algo deve ser e o que deve conter, mas não como deve se comportar. No entanto, eles podem ser um bom lugar para começar, porque são muito mais fáceis de aprender e ensinarão como digitar as coisas corretamente. Além disso, se você planeja fazer qualquer desenvolvimento web, terá que aprendê-los em algum momento.
2. Comece pequeno
Aprender leva tempo e há muito o que absorver. Se você tentar criar um aplicativo completo no primeiro dia, não funcionará. Para se poupar da frustração, comece resolvendo problemas pequenos e simples e vá progredindo.
Por exemplo, o primeiro programa que é tradicionalmente escrito ao aprender um novo idioma é o programa “Hello World”, que simplesmente imprime as palavras “Hello World” na tela. Na maioria das linguagens, é quase impossível escrever um programa mais simples e, claramente, esse programa tem pouco uso real. No entanto, ele ainda incorpora muitas das partes fundamentais da linguagem e, portanto, é perfeito para se apresentar a como a linguagem é digitada.
A partir daqui, você pode escrever algo que some ou subtraia alguns números e, em seguida, algo que receba entrada do usuário. Você pode aprender sobre condicionais, que são uma maneira de tomar decisões, e loops, que executam tarefas repetitivas. Em breve, você estará pronto para construir seu primeiro objeto e, nesse ponto, poderá começar a experimentar a construção de aplicativos completos.
3. Seja paciente
Os conceitos básicos de programação podem ser bastante desafiadores. Muitos deles não são nada intuitivos se você já não sabe como o computador funciona em um nível mais profundo.
Por exemplo, quando eu estava começando, descobri que a depuração era um processo irritante; não parecia programar. Em vez de escrever um novo código que fizesse coisas novas e legais, eu passava um dia inteiro vasculhando algo que havia escrito, tentando descobrir: “Como eu estraguei tudo dessa vez?” coçando a cabeça e pronto para desistir. Eventualmente, eu descobriria que havia deixado um único ponto e vírgula em algum lugar, ou usado uma tabulação em vez de um espaço, e quando conseguisse fazer meu código funcionar novamente, seria o fim do dia. Eu me sentiria um completo idiota; seria como uma perda de tempo.

Esse tipo de coisa vai acontecer com você, e vai deixá-lo absolutamente louco. Então, uma das chaves para o sucesso é esta: seja paciente e vá com calma . Alguns dos melhores conselhos sobre o assunto recomendam focar no processo, não nos objetivos. Se você se concentrar em seu objetivo final (“Quero construir um site até o final de junho”), você ficará desanimado e se sentirá um fracasso. Deixando-se levar o tempo que for necessário para progredir, você terá mais sucesso.
4. Prática Prática Prática
Como qualquer habilidade, ficar bom nisso realmente se resume à prática. Não há nada como fazer algo, para aprender a fazê-lo! Mesmo que você só consiga poupar algumas horas por semana, se continuar praticando regularmente, um dia descobrirá que sabe programar. Eventualmente, você desenvolverá uma intuição para as coisas, e algo que levava um dia inteiro no início (como rastrear um bug), agora pode levar apenas alguns segundos.
Quando você sentir que aprendeu mais ou menos o básico da programação, uma ótima maneira de praticar é iniciar seu primeiro projeto. Pense em um aplicativo simples que você gostaria de construir, como uma lista de tarefas ou uma calculadora (novamente, comece pequeno), e experimente. Isso irá ensiná-lo a resolver problemas de arquitetura e design e construir peças diferentes para que elas se encaixem em um todo funcional. Essas são as habilidades essenciais que permitirão que você realmente se chame de programador.
Recursos
Dependendo de seus objetivos, estilo de aprendizagem e meios, você pode querer usar diferentes recursos ao longo de sua jornada. Para ajudá-lo a determinar quais métodos são adequados para você, aqui está um breve resumo de algumas das ferramentas que você pode usar, ordenadas, aproximadamente, de aprendizado mais estruturado a aprendizado menos estruturado.
Aprendizado Estruturado
Esta é a categoria de opções que oferece instrutores, trabalhos de casa, testes, notas, prazos e consequências reais se você não priorizar seus estudos. Estas são as opções em que você terá que ir para a aula ou ser reprovado no programa.
Diploma universitário formal
A opção mais cara, mas, para muitos, a mais valiosa, um diploma universitário formal lhe dará a melhor base para uma carreira próspera em programação e tecnologia de computadores. Você receberá reconhecimento por suas realizações na forma de seu diploma (uma grande vantagem ao entrar no mercado profissional). Mas, mais importante, você emergirá com uma compreensão profunda e completa de todas as coisas relacionadas a computadores, e suas habilidades para escrever software realmente de primeira linha e eficaz refletirão isso.
Aqui estão algumas das coisas que você pode esperar aprender em profundidade em qualquer programa universitário decente, e pode ser mais difícil encontrar instruções completas em outros lugares.
- Circuitos Elétricos - A física básica subjacente a praticamente todo hardware de computador.
- Circuitos Lógicos Digitais - Como representar verdades e construções lógicas com circuitos.
- Microprocessadores e Sistemas de Computador - Como os circuitos lógicos são combinados para fazer uma máquina de computação programável. O que está acontecendo em todos aqueles alfinetes de metal e fios impressos.
- Sistemas Operacionais - Como programar um computador para gerenciar, organizar e proteger a si mesmo e permitir a operação segura de vários aplicativos.
- Bancos de dados - Como armazenar e copiar grandes quantidades de dados sem perdê-los, corrompê-los ou impossibilitar a pesquisa.
- Redes - Como sistemas de computador diferentes e não relacionados podem conversar entre si.
- Matemática Superior - Incluindo Cálculo e Álgebra Linear. Essencial para qualquer carreira em campos avançados ou de ponta.
- Processamento de Sinais - Como cruzar a fronteira do mundo analógico para o digital e vice-versa.
- Métodos Numéricos - Para quando os problemas do mundo real não se encaixam perfeitamente em um computador.
A escola de ciência da computação e engenharia vai chutar sua bunda, e você terá que se sacrificar e se dedicar a completá-la. Mas as recompensas valerão a pena. Lutei para obter meu próprio diploma, mas o dia em que o recebi continua sendo um dos dias mais orgulhosos da minha vida.
Bootcamps
Os chamados programas “bootcamp” surgiram para suprir as necessidades daqueles que não têm tempo ou recursos para buscar um diploma formal, mas estão dispostos a trabalhar duro e ao menos aprender o mínimo necessário para iniciar uma carreira de desenvolvimento de software. Tanto em custo quanto em comprometimento exigido, eles ficam entre um diploma formal e as opções autodirigidas discutidas abaixo.
Bootcamps normalmente envolvem de 8 a 12 semanas de estudo intenso e custam cerca de US$ 10.000. Eles cobrem muito material em um curto período de tempo, durante o qual você terá que sacrificar a maioria das outras atividades. Mas eles prometem prepará-lo para o desenvolvimento de software do mundo real e colocá-lo no caminho mais rápido para uma carreira em programação. Muitos bootcamps culminam em dias de carreira ou tentam colocá-lo em um emprego remunerado logo após a formatura.
Bootcamps são um fenômeno relativamente recente e explosivo. Como tal, ainda é difícil medir sua taxa de sucesso, e muitos ainda precisam desenvolver um histórico comprovado de colocação de graduados em empregos. Com isso dito, os programas disponíveis só podem melhorar à medida que essa nova indústria florescente continua a crescer. Contanto que você faça sua pesquisa com cuidado, você pode achar que esta é a opção perfeita para você.
A maioria dos bootcamps são programas locais, então você terá que ver o que está disponível em sua cidade. Se você mora em uma grande metrópole, talvez possa encontrar o que procura nesta lista, ou nesta.
Aprendizagem Semiestruturada
Mais e mais recursos estão se tornando disponíveis todos os dias para aqueles que trabalham melhor com um elemento de estrutura e orientação, mas não têm tempo ou recursos para se comprometer com um programa formal de graduação ou bootcamp. Essas opções geralmente são oferecidas inteiramente online e muitas são totalmente gratuitas! À medida que a alta demanda por tais serviços se tornou aparente, essas ferramentas cresceram rapidamente em sofisticação e valor entregue. Cursos de desenvolvimento de software naturalmente impulsionaram grande parte dessa evolução, pois aprender e ensinar software por meio de software tem benefícios óbvios.
Cursos Online Abertos Massivos (MOOCs)
Os MOOCs são um recurso incrível e estão dando grandes passos para nivelar o campo de atuação para uma educação de qualidade e acessível. Eles oferecem grande parte da estrutura e orientação das melhores aulas universitárias formais do mundo, mas estão disponíveis online para qualquer pessoa, em qualquer lugar, que tenha uma conexão com a internet. Muitos MOOCs populares também são totalmente gratuitos , embora por um preço adicional (e compromisso com o estudo), o crédito formal também possa ser obtido para muitas aulas, equivalente a créditos universitários.
Existem muitas plataformas MOOC de primeira linha disponíveis online com cursos ministrados por professores das universidades mais prestigiadas do mundo e plataformas comunitárias para que você e seus colegas de classe em todo o mundo possam ajudar uns aos outros a aprender. Aqui estão alguns dos provedores mais conhecidos:
- Coursera
- EdX
- Udacity
Esteja ciente de que, conforme anunciado, esses cursos oferecem cursos de nível universitário, então é melhor você estar preparado para trabalhar duro para passar por eles!
Sites de tutoriais guiados
Se você gosta de estrutura e orientação, mas não gosta de prazos, existem muitas plataformas online excelentes que fornecem treinamento automatizado passo a passo por meio de uma ampla variedade de métodos de entrega. Alguns são conduzidos por tutoriais em vídeo, outros por texto. Muitos incluem editores de código interativos para você praticar em seu navegador. Isso oferece grande flexibilidade para aprender no seu próprio ritmo, seja meia hora de prática no final de cada dia ou uma maratona de 10 horas no fim de semana.
Embora muitas dessas plataformas exijam uma assinatura paga para acessar todo o conteúdo, a maioria oferece avaliações gratuitas para que você possa começar imediatamente e decidir por si mesmo se funciona para você.
- Kahn Academy
- Udemy
- Codecademy
- Código Vingadores
- Escola de código
- casa na árvore
- Lynda
- Visão plural
Esta é apenas uma pequena lista, então pesquise e veja o que mais está por aí!
Aprendizado não estruturado
Para aqueles que desejam encontrar seu próprio caminho ou aprimorar seus conhecimentos em seu tempo livre, sem a pressão de aulas estruturadas, as ferramentas a seguir fornecem uma abordagem autodirigida. Mesmo que você siga uma das abordagens acima, muitos desses recursos podem ser úteis para complementar seu aprendizado ou fornecer uma plataforma para praticar.
Sites de Perfuração
Se o seu objetivo é apenas praticar a resolução de problemas de programação, a internet, mais uma vez, o cobre. Os sites a seguir oferecem conjuntos cada vez maiores de desafios de codificação, juntamente com interfaces de codificação interativas, para solucionar problemas, avaliar suas soluções em tempo real e comparar como elas se comparam às soluções de outros usuários.
- Exercism.io
- CheckiO
- CodeChef
- CódigoEval
- Guerras de código
- Codilidade
- HackerRank
Vídeos
Aprender programação passivamente tem praticidade limitada, mas se você quiser absorver alguns dos conceitos mais profundos, entre reuniões ou com uma taça de vinho à noite, essas séries de palestras são algumas das melhores por aí. Se você gosta desse tipo de coisa, confira o que mais está disponível no YouTube e na web.
- MIT OpenCourseWare
- Série de Palestras da Universidade de Stanford
Livros
Mesmo com todas as maravilhas da tecnologia disponível, para muitas pessoas ainda não há nada como um bom livro para mergulhar e obter uma compreensão profunda de um tópico. Se você gosta de aprender dessa maneira, confira a Lista dos principais livros de programação gratuitos da Toptal.
Em Fechamento
Aprender a codificar é uma jornada muito pessoal. Todo mundo começa com diferentes recursos e objetivos diferentes e encontra diferentes desafios e oportunidades ao longo do caminho. Não se preocupe com o que os outros estão fazendo ou como chegaram lá. Mesmo para programadores experientes, a jornada em si nunca termina, pois há constantemente coisas novas para aprender.
Então, meu conselho para você é: vá devagar e aproveite a jornada! Há muito para explorar, e um mundo de maravilhas espera por você. Uma jornada de mil milhas começa com um único passo. Aqui estão alguns bons sapatos. Boa sorte!