É possível que um amador se torne um bom programador? [fechadas]

46

Um programador profissional em tempo integral pode fazer um ótimo trabalho aprendendo continuamente com seu trabalho. Como um programador amador pode treinar para se tornar um bom programador?

** Se você gosta de tocar ou cantar, pode fazê-lo porque é seu hobby e está interessado, e pode se tornar um bom cantor ou tocador de música. Mas você não precisa se tornar um cantor profissional ou cantar para viver. Isso também é verdade para programadores? Algum programador amador que é famoso?

Ted Wong
fonte
3
Direito. Portanto, Wozniak não era um bom programador até a primeira venda da Apple (e ele se tornou um "profissional").
KeithS
Definir "bom" ..
2
Todo programador "bom" já foi amador.
Spudwaffle

Respostas:

84

A chave para se tornar realmente bom é trabalhar em uma boa equipe. Muitos amadores trabalham sozinhos, então eles só chegam tão longe. Em uma equipe, você aprende com os outros e se torna disciplinado porque seus colegas o acertam com o que for conveniente.

Por esse motivo, proponho que você faça parte de uma equipe, por exemplo, um projeto de código aberto ou faça um projeto de hobby com alguns amigos.

user281377
fonte
9
+1 por trabalhar em uma boa equipe. Ter pessoas com habilidades iguais ou superiores em sua equipe é extremamente motivador.
BenR 24/10/11
Esqueci a parte do time na minha lista de 'armadilhas', +1
keppla
2
+1 Acho que essa é a chave: aprender com pessoas boas que têm mais experiência que você. Juntar-se a uma boa equipe é muito mais fácil dizer do que fazer.
1
+1 para o bom time. Se a equipe não for tão boa ou melhor que você, você não aprenderá.
Spencer Rathbun
4
Você não precisa fazer parte de uma equipe para aprender com outras pessoas.
Emanuil Rusev
53

O caminho para se tornar bom em programação é o mesmo que para cantar ou tocar música: praticar, praticar, praticar. Se você gastar tempo suficiente desenvolvendo regularmente o software por vários anos, é provável que se torne bom nisso - seja dentro ou fora do horário de trabalho.

Agora, além de gastar mais tempo praticando, há outra razão pela qual os profissionais geralmente se tornam melhores que os amadores em certo sentido (tanto na música quanto na programação). Se você é um profissional, precisa executar tarefas que não necessariamente gosta, mas que pertencem ao trabalho mais amplo de desenvolver software (por exemplo, testes, discussões com clientes, escrever documentação, configurar ambiente de desenvolvimento / desenvolvimento, escrever scripts de compilação etc.) ) E de vez em quando você também é pressionado a entrar em áreas desconhecidas, a aprender novos idiomas ou plataformas. Como amador, você não é forçado a fazer o que não quer, o que faz com que você fique na sua zona de conforto a maior parte da sua vida. Em outras palavras, você pode se limitar facilmente a uma ou algumas áreas específicas das quais gosta mais,

OTOH muitos desenvolvedores profissionais também se enquadram nisso, permanecer na mesma empresa fazendo o mesmo trabalho de rotina dificilmente aprendendo algo novo por décadas ... Portanto, a chave para se tornar melhor é a sua atitude. Se você continuar aprendendo e conscientemente procurar oportunidades de sair da sua zona de conforto para um território desconhecido, acabará superando os enxames de "profissionais" lentamente fossilizados. Uma boa maneira de fazer isso pode estar contribuindo para alguns projetos de código aberto.

Uma leitura recomendada é The Pragmatic Programmer: From Journeyman to Master , com muitos conselhos ótimos e muito práticos sobre como continuar melhorando.

Péter Török
fonte
3
+1 Regra de 10.000 horas de Malcolm Gladwell em en.wikipedia.org/wiki/Outliers_(book)
StuperUser
Embora um profissional tenha que fazer trabalhos desagradáveis, existe outro lado - esses trabalhos desagradáveis ​​geralmente são trabalhos monótonos e entediantes que pouco ensinam. Como o amador muitas vezes pode aprender mais ao mesmo tempo, escolhendo desenvolver projetos interessantes. Mas uma lição importante é, é claro, que você deve estar preparado para fazer o trabalho tedioso e entediante. Eu gosto especialmente o seu "contribuir para projetos de código aberto", porque isso significa trabalhar com código de alguma outra pessoa - aprendendo pelo exemplo, como ler código desconhecido etc.
Steve314
@StuperUser, seu link está quebrado (o segundo parêntese não está incluído no hiperlink).
paperjam
Alguns dos melhores conselhos que já li: "Se você quer se tornar um artista decente, desenhe. Todas as manhãs, faça um esboço, você não pode deixar de melhorar". Encontre um projeto. existem lucros que precisam de ajuda. peça conselhos ("Estou construindo um sistema de faturamento, por onde começo?", "Como faço para lidar com a segurança contextual?", etc). o custo da falha é baixo e você pode simplesmente obter um show pagando fora dele ..
Bobby D
@ Steve314, melhores profissionais escreverão ferramentas para automatizar tarefas tediosas e mundanas. Usando as ferramentas certas para o trabalho certo, reduzi o tempo para algumas tarefas por fatores de centenas. (Mesmo as melhores ferramentas podem ter sido capaz de automatizar longe essa tarefa completamente, mas eu alcancei o que parecia ser um bom equilíbrio de esforço e salva-time-escrevendo ferramenta.)
sarnold
18

Mas para um programador amador, como treinar para se tornar um bom programador?

Você se torna melhor aprendendo, o que é parte que faz, parte que reflete sobre o que foi feito.

Então, basicamente, não há diferença entre amadores e profissionais, mas as 'armadilhas' estão dispostas um pouco diferente.

Armadilhas amadores são, imho

  • a necessidade de terminar seu projeto, não importa o que aconteça, não é tão forte quando você não é profissional . Isso pode ser uma coisa boa, porque você não vai se acostumar com isso quando se trata de qualidade, mas o acabamento (o tempo é ainda melhor) é uma habilidade muito importante, mais difícil de treinar como amador, porque é fácil deixar um projeto morrer e começar outro.

  • a necessidade de se comunicar bem não é tão forte. Em um projeto profissional, há um forte incentivo para realmente entender os clientes, mesmo que eles sejam completamente incapazes de formar apenas uma frase coerente do problema que eles querem que você resolva. Se você os entender mal, ou (no caso usual) não perceber, que eles não falam sobre algo que você precisa entender, isso se tornará seu problema, mais cedo ou mais tarde. Um projeto amador pode facilmente perder todos os usuários em potencial, devido à não solução de seus problemas, e ser 'finalizado' de uma maneira técnica.

As armadilhas profissionais são

  • geralmente há pouca motivação para melhorar . Você está lá 40h / semana, independentemente de encontrar a cura para o câncer ou apenas tomar café de uma maneira que pareça produtiva. Aprender é algo que você faz principalmente por si mesmo e, muitas vezes, se você tentar aplicar as coisas que aprendeu, há forças que trabalham contra isso (pensamento conservador do grupo, hierarquias e até guias de estilo podem ser usados ​​como armas contra melhorias). É preciso muito amor pela profissão para não desistir, cortar o horário e procurar objetivos alternativos na vida.

  • geralmente há pouco a aprender . Sim, pode-se tentar aceitar tudo como um desafio, mas temos que ser honestos: após 1 ano do código Spaghetti, você não pode refatorar ("você está complicando isso!") Em um idioma em que você tem mais anos Com uma experiência que provavelmente durará, a única coisa que se aprende é construir uma tolerância contra a frustração e a política corporativa.

Se você toca música ou canta, pode tocá-lo por interesse, ainda pode se tornar um bom cantor ou tocador de música, mas não precisa se tornar um cantor profissional ou cantar para viver.

Claro que você não precisa, mas quantos músicos recusariam uma oportunidade de realmente deixar o emprego e ganhar dinheiro com a música?

Na área de TI, essas oportunidades são um pouco mais prováveis ​​do que na música; portanto, acho que não é impossível se tornar um amador famoso, mas muitas vezes os amadores fazem de sua paixão seu trabalho (com problemas semelhantes que os músicos têm quando precisam fazê-lo). descobrir sua linha entre comércio e arte)

keppla
fonte
Isso dói minha alma, é tão verdadeiro para mim, lol. 1 ano do código de espaguete que você não pode refatorar ("você está complicando isso!")
Terrance
1
"muitas vezes há pouca motivação para melhorar." se eu já tive algum funcionário que tratou o desenvolvimento de software dessa maneira, prefiro demiti-lo do que uma pessoa que tenta fazer melhor, mesmo que esteja quebrando as coisas inadvertidamente.
@ Chris Marisic: então eu ficaria feliz em trabalhar com você. infelizmente, você seria a exceção na linha de meus empregadores
keppla
8

Receio que haja mais possibilidades de aprendizado para os amadores do que para os drones corporativos em tempo integral. Como amador, você não está confinado a nenhuma metodologia, tecnologia, ambiente, design e desenvolvimento. Você pode fazer o que achar útil para o seu desenvolvimento pessoal. Como desenvolvedor em período integral, você provavelmente trabalha no mesmo produto há anos, seguindo a mesma rotina, limitada pelas mesmas diretrizes corporativas. Para a maioria de nós, não passa de uma estagnação. Um pouco pode ser aprendido em um ambiente corporativo, quando você estiver familiarizado com o básico comum.

Essa é a razão pela qual muitos desenvolvedores em tempo integral também são amadores, continuam codificando depois do trabalho, estão brincando com seus próprios projetos de brinquedos - é um pouco de liberdade necessária para o crescimento.

SK-logic
fonte
6

Como programador amador, você tem muitas possibilidades hoje em dia para melhorar suas habilidades. Fiz o seguinte para melhorar minhas habilidades enquanto estudava engenharia de software.

Claro que você também precisa aplicar seu conhecimento. Faça isso através de um estágio, um projeto com amigos ou um curso de estudo. Existem muitas maneiras de melhorar a si mesmo, você apenas está disposto a investir seu tempo livre. Além disso, divirta-se aprendendo algo novo !

BenR
fonte
4

É possível que um amador se torne um bom programador?

Sim, é possível , porém leva muito tempo:

são necessários cerca de dez anos para desenvolver conhecimentos em qualquer uma de uma ampla variedade de áreas, incluindo xadrez, composição musical, operação de telégrafo, pintura, piano, natação, tênis e pesquisa em neuropsicologia e topologia. A chave é a prática deliberativa: não apenas fazê-lo repetidamente, mas desafiando-se com uma tarefa que está além da sua capacidade atual, tentando, analisando seu desempenho durante e depois de fazê-lo e corrigindo quaisquer erros. Então repita. E repita novamente.


Como um programador amador pode treinar para se tornar um bom programador?

Novamente da mesma fonte :

  • Interessar-se pela programação
  • Programa
  • Converse com outros programadores
  • Se você quiser, faça quatro anos na faculdade
  • Trabalhe em projetos com outros programadores
  • Trabalhe em projetos após outros programadores
  • Aprenda pelo menos meia dúzia de linguagens de programação
BЈовић
fonte
Eu não costumam +1 respostas consistindo apenas em links, mas este artigo é a pena ler. Obrigado.
sarnold
você se importaria de explicar isso com mais detalhes - como e por que responde à pergunta? "Link-só responde" não são muito bem-vindos no Stack Câmbio
mosquito
1
@gnat O link já diz tudo - espero que seja melhor após a edição.
BЈовић
3

Como amador, você tem mais opções para buscar melhores práticas do que muitos profissionais. Os profissionais geralmente estão sob pressão para "simplesmente fazê-lo".

Não assisti a nenhum curso do qual aprendi programação, mas aprendi com alguns cursos gratuitos (de 1 a 3 horas) apresentados pela Universidade em que participava. Eles tinham como objetivo permitir que os empresários entendessem o código sendo escrito para eles. Os cursos apresentaram um código muito bem escrito (comentários incluídos) que resolveu um problema comum da vida real. O código foi revisado com uma explicação dos recursos do idioma e por que eles foram usados ​​da maneira que estavam. Nenhum dos cursos de idiomas completos que eu vi resultou em código nem de perto com a qualidade do que aprendi nesse curso. Passaram-se alguns anos antes de eu começar a estudar Ciência da Computação.

A Internet e a biblioteca fornecem muitos recursos e exemplos. Acho que muitos dos exemplos não são bons para nada, mas para fazê-lo. Ao examinar exemplos, observe primeiro o código. Você consegue entender o propósito e a estrutura sem a explicação? Nesse caso, você pode ter encontrado um bom exemplo.

Algumas práticas importantes que você deve aprender e aplicar:

  • SECA (não se repita).
  • DRO (não repita outro); Use as bibliotecas de idiomas padrão, use outras bibliotecas.
  • Mantenha o código simples. Código elegante tende a ser mais difícil de manter. Pior ainda, os otimizadores geralmente produzem código de máquina mais lento do que no código mais simples.
  • Os módulos devem ter apenas um propósito. (É melhor se esse objetivo for trabalhar ou tomar decisões.)
  • Use bons nomes. Não use nomes abreviados para evitar a digitação; use um IDE com preenchimento automático. Entenda as convenções de nomenclatura do seu idioma.
  • Não otimize seu código. Aguarde até poder medir seu desempenho e saber que otimizá-lo terá um efeito perceptível.
  • Continue aprendendo. Aprenda a identificar recursos que fornecerão informações úteis que você pode usar agora.
BillThor
fonte
2

Se você gosta de tocar ou cantar, pode fazê-lo porque é seu hobby e está interessado, e pode se tornar um bom cantor ou tocador de música. Mas você não precisa se tornar um cantor profissional ou cantar para viver. Isso também é verdade para programadores? Algum programador amador que é famoso?

De modo nenhum. É engenharia de software . Não é baseado em "talento natural". Ser um grande programador é baseado em anos de educação e anos de experiência . Você só consegue isso trabalhando em projetos reais .

vartec
fonte
2
Na verdade, é, em grau significativo, um talento natural. Você não pode treinar um engenheiro de software ruim para ser ótimo, mas geralmente você pode treinar alguém para ser bom. É muito parecido com talento musical ou artístico, você pode treinar quase qualquer um para ser muito bom, mas você não pode treinar alguém para ser ótimo, eles treinam a si mesmos e provavelmente são melhores do que qualquer um de seus treinadores. Também como atletas de classe mundial poucos já encontrou um talento de programação de classe mundial que pode explicar porque a maioria dos programadores não sabem que existem :)
Bill K
2

Nas entrevistas de emprego em que estive (no lado do empregador), sempre pedi coisas que o entrevistado programava como amador (exceto tarefas escolares) - fazer isso é um sinal claro de interesse genuíno no campo e ter paixão por aprender por conta própria. Não é apenas possível, é quase um requisito para se tornar bom.

Imre
fonte
2

É possível? Sim. No entanto, quanto mais tempo você gasta programando, mais tempo precisa para melhorar. Dizem que são necessários 10 anos / 10.000 horas de prática deliberativa para desenvolver o conhecimento de uma habilidade técnica. Isso não significa 10.000 horas de codificação na sua zona de conforto (por exemplo, escrevendo código jQuery simples para sites diferentes), mas 10.000 horas de aprendizado / leitura sobre programação / leitura de código-fonte / gravação de código-fonte / aprendizagem de outros idiomas / trabalhando com outras pessoas etc.

Se você vai dedicar esse nível de tempo a ele; você também pode conseguir um emprego como programador e abandonar o status de amador. (A menos que você seja rico independentemente).

dr jimbob
fonte
1

Todo mundo é amador em tudo em um ponto. Se você quer se tornar um bom programador e é algo que gosta de fazer, você o fará. A chave é programar por conta própria. A escola ensinará quase nada. A maior parte do seu aprendizado será realizada por conta própria e no trabalho. Se você quer ser bom, vá ser bom.

Yatrix
fonte
1

dado o verdadeiro significado original da palavra (francês amador "amante de", do francês antigo e, finalmente, do latim amatorem nom. amator , "amante" - Wikipedia), alguém gostaria de acreditar que um grande número de profissionais também são amadores. Se você não ama o seu ofício, você o pratica?

É claro que é possível - se você gosta de programar, praticará e, com o tempo, se tornará bom nisso. (Talvez nunca seja ótimo, dado talento pessoal ou falta dele), mas pelo menos bom

StevenV
fonte
O verdadeiro significado de amador é o significado que você encontra no OED ou NOAD. A etimologia de uma palavra não dita seu significado. "Aquele que se dedica à busca, estudo, ciência ou esporte como passatempo e não como profissão".
Django Reinhardt
verdadeiro. talvez eu devesse ter escrito "significado original" em vez de "significado real". É lamentável que nossa linguagem atual não tenha uma palavra comum para "pessoas que fazem algo porque realmente amam fazer isso". Eu acho que isso ajudaria a responder à pergunta do OP: "É possível que um amador se torne um bom programador?" É claro que é possível - se você gosta de programar, praticará e, com o tempo, se tornará bom nisso. (Talvez nunca seja ótimo, dados talentos pessoais ou a falta deles), mas pelo menos bom.
StevenV
0

Não sei o que define um bom programador. Mas aprender algo próprio e trabalhar com um grupo de pessoas é algo diferente. Os programadores amadores apaixonados realmente aprendem coisas novas e hackers. Eles achavam as coisas mais interessantes. Mas trabalhar com um grupo de pessoas é um ato disciplinado, no qual você colabora, comunica, compartilha / obtém informações de especialistas nessa área.

Mas adquirir conhecimento é apenas uma questão de paixão. Há pessoas que passaram noites aprendendo coisas e acabam trazendo algo novo para o mundo como Bill G Mark Zuck, etc. Não é possível comparar facilmente. mas se você quiser ser um engenheiro de software melhor (não vou ligar para programador), entre em uma empresa ou trabalhe para obter bons produtos usados ​​por outras pessoas.

Por fim, leia muito para melhorar suas habilidades, atitudes, atualizações do setor, desenvolver um gosto e seguir com paixão. As coisas vão segui-lo facilmente!

sarat
fonte
Bill Gates e Mark Zuckerberg estudaram ciência da computação na Hardvard até que começaram seu próprio negócio e desistiram. Não é um bom exemplo de amadores .
vartec 24/10/11
Duvido que Harvard tenha desempenhado um papel importante no desenvolvimento de suas habilidades de programação, exceto no ambiente nerd!
sarat
0

Para a pergunta, "algum programador amador se tornou famoso?" A resposta é "Sim, mas a maioria não ficou assim". O exemplo mais famoso que consigo pensar é Roy Fielding, que realizou alguns de seus trabalhos mais importantes enquanto (acredito) não remunerado na Universidade (amador significa não remunerado por definição).

O truque para ter qualidade profissional é ter um mentor ou um conjunto de mentores (como uma equipe em um projeto de código aberto) e uma dedicação séria ao assunto. Como músico anteriormente profissional, minha experiência é que ambos são necessários para ser bons como profissional ou como amador. Alguns podem ser aprendidos pelos livros, mas sem críticas externas consistentes, torna-se muito difícil superar os maus hábitos adquiridos como iniciantes.

Dito isto, no caso do programador, é substancialmente mais fácil aprender do que o do músico - foi minha experiência que, como músico, é muito mais difícil como músico ver seus erros pedagógicos do que ver código que apenas não funciona Por outro lado, também exige um investimento de tempo substancialmente maior para ser um bom desenvolvedor.

cwallenpoole
fonte
0

Como qualquer outra coisa, a melhor maneira de melhorar algo é mergulhar no ambiente em que você deseja se tornar bom e cercar-se de pessoas muito superiores a você, dispostas a tolerá-lo e ensiná-lo. Não é fácil de fazer, mas foi o que descobri que é a melhor maneira de aprender a ser bom em algo mais rápido.

Mas quando se trata de ser um programador verdadeiramente talentoso, você precisa ser apenas isso, talentoso. Se você não é um violinista de talento natural, nunca será tão bom quanto os mestres, por mais que tente ou que instrumento compre. Da mesma forma, se você não tem esse dom que torna os programadores realmente geniais, você também nunca será.

stu
fonte