Quero aprender a programar, eu posso?

Sim.

Qualquer pessoa pode aprender a programar?

Talvez essa vai ser a resposta que mais surpreenderá.
Sim.

Embora a área de computação, possa parecer mística, o uso da computação, mais especificamente, uma linguagem de programação hoje em dia, nada mais é que uma ferramenta, tão útil quanto saber matemática, ler e escrever.

Deixe-me tentar explicar meu raciocínio…

Hoje (ano 2015), parece até estranho pensar que matemática, ler e escrever são ferramentas, porém não muitos anos atrás, muitas pessoas se perguntavam qual a utilidade desses conhecimentos, pois muitos trabalhavam no campo, ou em algum tipo de trabalho mais básico (braçal). Tudo bem, ainda hoje existem muitos que se perguntam na utilidade da matemática (provavelmente estão pensando na matemática avançada, cálculos e afins), mas no dia a dia, a matemática está presente que nem nos damos conta, por exemplo, cálculo/noção de tempo, distância, manipulação de dinheiro, coisas do nosso dia a dia que usamos a matemática como ferramenta e nem percebemos. Ler e escrever também é algo que hoje parece tão natural que nem nos damos conta que é uma ferramenta de interagir com o mundo e com outras pessoas.

Agora que temos uma noção que matemática, ler e escrever são ferramentas, estas muito úteis para nosso dia a dia, hoje consideramos que qualquer pessoa pode (e no mínimo deveria) e sabe(r).

Mas o que isso tem haver com programação?

Bom, assim como as ferramentas que comentei acima, hoje no mundo em que vivemos, com o volume crescente de informações que temos que lidar no nosso dia a dia, no nosso trabalho, apenas o uso da matemática, leitura e escrita, já não são suficientes, precisamos de novas ferramentas para lidar com o mundo, nesse ponto que entra a programação.

Da mesma maneira, que hoje consideramos que qualquer pessoa, pode e deveria saber matemática (nem que seja o básico), ler e escrever, esta mesma pessoa também é capaz de aprender a programar.

Uma curiosidade, sabia que a matemática é uma linguagem, e esta serve para, obviamente, trabalhar e lidar com números, hoje é empregada em tantas áreas que desconfio não ter noção de sua totalidade.

Conforme sua caminhada no mundo da computação e programação, você ouvirá o termo/palavra "algoritmo", que pode-ser traduzido para, rotinas/procedimentos para solucionar problemas, dado uma entrada de informações, ocorre um processamento do qual gera uma saída, na matemática esses algoritmos são comumente chamados de equações.

A programação lhe oferecerá novas ferramentas, para com uma entrada de informações, você conseguir fazer o processamento(analises, cálculos, manipulações, …), gerando uma saída, esta que lhe servirá para algo prático. Nem que seja automatizar, uma tarefa repetitiva, onde em menos tempo, você consiga fazer mais coisas, consequentemente, ser mais produtivo.

Você já falou demais, só está enrolando, cade as informações de como programar?

Por onde começar?

Primeiro passo e algo que hoje, considero como dica de ouro e muito provavelmente você ouvirá muitas pessoas falando o mesmo…

Aprenda inglês

Mas você não estava falando de programação, o que isso tem haver?!

O Inglês, é uma linguagem (um outro idioma caso queira), assim como falei da matemática, o inglês é uma ferramenta muito importante, caso queira aprender a programar e não apenas a programar, caso queria ter acesso a qualquer conhecimento, aprender qualquer coisa nova, o primeiro passo e ouso até dizer, o mais importante, é aprender inglês.

Tenha em mente, ou tente acreditar em mim por enquanto, o inglês será muito provavelmente a ferramenta mais valiosa que você terá a sua disposição. Hoje saber inglês é tão importante quando saber ler e escrever em nosso idioma nativo, a internet está transbordando de conhecimento que você pode ter acesso gratuitamente, porém, cerca de 90% ou mais, está disponível em inglês apenas. Fora que o inglês é o idioma dos negócios, além de ser a chave de acesso para muitas oportunidades de trabalho e não me refiro apenas a área de informática.

As linguagens de programação que você irá lidar, por exemplo: C, C++, Go, Java, JavaScript, Ruby, Python, entre outras, todas as principais (foras umas exóticas por aí), estas usam palavras especiais (tecnicamente são chamadas de palavras reservadas) que são para a linguagem de programação instruções (orientações) básicas de coisas que devem ser feitas, por exemplo: pegar (get), atribuir (set), repetir (loop [for, while, do…while]), … entre muitas outras palavras que você vai se deparar para escrever um programa. Então um belo dia você percebe, são palavras em inglês.

Na minha jornada no mundo da programação, eu não comecei dominando o inglês, não é algo impeditivo para aprender a programar, porém é algo que te restringe muito o acesso ao conhecimento e aprendizado (foi isto que eu percebi durante minha jornada, esta que ainda continua). Não pense você que hoje eu domino 100% o inglês, eu sinceramente penso que não, porém consigo ler e entender e isto me serve como ferramenta para me manter atualizado, mas sei que preciso melhorar muito ainda.

Mas onde aprender inglês?

Na internet ué.

Duolingo — serviço online e gratuito para aprendizado de idiomas. Possui interface com suporte ao português. As aulas vão do básico ao avançado no aprendizado de um idioma.

Livemocha — plataforma online de aprendizado de idiomas.

Você Aprende Agora — É um curso de inglês online, com Felipe Dib onde você aprenda rápido e usa o inglês a seu favor.

Caso você já consiga ler e entender (ouvir) inglês, alguns materiais úteis para aprimorar:

engVid — lições gratuitas de inglês em vídeo. Muitas dicas de gramática, curiosidades, dia a dia, entre outros.

[YouTube] How to learn any language in six months | Chris Lonsdale | TEDxLingnanUniversity

Sobre o tema aprendizagem em geral recomendo:

[YouTube] The first 20 hours — how to learn anything | Josh Kaufman | TEDxCSU (possui legenda em português disponível)

A grande barreira de aprender qualquer coisa nova, são as 20 primeiras horas, se você conseguir dedicar apenas 20 hrs com qualidade, você pode aprender qualquer coisa que queria.

Aprenda lógica de programação

Talvez você esteja pensando agora, mas que "diabos" é isso?

Antes de escrever um programa em sí, é necessário (ao menos imagino que isso vai encurtar e reduzir o sofrimento no trajeto) aprender lógica de programação. Digamos que lógica de programação é a essência, o primeiro passo da caminhada.

A forma como eu vejo um programa:

Programa é algo que o computador irá executar, o qual espera entradas, efetua um processamento através de um ou mais algoritmos e gera uma ou mais saídas. Algoritmo descrição de como efetuar um processamento. Um algoritmo é descrito/escrito de forma lógica, que nada mais é, parte do que o programa deve fazer.

Essa forma de pensar e definir o algoritmo e o respectivo encadeamento dos algoritmos que compõem o programa, é chamado de lógica de programação.

Outras definições de lógica (também tem o item lógica de programação no link)

Materiais:

[YouTube] Lógica de Programação — Bóson Treinamentos

[YouTube] Curso de Algoritmos — Curso em Vídeo

Soldado Lógica de Programação | Code Squad — Professor: Elton Luís Minetto (Vídeos online gratuito)

Livro Lógica de Programação: Crie seus primeiros programas usando Javascript e HTML | Casa do Código

Aprendendo a programar

Voltando a pergunta do início: "Qualquer pessoa pode aprender a programar? Sim." Deixo e recomendo a apresentação: [YouTube] You should learn to program | Christian Genco | TEDxUTA.

Você deveria aprender a programar. Onde é apresentado a nossa situação atual, vivendo num mundo cada vez mais tecnológico, a importância e benefício de aprender e ter essa nova ferramenta a disposição, chamada de programação.

Para quem está começando, recomendo a leitura: Coisas Que Eu Gostaria Que Alguém Tivesse Me Dito Quando Eu Estava Aprendendo a Programar | Julio Cesar Fausto

Uma grande questão para que está começando…

Qual linguagem de programação eu devo aprender?

Esta é uma resposta complicada…

Para quem quer trabalhar na área, as linguagem com bastante vagas de trabalho são: Java, .NET (C#), JavaScript.

Eis um Hank de linguagens: The RedMonk Programming Language Rankings: January 2015 | tecosystems

Para quem quer uma ferramenta para ajudar em processamentos matemáticos, provavelmente Python seria uma boa opção, para quem quer criar seu próprio Web Site (HTML + CSS + JavaScript) + Ruby, ou PHP, ou Python (para o lado do servidor e acessar arquivos e/ou base de dados).

A maior verdade que existe na área é:

Não existe bala de prata. Não existe a melhor linguagem, a melhor ferramenta. O que existe são linguagens, são ferramentas para te ajudar a criar programas, para solucionar problemas, sejam seus ou de terceiros (pessoas ou empresas), seja um web site, seja um programa para ligar uma lâmpada, controlar um sistema de irrigação ou então o algoritmo de ângulo para a reentrada em órbita. Saber programar, é uma ferramenta que te possibilita criar outras ferramentas para solucionar, ajudar com problemas reais do dia a dia.

Muitas vezes, mas muitas mesmo, o que vi foi, existem soluções, linguagens, tecnologias que se adequam melhor a situações específicas ou a um conjunto de aplicações. Lembra da bala de prata? O que isso significa? Nem sempre o que sabemos, o que dominamos, a linguagem, tecnologia, será a melhor para tudo o que iremos enfrentar/desenvolver/criar/programar.

Sempre lembro de um dos lugares que trabalhei, meu superior imediato, dizia:

Na mesa temos talheres diferentes, temos o garfo, a faca, a colher, cada uma tem uma utilidade/aplicação, alguns tipos de alimentos como a sopa, a colher é a mais indicada, já o garfo não vai ajudar muito.

Hoje vejo área de programação de forma similar, onde hoje finalmente consigo entender, que nem sempre a linguagem que eu sei, o framework que eu domino, a técnica que eu uso, não irá se aplicar a tudo que eu preciso resolver. Assim como os talheres, nem sempre a linguagem que eu sei, será o suficiente, então o jeito é continuar aprendendo a programar em linguagens diferentes sempre que necessário.

Mas que linguagem você usa atualmente?

Bom se esse for o caso, atualmente (2015/06) tenho usado JavaScript, com essa linguagem, hoje é possível desenvolver sites, aplicações para servidor, banco de dados, até para hardware. Fora o fato de que a linguagem e seu respectivo uso tem crescido muito. Uma curiosidade, a sintaxe atual irá evoluir, mudar, isso implica em ter que continuar aprendendo a programar, agora em uma nova sintaxe (mas poderia ser em outra linguagem).

Onde aprendo a programar?

Mais uma vez, na internet ué.

0800

Programaê! — plataforma gratuita e funciona como um hub de incentivo ao aprendizado de programação.

Code.org — Qualquer pessoa pode aprender a codificar (possui suporte para português)

Computer programming | Khan Academy — Learn how to program drawings, animations, and games using JavaScript & ProcessingJS, or learn how to create webpages with HTML & CSS. You can share whatever you create, explore what others have created and learn from each other!

Codecademy — is the easiest way to learn how to code. It’s interactive, fun, and you can do it with your friends.

DevFuria — Desenvolvimento web pra ninguém botar defeito!

Ruby Monk — Free, interactive tutorials to help you discover Ruby idioms, in your browser!

Curso Java Básico (Java SE) — Gratuito! | Loiane Groner

exercism.io — Deep practice. Crowd-sourced mentorship.

Skill Tests | MetaBright

Codewars — is where developers achieve code mastery through challenge

Coder Speech — Learn to code by watching programming videos

Code Combat — learn to code by playing a game

CheckiO — is the game for coders. Improve your code with the help of our community. Create missions and challenge your peers.

Blockly Games — Games for tomorrow’s programmers.

Apostilas Caelum — Java, JavaScript, C#, Ruby e Desenvolvimento Web

Apostilas treinamentos K19 — Noções de programação básica, Java e .Net

Pago

Edukee :: Tornando o ensino fácil e real!

Code Squad — Treinamento de Elite

Learn to Code by Doing — Code School — aprenda a codificar fazendo (possuem uma plataforma interativa muito interessante)

Learn Web Design, Web Development, and More | Treehouse

Com outros programadores

Ter uma rede de contatos com outros programadores, é uma ótima maneira de aprender a programar e continuar aprendendo, se atualizando.

No twitter temos a hashtag #soudev que auxilia os programadores a compartilhar e achar materiais úteis para se manter atualizados.

Participar de eventos, palestras, grupos online ou presenciais também ajuda no processo de aprendizado e de reciclagem.

Uma regra de ouro para uma boa convivência com outros programadores: antes de perguntar algo para um outro programador e/ou grupo, pesquise no Google, as chances de você achar uma resposta satisfatória estão acima de 70% (lembre-se, palavras chave de busca em inglês) isso para questões básicas até algumas avançadas. Mas sim, existirão casos bem específicos, ou tecnologias específicas, ou algo muito recente de não achar material que ajude, nessa hora o jeito é pedir ajuda.

Lembre-se, que os outros programadores são pessoas também, possuem suas vidas, suas rotinas e não estarão 100% disponíveis para ajudar, nem tem a obrigação, então seja legal, lembre-se de agradecer se for ajudado a resolver o problema e também ajude aos demais sempre que puder, com o que puder. :D

GitHub

O GitHub é uma ferramenta online (uma rede social para programadores) de repositórios .git, onde os códigos são salvos (versionados) e compartilhados.

Uma das formas de aprender, ou melhorar suas habilidades de programação é lendo, compartilhando e colaborando com códigos OpenSource, e nesse propósito o GitHub se consolidou como uma ferramenta, onde basicamente grande maioria dos principais projetos que estão acontecendo no mundo, que usamos como base para diversos projetos, estão sendo desenvolvidos de forma colaborativa no GitHub.

Também estou por lá (github.com/erkobridee), compartilhando código, aprendendo, melhorando em um processo contínuo.

Aprendendo a trabalhar com repositórios .git em 15 minutos : Got 15 minutes and want to learn Git?

Que o código esteja com você! :P

Apenas uma nota no texto usei a palavra "programador" para associar a programa/programação, porém tem sido uma palavra pouco usada para se referir a quem programa, tenho visto mais o uso da palavra "desenvolvedor", ou mesmo "dev" do inglês "developer", isso aqui pelo Brasil.

Show your support

Clapping shows how much you appreciated Erko Bridee’s story.