Hoje é dia do trabalho e resolvi escrever um pouco sobre uma profissão que tem sido descaracterizada nos últimos tempos. Eu programo computadores profissionalmente, sou um desenvolvedor, analista de sistemas, arquiteto de software, mas sempre um programador. Quando estava estudando, o termo programador tinha muito pouco prestígio. Era normalmente usado com a conotação da pessoa com pouca instrução ou sem nível superior que fazia apenas o que era mandada. Nesta época, os analistas de sistemas eram reis e apenas desenhavam os sistemas. O programador se encarregava de pequenos pedaços de código. Banco de dados, telas, fluxos, tudo era entregue para o programador que por vezes era visto como mero tradutor do projeto em código.

Os tempos mudaram e hoje os computadores estão em toda parte. E uma mudança importante também ocorreu na profissão de informática: um achatamento de cargos. Hoje, o termo desenvolvedor de software engloba o programador e analista de sistemas em um só termo: aquele que resolve tudo sobre o software. Este achatamento já aconteceu várias vezes, é só lembrar que antigamente tínhamos o digitador, programador, projetista, analista de sistemas, etc.

O que faz um desenvolvedor? Ele analisa problemas e escolhe entre diversas soluções. Muitas vezes ele precisa ir em busca de novos conhecimentos, sempre focando em resolver o problema da melhor forma. Um desenvolvedor também tem deveres morais quanto ao código que desenvolve, sobre a finalidade dos sistemas e também quanto a segurança dos dados dos seus clientes. Eu gosto do termo guardião da informação. Não é exagero dizer que o mundo para sem programadores.

Um programador é também o guardião da informação de um sistema

Dada a importância do código no mundo moderno, desenvolvedores (programadores) são normalmente bem pagos. Os valores pagos são proporcionais a responsabilidade e ao nível de conhecimento do profissional, multiplicados pela raridade ou dificuldade de encontrar profissionais com a mesma qualificação. Aliás, com a globalização, desenvolvedores são alvo de uma caçada mundial de talentos. Não é anormal conhecer um amigo ou mesmo vários colegas que saíram do país para desenvolver software no exterior ou que trabalham do Brasil e ganham em dólar ou Euros! Uma bela carreira para quem gosta de desenvolver software.

A Internet e todo o conhecimento que compartilhamos hoje também é um agente de mudança. Todos podem programar e eu particularmente acredito que programação deveria ser uma matéria ensinada a todos, como matemática ou português. Hoje é muito fácil começar a programar. A quantidade de livros, cursos, vídeos e grupos de discussão é enorme. Se você tem acesso a materiais em outras línguas então a quantidade é ainda muito maior. Mas há uma certa confusão entre ser fácil obter o conhecimento e ter o conhecimento ou saber utilizá-lo. Sites como Stack Overflow tem respostas a tudo. Ainda assim, o programador profissional não pode se limitar a apenas copiar as respostas. Na verdade, muitas respostas nem são encontradas porque a pessoa não tem nível técnico nem para formular uma busca no Google! Eu não tenho nada contra pesquisar soluções na Internet, faz parte do mundo moderno e nossa profissão é resolver problemas. O que preocupa é quando código é copiado e utilizado sem qualquer entendimento. Lembram da responsabilidade do profissional? Pois é, você como profissional é responsável pelo que coloca no sistema que esta desenvolvendo. Você tem que entender a solução antes de incorporá-la.

Devido à abundância de material de estudo, uma confusão entre amadores e profissionais foi instalada. Soma-se ao fenômeno os gurus que prometem emprego como programador após formações curtas. O desprezo a educação formal também está na moda, agora fazer faculdade é careta. Guiados pela ambição de ganhar como programador em pouco tempo, aventureiros entram diariamente na profissão, criando os falsos programadores júniores. Um programador júnior é um programador sem experiência, mas que já estudou várias técnicas. Empresa nenhuma vai contratar como júnior uma pessoa que não é capaz de resolver problemas simples, nem mesmo problemas de lógica básica. O que muitos esquecem é que precisamos manter um fluxo de produção durante o desenvolvimento de uma solução, juntando a solução de vários problemas em um sistema coerente. Não é só programar, o código deve funcionar quando posto na solução. Os dados manipulados precisam ser armazenados corretamente, tanto em termos de forma quanto segurança. A solução precisa atender a requisitos de usabilidade e de performance. E o mais difícil, tudo isto de forma confiável e com custo controlado. Tudo isso sem contar com questões como reuso e manutenibilidade do código gerado! Programar computadores continua uma profissão, precisa de estudo e dedicação. Não importa se você fez 5 anos de faculdade, se não encarar a formação como uma capacitação profissional, você não terá muita utilidade. Eu sempre recomendo a quem tem condições de cursar uma faculdade ou universidade que o faça. Um curso formal dá uma estrutura e apresenta um programa de ensino coerente. Nem todo mundo consegue se virar sozinho e não é difícil ver pessoas estudando sozinhas por meses, mas sem rumo. Programar vai além da linguagem de programação.

Programar dá trabalho. É uma profissão onde você precisa estudar constantemente. Não há atalhos, precisa de esforço. Por onde começar? Programando! Escolha uma linguagem, pouco importa qual. Use um livro ou siga um curso, mas estude. Termine o curso, leia o livro todo, faça exercícios. Não se limite a uma linguagem de programação, aprenda várias. Mas estude também banco de dados, redes, como a Internet funciona (principalmente sistemas web), segurança, técnicas, ferramentas e algoritmos. Quando se sentir pronto, começa a escrever pequenos projetos.

Um programador tem que constantemente aprender e praticar.

Houve também uma mudança de mentalidade de como se deve desenvolver software. Com a proliferação de métodos ágeis desde o início dos anos 2000, vemos cada vez menos grandes projetos, no sentido de ter um plano antes de se implementar o software. Métodos ágeis não pregam ausência total de documentação ou projeto, mas são aplicados desta forma por oportunismo e muitas vezes por ignorância. Também com métodos ágeis e sistemas web, vimos que a metodologia de dividir para conquistar é ganhadora. Um efeito nefasto desta mentalidade é que os problemas podem ser simplificados ao ponto de se tornarem banais. Precisa de uma tabela no banco de dados: bam! criada. Uma nova tela: feito. Em vários casos o scrum master sem formação ou estudos em software, mas com bom senso assume a liderança na criação do software (com ajuda do product owner). O programador ou desenvolvedor acaba ficando em segundo plano. Há mesmo um esforço em ignorar a competência do profissional, insistindo em pegar qualquer tarefa do topo da lista, sem qualquer consideração se a pessoa é a mais indicada para aquela implementação no time. A ideia é que o conhecimento não fique na mão de uma só pessoa, mas se você não faz nada importante e pode ser substituído por qualquer pessoa do time, você não é tão importante assim, certo? Um balanço que os profissionais de hoje têm que fazer diariamente. Tudo isso sem falar na necessidade de conhecer o negócio e o problema que está sendo resolvido.

Programador é uma profissão que exige estudo e formação constante.

O eterno problema do nível do programador não é tão claro. Júnior, Pleno, Sênior? Quando alguém pode se considerar programador? Estas questões não são fáceis em várias profissões, mas dada as poucas barreiras de entrada ao mundo da programação, estas divisões são muito diferentes de uma empresa a outra. Um programador júnior (para mim) já conhece as técnicas de programação e é capaz de escrever pequenos sistemas, como um cadastro com banco de dados. Ele tem noções de como a web funciona (fundamental para quem é front-end) e entende como um computador funciona (em alto nível). O programador pleno já tem experiência de alguns anos e tem segurança em desenvolver soluções maiores e mais complexas. E o sênior? O programador sênior domina a arte, escolhe as ferramentas para solucionar um problema, pensa no negócio, em otimização, arquitetura do software. Quantos anos para passar de uma fase a outra? Quantos forem necessários, é mais uma questão de competência que de tempo de serviço.

Um programador precisa estudar centenas de horas antes de se considerar júnior. O estudo não é completo sem centenas de horas de prática, resolvendo problemas e programando.

Uma das poucas coisas que não mudaram na profissão é a constante necessidade de aprender novos conceitos, técnicas, linguagens e formas de trabalhar. Eu sempre digo, se você não gosta de ler e estudar, não entre na programação de computadores, pois será sofrível. Aprenda várias linguagens de programação, não esqueça de aprender inglês também. Saudações aos amigos programadores e escovadores de código fonte. Nossa profissão está forte e com oportunidades para todos.