12 resoluções para programadores

NOTA: Essa postagem é uma tradução do artigo “12 resolutions for programmers”, escrito pelo Matthew Might. Se for possível, não deixe de conferir o artigo original. Se notar algum erro ou tiver críticas ou sugestões, me avise.

É importante que programadores desafiem a si próprios. Estagnação criativa e técnica é a única alternativa.

No espírito de ano novo, eu reuni doze resoluções com duração de um mês. Cada mês contém um desafio pessoal ou técnico, renovável anualmente.

  1. Faça algo analógico.
  2. Mantenha-se saudável.
  3. Abrace o desconforto.
  4. Aprenda uma nova linguagem de programação.
  5. Automatize.
  6. Aprenda mais matemática.
  7. Foque em segurança.
  8. Faça backup dos seus dados.
  9. Aprenda mais teoria.
  10. Envolva-se com artes e humanidades.
  11. Aprenda um novo software.
  12. Termine um projeto pessoal.

Leia a seguir as minhas sugestões.


Faça algo analógico

Programadores ficam obcecados pelo discreto e pelo digital muito além do ponto dos retornos decrescentes. Assim, pequenos investimentos no mundo analógico rendem ganhos comparativamente grandes.

Aqui está uma lista de atividades analógicos para tentar, cada uma das quais requer cerca de um mês de esforço dedicado para sair do estágio de principiante e chegar ao ponto de iniciante experiente.

  • Culinária.
  • Fazer trilha.
  • Esquiar.
  • Astronomia.
  • Corrida.
  • Carpintaria.
  • Artes marciais.
  • Dança.

Mantenha-se saudável

Programadores tendem a levar vidas sedentárias, e nós encaramos desafios de saúde únicos graças à nossa profissão.

Temos o costume de ignorar esses desafios.

Gaste um mês inteiro todo ano aprimorando seus exercícios, dietas e ambiente para promover hábitos de saúde duráveis.

Vá a uma clínica todo ano para checar sua pressão sanguínea, colesterol e nível de açúcar no sangue. Acompanhe as alterações nesses valores.

Se seus pulsos estão começando a doer ou estão doendo, pare agora e tome providências para combater a Lesão por Esforço Repetitivo.

Foque em melhorar a sua postura, com ênfase nos seus ombros e pescoço. Eu utilizo um suspensório de correção postural para ajudar:

(Sim, funciona para homens também.)

Registre seu peso, calorias consumidas e calorias queimadas. Se necessário, reformule seu estilo de vida para promover uma alimentação mais saudável e perda de peso.

Se você já está no peso ideal, considere um experimento de um ano na obtenção de músculos e força.

Abrace o desconforto.

Desde os meus vinte e poucos anos, eu olhava meus colegas mais velhos e tentava descobrir porque alguns estavam estagnados e como outros conseguiam se manter vibrantes.

A resposta é conforto. Conforto gera fossilização técnica. Nós encontramos um sistema que funciona para nós, e ficamos nele.

Mas a tecnologia avança, e aqueles que ficam em sua zona de conforto nunca percebem os ganhos desses avanços.

Pratique ficar confortável em estar desconfortável.

Aqui está uma lista que pode fazer você desconfortável no começo:

  • Mude para Dvorak.
  • Mude de emacs para vim ou vice-versa.
  • Para de usar mouse.
  • Use um gerenciador de janelas diferente.
  • Mude de café com creme e açúcar para café puro ou até mesmo chá.
  • Experimente aquele “nova porcaria popular” pelo mês todo.
  • Deixe seu celular desligado por um dia da semana.
  • Aprenda um dispositivo de entrada para uma só mão.
  • Experimente um sistema operacional diferente.
  • Fique sem internet por um dia na semana.
  • Experimente uma restrição alimentar: veganismo, vegetarianismo, sem leite e derivados, etc.
  • Coma uma comida que você não gosta todo dia.
  • Coloque seu braço dominante em um suporte.
  • Aprenda a escrever com sua mão não-dominante.
  • Comece um blog.
  • Candidate-se para falar em público.
  • Ouça um tipo de música que você não gosta por um mês.
  • Seja voluntário em um hospital ou asilo.
  • Jejue uma vez por semana.
  • Viaje para um país com um idioma e/ou cultura diferente.
  • Leia um livro aclamado de um gênero que você não gosta.
  • Assista um filme aclamado de um gênero que você não gosta.
  • Aprenda a dirigir com transmissão manual.
  • Argumente contra algo que você acredita.

Depois de um mês fazendo algo de uma maneira diferente, decida se você quer continuar fazendo dessa forma ou se existem maneiras de combinar o melhor do jeito antigo com o do jeito novo.

Por exemplo, quando eu mudei para vim depois de dez anos de emacs, eu configurei as teclas de atalho no estilo do emacs para o modo de inserção, mas mantive o vim.

Update: O leitor Shae Erisson nos escreveu para levarmos em consideração a “regra de três” ao abraçar o desconfortável: quando uma terceira pessoa recomenda que você experimente algo, você deveria experimentar.

Ele também nos ensinou a “regra dos 15 minutos”: dê o benefício da dúvida a coisas como um filme ou programa de TV por 15 minutos. Se após isso você não quiser continuar, abandone.

Eu gostei de ambas as regras.

Aprenda uma nova linguagem de programação

Linguagens de programação surgem e caem.

Programadores que sabem apenas uma linguagem limitam suas habilidades de resolução de problemas e suas perspectivas de carreira.

Passe um mês absorvendo uma nova linguagem ou um novo paradigma de linguagem.

Escreve um programa modesto nessa linguagem. Aqui vão algumas linguagens menos mainstream para tentar:

Se você não tem mais linguagens de programação para aprender, implemente uma.

Automatize

A habilidade mais poderosa e inexplorada que programadores possuem é a habilidade de automatizar tanto o virtual quanto o físico.

Se você nunca construiu um robô, construa um robô. Ou no mínimo, brinque com Lego Mindstorms:

ou trabalhe com Arduino:

Investigue as tarefas rotineiras que você executa, e determine quais podem ser automatizadas totalmente ou parcialmente. Tecnologia de automação residencial avançou consideravelmente, e muita coisa é possível com sistemas faça-você-mesmo tais como Insteon.

Invista um mês em algum projeto de automação:

  • Ative seus filtros de email ou configure procmail.
  • Criar shell scripts para automatizar ações frequentes.
  • Criar shell scripts para te ajudar a escrever.
  • Aprender como usar a ferramenta cron.
  • Ligar luzes do armário com detectores de movimento.
  • Substituir fios por wireless onde for possível.
  • Para com sincronização manual: mova para a nuvem.
  • Configure um sistema de som controlável remotamente.
  • Controle seu termostato a partir do seu servidor.
  • Configure câmeras de segurança digitais.
  • Crie uma babá eletrônica/intercomunicador.
  • Faça sua cafeteira ligar automaticamente.
  • Configure uma tigela de água auto-reabastecível para os animais de estimação.
  • Faça uma portinha para animais de estimação controlada por sensores.
  • Transforme um Roomba em um entregador pessoal.

Aprenda mais matemática

No seu coração, Ciência da Computação é uma disciplina matemática. Bons matemáticos se tornam bons programadores.

Não deixe suas habilidades matemáticas murcharem. Considere uma revisão anual de um mês de duração em um dos seguintes tópicos:

Foque na segurança

Poucos programadores praticam bons hábitos de segurança.

Se você está consciente da sua própria segurança digital, você será mais consciente da segurança do código que você escreve.

Verifique se você está usando senhas únicas e fortes para cada site.

Gerencie suas senhas com um gerenciador de senhas criptografado como PasswordSafe ou KeePassX.

Se você ainda não pratica a encriptação do disco todo, reserve um tempo para fazer isso. (No Mac é extremamente fácil fazer isso.)

Todo dia, estuda as 10 principais vulnerabilidades dos últimos 12 meses. Como aconteceram? Quais práticas de codificação poderiam preveni-las no seu código?

Aqui estão outras tarefas de segurança que você pode tentar:

  • Configurar um certificado SSL no Apache.
  • Implementar um sistema de encriptação como RSA or AES.
  • Tentar quebrar a chave da sua rede wireless.
  • Farejar o tráfego da sua rede com WireShark.
  • Configurar login ssh sem senha, baseado em chaves.
  • Executar nmap em você mesmo. Configurar seu firewall.
  • Configurar port-knocking.
  • Criar um pen-drive encriptado.
  • Configurar monitores de arquivos de log.
  • Configurar um cronjob para atualizar seus pacotes regularmente.

Faça backup dos seus dados

Todo ano, passe algum tempo revisando sua estratégia de backup.Invista um mês minimizando o custo de fazer backups.

[Recentemente, eu passai a manter a maior parte dos meus arquivos de trabalho no Copy, Copy, um aplicativo no estilo do Dropbox mas que oferece muito mais espaço de armazenamento gratuito. Registre-se por meio deste link para obter 5 GB extras].

Opte por defesa em profundidade atribuindo um HD externo para cada computador e habilitando backups automáticos com ferramentas como Time Machine.

Mantenha arquivos críticos em controle de versão com um repositório geograficamente remoto.

Aprenda mais teoria

A Ciência da Computação tem uma rica estrutura teórica.

Mantenha-se a par dos novos desenvolvimentos e renove a sua maestria dos clássicos.

Passe um mês do ano estudando tópicos como:

  • Linguagens formais.
  • Autômatos e teoria da computação.
  • Teoria da complexidade.
  • Métodos formais.
  • Semânticas.
  • Algoritmos e estruturas de dados.

Para iniciantes, seria interessante dar uma olhada nos seguintes posts(em inglês):

Envolva-se com artes e humanidades

Engenheiros tendem a desprezar as artes.

O que engenheiros não conseguem percebem é que artes e humanas aumentam a excelência técnica.

Steve Jobs gostava de destacar a importância de conectar tecnologia e humanidades, e com razão.

Arte e design têm princípios aplicáveis à interação humano-computador. Não ignore esses princípios.

A prática das artes e humanidades treina e afia a intuição em uma maneira que é difícil de quantificar.

Engenheiros precisam aprender como medir o que eles não podem contar, ao invés de contar apenas o que eles podem medir.

Por pelo menos um mês por ano, aprenda mais sobre tópicos como os seguintes:

  • Design Industrial.
  • Filosofia.
  • Fotografia.
  • Pintura.
  • Modelagem.
  • Música e teoria musical.
  • Cinema.
  • Literatura.

As ciências sociais também têm muito a oferecer aos cientistas da computação. Experimente principalmente Economia e Psicologia.

Aprenda a usar novos softwares

Uma boa maneira de ter ideias para seu próprio software é aprender uma nova aplicação ou um novo tipo de aplicação.

Por exemplo, se você nunca usou um software de modelagem 3D, experimente Blender.

Ou, se você nunca aprendeu LaTeX, faça um esforço honesto.Conforme você aprende, note o que você gosta e o que não gosta.

Pergunte a si mesmo, honestamente, se essas observações se refletem no software que você cria. É difícil de enxergar práticas ruins no seu próprio trabalho, mas fácil de ver no dos outros.

Nenhum pai ou mãe jamais teve um filho feio. Aprenda a reconhecer seus filhos feios.

Termine um projeto pessoal

Se você passa o dia todo escrevendo código para outra pessoa, lembre-se do porquê você se tornou um programador escrevendo um programa para você mesmo.

Passe um mês cada ano em um projeto de sua escolha. Materialize o núcleo desse projeto.

Abra o seu código e o lance para o mundo.


Show your support

Clapping shows how much you appreciated Carlos Schults’s story.