Eu entendo como codificar. Eu sei como resolver os conceitos básicos dos idiomas que uso regularmente. Sei escrever expressões regulares um pouco acima do básico, posso conversar com bancos de dados, aceitar entradas, imprimir saídas, manipular arquivos etc. Tenho mais ou menos certeza da minha capacidade básica de cuspir o código-fonte para programa moderadamente complexo.
Meu problema é que nunca me sinto suficiente. Sinto que conheço apenas uma pequena parte da biblioteca padrão da minha língua e que, até entender tudo, pelo menos de passagem, não tenho o direito de sequer tentar conseguir um emprego usando-o. Acabei de sair da faculdade (comunidade / júnior / whathaveyou), e meus amigos estão conseguindo empregos no setor, mas ainda me sinto uma farsa ou um poser, e não sou boa o suficiente.
Existe um marcador decente para "eu sei o suficiente" que eu poderia usar para garantir a mim mesmo que posso codificar? Devo considerar o fato de que sou pelo menos capaz de codificar um FizzBuzz como um indicador de que está tudo bem em se candidatar a alguma coisa? Como posso aprender mais sobre essas bibliotecas, estruturas e / ou APIs padrão com relativa facilidade? Eu codigo regularmente, leio livros, mas meu conhecimento ainda parece tão superficial.
SOCORRO!
fonte
I feel like I only know a small portion of the standard library of my language
essa frase deve ser o lema oficial do C ++ .Respostas:
Meu amigo recomendação:
pare de pensar em binário (0/1, sem saber / saber, analfabeto / alfabetizado) e comece a pensar confuso (eu sei até certo ponto). Todos nós sabemos alguma coisa e até certo ponto. O conhecimento é um continuum e todos são colocados em algum lugar entre a pessoa mais analfabeta e a pessoa mais experiente e sofisticada. Você pode fazer o trabalho, mas no seu nível e abaixo disso . Essa é a regra. Não tenha medo. Não espere um dia em que você aprendeu tudo sobre sua estrutura, e o IMHO nesse dia nunca chegará. Até desenvolvedores com 20 anos de experiência ainda estão lendo para aprender coisas novas. A programação é de natureza tão ampla que você não deve (ou não pode) pegar tudo.
Mergulhe no ambiente de trabalho e não tenha medo. Todos nós tivemos dias em que não podíamos fazer algo. Isso não é crime. Faz parte do nosso trabalho. Você não sabe, aprende, tenta fazer o trabalho e o faz.
Eu acho que o que você precisa ter agora, não é mais conhecimento. Pelo contrário, é simplesmente autoconfiança.
Boa sorte
fonte
Acredito que você está fazendo a pergunta errada aqui, e se você me permite um pouco de psicologia injustificada, acho que é porque você é atormentado por um pouco de dúvida e baixa autoconfiança.
Pare de se comparar amplamente com os outros
Primeiro de tudo, você não pode se comparar em um nível amplo com outros programadores. Até mesmo as estrelas do rock com as quais você pode admirar agora têm problemas (desleixo, Outra maneira de fazer as coisas e problemas de atitude), portanto, não se preocupe se você as compara. Em vez disso, sua abordagem deve ser adquirir o maior número possível de mentores, reunir todo o conhecimento possível e melhorar, observando e imitando especialistas.
Aprender a aprender
Além disso, a melhor abordagem para se tornar um melhor programador e aprendiz em geral não é aprender coisas específicas ou entender pela memória. Na IMO, a memorização mecânica é a forma mais baixa de aprendizado. É como um programa que está perdendo a etapa crucial de "processamento" de Entrada-> Processo-> Saída. Ensine a si mesmo conceitos como os mencionados na sua pergunta. O amplo entendimento da programação é onde você fornece mais valor. Aprender um novo idioma dentro de paradigmas com os quais você está familiarizado é mais complicado do que aprender a resolver problemas.
E agora, para alguns conselhos ruins de alguém um pouco mais velho que você
Um dos maiores erros que cometi quando jovem foi tomar as decisões de todos por assumir que não era bom o suficiente e que meu tempo e talento não valiam seu tempo e dinheiro. Eu sempre subestimei minhas habilidades e meu talento, por mais escasso que possa ter sido na época. Este foi um grande erro.
O que você precisa entender é que mesmo um programador moderadamente decente parece um assistente para obter uma média diária de joe. Eles podem te odiar, podem ficar cansados de sempre ter que perguntar a um nerd local como ligar o computador, mas como eles não têm discernimento e entendimento sobre o que você faz, por mais trivial e simples que isso pareça, é impossível para eles.
As pessoas pagarão por seu tempo, seu talento e sua energia. Existem muitos programadores absolutamente terríveis em nossa indústria que estão se matando simplesmente porque podem se sentar e (possivelmente) escrever programas básicos. Jogue suas cartas da melhor maneira possível, desenvolvendo autoconfiança por meio de conquistas, pratique sua fala e linguagem corporal, continue dominando seu ofício sempre procurando por coisas que você não conhece e corra em direção a essas coisas para buscar mais compreensão e, finalmente: pare de subestimar as habilidades que você desenvolveu.
fonte
"Eu sei o suficiente" e "Eu sou bom para este trabalho" são completamente diferentes.
O IMO "Sou bom para este trabalho" está mais próximo de "Conheço o básico e sei - o que aprender / onde procurar / quem perguntar / o que ler - para concluir minhas tarefas".
(isso não significa que eles o contratarão se você precisar de um a dois meses para aprender, por exemplo: gravação / leitura em arquivos XML. Espero que você entenda o que quero dizer.)
Além disso, acho que nenhum programador diria "eu sei o suficiente". (talvez "suficiente para conseguir o emprego", "suficiente para ser rico", "suficiente para ...", mas não "suficiente" :))
EDIT: Quando digo "básico", quero dizer
(Possivelmente você precisará usar 2-3 idiomas no seu trabalho)
Eu concordo com Saeed, mergulhe no trabalho, trabalhar é a melhor maneira de aprender coisas, você trabalha com pessoas que sabem mais do que você, aprende com elas, vê como elas funcionam, mas elas começaram como você (ou talvez tenham começado com menos conhecimento do que você tem agora).
fonte
Você tem uma ótima atitude! Um dos fatores fundamentais para ter sucesso é nunca ser complacente.Nunca se acomode. Nunca se comprometa. Dito isto, é muito difícil discernir exatamente como fazer isso (por exemplo, conhecer a 'melhor prática' para executar a tarefa X não é tão simples quanto pesquisar no Google, porque todo mundo tem sua própria opinião).
É melhor aprender a identificar um bom código e a lógica por trás dele ( como e por que ). Para isso, recomendo a leitura de blogs de profissionais respeitáveis em nosso campo, pois isso o exporá ao tipo de mentalidade a ser procurada. Contribuir para um projeto de código aberto também é uma maneira de pular para o fundo do poço; no entanto, isso lhe dará a oportunidade de aprender com os outros à medida que progride atualmente .
fonte
Eu acho que a maioria de nós já esteve nessa situação em algum momento, mais cedo ou mais tarde, em nossas carreiras. E toda vez que você escolhe um novo idioma, tudo começa novamente. Portanto, o primeiro conselho meu seria: não se desespere, você não está sozinho. E: você provavelmente é melhor do que pensa, apenas pelo fato de refletir. Lembre-se do velho ditado: os tolos correm para onde os anjos temem pisar.
Atualmente, a maioria das línguas possui bibliotecas padrão que são simplesmente grandes demais para qualquer indivíduo saber completamente de cor. Adicione estruturas e APIs na parte superior, e você não pode saber tudo. O melhor que você pode fazer é conhecer o básico e descobrir onde descobrir mais. Fica melhor com a experiência, então o melhor conselho é provavelmente: basta ir e usar o material!
Não existe um único marcador "decente". Tudo depende do meio ambiente. O que seria perfeitamente suficiente para uma empresa / projeto, pode ser muito diferente para outra. Se você realmente pode fazer o que diz, pode classificá-lo como um júnior decente e não deve ter problemas para encontrar trabalho decente.
fonte
Com base no que você escreve na sua pergunta, você realmente pode codificar e está disposto a melhorar suas habilidades e conhecimentos.
Todo mundo, em cada trabalho, precisa começar pouco, como novato, e depois crescer com a experiência.
A rapidez com que o seu crescimento depende depende de você, todo mundo cresce em velocidades diferentes, a única coisa importante é que você não pede muito de si mesmo agora.
Se algo que você sente que ainda não entende, não se preocupe. Em breve, você poderá obter a imagem.
Você pode começar a trabalhar no setor o mais rápido possível. Como você já pode codificar, você já pode começar a trabalhar. Isso ocorre porque a teoria não é boa o suficiente, você precisa de prática e problemas do mundo real para resolver.
Quanto às preocupações com o conhecimento do código da biblioteca, ele chegará com o tempo, desde que você continue estudando, lendo a documentação e praticando o uso. Sites como esse também são muito úteis e você aprenderá mais rapidamente se fizer e responder ativamente a perguntas relacionadas.
Um conselho pessoal: se você realmente deseja se destacar das muitas pessoas que fazem código espaguete, chamando-se programadores, aprendem as melhores práticas. Não importa em qual idioma ou biblioteca você está aprendendo ou codificando, aprenda as práticas recomendadas. Isso economizará muito tempo, bugs, falhas, dores de cabeça e ajudará você a se sentir um programador melhor.
fonte