Quando criança, Anastasia Birillo sonhava em se tornar professora de língua e literatura russa. Hoje, ela é pesquisadora da JetBrains Research, metodóloga e professora da Digital Banana e também desenvolvedora de sua própria startup. "O humanista não é uma sentença", afirma Nastya. Em nossa conferência de novembro, "
Contenting "
, ela falou sobre como aprender programação sozinha, que direção escolher para um desenvolvedor iniciante, onde procurar projetos, que dificuldades podem ser encontradas no caminho do fumante e como superá-las.

Sob o corte - decodificação de seu relatório.
Duas maneiras de programar
As pessoas costumam pensar que a programação é muito difícil. Quando você não pode escrever nem algumas linhas de código, parece que os programadores são algum tipo de deuses que fazem coisas incrivelmente complexas. De fato, nada disso.

Você pode chegar a essa profissão de duas maneiras. O caminho clássico é bastante padrão, através da educação em uma universidade técnica. Eu passei por isso, é legal, legal. Você tem bastante tempo porque é estudante. Você é jovem, tem muita força e energia. Na sua comunidade, você sempre pode fazer uma pergunta ao professor ou aos colegas de classe. Além disso, você recebe um diploma técnico, que oferece muitas perspectivas, incluindo as relacionadas a trabalhar no exterior.

Mas falaremos de outra maneira, sobre o chamado “caminho do fumante”. É quando você já recebeu o primeiro diploma, trabalha em algum lugar do PR, por exemplo - e de repente você deseja se tornar um programador. Desta forma, tem várias desvantagens. Em primeiro lugar, você tem pouco tempo, depois do trabalho, senta-se para ler livros, em vez de ir a um bar ou a um filme com os amigos. Em segundo lugar, muito provavelmente, você não receberá uma educação e não terá um diploma. Mas com a devida diligência, você surpreenderá seus amigos e se tornará o mesmo “programador de deuses” sobre quem eles pensavam: "Senhor, isso é tão difícil". E agora você sabe como!

Primeiros passos, primeiras dificuldades e sucessos
Parece-me que entrar na programação é mais fácil na web. No início, nem mesmo será a programação, mas você pode começar com o layout: estruturar as páginas, colorir com cores. Com a devida diligência, em breve você poderá obter um bom dinheiro para isso, coletando pedidos por conta própria. Então você estuda JavaScript, HTML, CSS ... Você acha que já entendeu tudo - e, é claro, está enganado.
Esta é uma citação real de um VKontakte público bastante popular. Os caras pensam: "Eu dominei a frente, sou um programador da web super bacana, agora tenho que ir para o back-end". De fato, não é assim.

O frontend é uma área muito legal. Muitas vezes as pessoas pensam que não há nada de interessante lá, você só precisa sentar e layout da página. Tipo, mesmo que eu domine, ficará muito chato. Eles não entendem que há muita lógica nesse front-end. Você aplica padrões de programação usados no desenvolvimento convencional, entende os algoritmos e as estruturas de dados - e isso é bastante difícil.

Após JavaScript, HTML e CSS, você pode começar a aprender as estruturas de front-end. Após 3-4 meses, você já pode escrever seu aplicativo simples em Angular ou React. Anteriormente, vendo um monte de erros no console, você estava com medo: "Oh meu Deus, o que é isso ?! ..." Agora você olha para ele com calma, começa a pesquisar no Google e descobre, qual é o motivo. Com a menção do Github, um suor frio não o interrompe: você sabe que este é um gato tão fofo, uma coisa bastante conveniente para todos os programadores. Talvez você já ria docemente de um amigo de ciências humanas que de repente também quer aprender a programar. Ele não consegue, senta e não entende o que está acontecendo com ele. E você vê que ele simplesmente esqueceu o suporte em algum lugar.
Programador - como artista
Agora você já domina bem a programação e pode ir para a chamada Engenharia de Software. Moram os mesmos caras que escrevem todo tipo de coisas complicadas em Java, C #, C ++, Python e assim por diante. E isso não é tão difícil: a essa altura você já entende que um programador é como um artista. Ele simplesmente aprendeu a pensar como um computador e o transfere para o código - com certas regras estritas. O artista não possui uma estrutura rígida, mas eles estão em programação. Mas você já entende: em princípio, não é tão difícil, eu posso lidar com isso.

Que idioma começar
Muitos caminhos e linguagens de programação estão abertos para você. Por exemplo, você pode começar com Python. Esta é uma linguagem bastante simples, foi feita para fins acadêmicos, para crianças. Se você sabe inglês, pode entender o código Python, mesmo que nunca o tenha programado. Servachki são escritos em Python - esta é a lógica em todos os sites. E, de repente, você descobre um talento para a matemática em si mesmo e encontra muito tempo, pode ir para a mais movimentada Ciência de Dados e ganhar 300 mil por segundo lá. Mas há dificuldades nessa área.

Kotlin ou Java é mais difícil de aprender do que Python. Existem muito mais sutilezas e sintaxe bastante complicada. Mas conseguir um emprego, especialmente no início da jornada, será muito mais simples: as vagas para Junior Java Developer são muito mais do que vagas para iniciantes em programadores Python. Há também muitas oportunidades. Você pode apenas permanecer na Engenharia de Software como desenvolvedor Java, pode ir para o desenvolvimento móvel ou escrever os mesmos serviços, apenas em Java ou Kotlin.

E se você vê muita força em si mesmo, se sente o mestre do universo e aprende C ++ ou Rust. É assim que as pessoas que realizam um estágio no Google, escrevem aplicativos super complexos, constantemente falam sobre alguns vazamentos de memória ou que eles mesmos podem se dar bem. Mas se você realmente quer fazer isso, tenho certeza de que não desistirá do que pode - por que não?

Escala de frescura

Eu mencionei algo como Desenvolvedor Java Júnior. No mundo da TI, existe a chamada "escala de frescura" de Júnior a Sênior. Quando você é júnior, você é como uma criança: você vê algum tipo de erro e fica em pânico, não entende o que está acontecendo. Você apenas chora e pede ajuda a esse super-herói-senhor: ele vem e resolve seu problema, no qual você pode ficar sentado por várias horas ou dias, literalmente em um minuto. Isso não é mágico, as habilidades se acumulam com o tempo: a experiência é adquirida e a base de conhecimento está crescendo.
O que praticar

Agora você provavelmente pensa: "Vou escolher um campo, vou aprender Python ou acessar a web, me inscrever em uma montanha de cursos, ler uma tonelada de livros e me tornar um programador legal". Na verdade, isso não funciona. O mais importante é a prática. Não estou falando de nenhum projeto trivial solicitado nos cursos, da categoria "remova os 10 primeiros números de Fibonacci" ou "troque duas variáveis na matriz". Resolva tarefas realmente interessantes, faça o que quiser.
Escreva sua versão do aplicativo que você usa todos os dias, apenas tente. Porque Uma coisa é ler a teoria: "Sim, encapsulamento, algum tipo de palavra assustadora ... bem, eu entendi mais ou menos para que serve ..." Outra coisa é enfrentar isso na prática: você verá imediatamente todas as lacunas que podem não ser suficientes mais tarde, quando Você conseguirá um emprego.

Nas entrevistas, geralmente encontramos pessoas que falam sobre livros que lemos e sobre cursos. Você pergunta o seguinte: "O que você fez?" Ele: "Bem, eu decidi que havia alguns engenheiros de projeto de treinamento que estavam no Stepik". É muito mais bacana falar sobre meu próprio aplicativo: "Eu criei essa arquitetura ... não consegui, refiz, encontrei problemas como esses, resolvi-os assim e assim ..." O RH vê isso, e isso é uma vantagem muito interessante em karma. Ao se candidatar a um emprego - sim, eles analisam o conhecimento em geral. Mas para um júnior, é importante que ele possa aprender e que, antes de ler não apenas a teoria, também se envolva em algum tipo de prática.
Onde procurar projetos

Encontrar projetos é fácil. Por exemplo, você decidiu se envolver no layout. Todos nós sentamos na Internet, você provavelmente tem algum recurso favorito - Habr, Picabu, algum tipo de site com fotos. Você pega este site e cria o mesmo. Sim, não será usado, ninguém o comprará. Mas enquanto você estiver envolvido neste projeto, você encontrará vários problemas - e aprenderá como resolvê-los: você tentará fazer algo, primeiro não funcionará e depois corrigirá.

Se você deseja escrever algum tipo de lógica - por exemplo, para aplicativos da Web no front ou no back-end, basta procurar um recurso semelhante na Internet e implementá-lo ... Em geral, você pode escrever código para qualquer coisa. Encontre um tutorial trivial na Internet - como fazer uma lista de tarefas. Isso é o que muitos aconselham - uma lista de tarefas na qual você observa o que já foi feito. Você pode implementar algumas peças que você jogará com o próprio amigo que também decidiu estudar. Você pode até se reunir e escrever um projeto juntos.
Como fazer tudo e ganhar dinheiro com um hobby

Normalmente eu simplesmente não durmo muito. Mas, em geral, você pode pintar todos os dias. Se você tiver uma lista das coisas que deseja fazer, provavelmente irá fazê-las. O principal é prazos rígidos. Se você diz: "Preciso registrar um aplicativo de teste, tenho duas semanas para ele", ele não funciona. Mas se você precisar "cortar o aplicativo de teste até 4 de dezembro", você estará sentado e serra. Simplesmente iniciei um calendário no meu computador, coloquei as coisas para mim todos os dias e tentei fazê-las. Ao mesmo tempo, encontro tempo para caminhar com os amigos, dançar e inglês.

Isso só funcionará se você realmente gostar do trabalho. Meu colega tornou-se desenvolvedor front-end porque estava cansado de trabalhar em relações públicas. Ele percebeu que realmente gostava do layout dos sites e passava todo o seu tempo livre neles. Mas ele gostou. Não é de admirar que eles digam: encontre o que você gosta e não trabalhará nem um dia. Parece patético, mas é verdade. Eu amo tanto o que faço que não posso chamá-lo de trabalho. Acontece que sou pago pelo meu hobby.
Ponto de entrada: por que a web é melhor que os jogos
Os jogos também são um bom ponto de entrada. Mas você precisa fazer o que quiser. Por exemplo, eu odeio jogos e não poderia me tornar um programador através deles, mesmo que eu realmente quisesse. Se você usa algum Construct (é uma coisa tão simples de criar jogos em 2D), você não programa essencialmente. E quando você começa a digitar, ainda se acostuma a pelo menos alguma disciplina: você vê esses colchetes, se acostuma a não ter medo de escrever código, e será mais fácil se adaptar a coisas mais complexas. Então você olha calmamente para grandes pedaços de código: "Bem, tudo bem, eu escrevi isso também, tudo bem."
O principal é não ter medo
- Você pensa: “Sim, ela diz, como se tudo fosse fácil. Na verdade, todos esses são sonhos. Não, não é fácil - mas é possível. Quando entrei na universidade de uma escola de artes liberais, fui o pior do curso. Mas você tenta e, mesmo que não consiga, tenta mais. Eu pensei que nunca entenderia todos esses OOPs, gráficos, estruturas de dados e muito mais. Mas agora trabalho como programador e ensino programação infantil. Pode parecer patético, mas o humanista não é uma frase.

Se você quer ir para TI, a principal coisa - não tenha medo. Você precisa superar o medo, não ter medo de escrever código. Por alguma razão, todo mundo pensa em programação, que isso, caramba, é muito, muito difícil. Até as crianças que eu ensino às vezes têm medo de executar um programa que elas mesmas escreveram: "Agora haverá um erro, tudo cairá e eu não poderei entender qual é o motivo". O principal é superar esse medo. Você pode começar com a web, é bem simples. E lembre-se: prática, prática e muitas, muitas práticas. Nada vai funcionar sem ela!
Todos os relatórios de "
Conteúdo " - e são 16 horas de informações úteis, 26 discursos e 3 discussões sobre como criar conteúdo interessante sobre tecnologias e uso de tecnologias - estão no formato de vídeo
aqui . Desconto para usuários do Habr com o código promocional habr_online_promo.
Por apoiar a conferência, agradecemos aos nossos patrocinadores: