Qual a importância do autodidata no campo da programação? [fechadas]

74

Tenho 16 anos. Comecei a programar há um ano atrás, quando estava prestes a começar o ensino médio. Estou indo para uma carreira em programação e estou fazendo o meu melhor para aprender o máximo que puder. Quando comecei, aprendi o básico de C ++ em um livro e comecei a aprender coisas sozinho a partir daí. Hoje em dia sou muito mais experiente do que há um ano atrás. Eu sabia que tinha que estudar sozinha porque o ensino médio (provavelmente) não me ensinaria nada valioso sobre programação, e quero estar preparado.

A questão aqui é: qual a importância de estudar programação sozinho?

Bugster
fonte
12
Os idiomas que eu uso diariamente não existiam quando eu estava na faculdade. Portanto, o autodidata é muito importante para o aprendizado de novas tecnologias, se você planeja ser desenvolvedor por mais de alguns anos.
Jon Strayer
5
Você notou que agora você é muito mais experiente do que era há um ano - na verdade, aposto que há um ano você não sabia o quanto poderia aprender! Acho que isso acontece a cada 2-5 anos, olho para trás e digo: "Uau, eu entendi tudo errado e nem sabia que era possível fazer melhor". O autodidata é fundamental, o tempo todo, se você quiser ser moderadamente bom. Além disso, eu não gostaria de trabalhar com alguém que não pudesse aprender dessa maneira.
Bill K
2
Quando eu tinha a sua idade, eu não seria capaz de não fazer programação sozinha, mesmo que tivesse tentado. É muito divertido. E sim, acabou sendo extremamente importante e útil para minha carreira, mas esse foi apenas um bom subproduto. Faça isso por diversão, e você não precisará pensar se precisará ou não da experiência.
Ben Lee

Respostas:

100

Isso é crítico. Acho que nunca conheci um bom programador que não fosse autodidata em algum nível. Como gerente de contratação de uma grande empresa, posso dizer que um candidato que descreve projetos pessoais e o desejo de aprender supera um candidato sempre com um grau impressionante. (Embora seja melhor ter os dois.)

A questão da faculdade é a seguinte: os cursos de Ciência da Computação ensinam teoria, não tecnologia. Eles ensinarão a diferença entre uma tabela de hash e uma árvore B e os conceitos básicos de como um sistema operacional funciona. Eles geralmente não ensinam idiomas de computador, sistemas operacionais ou outras tecnologias além de um nível superficial.

Lembro-me da época em que participei da minha primeira aula de estruturas de dados e recebemos um manual fino para essa nova linguagem chamada "C ++" que eles decidiram começar a aprender. Tivemos duas semanas para buscá-lo o suficiente para escrever código. Essa foi uma boa lição por si só. É assim que a sua carreira irá.

Sua escola provavelmente não vai lhe ensinar o que você precisa para conseguir um bom emprego. As escolas costumam acompanhar o que há de melhor no setor há muitos anos. Então você conseguirá um emprego. Qualquer empresa que você vá, certamente não gastará nenhum esforço específico para treiná-lo. As más companhias são muito baratas e, francamente, as boas empresas só contratam pessoas inteligentes o suficiente para buscá-las à medida que avançam.

Eu me formei em 1987. Fui trabalhar como programador C com experiência em programas DOS, NetBIOS e "Terminar e permanecer residente". Nos anos seguintes, tive pouco ou nenhum treinamento real. Olhe para os anúncios de emprego ... não é preciso muito para essas habilidades! A única razão pela qual posso trabalhar hoje é porque passei os anos seguintes aprendendo constantemente. Para ter sucesso como engenheiro, você precisa ter o hábito de aprender. Inferno, eu iria além disso: você precisa amar o aprendizado. Você precisa ser o tipo de pessoa que mexe com WebGL, Android ou iOS, porque parece divertido. Se você é esse tipo de pessoa e mantém o hábito de aprender, irá muito longe no setor.

Steven Burnap
fonte
3
Este. A teoria também é muito importante e é mais difícil ser autodidata. Mas eu discordo do treinamento da empresa. Atualmente, nosso campo é muito procurado e as empresas estão tendo problemas para encontrar bons talentos. (Pelo menos na minha área)
user606723
+1, eu costumava notar um 'TSRs em C' muito antigo na biblioteca da minha escola em 2004. Gostaria de saber se ele ainda está lá.
Jesvin Jose
3
A teoria é importante, mas é mais fácil aprendê-la do que costumava ser, uma vez que vídeos de muitas classes da universidade estão disponíveis online. Ouso dizer que se pode aprender mais assistindo as palestras de um grande professor on-line do que estar fisicamente presente nas palestras de um medíocre.
Jeanne Pindar
@ Steven Burnap: "Os cursos de Ciência da Computação ensinam teoria, não tecnologia" - isso não é verdade. Na minha universidade (KIT, Alemanha), precisamos aprender Java (e fazer alguns pequenos projetos), além de alguns exercícios em C. Uma preparação para o ICPC (uma competição como a TopCoder), onde aprendemos como resolver problemas rapidamente em C ++ é oferecido. Também temos que fazer um projeto muito grande (um grupo criou um aplicativo para Windows phone que pode descentralizar automaticamente estabelecer uma rede móvel se a rede estiver inativa por causa de desastres naturais). Também temos uma introdução em Scala / Haskell.
Martin Thoma
1
Mas é verdade que você deve sempre fazer seus próprios projetos. A universidade oferece apenas muitos pontos de partida. Eu acho que se você não está curioso, se você não quer tentar algumas coisas, você não deveria querer trabalhar como programador (como um emprego em período integral).
Martin Thoma
29

Auto-ensino é muito importante. Você não pode contar com uma educação formal para ensinar tudo o que você precisa saber sobre o seu campo. No entanto, dito isso, uma educação formal também é muito importante se você quiser entrar nesse campo de carreira bem preparado e bem equipado.

Estou no caminho da faculdade e passei os últimos quatro anos me ensinando desenvolvimento de software, como resultado, agora trabalho para uma empresa grande e bem conhecida que mantém aplicativos corporativos. Não é preciso muito talento, mas muito trabalho e motivação. Acho que literatura e prática são sua melhor aposta quando se trata de aprender. Também é importante escolher um campo específico, pois, embora você possa transportar idiomas e lógica em todos os campos, você só pode realmente se tornar "ótimo", se houver prática e entendimento suficientes em um campo específico.

Jacob Krustchinsky
fonte
8
Existe uma educação formal e autodidata, mas você está deixando de lado um mentor no trabalho - que pode ser a melhor maneira de ampliar suas habilidades e aprender como o software é realmente fabricado.
JeffO
1
"No entanto, dito isso, uma educação formal também é muito importante se você quiser entrar nesse campo de carreira preparado para assumir uma posição ativa na força de trabalho". ... Esta frase é muito vaga. Uma "postura ativa" na "força de trabalho"? Realmente? Afinal, o que isso quer dizer?
Blesh
@blesh Concordou. Mudou a redação.
Johnny Rotten
1
Eu acho que a experiência profissional é a mais importante ... mas grande parte disso é autodidata. Você não pode esperar que todos em seu escritório para ensinar-lhe tudo, e o melhor levar a sua experiência de cada lugar que eles podem obtê-lo ..
user606723
11

Aprender por conta própria é muito importante. Ter a disciplina para pesquisar e reunir o conhecimento necessário para realizar uma tarefa o colocará muito à frente de muitos outros que dependem de treinamento formal para realizar a mesma tarefa. Isso vale para qualquer setor, não apenas para o setor de software.

Não me interpretem mal, é útil obter algum treinamento ou educação formal, mas sua própria motivação para aprimorar suas habilidades o ajudará a se tornar um desenvolvedor de software melhor. Sempre há algo a ser aprendido: novas plataformas ou linguagens de programação para experimentar, metodologias de desenvolvimento a serem implementadas, ferramentas e algoritmos a serem usados, a lista continua. Nem tudo será apresentado a você por meio de treinamento formal e, portanto, cabe a você aprender sobre outros tópicos e idéias nas quais possa estar interessado, que o ajudarão durante toda a sua carreira em programação.

Bernard
fonte
6

Na programação, o autodidata é o que você fará todos os dias. Você terá que aprender muitas coisas, não apenas linguagens de computador e ferramentas que continuam mudando. Você terá que aprender o código que outras pessoas escreveram e também precisará corrigi-lo com o mínimo de instruções e supervisão. É raro em algumas organizações obter treinamento real mais de uma vez por ano (se é que alguma vez!). Certifique-se de que você pode fazer (e aproveitar) isso, caso contrário, considere uma carreira diferente enquanto ainda é jovem.

Emmad Kareem
fonte
4

A auto-instrução é uma habilidade indispensável para um programador. Muitos não. Se você for bom, usará essa habilidade pelo resto de sua carreira.

Edward Strange
fonte
1
-1: Concordo que o auto-aprendizado é uma habilidade indispensável, mas apenas dizer que é não é o que faz.
9757 Jim G. #
1
+1 Não concordo com voto negativo. Eu diria o mesmo e é baseado na minha experiência também.
CodeART
1
@ Jim - que raciocínio absolutamente absurdo você tem lá. WTF eu deveria fazer isso? "Eu concordo, mas -1 porque você disse isso." O_o
Edward Strange
@CrazyEddie: Apenas dizer que algo é verdade sem fornecer algumas razões de suporte não é útil em um fórum como este.
Jim G.
@ Jim - Uma revisão rudimentar de suas respostas me leva a responder: "As pessoas que moram em casas de vidro não devem atirar pedras".
Edward Strange
3

O auto-estudo é muito importante, porque você nem sempre terá oportunidades de treinamento formal. Quando você começar a procurar um projeto, estágio ou emprego, encontre aqueles que tenham sólidos desenvolvedores seniores que possam realmente ensinar alguma coisa. Estar em um ambiente que faz as coisas certas pode ser a rota expressa para um código de qualidade.

JeffO
fonte
3

Posso dizer-lhe que houve vários lugares em que trabalhei onde eles nem consideravam alguém que não tinha seus próprios projetos fora do trabalho. Ele mostra amor pela programação, além de apenas mostrar um emprego e receber um cheque. Vou falar mal aqui e dizer o seguinte: Todos os programadores que não gostam de programar são péssimos em seu trabalho. Pior ainda, eles não têm nada a acrescentar a nenhuma equipe em que possam se juntar.

Eu pegaria um desenvolvedor júnior inexperiente que ama tanto o que ele faz que ele brinca com código em seu tempo livre em três desenvolvedores de nível intermediário que estão apenas passando pelas propostas: Esse desenvolvedor júnior será ótimo algum dia, e os outros irão nunca será melhor do que eles são.

Se você não está aprendendo coisas novas, está apenas sentado esquecendo o que sabe.

blesh
fonte
2

O talento é superestimado.

São necessários pelo menos 10 anos de prática para que alguém possa se tornar ótimo em qualquer área. Portanto, é importante começar cedo.

O fato de você começar numa fase inicial de sua vida fazendo algo que parece gostar já o coloca à frente do grupo. Portanto, a menos que você tenha dúvidas sobre a área em que estará trabalhando, não pare ... nunca pare!

Considero o auto-aprendizado uma das melhores habilidades de qualquer desenvolvedor e o segundo é um diploma universitário. Um bom diploma universitário é importante apenas porque agrega tanta qualidade ao seu conhecimento que você provavelmente não seria capaz de reunir sozinho. Certamente há exceções a essa regra, mas é tudo o que são; exceções.

Além disso, quanto mais experiência você acumular mais cedo, melhor desfrutará da faculdade e melhor absorverá os novos conceitos apresentados a você. No começo, você achará tudo tão fácil e inútil, mas muito rapidamente se sentirá desafiado e ansioso por aprender mais.

Depois de sair da faculdade, nunca pare de aprender, pois será uma das suas melhores características. Eu recomendo ler 'O talento é superestimado'. Você pode dar uma olhada neste artigo rápido sobre esse livro:

http://www.devlounge.net/strategy/the-talent-myth

Alex
fonte
Falando em mitos ... Eu acredito que os 10 anos de prática do mantra também são um mito. Você pode dar a muitas pessoas 100 anos de prática em algumas habilidades e elas nunca conseguirão. Claro, eles podem ser melhores do que quando começaram, mas se ainda não é bom o suficiente, não é bom o suficiente. Além disso, eu vi alunos recém-formados percorrerem desenvolvedores muito experientes no desenvolvimento de software. Claro, eles ainda tinham coisas a aprender, mas desenvolvedores muito experientes, mesmo aqueles com 10 anos de prática. O talento é muito, muito importante. Sem ele, você só pode ir tão longe.
Dunk
@ Dunker eu concordo. Eu acho que a idéia é mais no sentido de que mesmo pessoas talentosas precisam de pelo menos 10 anos para aprender algo bem e talento não é um passaporte para o estrelato. É uma combinação de talento e verdadeira dedicação ao longo de muitos anos.
7774 Alex
Eu concordo com você. O talento sem prática não leva longe. No entanto, lembro-me de ler o artigo original e o autor estava afirmando que mesmo pessoas com talento comum em uma determinada habilidade podem se tornar bastante hábeis com as 10.000 horas de prática. Não concordo plenamente com essa avaliação. Isso se torna realmente óbvio no campo de desenvolvimento de software, especialmente se você trabalha com aplicativos com uma complexidade média. A grande maioria dos desenvolvedores é capaz apenas de fazer coisas relativamente simples. Nenhuma quantidade de prática parece levá-los para além do ponto
Dunk
@ Dunk, então talvez eles estejam perdendo paixão, não talento.
828 Alex
: Eu acho que é muito fácil identificar talentos, mesmo quando eles são brutos e inexperientes, em comparação com nunca conseguir.
Dunk
2

Em comparação com quase qualquer outro campo que eu posso pensar, a programação é basicamente tudo sobre a auto-educação. A educação formal em ciência da computação / engenharia de software é útil, mas não é exatamente onde você aprende a codificar.

O que você realmente deve fazer é começar a trabalhar em projetos: crie algo que você deseja que exista. E então junte-se a um projeto de código aberto para trabalhar em algo que você deseja que seja ainda melhor. O aprendizado vem de graça, então ...

Steve Bennett
fonte
2

Você precisa aprender coisas novas - vá aonde sua curiosidade o levar.

Obtenha também uma educação formal - 90% do que você recebe em uma educação formal não será usado no local de trabalho. Mas os 10% usados ​​serão algo estranho e obscuro que você pensou que na época nunca seria de nenhuma utilidade.

Sem a educação formal, você sofre do problema melhor descrito como "você não sabe o que não sabe". A educação formal oferece uma ampla e ampla cobertura de muitas coisas, com o pleno conhecimento de que ninguém jamais sairá e usará tudo. Como o que você usará é algo que você não saberá até precisar, é tudo uma questão de estar preparado para que você saiba para onde procurar.

A coisa do auto-aprendizado / curiosidade é o que faz de você uma pessoa muito mais experiente e bem-formada. Sem mencionar mais valioso para um empregador.

Nota: passei toda a minha carreira, desde que comecei a programar com cerca de 15 anos (sheesh, mais de 25 anos ... quase 30 anos) descobrindo que, além da minha educação universitária, a maioria dos cursos de treinamento (você sabe ... aprende BLAH em 3 dias em tempo integral) são bastante inúteis. Geralmente, são superficiais e, no que diz respeito ao mantra de "manter suas habilidades", não é muito útil para quem precisa entrar em detalhes técnicos profundos. Comprar livros, usar a internet, investigar matemática / física / arquitetura / o que quer que seja que me tornou útil e valiosa. Em um estágio, eu era uma das cerca de 10 pessoas no mundo com conhecimentos específicos sobre um determinado assunto - todo esse conhecimento foi adquirido com o autodidata e o aprendizado no trabalho.

O único momento para parar de aprender é quando você tem um metro e meio de profundidade em uma caixa de pinheiro.

rapid_now
fonte
2

Há uma boa parábola sobre isso:

O campeonato mundial anual realizado na Colúmbia Britânica. Os finalistas foram canadenses e noruegueses.

A tarefa deles era a seguinte. Cada um deles que uma certa porção da floresta. O vencedor é aquele que pode derrubar o maior número de árvores das 8 da manhã às 4 da tarde.

Às oito horas, o apito tocou e dois lenhadores tomaram suas posições. Eles cortaram uma árvore atrás de uma árvore, enquanto o canadense não ouvira dizer que os noruegueses paravam. Percebendo que essa era sua chance, o canadense redobrou seus esforços.

Às nove horas no Canadá, soube que o norueguês voltou a trabalhar. E, novamente, eles trabalharam quase simultaneamente, quando dez a dez canadenses souberam que o norueguês parou novamente. E, novamente, o canadense foi trabalhar, querendo tirar vantagem da fraqueza do inimigo.

Às dez horas no norueguês, reentre na obra. Até dez para as onze, ele brevemente não o interrompeu. Com o crescente senso de júbilo, o canadense continuou a trabalhar no mesmo ritmo, já sentindo o cheiro da vitória.

Durou o dia todo. Cada hora do norueguês ficava por dez minutos, e o canadense continuava trabalhando. Quando você ouve sobre o final da competição, às quatro horas da tarde, o canadense tinha certeza de que o prêmio estava no bolso.

Você pode imaginar como ele ficou surpreso ao saber que ele perdeu.

  • Como isso aconteceu? - ele perguntou ao norueguês. - A cada hora, ouvi você por dez minutos. Porra, você conseguiu cortar mais madeira do que eu? É impossível.

  • De fato, tudo é muito simples - apenas disse norueguês. - A cada hora, parei por dez minutos. E enquanto você continua a cortar madeira, eu estava afiando meu machado.

Portanto, você deve estudar o tempo todo para manter seu machado afiado .

webvitaly
fonte
1
  • É crucial, caso contrário você ficará para trás

  • Eu aprendo todos os dias, no trabalho, aqui, lendo livros, fazendo e respondendo perguntas. Quanto mais aprendo, mais entendo o pouco que sei.

CodeART
fonte
1

O autodidata é muito importante por duas razões:

  • Após os estudos : como já foi dito em outras respostas, o autodidata é o que você fará no seu dia a dia como desenvolvedor. Você não pode saber tudo e as empresas sabem disso. O que você DEVE saber é como melhorar a si mesmo. Os melhores desenvolvedores têm a capacidade de aprender novos idiomas, novas tecnologias rapidamente por si mesmos.
  • durante seus estudos : a distância entre o que os cursos universitários lhe ensinarão e a realidade do que será seu trabalho são enormes. Estou falando especificamente sobre manutenção e manutenibilidade. Uma parte essencial do trabalho de um desenvolvedor consiste em manter o código legado (correções de bugs, melhorias, adição de recursos etc.). Você pode ler A criação de novos softwares geralmente é uma parte importante da maioria dos trabalhos de programação? para mais detalhes.
    Como a manutenção do código legado é essencial, você também precisará escrever o código de manutenção, e isso raramente é ensinado com lições formais (consulte Como melhorar o treinamento dos alunos em relação à manutenção?) Se você não pratica o autodidata e lê muito durante seus estudos, é improvável que você adquira as habilidades necessárias que o tornarão um desenvolvedor melhor do que a média.
    Não tente aprender muitas línguas / tecnologias durante seus estudos, mas aprenda boas práticas e codificação limpa. Por exemplo, é melhor você ler "Código Limpo", de Robert C. Martin, do que "Java The Complete Reference", de Herbert Schildt, durante seus estudos.
Matthias Jouan
fonte
-1

Autodidata é muito importante, pois você internaliza os conceitos do seu próprio jeito e isso realmente ajuda.Escolher um idioma para autodidata é muito importante.Línguas com documentação clara são muito importantes e o que você não quer ser é muito ambicioso em querer aprender muitas linguagens populares muito rápido. Desde que você disse que começou com c ++, eu recomendaria o java para você, ele sempre funciona tão bem para programadores autodidatas.

Gandalf
fonte
-1

Provavelmente aprendi mais de 95% do que sei relacionado à programação, tentando coisas sozinho e aprendendo como funciona. A escola pode ajudar no ensino de um bom estilo de programação e na otimização do código de velocidade, etc., mas você nunca se tornará um "bom" programador apenas lendo um livro. Uma ótima maneira de desenvolver habilidades de programação é encontrar problemas cotidianos que você possa usar um computador para resolver e tentar escrever algum código para fazê-lo. Ficar preso faz parte do aprendizado. Comecei querendo ser um desenvolvedor da Web, para criar sites fictícios com bastante frequência (sem hospedá-los ou qualquer coisa, é claro) para testar coisas novas que queria experimentar. Funcionou muito bem para mim!

Phillip Schmidt
fonte
-1

Comecei a programar há 2 anos. Minha escola não sabia ensinar bem os idiomas, e eu tenho que ir on-line e fazer muita pesquisa sobre mim mesmo. Eu sou um aluno mais lento e, por isso, levei dois anos para escrever meu primeiro programa, enquanto todos os meus colegas de escola ainda estão lutando ou se dedicando à programação.

Isso mostra que é melhor para um programador ser autodidata, em vez de depender da escola. A escola sempre esconderá as informações, pois elas acham que não estamos prontos para isso.

Jie Liang
fonte
Não tenho certeza se eu concordo. Eu acho que o auto-ensino é importante, mas definitivamente há muito material básico que você pode obter com a educação formal que fornecerá as ferramentas para se comunicar com outras pessoas e aprender a lidar com novos problemas, em vez daqueles que já foram resolvidos.
Jmort253 #
durante esse período, todos estão lutando para entender o que a escola está ensinando e eles estão ensinando em um ritmo muito rápido, que todos não conseguiam acompanhar.
Jie Liang
A escola é um programa de doutrinação projetado para nos dar uma base de conceitos básicos, mas cabe a nós continuar a educação depois e continuar aprendendo por conta própria.
8132 jmort253
Eu concordo com o que você diz. Isso é autodidata, se você quiser melhorar a programação.
Jie Liang
-3

Como sempre em matemática e ciência da computação - existem 2 pontos de vista: 1. Necessário e 2. Contenções suficientes

  1. É necessário (auto) aprender ao longo da sua vida. Nenhuma outra opção para ser e permanecer um bom programador.
  2. O ponto acima não é condição suficiente - você deve ter uma sólida formação em matemática - ensino médio e depois formar uma boa universidade no campo da ciência da computação. Esta é (talvez) a condição suficiente. Seu cérebro deve ser ensinado a pensar algoritmicamente. Isso não pode ser alcançado por auto-aprendizado.
Nikolay Ivanov
fonte
1
Seu cérebro pode ser ensinado a pensar algoritmicamente sem a universidade. Eu até sugeriria que existem maneiras melhores de aprender isso do que ir para uma universidade (um aprendizado, por exemplo, seria mais eficaz para muitas pessoas). Por outro lado, há muitas pessoas que simplesmente não conseguem pensar algoritmicamente, independentemente de quantos cursos de ciência da computação eles fazem. A universidade certamente é uma grande ajuda para a maioria dos programadores, mas também não é necessária.
7272 Phil
Se você é proficiente na leitura de livros didáticos, a leitura de vários livros e o uso de ferramentas on-line, como stackexchange.com e programadores, devem fornecer bastante experiência em ciência da computação e algoritmos.
Peter Smith