Neste post irei falar sobre as ferramentas que utilizo no dia a dia como desenvolvedor. Minha intenção é mostrar ferramentas para pessoas que desconhecem e se houver alguém que possa dar alguma dica, por favor peço que o faça.
O sistema operacional que atualmente utilizo e que utilizei durante muitos anos é o Slackware Linux. Você podem estar pensando “você está louco” como muitos pensam quando este sistema é citado, porém utilizo este SO já fazem alguns anos, já utilizei diversos outros e sempre acabo voltando a utiliza-lo. Eu acho que ele tem uma grande vantagem em relação a outros, principalmente para desenvolvedores, as coisas estão sempre no mesmo lugar por mais que as versões mudem. Em outros SOs existem “gambiarras” para facilitar a vida do usuário, coisa que não existe no Slackware. Enfatizando, isto é muito bom para desenvolvedores. Além disso, para quem gosta da área e quer aprender mais sobre sistemas operacionais e Linux o Slackware é uma boa. O ambiente gráfico que estou utilizando atualmente é o Gnome 3, já utilizei openbox, fluxbox, kde, xfce e enlightenment, mas sempre acabo voltando pro Gnome também. Eu acho que ele é mais limpo e rápido que o KDE(minha opinião, pelo amor de Deus, não estou tentando arranjar briga) e a versão 3 tem me agradado bastante. E acrescentando mais um detalhe, utilizei o Unity do Ubuntu 11.04 e realmente não gostei, todos os outros gerenciadores de janelas que utilizei poderia voltar a utiliza-los sem problemas, mas o Unity, sem condições.
As linguagens que mais utilizo é C/C++, Ruby e Python. Apesar que no meu atual trabalho estou utilizando Javascript e Java. O editor que utilizo, com exceção de quando programo em Java, é o gVim. Minha politica é que quanto menos eu colocar a mão no mouse melhor. A vezes acho que eu me perco muito com um monte de áreas clicáveis na tela. Os plugins que utilizo no gVim possuem recurso de autocomplete, árvore de diretórios, syntax highlight, split de janelas e por ai vai. Meus arquivos de configuração do Vim podem ser obtidos em http://github.com/diegorubin/dotfiles. Para o recurso de Find in Files eu utilizo dois scripts que criei em Perl. Para mim eles estão sendo muito uteis e se você quiser utiliza-lo, eles podem ser obtidos em http://github.com/diegorubin/FrontFile. A instalação é feita executando o script install que está no repositório. Existem exemplo no arquivo README e também possuem man pages. As dependências que eles possuem podem ser instaladas através do CPAN. Para debugar aplicações eu também não utilizo nenhuma ferramenta gráfica. Em c/c++ me dou muito bem o gdb e em ruby o ruby-debug e o irb já é o suficiente.
Todo desenvolvedor precisa de um bom shell, Eu utilizo o Bash, o padrão da maioria das distribuições Linux. O meu bashrc, arquivo de customização do Bash, pode ser encontrado no mesmo repositório onde estão os arquivos de configuração do Vim. O emulador de terminal que uso é o Terminator, que pode ser encontrado em http://www.tenshu.net/terminator. Ele possou funções para split de janelas que é ótimo, eu gosto muito deste recurso pois assim posso ver vários logs na mesma de tela de forma fácil e organizada. Além disso possui funções para agrupar as janelas e executar o mesmo comando em vários terminais, recurso muito bom quando você precisa fazer deploy em mais de um computador.
Em todos os meus projetos utilizo o git como sistema de controle de versão. Desculpe a turma do SVN ou até mesmo o pessoal do Mercurial(que já utilizei), mas o git é muito melhor, pelo menos para mim é. Além disso existe o github que também cumpre o seu objetivo maravilhosamente bem. Eu não utilizo nenhuma interface ou front-end para trabalhar com o git, gosto e me sinto bem mesmo utilizando os comandos pelo terminal. Já cheguei a experimentar algumas interfaces como o git-cola, mas prefiro mesmo ficar com o terminal.
Como todo bom desenvolvedor, não consigo me concentrar sem estar ouvindo alguma música ou podcast e o player que venho utilizando já faz algum tempo é o Music Player Daemon - MPD. Utilizo dois clientes, o MPC que é uma espécie de cli para o MPD e com ele configuro os atalhos do meu teclado, e o NCMPC que fornece um interface em ncurses e consigo gerenciar facilmente playlists. Mais uma vez pensando em não ter que tocar um mouse, com esse player e esses clientes consigo trocar de músicas dentro de uma janela do Vim, e isso para mim é muito bom.
Essas são as ferramentas que utilizo no meu dia-a-dia como desenvolvedor, de vez em quando tenho abrir mão de algumas, como disse quando programo em Java na empresa onde trabalho utilizo o Eclipse ou quando preciso mudar alguma interface com Qt utilizo o QtCreator, mas quando mais mãos conseguirem ficar no teclado, para mim melhor.
Se você tiver alguma dica para mim, por favor, deixe nos comentários, assim poderemos trocar conhecimentos e evoluir mais.