O que é codificação. Como e onde aprender a codificar? Como escolher uma direção e idioma

E vou explicar o porquê.

Quinze anos atrás, fui aconselhado a me tornar um programador devido ao fato de ser uma pessoa introvertida e tímida, além de ter uma mente analítica e uma completa falta de vida social, mas eu apenas ria e dispensava tais conselheiros. Na época eu era adolescente, e na minha mente adolescente o programador sempre morava no porão da casa dos meus pais, era cheio de espinhas e usava óculos feios, nunca teve namorada, mas as fantasias com a princesa Leia compensavam (e com bastante frequência). Este modo de vida não era do meu agrado. Além disso, então eu já tinha uma namorada, e muito bonita.

Avanço rápido de seis anos: estou sentado no aeroporto de Budapeste lendo um livro sobre HTML...

Seis anos depois, fui contratado por uma empresa iniciante da Irlanda do Norte como generalista. Sim, parece que demorou um pouco. Mas quanto exatamente? Eu não posso dizer exatamente. Mas muito. As míticas 10 mil horas? Não. Se me pedissem para dar um valor aproximado, diria que naquele dia eu tinha “codificado” cerca de 8 mil horas. Tecnicamente falando, se acreditasse na regra das 10.000 horas, em 2.000 horas eu teria me tornado um especialista nessa área.

Mas eu vou?

Foi o que consegui em 8 mil horas. Fique à vontade, pois minha história será longa. Codifiquei nas seguintes linguagens: C, HTML, CSS, JavaScript, Java (Android), Swift, PHP, Ruby, Python, Chuck, SQL, trabalhei com os seguintes frameworks: Node, Angular, Bootstrap, Foundation, React, Rails , CodeIgniter, Ionic e criou Landing Pages, Wordpress Sites, Ecommerce Solutions, eLearning Content, Moodle e Totara Sites, Mahara Sites, Common Cartridge e SCORM Packages, Android e iOS Apps, Hybrid Apps, Internal Web Apps, e-books, revistas , jogos e aplicativos adicionais para jogos de tabuleiro. Então, para onde estou indo?

Eu quero dizer que não existe campo como tal, então a tarefa de se tornar um especialista nele é inatingível. A codificação não é uma área. Ciência da computação - sim, mas é completamente diferente.

A codificação é o que presidentes, professores e pais estão empurrando para a geração mais jovem, como se estivesse levando ovelhas para campos dourados de oportunidades.

Essa promessa é um sonho, uma propaganda tão bem criada e expressa (agora nem se expressa em palavras) que foi absurdamente simplificada em imagens para que os lindos bebês rastejantes entendessem que o raciocínio lógico é mais importante do que o desejo de se alimentar (por favor preste atenção ao sarcasmo) ...

15 anos depois, a codificação tornou-se uma versão da cultura pop da programação, e agora a população tem grandes esperanças em um futuro exército de codificadores, graças ao qual teremos casas, tráfego, varejo, entretenimento e uma revolução na medicina controlados por IA , indústria e sexo - apenas um hospício, não há outra palavra. E tudo porque programação é exposta para codificação e, em teoria, é fácil de aprender... Mas isso está tão longe da verdade...

Fonte: LifeHacker

Vamos descobrir. O mito de que qualquer um pode aprender uma das linguagens de programação em apenas algumas horas, tida como um “fato”, só é verdade até certo ponto, e esse momento chega numa fase inicial do aprendizado. De fato, um idioma pode ser aprendido em um dia. Em geral, se você definir o objetivo de se tornar um poliglota em programação em um mês, enquanto tiver um emprego, poderá dominar de 8 a 10 idiomas se estudar nos fins de semana. Mas aqui está o problema. Cada linguagem de programação tem suas próprias bibliotecas, além de recursos sintáticos, e tudo isso não pode ser aprendido com facilidade ou rapidez ou no fim de semana. Na verdade, no mundo real, a linguagem de programação não será o principal problema.

Só porque você fala inglês não significa que você pode escrever romances ou mesmo contos. O mesmo pode ser dito sobre a codificação.

Só porque você aprendeu uma linguagem não significa que você sabe escrever um programa. Adicione a isso inúmeras estruturas, plugins, bibliotecas, pré-processadores, pós-processadores, padrões de codificação, padrões da indústria, desenvolvimento orientado a testes (TDD), desenvolvimento orientado a comportamento (BDD), sistemas de gerenciamento de conteúdo, controle de versão de arquivos, integração contínua (CI), lançamento gerenciamento e implantação, depuração, emissão de tíquetes, modelos em cascata - e métodos de scrum e combinações deles, e não tenho certeza do que mais nomear. A linha inferior é que o conceito de "codificador" abrange praticamente tudo mencionado acima. A programação afeta apenas uma pequena parte. Importante, mas ainda pequeno.

No entanto, a programação continua a ser simplificada ...

A Apple lançou o Playgrounds, o MIT lançou o Scratch e a Lego está preparando o Boost, e todos estão tentando vender codificação para a geração cada vez mais jovem, como se quisessem preencher os empregos de novos programadores na década de 2020.

Eu vejo assim: "Não se preocupe com o código, pegue essas peças do quebra-cabeça virtual e pronto, você pode programar." Se isso fosse verdade. Aqui está o que você precisa saber sobre programação: é baseado em texto. Sempre foi e será por muitos anos. Crianças que jogam Lego Boost, Playgrounds ou Scratch não se tornarão programadores mais experientes aos 22 anos do que aqueles que começaram a programar aos 16 e trabalharam com uma linguagem de programação real. Na verdade, de onde vêm essas expectativas? Eu não acho que meu filho vai aprender a ganhar seu próprio pão até os 22 anos. Mas se ele estudar codificação por 6 anos, garanto que ele encontrará rapidamente um emprego.

Playgrounds da Apple.

A codificação pode ser a parte mais difícil do processo de desenvolvimento de software. Se você não organizar tudo desde o início (especialmente para projetos grandes), a codificação e a depuração depois disso não apenas levarão muito tempo, mas também trarão muitas dores de cabeça.

Um bom código é bem mantido, reutilizável e testável. As etapas a seguir mostrarão a você e/ou sua equipe de desenvolvimento como lidar com diferentes tarefas de programação e manter tudo o melhor possível. Vou apresentá-lo às “melhores práticas” para ajudá-lo a escrever um bom código e ajudar você e sua equipe a serem felizes e eficientes.

1. Use padrões de codificação

É fácil escrever código ruim e desorganizado, mas difícil de manter. Um bom código geralmente mantém algum tipo de padrão para nomeação de variáveis, formatação e muito mais. Esses padrões são úteis porque condicionam as coisas para quem lê o código posteriormente, incluindo você.

Você pode criar seus próprios padrões de codificação, mas é melhor usar um amplamente utilizado. Usando o Zend Framework Coding Standard, ou PSR-1 Coding Style, será mais fácil para outros se adaptarem.

2. Use comentários

Comentários são extremamente necessários. Você não aprende a apreciá-los até escrever um código de tamanho de mil linhas e deixá-lo por alguns dias, e depois voltar tentando descobrir. Comentários úteis facilitam a vida de quem trabalhará com o código depois de você.

Escreva comentários claros de uma linha para partes incompreensíveis do código; escrever uma descrição completa dos parâmetros e funcionalidades das funções e métodos; para blocos lógicos complexos, descreva a lógica antes deles conforme necessário. Não se esqueça de atualizar seus comentários!

3. Refatorar

A refatoração de código também é um bom hábito para desenvolvedores produtivos. Acredite ou não, você precisa refatorar seu código todos os dias, caso contrário, algo está errado com ele! A refatoração mantém seu código em boa forma, mas o que você deve refatorar e como?

Você deve refatorar tudo, desde arquitetura até métodos e funções, nomes de variáveis, o número de argumentos passados ​​para um método e similares.

A refatoração é mais uma arte do que uma ciência, mas existem algumas boas regras que podem esclarecer isso:

  • Se sua função ou método tiver mais de 20 a 25 linhas, provavelmente há muita lógica e você pode dividi-la em duas ou mais funções/métodos menores.
  • Se o nome da sua função ou método tiver mais de 20 caracteres, vale a pena revisar o nome ou revisar toda a função/método usando a primeira regra.
  • Se você tem muitos loops aninhados, está usando muitos recursos sem perceber. Em geral, você deve repensar sua lógica se tiver aninhado mais de dois loops. Três loops aninhados são simplesmente horríveis!
  • Considere se existem padrões de design adequados que você pode usar. Você não deve usar padrões apenas por usar padrões, mas padrões oferecem soluções comprovadas que podem ser apropriadas.

4. Evite o código global

Globals e loops podem adicionar problemas quando seu código cresce para milhões de linhas. Eles afetam o código em locais onde é difícil ver ou causam problemas com nomes de variáveis, objetos e outras coisas. Pense duas vezes antes de poluir o namespace global com variáveis, funções, loops e muito mais.

Idealmente, você não deve definir nenhum bloco globalmente. Instruções switch, try-catch, loops foreach, loops while e similares devem ser descritos dentro de um método ou função. Os métodos devem ser descritos dentro de classes e classes e funções dentro de namespaces.

5. Use nomes significativos

Nunca use nomes como $ k, $ m e $ test para suas variáveis. Como esse código pode ser lido no futuro? Em bom código, os nomes das variáveis, métodos/funções, classes; deve carregar uma carga semântica. Alguns bons nomes de variáveis ​​são $ request, $ dbResult e $ tempFile (Depende do seu estilo de codificação).

6. Use estruturas significativas

Estruturar sua aplicação é importante; não use estruturas complexas, mantenha sempre simples. Ao nomear diretórios e arquivos, use uma convenção de nomenclatura que você concordou com a equipe ou que siga os padrões de codificação. Sempre separe as quatro partes de um aplicativo PHP umas das outras - CSS, HTML Templates, JavaScript, código PHP - e, para cada uma, tente separar as bibliotecas da lógica de negócios. Também é uma boa ideia manter a hierarquia de diretórios tão pequena quanto possível, assim será mais fácil para você pesquisar partes do código e navegar na estrutura.

7. Use sistemas de controle de versão

No passado, boas equipes de desenvolvimento confiavam no CVS. Agora, temos uma variação das soluções disponíveis. O gerenciamento de alterações e revisões deve ser simples, mas eficaz, portanto, escolha o sistema de controle de versão que funcione melhor com o fluxo de sua equipe de desenvolvimento. Eu prefiro usar um sistema de controle de versão distribuído como Git ou Mercurial; ambos de código aberto/livre e muito poderoso. Se você não sabe o que é controle de versão, eu recomendo que você dê uma olhada na série Introduction to Git de Sean Gudgston.

8. Use ferramentas de criação automática

9. Use documentadores de código

Para aplicativos grandes que abrangem várias classes e namespaces, você deve ter uma documentação de API gerada automaticamente. Isso é muito útil e todos na equipe saberão o que é o quê. E se você estiver trabalhando em vários projetos ao mesmo tempo, achará essa documentação uma benção, porque provavelmente esquecerá as peculiaridades da estrutura e outras diferenças entre os projetos. Um desses documentários que você pode querer considerar é o DocBlox.

10. Teste de uso

Existem muitas ferramentas que eu realmente valorizo, mas uma que eu valorizo ​​claramente são os frameworks que ajudam a automatizar o processo de teste. O teste (ou seja, o teste sistemático) é essencial para todas as partes do seu aplicativo de um milhão de dólares. Boas ferramentas de teste são PHPUnit e SimpleTest para testar suas classes PHP. Para testes de GUI, recomendo as ferramentas SeleniumHQ.

Resultado

Neste artigo, você viu uma visão geral das melhores práticas para escrever um código melhor, desde o uso de padrões de codificação até a formatação como uma equipe inteira, a importância da refatoração e como dominá-la, usando ferramentas profissionais como um framework de teste, um documentador de código e controle de versão para ajudar a gerenciar a base de código. Se você não seguiu essas etapas até agora, você deve treinar você e sua equipe para fazê-las.

A maioria dos desenvolvedores de software livre trabalha em Linux ou Mac, mas o suporte ao Windows geralmente é implementado em uma base restante. Funciona - bem, não funciona - deixe quem precisa dele portar. Neste artigo, mostrarei como criar executáveis ​​nativos do Windows sem ter esse sistema em mãos.

A versão mais recente do Python 2.7 foi anunciada este ano, após o qual a Python Software Foundation não oferecerá mais suporte à ramificação 2.7. Muitas bibliotecas e frameworks populares também estão abandonando o suporte oficial para Python 2, e várias distribuições Linux não o incluem mais em seu pacote padrão.

Você provavelmente já usou os serviços do virustotal.com mais de uma vez para verificar se os binários contêm funções maliciosas ou para testar seus próprios desenvolvimentos. Este serviço tem uma API gratuita, que discutiremos em Python neste artigo.

Qualquer oportunidade de acessar invisivelmente o mundo exterior de um host dentro de uma rede segura é um achado precioso para um testador de penetração. Um dos últimos caminhos disponíveis é o NTP, o protocolo de sincronização do relógio. Seu tráfego é permitido em quase todos os lugares, por isso será um excelente transporte de dados. Mostrarei como implementar um cliente e um servidor básicos em C#.

Você provavelmente já ouviu falar que as redes neurais recentemente se tornaram muito boas em reconhecer objetos em imagens. Nossa tarefa é aprender a usar essas redes neurais, pois seu poder pode ser útil em diversos casos. Neste artigo, mostrarei como usá-lo usando as ferramentas mais comuns: Python e as bibliotecas Tensorflow e Keras.

Você já deve ter se deparado com a identificação por voz. Ele é usado em bancos para identificação de telefone, para verificar a identidade em pontos de controle e em assistentes de voz domésticos que podem reconhecer o proprietário. Você sabe como isso funciona? Resolvi entrar nos detalhes e fazer minha própria implementação.

Anteriormente, o captcha com números era uma ótima maneira de eliminar bots, mas agora esse tipo quase nunca é encontrado. Acho que você mesmo adivinha qual é o problema: as redes neurais aprenderam a reconhecer esses captchas melhor do que nós. Neste artigo, veremos como uma rede neural funciona e como usar o Keras e o Tensorflow para implementar o reconhecimento de dígitos.

Há dois anos, os desenvolvedores da plataforma de streaming Twitch introduziram uma nova forma de interação entre streamers e espectadores - Twitch Extensions. Este sistema permite que os desenvolvedores complementem e melhorem a interface tanto do site quanto do aplicativo móvel, criando diversos elementos interativos. Mostrarei como essas extensões funcionam e como você pode criar as suas próprias, se desejar.

Trojans bancários causam milhões de dólares em danos todos os anos. Virmakers tentam manter tudo relacionado à culinária interna dos banqueiros no mais profundo sigilo. Portanto, não poderíamos perder um evento único - obter o código-fonte do trojan bancário Carbanak em público - e começamos a investigar sua estrutura por dentro.

Julia é uma linguagem de programação jovem projetada principalmente para computação científica. Seus criadores queriam que ele preenchesse o nicho antes ocupado pelo Matlab, seus clones e R. Os criadores tentaram resolver o chamado problema das duas linguagens: combinar a conveniência do R e do Python e o desempenho do C. Vamos ver o que eles fizeram .

Forth é usado em uma variedade de áreas, incluindo chipsets PCI e naves espaciais, e Pavel Durov usará uma linguagem semelhante em contratos inteligentes da criptomoeda TON. Sem sofrer grandes mudanças, uma das linguagens de programação mais antigas permite que muitos paradigmas modernos sejam incorporados. Então, o que exatamente é esse Forth enigmático?

O modo gama, em contraste com o modo de substituição simples, permite criptografar mensagens de tamanho arbitrário sem usar a operação de preenchimento. Hoje falaremos sobre como esse regime é implementado e escreveremos todas as funções necessárias para sua implementação.

Quando o número de linhas de código em seus programas está na casa dos milhões, encontrar erros se torna mil vezes mais difícil. Felizmente, hoje é possível automatizar os testes usando fuzzers. Como eles funcionam, por que devem ser usados ​​e do que são capazes - você descobrirá isso no artigo de hoje.

A abstração é a base da programação. Usamos muitas coisas sem pensar em suas partes internas, e elas funcionam muito bem. Todo mundo sabe que os programas do usuário interagem com o kernel por meio de chamadas de sistema, mas você já se perguntou como isso acontece em sua máquina?

Hackers desenvolvem truques, jogadores os compram, empresas contratam engenheiros para desenvolver novas defesas. Os hackers encontram uma brecha novamente e o círculo está completo. Neste artigo, veremos como funcionam os diferentes métodos defensivos (e se funcionam!) E tentaremos criar nosso próprio sistema anti-trapaça.

No Linux, como você sabe, muitas coisas são implementadas como arquivos no sistema de arquivos. E se não implementado, você pode implementá-los usando o FUSE. No Windows, isso é menos aceito, mas se você ainda quiser montar algo como um sistema de arquivos, é possível. Mostrarei como fazer isso usando C# e a biblioteca Dokan.

O alvo mais atraente para um invasor é o banco online, e as botnets desempenham um papel decisivo no sucesso dos ataques de vírus contra ele. Mas para extrair informações valiosas dos dados interceptados com a ajuda deles, o invasor precisa trabalhar duro. Hoje vou te contar como dificultar a vida dos bots e proteger seu aplicativo de ataques.

O melhor dos jogos de computador é que a recompensa pelo sucesso é o verdadeiro prazer, e o custo do fracasso é baixo. Mas às vezes, para desbloquear novas habilidades ou apenas acelerar a jogabilidade, você recorre a métodos não mais honestos. E se você não pode mudar as regras do mundo, você pode tentar dobrá-las. Sim, isso mesmo, vamos falar sobre cheats.

Os keyloggers de combate com toneladas de recursos e proteção contra detecção podem custar dezenas, senão centenas de dólares. Mas um keylogger não é uma coisa tão complicada e, se desejar, você pode fazer o seu próprio e até evitar ser detectado por antivírus. Neste artigo, mostrarei como fazer isso e, ao mesmo tempo, praticaremos o desenvolvimento de programas em C#.

Em C++, existe uma identificação dinâmica de tipo de dados (RTTI). É um mecanismo que permite determinar o tipo de uma variável ou objeto em tempo de execução. Para tornar o arquivo executável menor, o RTTI é desabilitado em muitos projetos, o que faz com que dynamic_cast e typeid parem de funcionar. Mas ainda existe uma maneira de verificar se uma instância de um objeto é derivada de alguma classe base.

As linguagens de tipagem estática geralmente forçam você a escrever tipos de variáveis ​​por qualquer motivo. Mas nem sempre é esse o caso: a teoria e a prática das linguagens de programação avançaram significativamente, só que essas conquistas não são aceitas imediatamente pela indústria. Hoje vamos dar uma olhada na linguagem OCaml e ver que a tipagem estática não é necessariamente inconveniente.

Existem muitas soluções de segurança que definem o trabalho em ambientes de área restrita, trabalham com técnicas antidepuração, monitoram a integridade de seu código e criptografam dinamicamente seus dados na memória em relação a um dump. Outra técnica de segurança poderosa é a virtualização de código. Neste artigo, mostrarei como funciona.

É melhor aprender a linguagem em um projeto real, então quando decidi experimentar o inferno, me propus uma tarefa real e interessante: escrever um utilitário para detectar trabalho em um hipervisor. Isso por si só é divertido, e a nova linguagem de programação levará o entretenimento ao próximo nível.

Você se deparou com protocolos diferentes em sua vida mais de uma vez - você usou alguns, outros, talvez, invertidos. Alguns eram fáceis de ler, outros não poderiam ser descobertos sem um editor hexadecimal. Neste artigo, mostrarei como criar seu próprio protocolo que será executado em cima do TCP/IP. Vamos desenvolver nossa própria estrutura de dados e implementar o servidor em C#.

Se você escreve em Python, provavelmente viu as definições de métodos envoltas em sublinhados duplos nas bibliotecas padrão. Esses métodos "mágicos" formam muitas das interfaces úteis que você usa o tempo todo - por exemplo, quando você obtém um valor pelo número do elemento ou imprime algo. Agora vou mostrar como usar esses métodos em seus programas também.

Ao escrever software que interage com outros aplicativos, às vezes torna-se necessário encerrar a execução de processos de terceiros. Existem vários métodos que podem ajudar nessa questão: alguns são bem documentados, outros tentam completar os processos necessários de formas mais rígidas, provocando o sistema operacional a fechá-los à força. Mostrarei várias maneiras de encerrar e destruir processos no Windows.

A linguagem, desenvolvida por ordem do Departamento de Defesa dos EUA e batizada com o nome da primeira programadora do mundo, Ada Lovelace, é usada ativamente para controlar aviões, trens, naves espaciais e outras coisas interessantes. Vamos olhar para a linguagem sem o prisma dos mitos e ver como podemos nos beneficiar dela, mesmo que ainda não estejamos indo para o espaço.

Você provavelmente já se deparou com emuladores de consoles de jogos e, talvez, até sentou neles por mais de uma hora. Mas você já se perguntou como isso funciona? Usando o exemplo do NES, conhecido na Rússia como Dendy, mostrarei como criar seu próprio emulador. E, ao mesmo tempo, lidaremos com a arquitetura astuta deste console, que produziu uma imagem incrivelmente boa para a época e seu preço modesto.

Você provavelmente já ouviu falar de uma classe de aplicativos maliciosos como ladrões. Sua tarefa é extrair dados valiosos do sistema da vítima, antes de tudo, senhas. Neste artigo, explicarei exatamente como eles fazem isso, usando o exemplo de extração de senhas dos navegadores Chrome e Firefox e mostrarei exemplos de código C++.

Perguntas da entrevista como "por que a tampa do bueiro é redonda?" - isto é estranho. Folhas de código C que você tem que compilar na sua cabeça são chatas. As tarefas mais interessantes são para o pensamento técnico e lógico geral. E hoje os camaradas da empresa Abbyy nos jogaram exatamente assim!

A capacidade de programar é uma das habilidades mais valiosas em demanda no mundo moderno. E praticamente não importa o que exatamente faz uma pessoa criar o código: interesse sincero, considerações financeiras ou de carreira - quem sabe programar não ficará ocioso. A codificação é muito semelhante à comunicação em uma língua estrangeira, portanto, nos estágios iniciais do aprendizado de programação, os iniciantes geralmente acham difícil. Ao mesmo tempo, muitos experimentam um desconforto severo, mas com o tempo tudo melhora e uma pessoa começa a codificar facilmente, sem grandes custos mentais. Hoje você pode encontrar muitos livros e recursos online com os quais você pode aprender a codificar, mas qualquer autoestudo está associado a estresse e emoções negativas - isso deve sempre ser lembrado ao começar a dominar uma linguagem de programação. O mais importante para um programador iniciante é não desistir de aprender um idioma no meio do caminho, perdendo todo o interesse por essa ocupação. Então, o que um futuro programador precisa saber? Que dificuldades o aguardam no caminho para dominar habilidades úteis?

Linguagens de programação

Primeiro você precisa decidir sobre a linguagem de programação que um iniciante quer aprender. Não é tão fácil - existem muitos idiomas e cada um deles é bom à sua maneira. É muito importante escolher um idioma de forma consciente - afinal, muito tempo e esforço serão investidos em seu desenvolvimento. Mas seja como for, um programador iniciante precisa saber que não existem linguagens de programação boas ou ruins, mas sim linguagens que são amigáveis ​​para neófitos. Portanto, quanto mais fácil e compreensível for a linguagem de programação, melhor - no início do caminho é melhor ir de sucesso em sucesso, de tarefas simples a mais complexas. Além disso, será mais fácil, depois que o iniciante aprender a codificar em sua primeira linguagem de programação, outras linguagens serão dadas a ele com muito mais facilidade.

Também é muito importante determinar imediatamente para que você precisa saber o idioma. Porque a codificação é muito diferente. Se alguém quiser se tornar um desenvolvedor de software, você pode olhar para o Java e, no caso de criar aplicativos para iOS, a linguagem Swift é melhor.

Método de ensino adequado

Existem muitas maneiras de aprender, portanto, no caso de linguagens de programação, você precisa encontrar uma metodologia adequada. Ao mesmo tempo, será sensato escolher o método principal e complementá-lo com métodos de ensino secundários. Tudo aqui é muito individual: se um iniciante é visual ou entende bem as informações de ouvido, ele pode aprender a codificar assistindo a vídeos no YouTube e obter outros conhecimentos de livros. Aqui estão alguns tutoriais simples, mas eficazes:

Cursos de codificação online. Algumas pessoas trabalham com mais eficiência quando lhes dizem o que fazer e têm seu desempenho verificado regularmente. E há muitas dessas pessoas. Portanto, se um iniciante sente que tem problemas de autodisciplina, deve escolher um curso em que seja constantemente motivado por verificações. É uma boa ideia - muitas pessoas param de aprender programação, confiando em sua força de vontade e entusiasmo. Aprender a codificar por conta própria não é para todos, isso deve ser sempre lembrado.

Vídeo do youtube. Hoje, você pode descobrir tudo sobre tudo apenas assistindo a vídeos no YouTube. Codificadores mais experientes mostrarão exatamente o que fazer, então esses materiais são muito úteis. É uma maneira simples, eficaz e, mais importante, gratuita de aprender a codificar. Se você tiver acesso à Internet, pode sentar, assistir, repetir pelo menos o dia todo até ficar claro.

Livros... Esta é uma maneira um pouco antiquada de aprender linguagens de programação nos dias de hoje, mas o fato é que ao longo dos anos a codificação não mudou muito e o que é dito no YouTube não é muito diferente do que é dito em um artigo livro. Mas os livros têm um mérito inegável - eles facilitam a compreensão da lógica da linguagem, e isso é incrivelmente importante. Em primeiro lugar, porque quando se trata de treinamento prático, ninguém quer fazer o que é incompreensível ou impossível. Para não desistir de tudo pela metade, é imprescindível ler livros de programação.

Prática. Muitos dos melhores programadores são autodidatas. Muitas vezes eles começaram a codificar despercebidos para si mesmos, pois seu treinamento era aleatório. Eles enfrentaram um problema, resolveram, enfrentaram outro - e resolveram também. Gradualmente, essas pessoas autodidatas passam de um problema para outro, mais complexo e ao mesmo tempo mestre de codificação. Não vale a pena imitar essas pessoas, mas a prática não deve ser abandonada - é a chave para o sucesso no aprendizado.

Corrigindo o sucesso

Um iniciante, que está começando a aprender uma linguagem de programação, precisa conhecer e estar preparado para o fato de que isso é por muito tempo. Aprender a codificar é um processo demorado em que o fracasso é sentido muito mais do que o sucesso. Para não abandonar a escola, é imperativo registrar todas as suas ações. As pessoas muitas vezes perdem a motivação apenas porque não conseguem sentir o progresso. E ele definitivamente será se o iniciante estiver diligentemente engajado. É que as habilidades crescem imperceptivelmente, um programador iniciante pode nem perceber, com passos tão pequenos ele se move em direção ao objetivo pretendido.

É por isso que você precisa se lembrar de vez em quando o quão longe você chegou e olhar para trás com mais frequência. Ajuda muito - afinal, olhando suas primeiras linhas de código, qualquer um pode entender que está progredindo. Todos esses recordes pessoais podem parecer divertidos. Não, de fato, o registro do sucesso é muito importante - é altamente motivador ao longo de todo o processo de aprendizagem. Portanto, para começar e não desistir, é imprescindível marcar cada etapa passada.

Termos claros de treinamento

Quando se trata de codificação, muitos iniciantes cometem um erro comum - eles tentam fazer várias tarefas de uma vez e geralmente desistem de todas antes de terminar. Eles se interessam por outra coisa, na maioria das vezes em outras tarefas, então pulam de um projeto para outro. Não faça isso. É melhor se mover de maneira sistemática - resolver um problema ou entender o exemplo até que tudo fique claro. É um princípio muito simples: uma coisa de cada vez.

Mas, ao mesmo tempo, você precisa entender que avançar é necessário, então você precisa definir prazos rígidos para estudar um ou outro aspecto do idioma. Você pode tentar imaginar que o exame está chegando e você terá que mostrar tudo o que pode alcançar. Isso é motivador. Sim, todos esses assuntos pessoais podem não ser muito confortáveis, mas a codificação em si não é divertida. A disciplina estrita permitirá que você adquira as habilidades necessárias, e o cumprimento do prazo é quase a habilidade mais importante para um programador freelance.

Enquanto os usuários comuns têm medo de cometer um erro e odeiam quando algo dá errado, o programador está em uma posição completamente diferente. Erros são parte de seu trabalho, e uma parte muito grande. Portanto, um codificador iniciante deve aprender a ler mensagens de erro, não importa o quão frustrante possa ser. Essas mensagens contêm muitas informações valiosas, pois informam exatamente o que foi perdido no processo de criação do código. Você precisa estar preparado para que essas mensagens apareçam com muita frequência e não cheguem a lugar algum, mesmo após o término do estudo da linguagem de programação. Você não pode perder tempo para trabalhar nos erros - essa é a parte mais importante do aprendizado. Além disso, esta é uma boa prática - uma vez que você entenda o problema, mais tarde será mais fácil evitar muitos erros. Reportar bugs não é uma punição; na verdade, eles são os melhores amigos do programador que querem ensiná-lo a fazer tudo certo.

Comunicação com outros programadores

Essa comunicação também ajudará a entender que outras pessoas encontram problemas de codificação com a mesma frequência e isso não é incomum. E se, além disso, um iniciante puder ajudar seu amigo programador, ele terá um segundo fôlego e continuará aprendendo com força total. E você não deve ter medo da comunicação - os programadores são realmente pessoas amigáveis, eles geralmente estão em seu próprio comprimento de onda e um iniciante só precisa entrar em ressonância.

Abordagem certa e errada

Codificadores iniciantes geralmente tentam copiar trechos de código de outros projetos, resolvendo qualquer um de seus problemas. Eles acham que isso é razoável, porque o principal é fazer tudo funcionar. Esta é uma abordagem errada, além disso, muito prejudicial. E não porque copiar é ruim, mas porque copiar, um iniciante não entenderá exatamente o que esse código está fazendo. Claro, copiar é muito mais fácil do que escrever tudo sozinho.

Mas no processo de aprendizagem, tal abordagem levará ao fato de que grandes lacunas no conhecimento são formadas e um codificador iniciante um dia desistirá, incapaz de resolver o problema que ele enfrenta. E vai abandonar tudo. Aprendendo uma linguagem de programação, você precisa gastar tempo sem se arrepender em analisar qualquer problema, mesmo à primeira vista. E se você não consegue encontrar uma solução imediatamente, você não pode desistir. Você precisa ler, assistir a um vídeo, perguntar a outras pessoas - um iniciante precisa lidar completamente com as dificuldades que surgiram. Embora ele esteja aprendendo uma língua, não é exatamente o mesmo que aprender uma língua humana comum. Um codificador lida com uma máquina, por isso é importante que ele entenda o que está fazendo. Esse conhecimento da língua é simplesmente inestimável quando o processo educacional chega à prática.

Aprender linguagens de programação não é a coisa mais empolgante de se fazer. Mas tudo pode ser consertado se você abordar o assunto com ficção. Não há melhor maneira de aprender qualquer coisa do que jogando. Isso também se aplica à codificação, pois você pode aprender rapidamente um idioma apenas jogando e melhorando suas habilidades ao mesmo tempo. Aqui estão alguns jogos para um programador iniciante conferir.

  • CheckiO é um jogo que você pode jogar em seu navegador e requer a resolução de problemas de JavaScript ou Python para progredir no jogo.
  • CodeMonkey - principalmente para crianças, mas se você é iniciante, pode aprender algum código jogando este jogo.
  • Codewars não é um jogo real, mas sim uma solução colaborativa de resolução de problemas para programadores. Esta é uma ótima maneira de dominar a codificação, pois o jogo suporta muitos idiomas.
  • Code Combat é uma plataforma online onde você pode aprender a codificar jogando um jogo real.

Existem muitos outros jogos que você pode usar, dependendo de qual deles funciona melhor para você e o idioma que você está aprendendo. O jogo ajudará um iniciante a começar a pensar como um programador, o que é muito importante no início do aprendizado.

Conclusão

Algumas pessoas aprendem a codificar rapidamente, outras mais lentamente, mas qualquer um pode aprender a codificar. E não caia no mais rápido se algo não der certo. Você pode alcançar seu objetivo movendo-se lentamente e, de fato, qualquer estudo é um processo lento. Se um iniciante não quer abandonar o estudo da codificação, tendo dominado apenas o básico, ele precisa desenvolver sua própria estratégia de comportamento. Você precisa entender que tempo, esforço e às vezes dinheiro são investidos em treinamento, então você só precisa passar de um estágio para outro. E não ceda às dificuldades. Sim, a programação não é para todos. Mas qualquer um pode aprender uma linguagem, aprender a codificar. Então você só precisa decidir e seguir seu próprio caminho.

1. Independentemente

Se você tem força de vontade de ferro e está ansioso para se tornar um programador, pode alcançar seu objetivo por meio da auto-educação. Este não é o caminho mais fácil e curto: você mesmo precisa entender o caos da informação e combater a procrastinação. Mas você pode estudar em um horário conveniente por relativamente pouco dinheiro ou totalmente gratuito.

O lugar mais fácil para começar é com cursos online interativos. Existem muitos materiais na web que explicam os fundamentos da programação e definem a direção para o desenvolvimento posterior. Preste atenção especial aos cursos que ensinam exemplos de projetos reais, ou seja, ensinam passo a passo como criar um programa ou site específico.

Plataforma de Desenvolvimento Web FreeCodeCamp

Lembre-se que você não pode fazer nada sem prática. Estude cursos orientados a projetos e tente escrever os programas e sites que estão desmontados neles. Pesquise no YouTube palestras sobre projetos que você gostaria de desenvolver. Primeiro, copie o trabalho de outras pessoas e analise-o. Então tente se afastar do original, experimente, mude elementos individuais até que você possa criar algo único.

Além de cursos e videoaulas, você encontrará documentação oficial disponível em sites de idiomas e. Quando você tiver o básico, procure os títulos mais recentes de práticas recomendadas para sua linguagem de programação. Esses livros contêm as melhores técnicas de design.

Certifique-se de definir uma meta para criar seu projeto e trabalhar constantemente nele.

Isso ajudará a consolidar o conhecimento adquirido e entender quais informações ainda faltam. Suas habilidades se desenvolverão junto com o projeto. Quando terminar, trabalhe em um novo, mais complexo.

Se você tiver alguma dificuldade no processo de aprendizado ou desenvolvimento, sempre poderá recorrer a comunidades de programação como Toaster e Stack Overflow para qualquer dúvida. Por exemplo, eles ajudarão você a resolver um problema, escolher um bom curso ou apontar erros no código.


Serviço de perguntas e respostas sobre temas tecnológicos "Toaster"

É conveniente aprimorar habilidades em sites especiais onde você pode competir com outros programadores resolvendo vários problemas práticos com a ajuda de código. Esses serviços incluem Codewars, TopCoder e HackerRank.

Se você sente que seu desenvolvimento está parado ou deseja acelerar seu aprendizado, tente as seguintes opções.

2. Com a ajuda de um mentor

Um mentor é um mentor pessoal que aponta erros, alerta sobre armadilhas, ajuda a orientar o curso. Uma recomendação útil, recebida no momento certo, pode evitar muitos problemas e economizar muito tempo. Portanto, um mentor não incomodará ninguém.

Descubra se existem desenvolvedores que você conhece. Talvez um deles queira ajudá-lo. Se você não conhece essas pessoas, pode procurá-las nas comunidades de programação. Por exemplo, no mesmo "Toaster". Apenas os serviços de mentoria não são baratos, e ninguém quer passar muito tempo com estranhos assim.

3. Em professores de cursos "ao vivo"

Cursos à distância e presenciais com instrutores que treinam programadores do zero se tornaram incrivelmente populares nos últimos anos. Dentro desse formato, você também tem que trabalhar muito por conta própria. Mas você estudará de acordo com um programa preparado profissionalmente e uma pessoa real verificará a solução dos problemas. As desvantagens dos cursos incluem o alto custo do treinamento.

Plataformas online populares em russo que estão envolvidas no treinamento sistêmico de programadores: Netology, GeekBrains e Loftschool.

Se você preferir estudar internamente, pode procurar centros educacionais que ensinem programação em sua localidade. Infelizmente, esses estabelecimentos na maioria das vezes estão presentes apenas nas grandes cidades. Um exemplo é a academia de informática "STEP", que possui filiais em diversos países.

4. Na universidade

Se você tem muito tempo sobrando e tem certeza de que deseja conectar sua vida à programação, pode estudar ciência da computação na universidade. Mas lembre-se de que as instituições educacionais tradicionais estão atrasadas em relação ao progresso, então você terá que dominar as linguagens de programação modernas e outras tecnologias por conta própria.

Por outro lado, a universidade fornecerá conhecimentos fundamentais de matemática, algoritmos e outras áreas que ajudarão você a se tornar um programador de alta qualidade. Ao longo dos anos de estudo diligente, você desenvolverá a mentalidade certa, graças à qual entenderá tudo rapidamente no campo profissional.

Como escolher uma direção e idioma

Existem várias direções na indústria de TI, cada uma das quais usa seu próprio conjunto de linguagens. Vamos listar as principais direções em ordem crescente de complexidade:

  1. desenvolvimento web... Linguagens populares: JavaScript, PHP, Python, Ruby.
  2. Desenvolvimento móvel... Linguagens populares: Java, Swift.
  3. Desenvolvimento de jogos e programas para computadores desktop... Linguagens populares: C++, C#, C.
  4. Big Data, aprendizado de máquina... Linguagens populares: Python, R, Scala.

O que procurar na hora de escolher

Para fazer a escolha certa da direção e, em particular, do idioma, leve em consideração os seguintes fatores: a complexidade do domínio e a quantidade de materiais de treinamento na Web, suas preferências pessoais (o que exatamente você deseja desenvolver) e a demanda para a língua no mercado de trabalho.


O gráfico da demanda por idiomas no mercado de trabalho internacional / research.hackerrank.com

A demanda pelo idioma em sua região é fácil de verificar em sites de busca de emprego. Basta abrir a seção para desenvolvedores de software e ver a quantidade de vagas disponíveis.

Se você não pode decidir

Se você está confuso, dê uma olhada no JavaScript - a linguagem na qual quase toda a web é escrita. Muitas organizações e programadores aconselham os iniciantes a escolher essa linguagem como sua primeira linguagem.

Por exemplo, Quincy Larson, fundador do recurso educacional freeCodeCamp, é JavaScript para todos os iniciantes. Larson faz argumentos muito simples:

  1. JavaScript é relativamente fácil de aprender. E para escrever algo e executá-lo nesta linguagem, basta ter um editor de código e um navegador.
  2. JavaScript é a linguagem mais requisitada no mercado de trabalho internacional e tem grandes perspectivas. Grandes empresas como Google, Microsoft e Facebook estão investindo no ecossistema JavaScript.
  3. JavaScript tem uma gama muito ampla de aplicações: desde sites e jogos de navegador até aplicativos móveis.

Além disso, uma grande comunidade de desenvolvedores se formou em torno dessa linguagem. O alto interesse em JavaScript fornece um grande número de cursos, livros e outros conteúdos educacionais.

O que mais um programador deve saber: matemática e inglês?

Qualquer programador se beneficiará de uma compreensão profunda. Para coisas como gráficos de jogos ou big data, uma mente matemática é essencial. Mas quanto ao desenvolvimento web e criação de programas simples, na maioria dos casos você pode ficar sem matemática. Embora não haja consenso entre os profissionais sobre esse assunto.

Mas entender inglês, pelo menos no nível de leitura fluente da documentação, é uma obrigação para todos os programadores. Os documentos oficiais e a maioria dos materiais educacionais aparecem principalmente em inglês. muitas vezes estão desatualizados antes mesmo de a tradução ser lançada. Além disso, o conhecimento da língua inglesa abre perspectivas para trabalhar com o mundo todo.

Como obter sua primeira experiência e seu primeiro emprego

Para encontrar seu primeiro emprego como programador, você deve ter um portfólio. Este é um projeto que você criou, ou melhor, vários, que demonstram todas as suas habilidades de desenvolvedor. A maioria dos cursos inclui o desenvolvimento de projetos que podem caber em seu portfólio.

A experiência de trabalho, especialmente o desenvolvimento da equipe, será um item muito valioso em um currículo. Mas onde você pode obtê-lo se estiver procurando seu primeiro emprego?

  1. Conclua vários pedidos para. Pode ser Freelance ou Upwork. Ofereça seus serviços gratuitamente, então os primeiros clientes virão até você.
  2. Encontre pessoas afins e crie um projeto comum com elas. As pessoas se unem para esses propósitos em quase todos os locais educacionais onde há cursos de programação.
  3. Selecione os cursos que o organizador ajuda com o emprego. Por exemplo, no GeekBrains, após o treinamento, abre-se o acesso a estágios de várias empresas, inclusive remuneradas. GeekUniversity e STEP garantem emprego para seus graduados.

Antes, não se esqueça de pesquisar na Web listas de tarefas e perguntas que são feitas com frequência aos candidatos a emprego.