Algumas dicas, versão 2021
Tem coisas que a gente só percebe depois que já passou. Por isso, segue uma lista dessas pequenas coisas que podem ajudar qualquer pessoa que está programando (ou trabalhando com algo parecido).
Eu compilei uma lista faz um tempo, e hoje estou revisando. Se tiver mais algo a acrescentar, me avisa!
pra começar pense sempre com mente de pessoa que programa, não de pessoa que digita, como alguém que dá instruções para uma máquina executar. Quem tem que trabalhar no que é comum e repetitivo é a máquina, você tem que pensar em como fazer a máquina trabalhar melhor.
Mantenha sempre arquivos com anotações. E mantenha estes arquivos em lugares que consegue acessar facilmente, como Notion ou Evernote, ou até mesmo num pendrive.
O que você mantém nesses arquivos? Todas as anotações que faz quando está trabalhando em algo. Linhas de comando com parâmetros. Caminhos de arquivos, comandos usados para ajustar arquivos, regex, tudo. Sempre um arquivo por projeto, pra não bagunçar demais. “Ah, é inseguro”, concordo em partes. Mas sempre que você não lembrar a sintaxe daquele
sed
maroto que você fez pra trocar as URLs em um dump SQL, sabe onde vai encontrar.Use um gerenciador de senhas, se possível pago. É inestimável. Senha em papelzinho ou qualquer coisa assim é desgraçadamente inseguro. Use MFA também, onde estiver disponível.
Tenha um banco de “pedaços de código”. Isso evita coisas do tipo “como eu faço mesmo a URL de conexão ao banco?”, “como é aquela linha de list comprehension em python que mapeia os dados?”. Mantenha junto com os arquivos que falei acima. E todos os editores modernos tem algum mecanismo de inserção desses pedaços de código (snippets), aprenda a usar isso e automatize tudo o que puder. Vários editores ajudam a manter essa coleção a um atalho de teclado de distância.
Use sempre que possível chaves ssh para login em servidores remotos. Caso possível, desabilite o login por senha, mantendo apenas o login usando a chave.
Aprenda a usar bem um editor de texto de linha de comando, seja o vim, o emacs ou até mesmo o nano. Isso vai te ajudar a ter mais produtividade para fazer coisas simples, como transformação de arquivos, ler logs, etc. Se você acha que é difícil aprender um desses editores, vai ver como é pior viver sem eles.
Se você usa IDE, aprenda a usar essa IDE como uma ferramenta de trabalho, e não só como um editor de texto. Na primeira refatoração que você fizer usando uma IDE, vai entender o que eu estou dizendo. Aprenda todos os atalhos, todas as ferramentas disponível, os plugins mais legais. Adapte a ferramenta para o seu uso.
Automatize tudo o que puder. Usar 1 hora pra automatizar um processo que você executa manualmente todo dia e dura 5 minutos pode parecer gasto de tempo, mas isso vai ajudar a (1) livrar 5 minutos do seu tempo, (2) identificar todas as falhas possíveis desse procedimento e resolver antes que elas aconteçam e (3) deixar o processo independente do seu cuidado. E tem uma coisa a mais: se você automatiza, não deixa de
Se você usa Linux ou MacOS, domine o bash e o conjunto de ferramentas da linha de comando (GNU coreutils). Se usa Windows, aprenda a usar bem o PowerShell. A linha de comando te ajuda a pensar antes no que fazer, e na possibilidade de automação de atividades. E é parte da filosofia Open Source fazer pequenas ferramentas especializadas que, em conjunto, resolvem problemas complexos. Algumas ferramentas úteis:
less
,grep
,sed
,tr
,cut
.Mantenha seus arquivos organizados. Você precisa saber onde estão as coisas, quando precisar delas. Use o
fzf
para te ajudar a encontrar as coisas. Uma vez que você sabe onde está, com ofzf
fica mais fácil de encontrar.Aprenda uma linguagem de programação. Eu sempre vou recomendar Python porque tem muita coisa que já vem pronta com a linguagem, muitas bibliotecas pra fazer de tudo, e o que não vem junto é fácil de adicionar. Mas o objetivo é ter algo que te possibilite fazer coisas de modo “programado”, fazer aqueles scripts que salvam horas de vida. E também pesquise e descubra ferramentas que possam te ajudar a automatizar aquelas atividades chatas, como o Fabric e o Vagrant. Você não precisa ser uma pessoa expert em programação para que, usando ferramentas e/ou linguagens de programação, faça pequenos programas que resolvam seu problema.
Aprenda algo de serverless. Pode ser porque eu trabalho bastante com isso atualmente, mas acredito que estamos num momento em que usar ferramentas disponiveis na nuvem para entregar soluções é a melhor opção para a maioria dos projetos que você vai trabalhar.