Devo saber programar?

Tempo de leitura estimado: 3 minutos

Oi caro leitor!

Estou abrindo um pequeno parênteses para compartilhar uma opinião que faz tempo que quero falar a respeito… Vou fugir um pouquinho do conteúdo técnico e vamos falar sobre conhecimento.

Nos últimos meses tenho experimentado problemas incrivelmente difíceis e interessantes ao mesmo tempo. Problemas que antes me davam medo só de pensar em acontecer, mas ultimamente, fico na expectativa que aconteçam! Sim, é isso mesmo que você leu… 🙂

A questão é que nos últimos meses eu desenvolvi mais ainda minhas habilidades e conhecimento dos porquês e dos funcionamento do SQL server e do Windows. Além do mais, graças a isso eu tenho conseguido ir direto na ferida e, por exemplo, ver estatísticas de uso de recursos e de performance me mostrarem valores mais positivos e elegantes, além de responder com segurança diversos questionamentos que me são feitos.

As aventuras mais recentes foram dois casos, um envolvendo consumo de CPU e o outro consumo de memória. Graças ao estudos dos últimos meses, eu pude, sem muita demora, encontrar a causa raiz, de forma certeira, entender os porquês e levantar soluções com ações simples. Tudo isso graças a utilização das ferramentas certas (isto é, queries, contadores de perfomance, DMVs, etc.).

Mas o que tem mudado e me permite ir tão certeiramente? Simples: um conhecimento mais rico e detalhado sobre como todas as partes envolvidas funcionam. Conhecer a arquitetura de um software e suas dependências é um fator determinamente na velocidade com a qual você vai solucionar problemas desconhecidos e novos, bem como te permitir estimar, planejar e “dizer nãos” com propriedade.

Ok, você pode está se perguntando onde entra a tal da programação e chegamos nela exatamente agora. A programação é a maneira como você torna as coisas mais palpáveis no mundo da TI.  Sabendo programar você materializa suas idéias. Este texto está ficando meio filosófico, mas não tenho outras palavras para descrever o que programar representa. Talvez eu resuma em uma: prática. Você sabe o que é um latch? Você sabe porque threads precisam se sincronizar? Você entende porque deve haver um CMEMTHREAD ? Você sabe ao menos explicar porque quando usa funções escalares, as queries tendem a ficar mais lentas? Você entende o que é uma heap ou um stack e porque é um conceito tão importante? Sabe o WinDBG…? Sabe a real utilizadade daquilo e pra quem server?Dica: Não é pro DBA! Você sabe programar? Pode parecer ignorância, mas para que certos conceitos fiquem mais claros, talvez colocar a mão na massa pode ser uma alternativa não mais rápida, mas efetiva a longo prazo. Isto é, um conhecimento que você não vai aproveitar uma única vez…

Claro, que não posso falar sobre programação sem falar em meus xodós: C/C++ e WINAPI. Eu fortemente recomendo que você aprenda essas duas coisas assim que puder. Isso vai te dar uma nova visão. Aqui que vos escreve não é nenhum expert, ou mesmo intermediário. Conheço algumas coisinhas (sempre fui apaxionado na linguagem C e na API do Windows)… Que já me ajudam bastantes… Imagine se eu  dominasse like a boss.

Aprender a programar pode fazer você absorver melhor os porquês de muitas coisas. Um software complexo, como um SGDB comercial, precisa ter o máximo de perfomance ao mesmo tempo que um controle do ciclo de vida. Sim estou falando de correções de bugs, novas versões, etc. Tudo isso vai definir, entre outras coisas, a arquitetura. E cá estamos aqui, falando de desenvolvimento, perfomance e arquitetura na mesma frase ;)…

Nossa Rodrigo que baboseira! Você está doido

Não, não estou. Assim como aprender inglês e a arquitetura do SO são essenciais, aprender a programar (e puxando a sardinha, aprender C) também é, e muito. Tudo, tudo mesmo, esta voltado e relacionado com programação. O software do mais simples ao mais complexo vão ter em comum o fato de terem sido criados usando alguma linguagem. Aprender a programar é aprender a entender a arquitetura do hardware e do sistema operacional .Familiar? Pelo menos um destes dois itens você precisa entender para lidar com qualquer vertente da área de tecnologia e o nível com o qual você os domina, é o nível com o qual você irá dominar a sua ferramenta de estudo/trabalho.

E afinal, somente serei o “bonzão” se souber programar?

A questão aqui não é ser o “bonzão”. Mas sim, realizar um trabalho com mais qualidade. Afinal, te pagam pelo seu conhecimento e tempo. Você pode ser um excelente profissional e de sucesso sem saber nada de programação. Assim como você não precisa saber muita coisa de inglês… Mas já tentou a diferença? Há algum assunto que você nunca entendeu? Alguma coisa que você achou que era de um jeito mas te mostraram que você estava errado? Então, certos conhecimentos vão incrementar suas habilidades, te fazer compreender os porquês, atuar como blocos simples (coisas complexas são feitas de várias simples). Cabe a você escolher se quer depender pelo resto da vida dos mecanismos de pesquisa ou se quer dominar o assunto e agir sem medo e com propriedade, dando resultados imediatos! Eu escolho a segunda opção e to seguindo nela já há algum tempo, sem arrependimentos, e gerando resultados.

Leave a reply

Your email address will not be published.