Como diz meu amigo Júlio, eu sou um velho. Então que esse post sirva de conselho pros sysadmins de uma geração mais nova. Vou tentar explicar porque você deve ser capaz de programar pelo menos em uma linguagem e como sua vida vai ser bem mais fácil por causa disso.
Não acho que isso seja uma coisa comum, mas uma vez que descobri computadores eu sempre soube o que eu queria fazer: Instalar e administrar sistemas. Mas obviamente, pelo menos na minha época, não existia nenhum curso superior de administração de sistemas. Quando eu tinha idade pra universidade as opções basicamente eram Análise de Sistemas, Ciências da Computação e Engenharia da Computação. Se você está em TI nem preciso explicar como nenhum desses cursos cobre o que um sysadmin faz.
Eu até cheguei a fazer Análise de Sistemas por um tempo, depois de já ter feito colegial técnico em Processamento de Dados, então pelo menos o básico de programação eu sabia: Algorítimos e lógica.
Mas em ambos os cursos a ênfase e as linguagens usadas faziam de programação uma coisa totalmente inútil para o que eu queria profissionalmente. Não que fazer um programa de aluguel de VHS em Cobol seja inútil – longe disso.
Eu poderia desviar o assunto aqui e dar minha bronca geral de como o sistema de ensino é totalmente desconectado da realidade – pelo menos em IT – mas deixa pra lá.
De qualquer forma eu larguei a universidade e comecei a fazer cursos que realmente importavam e fizeram diferença na minha carreira: Cisco, Microsoft, Sun, Novell, Conectiva (puxa, sou velho mesmo). Agradeço meu pai pelo patrocínio de todos esses cursos. É difícil explicar para quem não é de TI, mas uma semana de boot camp na Sun aprendendo Solaris valeu mais pra mim do que o ano e meio de universidade no Mackenzie…
Com esses cursos mais experiência mão-na-massa que fui adquirindo fui melhorando profissionalmente. Me comprometi com Unix/Linux então linha de comando era mandatório. E ai junta um grep aqui, um pipe ali, um cut pra tirar uma coisa e de repente eu percebo que, enquanto eu estava fazendo trabalho de sysadmin, saber programar podia me ajudar bastante.
O mínimo que você precisa saber é shell scripting. Não precisa ser avançado, mas eu já me deparei com sysadmins que não conseguiriam editar arquivos em lote nem se a vida deles dependesse disso. Já vi sysadmin copiar arquivo csv na workstation windows, abrir no excel, remover uma coluna, salvar e fazer upload de volta ao servidor Linux.
Quando eu percebi como saber bem shell script ia me dar habilidades ninjas eu me matriculei num curso do Júlio Cézar Neves. Foi sensacional, pois além do Júlio ter uma excelente didática ele ainda tem uma experiência enorme, trabalhando com Unix a mesma quantidade de anos que eu estou vivo.
No curso dele eu percebi que shell script era muito mais do que meia de comandos filtrados por pipes e como agora programação ia começar a fazer sentido e facilitar a minha vida. Os “causos” que ele contava também eram inspiradores, mostrando ainda mais como sysadmins com habilidade de programação salvam o dia frequentemente.
Vamos a um exemplo simples: Algumas vezes me deparei com uma situação em que precisava copiar um arquivo para dentro de um diretório de cada cliente. O arquivo era o mesmo para todos os clientes, com umas 10 linhas, exceto pela linha 3, onde havia um identificador único por cliente. A abordagem da maioria dos sysadmins que não programavam era copiar o arquivo para o cliente 1, abrir no editor de texto, mudar o identificador, salvar. Copiar para o próximo e assim sucessivamente.
Aliás, eu fui envolvido nessa tarefa depois de um outra pessoa ter gasto 2 dias para colocar o arquivo em 300 clientes só pra receber uma versão nova dos programadores na semana seguinte.
Sabendo programar eu fiz o seguinte em shell script:
- Copiei o arquivo original para um template e substitui a linha com o identificador com um “IDENTIFICADOR_VAI_AQUI”
- Listei os clientes dentro de um dicionário, contento o diretório como chave e o identificador único como valor
- Fiz um loop simples que rodava um sed template “s/IDENTIFICADOR_VAI_AQUI/$ident/g” > $dir/arquivo-destino
Demorou logo 5 minutos pra escrever o script e 10 segundos para atualizar todos os 300 clientes. Estão entendendo onde quero chegar?
Eu sei que aprender coisas novas dá trabalho e consome tempo. Eu frequentemente gastava o dobro ou o triplo do tempo para escrever um script do que teria levado para resolver o problema manualmente. Até hoje isso acontece de vez em quando, mas é um processo que vale a pena.
O propósito de todo sysadmin é automatizar e simplificar a maior quantidade de tarefas possíveis e saber programar é a pedra fundamental desse princípio. É verdade que ferramentas como Puppet e Ansible exigem pouco em termos de programação, mas quando você começa a se afastar um pouco de infraestrutura básica e mergulhar em partes mais complexas do seu ambiente, aplicações, integrações com outros serviços, computação na nuvem e etc você vai precisar saber se virar nos if else.
Para saber quando automatizar eu mais ou menos uso como compasso o seguinte: Se alguma coisa precisa ser feita mais do que uma vez por ano é uma boa idéia automatizar. Se precisa ser feita mais do que uma vez por mês deve ser automatizada.
Algumas pessoas podem pensar que ao automatizar tarefas estão dando um tiro no próprio pé e arriscando a perder o emprego. A minha experiência até o momento mostra o contrário disso. As empresas preferem dar valor a quem resolve os problemas com mais facilidade e eficiência e não quem se mata de trabalhar. E se seu chefe ou empresa acha que o jeito certo de medir seus funcionários é o tanto de horas com o traseiro na cadeira talvez você precise de um emprego novo… Fica a dica.
Por muitos anos shell script me serviu bem e resolveu todos os meu problemas. Até o momento em que no meu primeiro emprego aqui no Canadá os problemas eram bem mais complexos. Eu comecei a atacar os mesmos em shell, mas vi que alguns dos meus colegas usavam Perl e, rapaz, como era mais fácil resolver problemas complexos.
Não sendo programador e tendo apenas shell script como experiência deu um pouco de trabalho aprender Perl mas felizmente a empresa pagou um curso e logo eu estava conseguindo reescrever minha ferramentas em Perl.
Acho que hoje em dia eu não conseguiria escrever um “Hello World” em Perl sem consultar o Google, já que adotei o Python como a minha linguagem oficial anos atrás. Mas nos meus muitos anos de sysadmin já tive que modificar ou criar pequenas partes de código em Perl, Python, PHP e Javascript. A sintaxe muda, mas entendo o básico você vai se virar bem.
O que não falta são recursos na Internet. Existem inúmeros cursos online, gratuitos, em praticamente qualquer linguagem que você escolher. Comprometa-se com um e mande ver.
Mas não se esqueça de relaxar. Você é sysadmin e no começo seus scripts vão ser feios e cheios de coisas que vão te deixar com vergonha em alguns anos. Eu tinha uma colega que toda vez que escrevia um script vinha se desculpar que não era bonito nem otimizado. Eu sempre ria e perguntava: Em quanto tempo roda? 30 segundos? Fazer manualmente ia demorar 8 horas. Quem se importa se uma versão otimizada rodaria em 10 segundos? Ninguém!
Pra finalizar vou dar minha opinião – bem parcial: Se você precisa escolher uma linguagem para aprender escolha Python. Eu podia escrever mais um post inteiro só com as razões pra isso, mas acredite em mim: Python.