Como posso ter certeza de que estou realmente aprendendo a programar, em vez de simplesmente aprender os detalhes de um idioma? [fechadas]

82

Costumo ouvir que um programador real pode aprender facilmente qualquer idioma dentro de uma semana. Idiomas são apenas ferramentas para fazer as coisas, me disseram. A programação é a habilidade máxima que deve ser aprendida e dominada.

Como posso ter certeza de que estou realmente aprendendo a programar, em vez de simplesmente aprender os detalhes de um idioma? E como posso desenvolver habilidades de programação que podem ser aplicadas a todos os idiomas, em vez de apenas um?

Ryan
fonte
25
Tente aprender outro idioma. Tente resolver problemas que você já sabe resolver no seu primeiro idioma no seu novo idioma. Não será fácil no começo. Mas você saberá que está aprendendo uma vez que a resolução de problemas antigos de uma nova maneira se torna visivelmente mais fácil (nota: isso pode levar um tempo).
FrustratedWithFormsDesigner
42
Além disso, as pessoas que afirmam aprender um idioma em uma semana precisam definir o que querem dizer quando dizem "Aprender". "What do you mean you're not an expert in LanguageX?!? I can learn a language in a Week!". 1 semana depois:"See, I've learnt the language, and here's a Hello World example I copied from Wikipedia to prove it!"
JohnL 10/10
9
Uma pergunta precisa ser feita. Você constrói sua lógica na sintaxe ou usa um modelo mental mais rápido e eficiente? Acho que programadores iniciantes tendem a pensar usando sintaxe.
ChaosPandion
10
@PaulR: Não demorei 10.000 horas para aprender a andar de bicicleta. Ou nadar, por sinal.
21813 Robert Harvey
7
@PaulR O ditado é sobre ele tomar 10k horas para dominar uma habilidade, não apenas "aprender" que
Tobias KIENZLER

Respostas:

96

Não se preocupe em conhecer algum conceito ridículo de "habilidade", tão comumente ouvido em declarações como:

  • Todas as linguagens de programação são basicamente as mesmas.
  • Depois de escolher bem um idioma, você pode escolher qualquer outro idioma de maneira rápida e fácil.
  • Idiomas são apenas ferramentas, há uma mágica cerebral abrangente que realmente cria o software.

Essas declarações são todas baseadas em uma premissa falha e traem a falta de experiência em um espectro mais amplo de linguagens de programação. São afirmações muito comuns e fortemente acreditadas por uma grande quantidade de programadores, não vou contestar isso, mas contestarei sua precisão.

Isso é provado simplesmente: Passe uma semana (ou realmente qualquer quantidade de tempo maior que alguns dias) tentando aprender os fundamentos de Haskell , Prolog ou Agda . Você logo começará a ouvir a velha música da Vila Sésamo tocando em sua cabeça "Uma dessas coisas não é como as outras ...".

Como se vê, há toda uma gama de linguagens de programação, técnicas e abordagens tão estranhas ao que 95% de nós faz ou já fez. Muitos não sabem que nenhum desses conceitos existe, o que é bom e que esses conceitos não são necessários para ser um programador empregado e até eficaz.

Mas o fato permanece: essas técnicas e abordagens existem, elas são boas para muitas coisas diferentes e podem ser muito úteis, mas não são exatamente como o que você está acostumado e as pessoas não podem simplesmente buscá-las com uma tarde de brincadeiras.

Além disso, eu diria que a maioria dos casos em que as pessoas afirmam ter ou podem aprender coisas tão complexas como linguagens de programação tão rapidamente quanto uma semana, sofrem de um pouco do Efeito Dunning Kruger , Wikipedia (ênfase minha):

O efeito Dunning-Kruger é um viés cognitivo em que indivíduos não qualificados sofrem de superioridade ilusória, classificando erroneamente sua capacidade muito acima da média. Esse viés é atribuído à incapacidade metacognitiva dos não qualificados em reconhecer seus erros.

Gostaria de referir as pessoas a essa visão mais experiente sobre o conceito de aprender a programar por Peter Norvig: Aprenda a programar em dez anos .

Pesquisadores (Bloom (1985), Bryan & Harter (1899), Hayes (1989), Simmon & Chase (1973)) mostraram que leva cerca de dez anos para desenvolver conhecimentos em qualquer uma de uma ampla variedade de áreas, incluindo xadrez, música composição, operação telegráfica, 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.


Certamente, há um conjunto de princípios abrangentes que facilitarão o aprendizado de todos os idiomas!

Talvez, mas eu argumentaria que esse conjunto de princípios é tão grande que quase sempre haverá idiomas fora do alcance de uma semana. À medida que você adiciona novos conceitos à lista com a qual está familiarizado e à vontade, essa lista de idiomas fora do seu alcance imediato pode encolher, mas é difícil acreditar que isso ocorra. A lista de abordagens de computação conceituais para as coisas é tão ampla que é desconcertante, de línguas Concatenative para línguas vetor base para linguagens especializadas em AI ou metaprogramming ( ou idiomas que existem inteiramente para suportar expressões regulares ).

Após dez anos, você poderá programar em geral. Isso significa que você pode escrever um código decente em algum idioma ou estilo de idiomas. Então, depois de dez anos, você estará pronto para começar a enfrentar esses incontáveis ​​conceitos gerais abrangentes pelo resto da vida e, além de Edsger W. Dijkstra , Donald Knuth ou John D. Carmack , não conseguirá entender tudo deles.

Jimmy Hoffa
fonte
11
Enh. Há uma diferença entre "conhecer" um idioma e ser proficiente o suficiente para descobrir e corrigir um bug menor em um. Um bom programador pode fazer o último rapidamente, mesmo em idiomas arcaicos.
Telastyn
5
@ CharlesE.Grant Eu acho que você superestima o que a maioria aprende na faculdade, e também quanto tempo leva para se tornar semi-proficiente em um idioma como Haskell ou Prolog. Eu argumentaria que um engenheiro experiente no setor, sem experiência em programação funcional, levaria significativamente mais de uma semana para consertar seu primeiro bug em um programa Haskell.
Jimmy Hoffa 10/10
11
Eu ainda argumentaria que o conjunto muito fundamental de conceitos é bastante compacto. Depois de entender a reescrita dos termos , você tem uma ferramenta para definir o cálculo lambda, o cálculo SK, a máquina de Turing, o algoritmo de Markov etc. Um pequeno número de idéias verdadeiramente fundamentais pode cobrir a maior parte da ciência da computação. Mas, é claro, é necessária experiência para poder ver os padrões simples em coisas aparentemente complexas.
SK-logic
4
Eu diria que não é tanto o efeito Dunning – Kruger, mas simplesmente assumindo que "linguagem de programação" = "linguagem de programação no estilo c". Depois de conhecer uma quantidade decente de c ++, uma quantidade decente de c # e algumas informações sobre perl e python, espero poder me tornar razoavelmente fluente em Java, PHP etc. em uma semana. Não necessariamente especialista, mas pelo menos bastante fluente. Eu queria pegar javascript em poucos dias. Nesse ponto, trata-se principalmente de aprender as diferenças entre eles. Nota: os idiomas mais populares do mundo real são do tipo c. O mesmo não seria necessariamente verdadeiro, digamos, com o Prolog.
neminem 10/10
2
@WayneWerner Sério, a diferença entre as línguas Haskell ou Prolog e algol é muito mais do que sintaxe, você está apenas perpetuando o mito. Faça o meu teste acima: Passe uma semana tentando aprender Haskell e veja como isso funciona para você. Honestamente, será bom para você, muito a aprender com isso.
Jimmy Hoffa 10/10
51

... como posso desenvolver habilidades de programação que podem ser aplicadas a todos os idiomas em vez de apenas um?

A chave para esta pergunta é transcender a linguagem e pensar em não o idioma que você está codificando em.

WAT?

Programadores poliglotas experientes pensam na árvore de sintaxe abstrata (AST) de seu próprio modelo mental da linguagem. Não se pensa "preciso de um loop for aqui", mas sim "preciso fazer um loop sobre algo" e traduz isso para o apropriado por, ou enquanto, ou iterador ou recursão para esse idioma.

Isso é semelhante ao que se vê ao aprender um idioma falado. As pessoas que falam muitas línguas pensam fluentemente o significado , e ele sai em um determinado idioma.

Pode-se ver alguma pista deste AST no par de vídeos eyetracking Código Compreensão com Eye Tracking e Experiment Eye-Tracking Código (Iniciante) , onde os movimentos do olho de um begineer e programador experiente são vigiados. Pode-se ver o programador experiente 'compilar' o código em seu modelo mental e 'executá-lo' em sua cabeça, enquanto o iniciante precisa repetir o código por palavra-chave.

Assim, a chave para a questão do desenvolvimento de habilidades de programação para aplicar a todos os idiomas é aprender vários idiomas para que se possa distanciar-se de ter o modelo mental de um idioma e desenvolver a capacidade de gerar o AST para um problema por si só. um idioma principal que é então traduzido para um determinado idioma.

Uma vez que se tenha essa capacidade de usar o AST na cabeça, aprender outra língua dentro de uma escola de pensamento semelhante (ir para Befunge é um pouco de Java, mas não tanto de Forth ) fica muito mais fácil - é 'apenas' traduzir o AST para um novo idioma que é muito mais fácil na 3ª, 4ª e 5ª (etc ...) vez.


Há um artigo clássico: Real Programmers Don't Use Pascal . Parte disso diz:

... o Real Programmer determinado pode escrever programas Fortran em qualquer idioma

Existem também bits para os quais você não pode simplesmente usar o AST mental - você também precisa pensar na linguagem. Isso leva um pouco de tempo para ser realizado (ainda sou acusado de escrever código Perl em Python e meu primeiro código Lisp foi revisado dizendo "Este é um programa C muito bom").

Para isso, devo salientar um artigo publicado pela ACM, Como não escrever Fortran em qualquer idioma . O terceiro parágrafo do artigo (que não está entre aspas) aborda diretamente a questão em questão:

Existem características de boa codificação que transcendem todas as linguagens de programação de uso geral. Você pode implementar um bom design e estilo transparente em praticamente qualquer código, se você se aplicar a ele. Só porque uma linguagem de programação permite que você escreva códigos incorretos não significa que você precisa fazer isso. E uma linguagem de programação que foi projetada para promover um bom estilo e design ainda pode ser usada para escrever códigos terríveis se o codificador for suficientemente criativo. Você pode se afogar em uma banheira com uma polegada de água e escrever facilmente um programa completamente ilegível e impossível de manter em um idioma sem gotos ou números de linha, com manipulação de exceção e tipos genéricos e coleta de lixo. Esteja você escrevendo Fortran ou Java, C ++ ou Smalltalk, você pode (e deve) optar por escrever um bom código em vez de um código incorreto.

Não basta apenas ter o AST - é necessário que o AST possa ser traduzido para outros idiomas. Ter um Fortran AST na sua cabeça e escrever código Fortran em Java não é uma coisa boa. É preciso também estar familiarizado o suficiente com o idioma e seus idiomas para poder pensar no idioma (apesar do que eu disse no topo).

Eu vi código Java escrito por alguém que não parou de escrever código C. Havia um objeto com um método principal. Nesse objeto, havia mainvários métodos estáticos chamados por e classes internas privadas que tinham campos públicos (e, portanto, pareciam muito com struts). Era um código C escrito em Java. Tudo o que foi feito foi traduzir a sintaxe de um idioma para outro.

Para superar esse ponto, é necessário continuar escrevendo código em vários idiomas, não pensando nesses idiomas ao projetar o código, mas pense neles ao traduzir o design no código para trabalhar com os idiomas de idioma corretamente.

A única maneira de chegar lá - ser capaz de desenvolver habilidades de programação que podem ser aplicadas a todos os idiomas - é continuar aprendendo idiomas e manter essa linguagem de programação mental flexível, em vez de vinculada a um idioma.

(Minhas desculpas ao ChaosPandion por emprestar muito da idéia que ele apresentou .)

Comunidade
fonte
3
Não precisa se desculpar. Eu acho que você escreveu uma resposta impressionante.
ChaosPandion
Eu queria creditar a pessoa que me fez pensar nessa direção para escrever a resposta.
3
Esta é uma resposta muito boa. Gostaria de poder votar duas vezes.
Wayne Werner
2
Na verdade, é exatamente por isso que você não deve aprender OO primeiro, pois isso formata seu cérebro com um dos piores AST imagináveis.
Morg.
1
@ JimmyHoffa - Você pode estar certo. Eu sempre ensinei inicialmente usando um idioma e introduzindo lentamente mais tarde. Ainda acho que vale a pena explorar, pois sempre posso pisar no freio e focar em um idioma. (SML parece ser uma escolha muito boa, na verdade.)
ChaosPandion
12

Escolha um idioma e comece a codificar. O Python é uma boa opção para iniciantes, e há tutoriais disponíveis online , para que você possa aprender como fazê-lo corretamente.

Tudo segue daí. Seus interesses o levarão a estruturas e conceitos de design que adicionarão sofisticação aos seus programas. Você descobrirá que existem cursos on-line que você pode fazer que embasam os fundamentos e a teoria e que existem diferentes paradigmas de programação que você pode explorar e assim por diante.

E sim, você descobrirá idiomas como Haskell que lhe ensinarão algo novo, depois de ter uma base sólida nos fundamentos.

Alguns programadores provavelmente pensam que todos os idiomas são iguais porque não foram expostos a nenhum que os faça pensar de maneira diferente. Todas as linguagens mais usadas são derivadas do Algol (são essencialmente linguagens procedurais) e, dentre elas, a maioria é uma linguagem similar a C. Todas elas fazem essencialmente as mesmas coisas, embora algumas com mais sofisticação do que outras.

Robert Harvey
fonte
2
Isso não é realmente verdade? Algumas linguagens de programação codificam tudo como funções puras (incluindo decisões + loops). Outros podem ser modelados com empurrar e popping objetos a partir de conjuntos, etc etc
jozefg
1
O que não é verdade? Você precisa aprender a engatinhar antes de andar ou correr.
21813 Robert Harvey
1
Ah eu deveria especificar, eu quis dizer o último parágrafo, eu concordo com o resto da resposta
jozefg
1
Substituí o último parágrafo por um que ecoa melhor o meu sentimento.
21813 Robert Harvey
5

A programação diz respeito à resolução de problemas de forma que a solução possa ser expressa em uma gramática tão restrita que possa ser implementada com uma linguagem de programação. A arte da programação é, portanto, a arte de resolver problemas.

Certas linguagens convidam outros paradigmas de programação, como orientação a objetos, orientada a eventos, multithread e baseada em framework MVC. Estes são apenas modelos e padrões e não têm nada a ver com implementação.

Se você pode resolver e resolver um problema no papel de forma que ele possa ser facilmente traduzido em código e esteja associado a um modelo apropriado para sua plataforma, então você é um programador. Se tudo o que você pode fazer é pegar essas soluções e implementá-las no idioma escolhido, isso é outra questão.

Faço programação há 30 anos (OMFG!) E ainda uso php.netcomandos de pesquisa em PHP porque não é minha primeira linguagem.

Eu diria que o conhecimento em idiomas é inversamente proporcional à frequência com que você olha para o manual ou o fluxo de pilha. A especialização em programação é a rapidez com que você resolve os problemas de maneira compatível com as linguagens de programação de computadores.

Em notícias relacionadas, eu aprendi Ruby na semana passada. Embora eu não seja um "especialista", posso resolver um problema que eu poderia escrever em Perl, digamos, e depois passar uma idade traduzindo-o para Ruby enquanto aprendo um pouco mais.

stevemarvell
fonte
O seu comentário é o primeiro que li sobre modelos e padrões! Estou 100% com o seu comentário, uma coisa é aprender um idioma e começar a fazer um programa. Outra é pensar no problema e encontrar as ferramentas apropriadas para resolvê-lo, depois você começa a procurar um idioma e a programar.
3

Eu acho que, como em qualquer coisa, a prática leva à perfeição. Apenas não se comprometa a sempre fazer a mesma coisa ou sempre usando o mesmo idioma e continue aprendendo as coisas em cada projeto.

Acho que você pode facilmente traçar um paralelo com algo como aprender a tocar violão. Qualquer bom músico pode aprender a tocar uma nova música em um período muito curto de tempo, porque já conhece todos os acordes e toda a teoria por trás dos motivos pelos quais os acordes são tocados. Como eles conseguem isso tão bem? Eles tocaram tantas músicas que todos os padrões acabaram se misturando, e ao mesmo tempo complementaram seu conhecimento com a teoria documentada que esses padrões também se inscrevem.

Talvez você possa tocar algumas músicas muito bem, mas não pode desviar ou pegar novas músicas rapidamente. Provavelmente, isso é equivalente a um programador .NET que continua criando o mesmo aplicativo CRUD várias vezes; em algum momento, tente algo novo, adicione algumas chamadas de serviço da Web ou uma interface avançada, ou escreva-o em um idioma totalmente novo. Quando você se deparar com um problema, veja por que as coisas acontecem do jeito que acontecem, faça perguntas no Stack Exchange, etc. Eventualmente, você verá todos os padrões que surgem continuamente e conhecerá algumas das teorias subjacentes e aprender um novo idioma não será. parece quase tão assustador.

KDiTraglia
fonte
1

Não vou abordar quanto tempo leva para aprender um idioma ou o que significa aprender um idioma. Em vez disso, vou abordar o seu problema real: como determinar se você aprendeu a programar ou aprendeu uma linguagem de programação .

Você aprendeu a programar se aprendeu a dividir um problema em processos distintos e depois usá-los para resolver seu problema. Você aprendeu uma linguagem de programação se aprendeu a sintaxe de uma linguagem e sabe como ajustar como um processo funciona, quando implementado nessa linguagem.

Isso não quer dizer que você deve programar em Fortan ao usar Lisp ou adicionar os valores de uma coluna em uma tabela em um banco de dados usando um cursor. Só que a linguagem é um detalhe de implementação. Um que pode mudar quais processos são necessários, mas não a necessidade de identificar e criar processos - no final, há uma implementação no mundo real, com entrada / saída e resultados desejados.

jmoreno
fonte
1

Minha estratégia sempre foi focar em habilidades puras, e não em habilidades específicas.

Em vez de aprender a sintaxe especial do Python (ou qualquer outro idioma) para o que você quer fazer, gaste seu cérebro resolvendo problemas abstratos, como a melhor maneira de resolver todos os problemas dessa categoria.

Dessa forma, você saberá o que fazer, independentemente da linguagem, e possuirá principalmente habilidades atemporais que podem ser usadas para programar em qualquer linguagem.

Evite especificamente ferramentas cheias de truques, como MySQL ou linguagens opinativas, como Java, pois o que você aprender usando essas ferramentas terá uma grande proporção de conhecimento específico sobre ferramentas, que se tornará inútil rapidamente.

Ao contrário do que foi dito em muitas respostas, NÃO ouça outros programadores, você é um noob e não há como diferenciar o falso do negócio real, então é melhor levar tudo com uma colher de sal.

Você quer questionar o tempo todo e aceitar apenas quando a solução é rápida, elegante e confiável.

Morg.
fonte
1
"NÃO ouça outros programadores" - sim, com certeza. "- Como você saberia se tivesse escrito um código legível e de fácil manutenção? - Seu colega avisa depois de revisar o código. Justificativa: Você não pode determinar isso sozinho, porque sabe mais como autor do que o código diz por si mesmo. Um computador não posso lhe dizer, pelas mesmas razões que não pode dizer se uma pintura é arte ou não. Portanto, você precisa de outro ser humano - capaz de manter o software - para examinar o que você escreveu e dar sua opinião ... " ( fonte da citação )
gnat 11/11
@gnat faça o que quiser. Só estou lhe dizendo que, como a maioria dos programadores não pode codificar nada, o feedback deles é potencialmente prejudicial, e você deve trazer sacos e sacos de sal para lidar com isso. Também acredito que "editável e legível por idiotas" não é um sinal de qualidade. Acredite no que você quer, mas não saia -1 apenas porque as pessoas não concordam com sua visão.
Morg.
meu voto indica avaliação da qualidade da postagem , não se eu concordo ou discordo (acordo errado, acho que você tem razão aqui). Eu citei outra opinião não porque é o oposto, mas porque tem uma explicação sólida (consulte "RACIONAL"). Se você pode pensar em uma explicação igualmente sólida para respaldar sua opinião, considere editar o post para adicioná-lo #
306
tanto faz. conteúdo> formulário. mantenha sua forma, eu vou manter meu conteúdo.
Morg.
0

Existe a abordagem teórica. Aprenda sobre como os computadores realmente funcionam ao abrigo. Como as instruções básicas do processador são agrupadas para tornar as operações e estruturas mais complexas que tomamos como garantidas em áreas de programação de alto nível.

Depois, há a abordagem de programação mais prática. O principal ponto de discórdia que as pessoas costumam rotular como "não são bons programadores" é que elas realmente conhecem apenas um idioma. E mesmo que conheçam os outros, eles programam neles da mesma maneira que fazem com o idioma nativo . É um ciclo que é preciso quebrar se eles realmente querem aprender a programar. A resposta padrão para isso é aprender pelo menos uma linguagem de cada paradigma de programação. Portanto, aprenda uma linguagem OOP, uma linguagem funcional, uma linguagem de script ... etc. E aprendendo não quero dizer aprender a sintaxe . Você aprende um idioma usando-o para criar algo.

Pessoalmente, quando quero aprender um novo idioma, uso os quebra-cabeças do Project Euler . Vou a um quebra-cabeça que já resolvi em um idioma OOP (como exemplo) e tento resolvê-lo usando um funcional, tentando seguir as melhores práticas do novo idioma. Quando você resolve o mesmo problema usando duas abordagens fundamentalmente diferentes, não apenas vê quais são as diferenças reais, mas também mostra onde estão as áreas comuns. Essas áreas comuns que são compartilhadas por todas as linguagens são a programação real , as diferenças são apenas maneiras diferentes de alcançá-la.

Sistema caiu
fonte
4
Eu não chamaria de aprender sobre o comportamento físico de um computador uma "abordagem teórica", uma "abordagem teórica" ​​seria aprender a teoria, ler a tese de orientação da igreja e aprender sobre o isomorfismo de curry howard, aprender o cálculo lambda e o Noções básicas da teoria dos números, esses são os fundamentos teóricos. Não dizendo que sua resposta está certa ou errada, apenas dizendo que eu me referiria a isso como a abordagem concreta, não teórica, porque carece de teoria.
Jimmy Hoffa
@JimmyHoffa - Bons pontos!
System Down
1
"Como as instruções básicas do processador são reunidas (...)" parece uma péssima idéia para iniciantes (o OP não afirmou que ele é um deles, mas vamos assumir como argumento. Ensinaria 'micro-otimizações' sem realmente ensinar como otimizar (a arquitetura de 3 a 5 estágios pode ser considerada um pouco desatualizada ...). Não me interpretem mal - o fascinante da CA -, mas a apreciação 'adequada' exigiria palavras como 'fora de ordem' e 'multiscalar', e, provavelmente, vir após alguma experiência em programação básica.
Maciej Piechotka
0

Bem, a maioria das coisas que eu queria dizer já foi dita. O que eu gostaria de acrescentar é uma analogia muito simples.

Se as linguagens de programação são consideradas meras ferramentas, mesmo assim, não há absolutamente nenhuma lógica em ser bom em um, tornar o bom no outro uma tarefa complicada.

Basta considerar um grupo de espadachins de renome, de repente baixou suas espadas e partiu para a batalha com lanças após 7 dias de treinamento. O que aconteceria? Eles seriam massacrados.

Muitas vezes, as línguas não são difíceis de aprender, mas é preciso paciência e exercício para ser bom nisso. Além disso, não há uma maneira correta de aprender programação.

Aprender uma programação é como jogar um jogo de RPG. Às vezes você usa espadas, às vezes lanças, às vezes um escudo. Cada inimigo que você mata, ganha pontos de experiência. Depois de ter pontos de experiência suficientes, você sobe de nível. Agora, dominar uma espada não o tornará excelente com arcos e flechas. Mas uma parte da experiência que você ganhou anteriormente aumentará sua resistência e velocidade.

Aqui estão algumas coisas que você pode querer fazer ao aprender um idioma.

  • Leia sobre o idioma. se parecer interessante, experimente os aplicativos hello world por conta própria.
  • Leia alguns tutoriais, truques, blogs.
  • Crie aplicativos simples apenas por diversão.
  • Teste diferentes recursos.
  • Se você realmente gosta, compre alguns livros e / ou tutoriais em vídeo.
  • Pesquise boas bibliotecas.
  • Procure respostas, pergunte apenas se não conseguir encontrar as respostas.
  • Ajude outras pessoas a pedir respostas (onde é melhor do que aqui?)
  • Faça algo útil. Criar um aplicativo de calculadora pode ser um bom exercício, mas se você criar um aplicativo de lista de tarefas e realmente usar no seu PC / telefone, a sensação é 100 vezes satisfatória.

Experimente novos idiomas, explore novas bibliotecas, aprenda novos truques no seu tempo livre. Antes que você perceba, você se surpreenderá com sua própria habilidade.

Sayem Shafayet
fonte
0

No meu caso, eu aprendo como realmente programar através do seguinte:

  1. Aprenda com os mestres. Ouça podcasts de programação, leia blogs profissionais no seu tópico de programação de escolha, leia / assista a maravilhosos tutoriais feitos por gurus espalhados por toda a web e, finalmente, lendo livros épicos como O Programador Pragmático . Este livro possui muitas gemas de programação que foram acumuladas ao longo da carreira dos autores. Uma maneira certa de aprender como realmente codificar é saber como outros programadores de sucesso fazem isso.
  2. Experiência fazendo. Ler sobre isso e saber é uma coisa, colocá-lo em prática e fazê-lo funcionar é outra. Não há professor melhor do que experiência, portanto, coloque seu limite de codificação e comece.
  3. Pergunte a alguém que sabe. Assim como você está fazendo agora, não tenha medo de perguntar sobre práticas recomendadas ou maneiras melhores de fazer as coisas com idosos em sua equipe, ou se tiver a infelicidade de não ter acesso aos referidos idosos, mentores ou gurus, ainda resta o restante da stackexchange e a Internet para perguntar.

Além disso, como seus comentadores mencionaram, não esqueça de dominar suas ferramentas também. Aprender todas as melhores práticas e melhores teorias é inútil ou será mal implementado se você não souber o suficiente sobre sua ferramenta, neste caso, uma linguagem de programação.

Maru
fonte
0

Eu acho que, se você pode pensar analiticamente, tem um bom começo.

Aprenda qualquer idioma que você quiser e trabalhe sozinho através de uma série de exemplos, por exemplo, conforme apresentado em quase todos os livros que ensinam programação.

Em seguida, tente resolver seus próprios problemas. Tente encontrar soluções diferentes e compará-las. Velocidade e uso de memória são fatores comumente usados ​​que são importantes. Discuta suas soluções com outros programadores.

Leia o código de outros programadores e tente entender por que eles resolveram o problema dessa maneira.

Você também deve ler alguns livros sobre algoritmos para obter uma visão geral das abordagens padrão. Novos problemas geralmente são modificações de problemas antigos.

Muita prática e trabalho com código também em equipes o ajudarão a aumentar suas habilidades passo a passo.

Espero que minha opinião responda a sua pergunta pelo menos parcialmente.

MrSmith42
fonte