Desde o TK 85, mais de 30 anos atrás, programar é o amor da minha vida e o ato ao qual me dedico inteiramente (das formas mais variadas). O ato de projetar e construir software é na minha opinião o nosso ápice intelectual. Talvez você nunca tenha se dado conta, mas quando está programando na realidade o vislumbre de boa parte da história da filosofia é realizado diante dos seus olhos.
Então, se programar é tão importante pra mim por que será que quando escuto o papo de que “qualquer um pode programar” me sinto tão incomodado? Se considero o nosso ápice cultural, não seria contraditório este meu sentimento, visto que quanto mais gente programando, melhor?
Primeiro me incomoda por que geralmente escuto esta história de quem está vendendo cursos/treinamentos ou mesmo de um mercado que está sedento por profissionais que possam se dedicar ao ofício (e que preferencialmente sejam baratos). Se programar é para todos, por que o mercado sente tanta falta de mão de obra? Não deveria existir muita gente programando hoje?
Já te adianto minha conclusão: qualquer um pode aprender a programar, mas muito poucos devem ou conseguirão de fato se profissionalizar.
Primeiro: programar é (muito) difícil
Quando digo programar não estou me referindo à configuração do seu DVD player ou a cozinhar: falo a respeito da criação de software (binário, que vai executar em um computador). É algo muito complexo e quem te diz o contrário está mentindo para lhe vender alguma coisa ou não faz a menor ideia a respeito do que fala.
Você precisa conhecer lógica de programação, algoritmos, é bom saber como um computador funciona, o que é uma linguagem de programação, o que ela faz, como você a usa, e, indo além: também precisa ter ciência de que a época na qual precisávamos de apenas uma linguagem para escrever nossos sistemas acabou já faz mais de uma década (os tempos do VB6, Clipper, Delphi, PowerBuilder…).
(e não, você não vai escrever seus sistemas apenas com JavaScritpt também)
Precisa saber como seu software irá interagir com outros sistemas, tais como SGBDs, servidores, sistema operacional, rede, arquivos, memória. Precisa entender que são diversas abstrações, umas sobre as outras e que seu ferramental é enorme (o que é lindo): inúmeros frameworks, bibliotecas, ambientes de desenvolvimento e execução, paradigmas de desenvolvimento…
A coisa não acaba no seu primeiro “hello world” ou seu sisteminha web meia boca. Não: você precisa estar sempre melhor. Nem digo conhecer as últimas tecnologias, mas sim se aprimorar tecnicamente a cada dia. Tem que olhar pro seu código anterior e o achar um verdadeiro lixo perto do que está escrevendo agora.
Detalhe: tem de escrever código que possa ser mantido por outras pessoas também e talvez por um longo período de tempo.
(sempre fico maravilhado quando penso na complexidade envolvida ao implementar qualquer bobagem)
E esta é a parte fácil da coisa: o difícil é ter proatividade educacional, ou seja, realmente se interessar por isto. Ler, ir a eventos, se atualizar, ter pelo menos um super herói (tenho vários) na área, aprender coisas novas semanalmente (quiçá diariamente).
Vai por mim: a animação após ter conseguido escrever o primeiro programa dura muito pouco se este ânimo contínuo de querer sempre saber mais a respeito do ofício não durar. Sabe como chamo esta animação inicial? “ilusão de poder”. Especialmente se você estiver empregado na área.
Você realmente acredita que pode realizar muitas coisas após ter escrito o seu primeiro programa, mas se não tiver proatividade no seu aprendizado, acredite, vai dar com a cara na parede muito rápido e uma vida de frustração será iniciada.
Então o papo de que “qualquer um pode programar” baseado na ilusão de que é fácil está desmontado neste primeiro ponto, sigamos ao próximo.
Segundo: a responsabilidade envolvida
Você se sentiria seguro sabendo que qualquer um pode operar a sua mãe? Se sentiria bem sabendo que qualquer um projetou o viaduto sobre o qual seu carro está passando neste momento? Então por que qualquer um pode programar os sistemas que você precisa?
Por que não dizem por aí que qualquer um pode ser médico ou engenheiro, mas programador sim? Por que há um mercado que precisa de pessoas que saibam programar, independente do quão bem saibam (que sejam baratas) e que não se responsabiliza pela qualidade do que entrega (ainda). E também há outro mercado que vende cursos que precisa de novos alunos sempre, especialmente hoje, uma época na qual programar não tem mais o mesmo charme que tinha antes (muito poucos programadores milionários, né?).
E agora te faço uma pergunta direta: se você não está preparado e entregou seu primeiro sistema, você realmente dorme bem? Ok, qualquer um pode programar e você entrou na categoria “qualquer um”, pergunto: você deveria estar programando profissionalmente?
Terceiro: o custo
“Programar é maravilhoso, por que você pode criar um imenso valor a partir de quase nada”. Já escutei isto algumas vezes e minha resposta é a seguinte: “vai à merda amiguinho”.
O que chamam de “quase nada” na realidade são anos de estudo dedicados ao ofício: incontáveis horas de bunda na cadeira, páginas lidas, resumos, exercícios realizados, experimentos, participação em eventos e comunidades… É ter errado inúmeras vezes e conseguido se reerguer e ainda sair melhor ao fim de cada experiência. Isto é “quase nada” pra você?
E aqui pergunto: você estaria disposto a pagar este preço que mencionei acima? Aprender a programar não sai barato. Pode até existir materiais de baixo custo, mas o tempo que você irá investir no aprendizado não tem preço (e se você for casado, tiver filhos ou ter um emprego não relacionado à área, sabe muito bem do que estou falando).
Quarto: programar não é apenas difícil, está ficando mais difícil também
Mencionei no início deste post que houve uma era na qual era possível escrever sistemas usando uma única linguagem: Clipper, VB, Delphi, PowerBuilder, C/C++, etc. Conheço excelentes programadores do passado que aprenderam tudo o que precisavam em um único livro ou arquivo de ajuda da linguagem (também pelo fato de não terem tanto acesso à informação quanto hoje), será que isto se aplicaria hoje?
E se programar estivesse realmente ficando mais fácil com o tempo, já não deveria ter surgido tecnologias realmente eficientes que gerassem código pra nós? Por que programadores ainda existem? Cadê a bala de prata? Surgiram ferramentas que tornaram parte do desenvolvimento mais fácil (pense em Ruby on Rails, Grails, Node.js), mas o problema principal, que é justamente resolver problemas, continua complexo e possivelmente bem mais por que o próprio mundo ficou mais complexo.
(e sabe estas ferramentas que citei? São normalmente abstrações sobre algo muito mais complexo por baixo dos panos, e o conhecimento sobre este “algo muito mais complexo” normalmente diferencia as crianças dos adultos)
Faça uma experiência: chame um programador de décadas atrás para programar hoje e lhe pergunte o que acha. Talvez ele prefira o ferramental de hoje, mas o restante, duvido muito.
Então quer dizer que só uma elite deveria programar?
Tal como disse no início deste post, pra mim programar é um dos (talvez O) maiores exercícios intelectuais que a humanidade já construiu. Acredito que programar te torna uma pessoa melhor por causa de toda a complexidade envolvida na coisa, talvez te torne inclusive mais inteligente.
Como hobby recomendo a todos, inclusive para crianças (fui uma destas crianças nos anos 80 introduzidas à programação). Talvez este hobby inclusive sirva para que você cheque se realmente este é o caminho que deseja trilhar como ofício para sua vida.
Agora, profissionalmente, sabendo dos riscos, da responsabilidade e da dificuldade envolvida, creio que infelizmente minha visão é bem menos democrática. Sim, é para a elite que consegue superar os desafios que mencionei e ainda por cima continuar gostando da coisa e se aprimorando a cada dia.
Não me vejo fazendo outra coisa na vida e sou extremamente feliz por ter escolhido este caminho. Foi um dos meus maiores acertos sem sombra de dúvidas e mesmo hoje, mais de 20 anos depois ainda amo cada dia e cada linha que escrevo.
Me desculpe se joguei um balde de água fria sobre seus sonhos, mas é importante que alguém lhe diga das dificuldades envolvidas (especialmente neste mundo em que vivemos com cada vez mais fábricas de doces).
(por mais estranho que pareça creio que as dificuldades tornam tudo mais interessante)
E sobre aqueles que dizem que “qualquer um pode programar”, bom: vocês estão desvalorizando o ofício, simples assim.
Também tive oportunidade de iniciar nos TK-85 e CP-200, não tinha condições de ter um, mas usava na escola, meu primeiro salário foi para um MSX Expert… Usei muito o Clipper, com direito a bibliotecas em c e assembly :-) O Clipper morreu, viva o Delphi !!!
Naquele tempo ainda dava pra achar que dava pra abraçar o mundo…
Programação é a profissão mais ingrata, pois a velocidade da obsolescência é maior do que a que conseguimos nos atualizar, temos que estar todo o tempo devorando, por outro lado, a satisfação do exercício desse conhecimento e os resultados, não tem preço. ;-)
Ainda que eu concorde plenamente com o texto, há um pequeno equívoco. A programação não serve somente para criar softwares.
A construção de softwares é algo amplo e complicado, porém, o desenvolvimento de scripts para por exemplo, analisar dados, automatizar tarefas, ou mesmo “construir” um “site pronto” acredito que está ao alcance de todos e, vou além, antigamente diziam que o Inglês é o futuro e quem não souber ficará pra trás. O mesmo digo hoje para a programação, quem não entender o mínimo, quem não souber o seu funcionamento, perderá a sua liberdade num futuro breve por sempre depender de terceiros…
Acho que esse artigo possui um título equivocado.
Na minha visão, é mais correto dizer que:
“Qualquer um pode programar, mas nem todos conseguirão desenvolver aplicações.”
ou
“Saber programar é a etapa 1 de 10 para a construção de software”
Oi Cláudio, está ao alcance de todos, mas todos conseguem fazer disto dia profissão?
É pra exemplos que você mostrou batem com os que falei. Pequeno ou grande, ainda é software.
No caso do site pronto, não seria programação em si, mas mais uso de um software, tal como o Word, por exemplo.
Tenho minhas dúvidas se programar será como o inglês, pois sempre que vejo esta história, tal como neste caso, é contada por quem está vendendo sigo na área (não sei se é o seu caso).
Li em alguma das redes alguém falando que o profissional de programação precisa saber lidar bem com frustração: a de sempre estar um passo atrás da tecnologia, a de sempre saber um milésimo do necessário, a da obsolescência que o colega mencionou, a do constrangimento de uma solução errada,… E por aí vai…
É uma profissão muito difícil.
Tem muitos ganhos, mas também muitas frustrações.
Bom ponto!
Fui redundante no “sempre estar um passo atrás” e “obsolescência”.
Duplicação, a raiz de todo o mal! ;)
:D
Acredito que todos podem aprender a programar… mas não que todos podem ser profissionais da área, tem um grande abismo que separa uma coisa da outra.. existem várias linguagens de programação de nicho, muitas pessoas trabalham em outras áreas e usam a programação como ferramente, não como profissão..
Para ser um desenvolvedor de software, aplicativos, web, seja o ramo que for, o conhecimento exigido é muito alto,.. são muitos livros papirados, muitas horas a fio aprendendo novas linguagens, novas tecnologias e frameworks, uma vida de programador é para poucos, tem que gostar muito disso tudo para se manter no mercado.
Cursos que ensinem a ser um programador, são poucos.. de resto, se quiser aprender mesmo, são vários cursos que devem ser feitos (uma linguagem, padrões, tdd, etc), e o programador tem que ser esperto de saber interligar todas as coisas para conseguir desenvolver um aplicativo com o que aprendeu.. faltam cursos de qualidade, que ensinem uma metodologia real para o desenvolvimento.. código e sintaxe qualquer um ensina, quero ver ensinar a programar de verdade, que o kra faça o curso saia sabendo começar e terminar um aplicativo.
verdade, caso conheça um curso desses me fale kkkkkk
gostei do texto, já sabia de tudo isso, mas é bom ouvir outra pessoa falando.
Obrigado!
Uma frase que sempre me inspira a querer ser um bom programador, de um dos meus super-heróis favoritos: “Any fool can write code that a computer can understand. Good programmers write code that humans can understand. –Martin Fowler”.
Fato
Sempre fui muito fascinado em jogos, computadores e tudo que tinha uma certa complexidade ou dificuldade. Ultimamente andava muito frustado achando que não conseguiria me tornar um bom profissional, mas depois que dei uma boa lida em seu texto eu percebi que me encaixo perfeitamente, faço diariamente uns dos famosos “bicos” concertando computadores e montando estruturas de rede e etc… Comecei a formatar e hoje estou em um nível mais avançado.
Sempre que termino um serviço, eu revejo várias vezes até entregar ao cliente, isso me da uma grande satisfação e força de vontade.
Começarei a estudar programação novamente, mas dessa vez com muito mais alegria e força de vontade.
Obrigado por me dar esse “Start” … tenho 19 anos e tenho muito a agradecer a você.
Eu que agradeço a honra!
Aplaudindo de pé o seu texto… parabéns!
Valeu!
Kico sou programador a 12 anos e tenho uma visão da profissão muito parecida com a sua. Ótimo texto!
Sobre os meus heróis:
O Ron Jeffries, Kent Beck e Uncle Bob me inspiram bastante.
Obrigado!
Achei soberbo. Amei.
Obrigado!
Adorei seu texto!
Obrigado!