A programação não é estranha para mim. Comecei a fazer marcações (HTML, agora, por favor, não ria de mim) quando eu tinha 12 anos e um pouco de BASIC quando tinha 13 anos (eu sabia muito sobre fluxogramas, pseudocódigos neste momento), mas depois fui advertido a Biologia no ensino médio e, portanto, perdeu o conhecimento de programação "real" de linguagens como C, Java, etc. Peguei o CS para o meu UG BE (semelhante ao BS, mas muito mais teórico). Aprendi C & C ++ (em menor grau) por conta própria (meu professor foi uma dor total e a turma estava cheia de atletas de código (que já haviam aprendido isso na escola e, portanto, não prestavam atenção à turma e não deixe que mortais menores como eu prestem atenção à classe também) e poderia criar um incrível programa de adição ou multiplicação (programas que agora até os jardineiros mais gentis
Meu principal problema é que sempre me senti inadequada e estrangulada pelas minhas habilidades limitadas de programação e menosprezada pelos code-jocks (acredite, já encontrei este site há séculos, mas agora só conseguia criar coragem para realmente publicar uma pergunta) e, às vezes, até se deprimiram com a referida incapacidade. A maioria das pessoas diz que a programação não é necessariamente sobre o idioma, mas o estado de espírito que a pessoa possui e as técnicas empregadas para resolver problemas / questões. Eu concordo com esses sentimentos, mas posso adquirir esse "estado de espírito" e, se for o caso, como devo abordar a "Programação / Codificação" e se existem maneiras e etapas definidas pelas quais a maioria das pessoas passa para alcançar o "Zen" de codificação ". Como eu faço isso? Além disso, não faria mal se algum santo quisesse orientar essa parte oprimida de $ #! ^.
PS: Seria eternamente grato a qualquer pessoa que me considerasse valiosa e, como bônus, nomearia meu primeiro software que eu os envio. (Se eu conseguir enviar um, ou seja,)
TL; DR: Nunca aprendi realmente "Programação / Codificação", não consigo resolver problemas, mesmo que eu tente. Ajude-me!
Respostas:
Eu diria que a melhor maneira é simplesmente dedicar mais tempo a ela (pesquise a regra das 10000 horas). Encontre algo que você deseja que seja feito e defina-o. Escolha algo que está além da sua capacidade atual, mas não tão longe que você não será capaz de terminar em um período de tempo razoável. Se você realmente gosta, você se repetirá até ser realmente bom nisso. Se você não gosta, talvez não seja a coisa certa para você. Tente se desafiar, porém, você provavelmente gostará.
fonte
Envie coisas . É a única maneira. Faça as coisas. No trabalho, seus próprios projetos, projetos de código aberto. Comece a enviar as coisas. Eles podem ser coisas muito pequenas, como uma correção de bug ou um recurso comercializável mínimo. Basta começar a enviar as coisas . Nada é mais satisfatório ou constrói confiança do que o sucesso.
Edit: Você deve ler Ship It . É ótimo.
Editar novamente: a experiência de fazer outra coisa que não seja o envio é apenas uma falha na experiência. Eu já vi muitos desenvolvedores "seniores" cuja experiência principal não era enviar itens (e encontrar desculpas para não enviá-los). Artistas de verdade são enviados .
fonte
'problema', 'inadequado', 'estrangulado', 'limitadas habilidades X', 'menosprezado', 'deprimido', 'incapacidade' em uma frase, tudo direcionado a você, sugere-me algumas feridas não cicatrizadas do passado que ainda estão sofrendo vocês. Se você encontrar maneiras de superá-las, seria muito fácil dominar a programação ou qualquer arte ou artesanato. Talvez ler sobre a resiliência de outras pessoas ajude aqui. Todo mundo passa por momentos difíceis em suas vidas. Se essas mágoas / feridas não forem curadas, seus sucessos não teriam acontecido. Cure sua ferida primeiro. A programação pode esperar mais tarde.
Quanto às habilidades de programação, como eu aprendo um novo idioma e começo a pensar como outras pessoas que já programam nesse idioma é, primeiro, lendo tudo o que posso colocar em minhas mãos relacionado a esse idioma. Então, quando eu tiver lido o suficiente, comece a escrever pequenos programas.
fonte
Algumas coisas que você realmente precisa para começar:
Perseverança: Tornar - se um bom programador leva tempo uma prática. Você precisará escrever muito código incorreto antes de escrever qualquer código bom - muito código incorreto. Felizmente, você tem recursos como este site para ajudá-lo. Enquanto você se comprometer a aprender a programar, poderá montar jogos e utilitários simples em pouco tempo!
Metas: defina algumas metas para si mesmo. Diga aprender a usar STL em C ++ em duas semanas. Veja como você se sai. Se você demorar mais, acompanhe por quanto tempo, isso ajudará você a se sair melhor no futuro. Eu aprendi esse truque com um colega de trabalho; ele poderia estimar, até o dia, quanto tempo quase qualquer tarefa o levaria. Fazer isso me ajudou a manter o controle de quanto tempo gasto em projetos pessoais e a evitar que eles fiquem fora de controle (gerenciamento de escopo que eles chamam).
Curiosidade: Você precisa estar interessado e envolvido. Se você não é o tipo de pessoa que não aborda problemas com o desejo de encontrar a solução, iniciar a programação será difícil no começo e a depuração pode ser um pesadelo. Mas não precisa ser assim. Se você tiver um problema, pergunte em sites como este, pesquise no Google seu erro. Se você não consegue descobrir como implementar algo, pergunte! Há sempre pessoas por aí que estão dispostas a ajudar!
Confiança: Seja confiante no que deseja fazer e confiante o suficiente para fazer perguntas. Se alguém lhe mostrar outra maneira de fazer alguma coisa, não fique na defensiva ou acredite que você fez algo errado; pense nisso como se estivesse aprendendo uma abordagem diferente para resolver seu problema!
Acima de tudo, mantenha uma perspectiva positiva, leia muitos tutoriais e faça muitas perguntas, e você será um programador feliz! Outro conselho que tenho que dar é escolher um idioma, ficar com ele até que você esteja mais confiante. Você tem muito tempo para aprender uma variedade de idiomas, mas quando estiver começando, trabalhe apenas com um.
Boa sorte! E lembre-se, isso é divertido! = D
fonte
No desenvolvimento, parece que o paradoxo "quanto mais você sabe, mais você sabe que não sabe" é verdadeiro.
Se você é uma pessoa honesta e atenciosa, precisará aceitar esse fato e aprender a lidar com ele.
A confiança, no sentido implícito na pergunta, é uma coisa muito pessoal que realmente não tem nada a ver com um conjunto de habilidades ou uma metodologia específica.
Em uma nota mais superficial, o sentimento descrito em http://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer/ (seção: Você superestima radicalmente a habilidade média da competição por causa de a multidão com quem você anda) sempre me ajudou.
Sugiro que você aprenda a ser mais confiante no trabalho que realizou, em vez de criar confiança em suas habilidades como um todo. A melhor maneira de fazer isso é escrever testes repetíveis para todo o seu código. Isso fará maravilhas em sua psique.
fonte
WhiteFang34 está totalmente certo. Como biólogo, descobri que a única maneira de aprender programação é começar a fazê-lo. Leia alguns livros, tenha o Google e o SO sempre à mão e "apenas faça". Seus programas serão muito básicos, mal codificados e com erros no início, e você ficará cada vez melhor com o tempo. Não tenho tempo para ter aulas de programação, mas passo muito tempo codificando (porque é divertido fazê-lo).
Escolha um idioma que permita que você pense mais sobre o que deseja fazer e menos sobre como fazê-lo. c não é um exemplo muito bom disso. Experimente idiomas de nível superior, como java ou c #, porque eles permitirão que você faça mais, para que você tenha a coragem de tentar cada vez mais.
(É claro, supondo que você não esteja seguindo uma carreira como programador profissional; nesse caso, eu diria apenas voltar para a escola ...)
Boa sorte e tenha uma codificação feliz
PS: Ah, e você precisará de muita preguiça, impaciência e arrogância
http://c2.com/cgi/wiki?LazinessImpatienceHubris
fonte
O engraçado é:
É sobre entender sutilezas do mundo real, interação entre as coisas. Capacidade de pensar abstrato . Capacidade de perceber as coisas e lembrá- las. Isso inevitavelmente leva a uma boa solução de problemas.
Implementação, o próprio código vem somente depois disso - depois que você
resolveu com sucesso determinado problema em sua mente.
fonte
Confiança não é algo que você deve tentar sentir sobre suas habilidades. A confiança é pouco (provavelmente até negativamente) correlacionada com a habilidade real. Você deve estar trabalhando para melhorar seu conjunto de habilidades profissionais (ou passatempo valorizado), não importa o que você sinta sobre seu nível de habilidade atual.
Confiança é algo que outras pessoas, aquelas que você considera competentes, devem sentir sobre suas habilidades depois de trabalhar com você ou de ver seu trabalho.
fonte
É muito simples: esteja interessado nisso ! Parece que você já está, então encontre algo que você acha que seria legal fazer e, em seguida, faça-o, fazendo as perguntas necessárias no caminho, usando os recursos que puder, para montar o projeto da maneira que você preferir. eu quero isso. Enxágue e repita, e você se verá um excelente programador sem sequer ter feito muito esforço, pois foi interessante / divertido ao longo do caminho.
Além disso, encontre um bom equilíbrio entre descobrir coisas e fazer muitas perguntas. No início, especialmente, é uma grande ajuda que outras pessoas lhe digam onde você está errado, para impulsioná-lo durante a primeira parte da curva de aprendizado. A partir daí, tente descobrir as coisas por conta própria e, se você ficar preso depois de um tempo, faça uma pergunta sobre isso. O que costumo fazer é postar uma pergunta no SO e procurar a resposta, verificando o SO ocasionalmente no processo. Às vezes eu encontro a resposta primeiro, às vezes ela me encontra primeiro.
Não se preocupe muito com qual tecnologia, embora possa ser realmente divertido criar gráficos com HTML5 + JavaScript + a tag canvas, já que é muito fácil de configurar, as recompensas são imediatas e você pode compartilhá-las.
fonte
Aborde a programação com uma atitude mais positiva dos alunos. Ninguém sabe tudo. Segundo, descubra por que você está interessado em programar, se você gosta de:
Depois de saber o que gosta na programação, você pode concentrar seus esforços de aprendizado nessa direção. Eu sou um funileiro / solucionador de problemas. Isso me torna extremamente pragmático. Algoritmos e estruturas de dados, a teoria da ciência da computação em geral me faz dormir.
Minha formação é semelhante à sua. Começou a construir computadores aos 10 anos. Um pouco de HTML / C ++ no meio da minha adolescência ... ficou entediado com isso ... parou por alguns anos. Eu nunca parei de brincar com o computador.
Agora, estou adorando programação. Então o que mudou? Eu encontrei minha motivação. Comecei a trabalhar onde recebi uma infinidade de problemas a serem resolvidos. Encontrar soluções inteligentes e simples para problemas complexos realmente deixa meu fogo aceso.
Por fim, não se preocupe com a forma como os outros codificam ou se estão "certos" ou não. É certo se ele faz o que você quer fazer. Depois que você começa a trabalhar em equipe, os padrões se tornam importantes. Isso se deve ao fato de outras pessoas precisarem ser capazes de interpretar e modificar seu trabalho. Padrões de design não é algo que um novo programador deva se preocupar.
fonte
Sempre há inércia a ser superada ao aprender coisas novas. Os curiosos programadores que conheço lutam para encontrar a motivação para continuar aprendendo novas linguagens e paradigmas. Eles dizem: "Preciso de um projeto para testar o X". para aprender X. Alguns realmente encontrarão / inventarão esse projeto.
Esteja ciente de que uma carreira em programação será um processo ao longo da vida de frustração, estudo, experiência e inclinação contra moinhos de vento. Até as IAs assumirem tudo.
Se você ainda está fazendo ciência de verdade, poderá imaginar um projeto / necessidade de algum tipo. Por exemplo, combinando dados de várias fontes na Internet ou fora dela. Isso pode inspirar você a aprender javascript ou R ou mesmo Excel / VBA. Se você pode conectar alguns pontos para outros em seu campo, será reconhecido e pronto, será um programador.
Use, mas tenha cuidado com os mentores. Pergunta autoridade.
E, a propósito, "codificação zen" é um oxímoro.
fonte
Você nunca se sentirá confiante em suas habilidades de programação.
A maneira como você descreve suas habilidades indica uma mentalidade em que você nunca ficará satisfeito com suas habilidades. Você dominou C ++? Espere, há Java! Você dominou Java? Aguarde, há programação paralela. Você dominou a programação paralela em C ++ e Java? Espere, há SOA! Há OOD! E MVC! SÓLIDO! Programação Funcional! Programação da Web! Programação em nuvem! Programação móvel!
A questão é não se sentir deprimido por causa disso. Você precisa apertar alguns botões na sua cabeça: sua dúvida sobre suas habilidades é combustível puro. Você provavelmente nunca alcançará um nível satisfatório de habilidades de programação. Enquanto for esse o caso, você avançará. O difícil é realizá-lo e fazer algo contra ele, embora nunca haja um objetivo. Quanto mais tempo você aguentar, maior será o seu nível de habilidade.
fonte
Eu costumava me sentir da mesma maneira, e foram os sites do Stack Exchange que me ajudaram a me dar confiança.
Comecei a usar o StackOverflow para encontrar respostas para minhas perguntas e um dia vi uma que eu sabia a resposta. Postei a resposta, recebi alguns votos positivos e um comentário dizendo que era uma boa resposta, e isso me incentivou a procurar outras perguntas que eu pudesse responder.
Logo se tornou um vício para mim, encontrando perguntas sem resposta que eu poderia resolver e, com o passar do tempo, comecei a ganhar confiança em minhas respostas. Eu não precisava mais dizer "Eu acho que isso é porque ..." ou "Isso deve causar ...", mas sim dizer com certa confiança que "Isso é porque ..." ou "Isso causa ..."
Eu gosto de quebra-cabeças e, para mim, as perguntas eram como mini-programação, com o benefício adicional de obter algum feedback positivo se eu obtivesse a resposta certa. Se eu obtive uma resposta errada, apenas a excluí e aprendi com as soluções de outras pessoas para o mesmo problema.
Portanto, minha recomendação seria continuar no SO e procurar as perguntas em qualquer tag de seu interesse e procurar por algumas que você acha que pode encontrar respostas. Não há nada como as pessoas dizendo que suas respostas de programação são úteis / boas para dar confiança em sua capacidade de programação :)
fonte
Seu cérebro não gosta de trabalhar muito. Dada a escolha, prefere seguir o caminho mais fácil. É por isso que é fácil desistir das coisas quando você tenta lidar com algo muito ambicioso - muito para aprender, muitos detalhes complicados para acertar, muito barba por iaque.
Existem várias coisas que você pode fazer para combater isso. Primeiro, a energia. Tente praticar quando estiver bem descansado e bem alimentado, ou seu cérebro literalmente não terá combustível suficiente para um pensamento abstrato complexo. O segundo truque é interesse ou importância. Se você conseguir convencer seu cérebro de que conhecer o espírito é vital para escapar do tigre que o persegue, você aprenderá e reterá mais do que quando seu cérebro pensa que é uma tarefa secundária sem sentido no caminho para o que você realmente deseja. Um terceiro fator importante é alongar sem exagerar. Algum esforço lhe dará esse zumbido da conquista e ajudará a formar novos caminhos mentais, sem ser inatingível.
Há também algo a ser dito para a prática repetida. Você deseja que variação suficiente seja nova, mas semelhança suficiente para exercer as mesmas ações e impregná-las.
Um outro ponto é que você deve arregaçar as mangas e sujar as mãos. É fácil gastar muito tempo pensando em abordagens alternativas ou na solução ideal, na medida em que você nunca começa. Este é um exemplo de seu cérebro tentando tomar a saída mais fácil. Tente reconhecer quando isso está acontecendo com você e evite-o tentando começar. Até um teste ou experimento é bom. Isso também tem o benefício colateral de fazer com que seu cérebro deseje o encerramento da tarefa ou encontrar a melhor solução.
fonte
Três coisas a considerar: (Ou não, é claro.)
fonte
Há muitos bons comentários sobre a prática aqui, realmente faz toda a diferença.
Você deve se preocupar menos com "atletas de código" e seguir seus conselhos ou comentários sobre o que são. Se eles são difíceis de lidar em um tópico, provavelmente também são difíceis de lidar na vida real; e realmente, quem tem tempo para se preocupar com sua inaptidão social?
O resultado final é que existem milhares de maneiras de abordar as tarefas de programação. Muitas coisas se resumem a preferências pessoais. Eu, por exemplo, odeio ler código com operadores de locação. Outros os amam. Eu acho que eles estão certos ou errados? ... na verdade, nenhum deles. É uma preferência pessoal, embora haja muitos debates acalorados sobre o assunto.
Se alguém censurar seu código porque você pegou 25 linhas em vez de 20, eu tenderia a ignorá-las, a menos que elas encontrassem uma falha real na lógica. Às vezes, no mundo real, precisamos apenas fazer as coisas (e quem realmente quer ouvir alguém baforando sobre o quão complicado ... err, elegante, eles conseguiram criar um código que deveria ter sido feito em 10 minutos) . Você pode aprender algo a partir de intermináveis debates filosóficos sobre até que ponto as coisas abstratas? Claro ... mas há retornos obscuros em ser sugado pela elegância constante de 100%. Não é realista o tempo todo, tanto quanto gostaríamos de fingir que é. Alguns dos meus códigos menos elegantes que eu teria vergonha de compartilhar com qualquer pessoa (que escrevi no início da minha carreira) salvaram as pessoas semanas a semanas,
Há um ótimo post de Joel Spolsky chamado Duct Tape Programmer. É uma ótima leitura e a IMO coloca alguns de seus medos em perspectiva.
http://www.joelonsoftware.com/items/2009/09/23.html
Não estou dizendo para escrever código de porcaria e ignorar as melhores práticas, mas leve os programadores a sério com um pouco de sal.
fonte
Pergunte a si mesmo por que realmente sente falta de confiança. Eu acho que é porque você se importa com o que seus colegas pensam, e isso é completamente compreensível. Mas, para ser verdadeiramente zen, é necessário esclarecer tais pensamentos e comparar-se a si mesmo com o tempo. Seja guiado pelo seu interesse, aprenda e trabalhe duro, e você se tornará um bom programador sem toda a graduação em psicologia.
Não é realmente a confiança que você precisa, é menos ruído no seu caminho de progresso.
fonte