Isenção de responsabilidade: este artigo foi escrito por Skillbox em colaboração com Egor Yakovishen, desenvolvedor líder do Setka Editor e rastreador da IIDF.
Atualmente, aprender a programar em um nível básico é relativamente fácil. Por exemplo, o sem-teto americano Leo Grand, que tinha apenas o ensino fundamental, em apenas três meses conseguiu
criar seu próprio aplicativo móvel, chamado Trees for Cars.
Por que até aprender programação? Pode haver muitas respostas, desde o desejo de desenvolver e terminar com o desejo de ganhar muito dinheiro. Mas suponha que aprendemos a codificar e alcançamos um certo nível. Há trabalho, o dinheiro também parece estar presente, a satisfação com a vida (parcial ou total) está disponível. Parece que você pode parar e apenas aproveitar suas realizações. De fato, não pare. Porque Nós vamos falar sobre isso.
Por que melhorar?
Se você não melhorar sua especialidade escolhida, depois de um tempo poderá se encontrar como um troglodita, fechado em uma caverna, cercada por edifícios levitando no futuro distante. Hmm, bem, ou imagine uma "Civilização" com uma IA que já possua armas nucleares e um jogador ainda lutando com a ajuda de mosquetes.
Para um programador, essa comparação é muito relevante, porque literalmente todos os dias surgem novas plataformas, estruturas e hardware, para os quais você precisa escrever algo novo. Se você estiver envolvido no mesmo negócio por vários anos, poderão surgir dificuldades com o emprego e a própria satisfação com a vida de que falamos acima.
Mesmo se executarmos tarefas relativamente simples - por exemplo, automação local de processos criando scripts no VBScript para Microsoft Office -, também não pararemos neste caso: o pacote do office é alterado, determinadas funções são adicionadas e removidas, o próprio VBScript é alterado. Alguns anos - e as soluções atuais não são adequadas. O que podemos dizer sobre linguagens de programação como Ruby ou JavaScript, que estão na vanguarda do desenvolvimento de tecnologia.
Para acompanhar as novas tecnologias (ou, se você é iniciante, faça imediatamente algo relevante e não aprenda soluções agonizantes) - inscreva-se em um dos cursos de programação do Skillbox. No entanto, o restante de nossas áreas também pode ser útil para você desenvolver habilidades relacionadas e começar a entender melhor os colegas e os processos de trabalho.

Casos? Eu tenho eles
Um dos exemplos mais brilhantes do que pode acontecer a uma pessoa que trabalha no mesmo campo há anos sem se desenvolver é a situação dos desenvolvedores do Flash e daqueles que decidiram escolher o Flex, uma linguagem de programação interativa baseada no Flash. Por um longo tempo, eles estavam "a cavalo" - com muita demanda e recebendo dinheiro substancial (em qualquer caso, mais do que muitos outros especialistas em TI). Bom trabalho, respeito pelos colegas - o que mais uma pessoa precisa para ser feliz?
Mas depois de algum tempo, com o advento do iPhone e a proclamação de Steve Jobs do slogan “Flash não apoiaremos”, essa tecnologia foi gradualmente abandonada. Com o tempo, a Apple seguiu o exemplo e os desenvolvedores de outras plataformas.
É claro que tudo isso não aconteceu muito rapidamente, mas os flashers sentiram a mudança. Alguém quase imediatamente começou a procurar novas áreas de trabalho e aprender outras linguagens de programação. Bem, alguém continuou a fazer o que estava acostumado e, por fim, permaneceu sem trabalho, pois não havia tempo para reciclagem.
Um problema semelhante pode surgir entre os especialistas do CMS Bitrix que criam sites do mesmo tipo com base nesse sistema e não avançam no que eles foram originalmente treinados em programação. Se algo acontecer e o Bitrix não for mais tão popular, os antigos "programadores" ficarão sem trabalho, porque não desenvolveram suas habilidades de desenvolvimento, mas fizeram o mesmo por um longo tempo.
Programador poliglota ou especialista em perfis estreitos?
Quando um programador atinge um certo nível de habilidade, surge a pergunta: para onde seguir em frente? Alguns, tendo adquirido alguma experiência em uma das linguagens de programação, começam a estudar a segunda, depois a terceira e assim por diante.
Mas o problema é que nosso tempo é uma era de especialização estreita. A quantidade de informações que precisam ser aprendidas em qualquer uma das linguagens de programação é tão grande que é muito difícil se tornar um especialista em outra coisa - simplesmente pode não haver tempo suficiente. Para começar a escrever relativamente bem em um dos idiomas, você precisa de três anos (alguém fala cerca de 10.000 horas). Mas, para se tornar um profissional legal em um campo escolhido, leva mais, muito mais tempo.
Isso não significa que não haja programadores poliglotas que conheçam 2, 3, 5 idiomas ou mais. Eles são, mas essas pessoas são bastante raras. Além disso, o conhecimento de vários idiomas não é garantia de que uma pessoa compreenda tudo completamente. Nem um pouco: na maioria dos casos, o programador simplesmente “se recompõe” e se considerará um universal legal. Mas dê a ele uma tarefa específica - e seu conhecimento pode simplesmente não ser suficiente para resolvê-la.
É melhor seguir a média de ouro - é muito bom entender uma das linguagens de programação, principalmente, e se você quiser aprender um pouco de outras, apenas para desenvolvimento geral. Habilidades extras ainda não machucaram ninguém.
O que exatamente escolher?

Para escolher a direção certa para desenvolvimento e aprimoramento, você precisa ser um pouco visionário. Em outras palavras, você precisa entender quais tecnologias e linguagens de programação associadas a elas serão populares no futuro próximo.
É melhor escolher uma área em que não há muitos profissionais hoje e começar a se desenvolver, adquirindo a experiência e o conhecimento necessários como profissional, mesmo antes de se tornar mainstream.
JavaScript é um exemplo. Agora, esse idioma é muito popular, literalmente nos lábios de todos. Porém, no início de seu desenvolvimento, JS era um produto de nicho. Aqueles que imediatamente começaram a se desenvolver nessa área se tornaram especialistas legais e procurados que (sim, não sem ela) recebem muito. Agora, tudo está escrito: front-end, back-end e até aplicativos móveis. Somente essa linguagem é suficiente para saber escrever aplicativos da mais variada complexidade para resolver quase todas as tarefas.
Uma boa maneira de captar tendências em linguagens de programação, estruturas etc. - acompanhar o uso de certas ferramentas nos produtos de grandes empresas. Se uma empresa começa a se envolver em um produto de nicho, introduzindo-o em seus produtos, vale a pena considerar o porquê. Se isso não for um acidente, é provável que em breve ele possa se tornar mainstream na programação.
Três baleias da programação moderna: JavaScript, Python, Java
Se já estamos falando sobre a escolha, vale a pena dar exemplos específicos. Portanto, as linguagens Java Script e Python são atualmente uma das mais promissoras. O primeiro é porque é universal. O segundo é porque é uma das linguagens mais simples (relativamente) e ao mesmo tempo da moda para dominar: projetos do campo de aprendizado de máquina, redes neurais e IA são escritos nela. Em Python, escrito no todo ou em parte, vários produtos do Dropbox, Google e Yandex.
O Java também continua sendo uma linguagem universal usada, em particular, para escrever aplicativos para Android.
Como se tornar um guru?
Em princípio, não é tão difícil. O principal é a compreensão do básico, uma mente flexível, perseverança e PRÁTICA. Sim, é capital. O fato é que nenhuma teoria, não importa como você a estuda, ajudará a se tornar um profissional se não houver experiência prática. É como nos idiomas que as pessoas falam: você pode memorizar centenas de palavras estrangeiras, ler as regras da gramática, mas se você não falar e escrever, tudo isso passará à passividade e, com o tempo, será completamente esquecido.
Portanto, existem duas recomendações principais para quem deseja melhorar no campo escolhido:
- Leia o código de outra pessoa.
- Escreva seu código.
Essas dicas podem ser usadas em qualquer ordem - não haverá danos, apenas benefícios. Porque Quanto mais produtos você criar, o código que escrever, mais prática. Certos problemas são resolvidos, princípios de trabalho estão sendo desenvolvidos e habilidades estão sendo formadas. Nesse caso, você precisa analisar o código de outra pessoa. Para um iniciante, isso é necessário simplesmente porque ele sabe pouco e, lendo o que os outros escreveram, o júnior será capaz de entender o que e como funciona. Para o meio, analisar o código de outra pessoa permite que você encontre soluções bem-sucedidas para o problema existente ao desenvolver um produto específico. Bem, para os idosos, essa é, primeiro, a busca por erros no código de outra pessoa e ajuda com eles, e, segundo, o auto-aperfeiçoamento. "Sempre haverá um asiático que faz algo melhor que você" é um meme famoso, mas ele é justo, e não apenas com relação aos asiáticos. Ao estudar o código de outra pessoa, você pode encontrar uma solução elegante para qualquer problema para o qual você já tenha usado "muletas" antes.

Agora, existem serviços que podem ser chamados de Twitch para programadores. Um deles é livecoding.tv. Os programadores registrados no recurso gravam seus próprios programas com uma demonstração do código em tempo real.
E, claro, também precisamos de uma teoria. Para reabastecer as reservas de conhecimento, você precisa ler muito, e não apenas na programação, mas também nas disciplinas relacionadas.
Como conclusão, podemos lembrar a citação de “Alice no País das Maravilhas” (até as crianças em idade pré-escolar sabem disso, sim, mas isso não nega o valor da afirmação): “Precisamos correr o mais rápido possível para permanecer no lugar, mas para chegar a algum lugar, precisamos corra pelo menos duas vezes mais rápido! " De fato, no mundo acelerado da tecnologia, você precisa fazer um esforço sólido para permanecer um bom programador. E para melhorar, você precisa trabalhar e estudar duas vezes, se não três vezes mais.