Decidi compartilhar minha experiência de aprendizado "bem-sucedido" da (s) linguagem (s) de programação.
Não quer dizer que eu sou um leigo completo na indústria de TI, mas meu plano de treinamento "para me tornar um desenvolvedor de TI" - foi um fracasso.
Um pouco de fundo.
Devo dizer desde já que não fiz um treinamento direcionado em ciência da computação. E minha especialização em educação está longe de ser técnica. Ele trabalhou desde 2005. para 2012 em várias empresas, pequenas e grandes, diretamente relacionadas com a indústria de TI. Aprendi um pouco de tudo: mana. administração do Windows (mesmo MCP, MCSA conseguiu), um pouco VMware (VCP também está no cofrinho), além disso, estudou um grupo diferente de programas desse sistema. os administradores geralmente usam em seu trabalho diário.
Eu me experimentei em vendas corporativas, aliás, funcionou bem. Consegui trabalhar um pouco com uma distribuidora de software, assim como com empresas integradoras, e tinha um bom entendimento das políticas de licenciamento de software. Ele planejava se tornar um gerente de projetos, até começou a estudar PMBOK, gerenciamento de tempo, vários padrões internacionais como ISO, Tier e até balançou no PCI DSS.
Mas em algum momento ele se esgotou e desistiu de tudo. Saí de férias por 8 anos, por assim dizer.
Depois de uma longa análise, no entanto amadureci e percebi que era hora de virar para o oeste, e de preferência mais perto do Vale do Silício, porque com o inglês é mais ou menos normal, você pode subir até o nível necessário.
É claro que ninguém está esperando por mim lá, mas irmã. administradores, vendedores e gerentes de projeto lá e em número suficiente. Além disso, sem saber a situação do mercado local, será imediatamente possível encontrar um emprego, enfim, pelo menos é problemático.
Escolhi o caminho na minha cabeça que era hora de retreinar como desenvolvedor. Será mais fácil e melhor em termos de perspectivas e trabalho no mercado ocidental. Sempre houve falta de programadores no mercado de trabalho e ainda não há programadores suficientes.
Além disso, há muito tempo eu queria aprender programação e me especializar em direção SAP. O caminho do estudo independente do básico, a linguagem ABAP, foi escolhido, mas de alguma forma abandonou esse negócio. Não me lembro por que motivo, ao que parece pela dificuldade de compreensão.
Agora a história em si, vamos ...
Então, após 8 anos de descanso da TI em geral, comecei a estudar o mercado de trabalho no exterior e decidi me especializar em desenvolvimento móvel primeiro. Depois de pesquisar linguagens de programação para aplicativos móveis e inspirado pelo fato de que o Google anunciou oficialmente a linguagem Kotlin como uma linguagem prioritária para um aplicativo Android, decidi firmemente aprender Kotlin por conta própria em no máximo 1 ano e fazer planos de imigração para residência permanente nos Estados Unidos.
Algumas semanas assistindo a treinamentos e lendo manuais foi o suficiente para me certificar de que não há nada para fazer em Kotlin sem conhecimento de Java. Embora na Internet, muitas pessoas dizem que você pode aprender do zero. E depois de me cadastrar no GitHub, instalar IntelliJ IDEA, JDK e tentar entender o código, já comecei a perceber que terei que estudar por muito, muito tempo e muito.
Decidiu-se deixar Kotlin de lado por enquanto e se aprofundar na linguagem java. E foi o que ele fez. Eh, eu me lembro que no meu tempo java ainda era uma criação do SUN.
Mudei rapidamente para Java sem me arrepender. e há mais manuais para auto-estudo e há muito mais vagas para desenvolvedores Java. É verdade, ainda não decidi por onde começar seria melhor: com Java, ou ainda mudar para JS, mas tudo bem, pensei em descobrir isso em uma caminhada. Eu li em algum lugar nos fóruns que é muito mais fácil e rápido entrar no mundo do desenvolvimento com JS.
Comecei a aprender Java de uma forma padrão, depois de ler uma montanha de artigos e assistir a um monte de vídeos "Como se tornar um programador Java". Baixei o livro de Bruce Eckel "The Philosophy of Java", de acordo com as recomendações de muitos nos fóruns, como o início mais correto para o aprendizado da linguagem para iniciantes.
Então vou te dizer honestamente, não é para iniciantes.
Tentei não prestar atenção e continuei lendo, a digestibilidade está em torno de 20-25%, percebi que não vai funcionar. Teremos que entender a linguagem C, e até mesmo no livro eles escrevem regularmente em preto e branco que o material é projetado para leitores com conhecimento básico da linguagem C.
Bem, sem escolha. Novamente li muita informação, centenas de visualizações de vídeos sobre vários temas sobre a linguagem C. Baixei o livro de Kernighan e Ritchie "Linguagem C", começo a estudar, a assimilação já é melhor que em Java, por assim dizer, cerca de 50-60%, o que não me agrada em nada.
Uma coisa era tranqüilizadora de que verdadeiros desenvolvedores todos começaram com a linguagem C, e que depois de aprender C, outras linguagens, em particular Java, seriam entendidas muitas vezes mais rápido e acessível.
No entanto, títulos do livro, como:
“Este livro não é um curso introdutório à programação; pressupõe alguma familiaridade com conceitos básicos de programação, como variáveis, instruções de atribuição, loops, funções "
ou:
" pressupõe conhecimento prático de elementos básicos de programação; não explica o que é um computador ou compilador, não explica o significado de expressões como N = N + 1 "
e frases como:
constantes simbólicas.
etc.
aos poucos me levou ao fato de que não posso ficar sem estudar Ciência da Computação.
Ao mesmo tempo, começo a me aprofundar na Ciência da Computação, novamente baixando toneladas de livros. Eu me inscrevo no curso Harvard CS50, começo a aprender o básico de programação, leio com atenção o livro de Vladston Ferreira Philo “Theoretical Minimum in Computer Science”.
Percebo que o aprendizado da linguagem C está ficando em segundo plano, cada vez mais tempo é dedicado aos fundamentos da programação.
E se em binário, variáveis, funções, loops, compilador, interpretador, equações simples, etc. Eu descobri ainda mais ou menos, então uma expressão como N = N + 1 e equações mais complexas me levaram a um estupor fácil.
Por um longo tempo, investiguei por que de 0 a 0 grau é igual a 1, e tenho a sensação de que não entendi totalmente o ponto.
Mas essa tarefa me fez parar na leitura de um livro sobre CS. quanto mais eu lia, mais complicadas as equações e os problemas já eram:

eu tinha que pesquisar sobre equações quadráticas no Google, como está escrito no livro, e me aprofundar nos discriminantes. Bem, esqueci, pensei, álgebra, com quem não acontece. No entanto, não consegui resolver o problema sozinho, tive de pedir ajuda ao professor de matemática da criança.
Tive uma solução, mas não consegui perceber como o professor resolveu:


À minha pergunta: “como se resolvem essas equações?”, A resposta foi muito simples:
“ensine o estudo de uma função, inicie problemas de análise e otimização. Álgebra Grau 10-11 ".
Bem, eu acho, ok, vou assistir a alguns vídeos de exemplos para alunos no youtube, vou entender como resolvê-los, e vou continuar a “glock” estudando em CS.
E depois de assistir a esses vídeos sobre álgebra me dei conta ...
www.youtube.com/watch?v=RbX_QHxu7Lg
www.youtube.com/watch?v=FVSG7Neopuo
Não que eu não me lembre de como resolver tais problemas - eu elementar como Acontece que eu simplesmente não sei Álgebra para as séries do 10-11!
Expressões como: limites, pensamento matemático, extremo, derivadas, polinômios, etc. para mim acabou sendo como a linguagem da tribo maia.
Provavelmente, meu conhecimento de matemática permaneceu no nível das aulas de matemática da 5ª à 6ª série.
Estou começando a perceber que, para ter uma visão completa da compreensão da Ciência da Computação, vou precisar reaprender álgebra e, em seguida, o HigherMat. Não excluo que a campanha provavelmente precisará repetir as aulas de física e outras coisas do currículo escolar. E antes de realmente aprender Java e JS, precisarei de 5 anos estudando álgebra e matemática superior.
Voar para Marte e voltar mais rápido, apenas 1,5 ano, segundo os cientistas ...
Então, depois de analisar o último mês e meio de aprendizado independente, ficou claro para mim que sou como um "hamster em uma roda", como se estivesse correndo (aprendendo ), mas na verdade estou parado. Não aumentei meu conhecimento de programação, exceto que posso executar um programa na linguagem C ("Olá, mundo").
Além disso, depois que uma tonelada de novas informações caiu em meu pequeno cérebro, ele parece ter sido “desligado” e categoricamente se recusa a aceitar novas informações.
O algoritmo que construí para aprender programação falhou quase no início.
Ficou claro que você precisa revisar seu plano de treinamento e abordá-lo.
No entanto, ainda não estou totalmente ciente do quadro, e de que lado se deve abordar para adquirir a profissão de "desenvolvedor Java", porque a formação padrão, desde o básico de álgebra e ensino superior, será muito longa e não é adequada no meu caso.
E foi então que eu já estava meio triste.
Demora tanto para se tornar um programador sem formação técnica?
Claro, me inspiro em artigos na Internet, onde as pessoas escrevem que em 1,5 anos se tornaram desenvolvedores Java e partiram para Alemanha, Canadá, EUA, mas avaliando minha triste experiência, não tenho certeza se isso é possível.
Ou ainda não é meu? E a profissão é "desenvolvedora" para a elite, para a "casta de gente especial"?
Eu sei que existem pessoas que dominaram a programação sem concluir um ensino superior em ciência da computação. Existem muitos deles.
E estou ansioso para me juntar a essas pessoas maravilhosas e com propósito.
Cancele a assinatura nos comentários, pliz, que conseguiu dominar a programação, bem como sua visão de por que meu plano e abordagem de aprendizagem falharam. Suas recomendações serão muito úteis para mim, revisando meu plano de aprendizagem de programação, bem como ambição e expectativa de resultado final.
Duvido que seja o único que enfrenta um problema semelhante. Posso até dizer que tem muita gente como eu ...
Desde já agradeço!