O que eu penso que a gente deveria aprender primeiro quando começa a aprender a escrever código.

Um fato interessante é que mesmo que as universidades e institutos federais não ofereçam especifica e abertamente ‘cursos de programação’*, quase a maioria de quem começa os cursos de Sistemas de Informação, Ciência da Computação e algumas dos outros cursos afins como Engenharia da Computação, acaba focando apenas no aprendizado de programação. Isso é fácil de entender, afinal essa é a parte mais legal do curso mesmo…

Assim, uma das perguntas mais comuns que vejo em grupos e comunidades das quais participo é mais ou menos a seguinte: “Estou começando a estudar programação. O que vocês acham que eu deveria aprender primeiro?”

Bom, depois dessa simples pergunta vem uma enxurrada de boas respostas e outras nem tanto: “Estuda lógica de programação…”, “Estuda POO”, “Começa lendo therightway.” (até agora ja vi php – the right way  e js – the right way, mas há propostas para python – the right way, e ruby – the right way no Github).

São boas ideias, boas respostas. Mas que tal uma resposta melhor?

E existe uma resposta melhor?

Existe sim.

Começa conhecendo algum dos softwares de controle de versão disponíveis pra sua plataforma em uso.

— Tá mas ‘controle de versão’ não é fundamento em nenhum curso oficial do MEC…

Depende do que você considera ‘fundamental’ para aprendizado e do quanto você respeita a autoridade do MEC, né…

Lembro de quando ia pra escola e levava um caderno onde registrava exercícios, fazia anotações da aula e até escrevia minhas análises do conteúdo ensinado. Até hoje, para conteúdos que estudei há mais de 20 anos, tenho perfeita recordação, não apenas por que ‘estudava’, afinal eu de fato não estudava fora da escola. Eu prestava o máximo de atenção possível às aulas e registrava o máximo de informação possível, tanto que hoje, quando faço prova pra concurso ou qualquer outro teste, não gasto tempo estudando, faço comparações entre o que eu ‘sei’ e o que talvez tenha mudado ao longo do tempo, e nem tudo muda, não é verdade? Isso em si já é uma espécie de ‘controle de versões’ do conhecimento, e por isso, penso eu, que aprender a controlar versões seja tão mais importante do que aprender os fundamentos de uma linguagem qualquer. Programação é prática, não teoria. Quero dizer, você aprende fazendo e portanto, nada melhor do que um prévio conhecimento de versionamento para melhorar o aprendizado de programação, assim você vai conseguir compreender até mesmo a sua própria evolução como programador.



* Sério, ainda não vi um! se existir, façam o favor de citar. (obs. : Eu sei que alguns IF oferecem cursos de análise e desenvolvimento de software, mas ainda assim, embora envolvam programação, são bem mais amplos. Programação é uma disciplina)

Por onde começar, então?

Começe  por controle de versões. Aprender a lidar com Git, Mercurial, Bazaar (Bzr), CVS ou Subversion (SVN) é fundamental antes de aprender a escrever até mesmo o seu primeiro ‘hello world’ ou os seus primeiros ‘pseudo-códigos em portugol’.

CVS e Subversion (SVN) são softwares de versionamento que utilizam um modelo de gerenciamento centralizado, utilizando arquitetura cliente-servidor, ou seja, para utilizá-los você precisa de uma infraestrutura subjacente e um server CVS ou SVN que conterá todo o código que será versionado.

Os outros, Git, Mercurial e Bzr são software de versionamento distribuído, sendo desnecessário a figura de um servidor.

Ok, ainda é um pouco mais complexo que isso. Dá uma lida nessa excelente resposta do StackOverflow e na outra que vem logo após. Não é minha intenção explicar tudo isso.

Entendo. Mas o que tu recomendarias, então, cara?

Pra ser simples e direto, recomendaria Mercurial para quem está de entrada no mundo do versionamento por sua simplicidade e menor curva de aprendizado.

— Certo, Isaque. Mas, e por que não usar o Git ou Bazaar? Por que o mercurial?

Bom, a escolha é inteiramente sua. Não vou dizer aqui que ‘Git é melhor do que Mercurial’ ou que ‘Bazaar nem é tão conhecido’. Tudo é uma questão de Liberdade, e claro, de afinidade. Essa afinidade, no entanto, se desenvolve com o tempo.

Eu uso mercurial desde 2010. Era mais simples e adequado ao que eu estava fazendo (trabalho de facu). Por necessidade, na mesma época, aprendi a usar também Bazaar, SVN e terminei por começar com git por volta de 2012. Eu poderia defender o uso de cada um deles e dizer qual considero melhor mas isso não faz diferença no mundo real. O melhor é o que é adequado à sua realidade.

Enfim, a defesa que faço é que controle de versões deveria ser pelo menos apresentado na forma de ‘tópico especial’ ou ‘curso de extensão’ das instituições.

Mas qual seria a vantagem de apresentar isso nos cursos oficiais?

Olha, eu poderia listar inúmeras vantagens, porém não creio que isso seria incluído em ementa de curso oficial não. Eu digo que ‘a gente deveria aprender primeiro’ não que a faculdade deveria oferecer

Vou deixando uma lista de recursos que podem ser úteis pra você ir aprendendo a usá-los.

Bazaar User Guide

Git Book

Mercurial Book

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

%d blogueiros gostam disto: