MarinhoBrandão.com
"O risco que se corre ao se introduzir novas tecnologias é menor do que aquele que se corre ao não introduzi-las." ;)

Meu ambiente de trabalho em 7 itens

Publicado por marinho, há 1 ano | django javascript python web

O @franciscosouza pediu ao @osvaldosantana que atendeu e passou a bola pra mim, então lá vai :P

Antes de mais nada, eu preciso fazer uma confissão (ai, descobriram meu segredo!): eu sou exagerado e gosto de trollar, mas o fato é que sou um verdadeiro David Bowie em quase qualquer coisa e geralmente me adapto bem a quase tudo. Costumo testar tudo o que aparece e geralmente gosto (sempre tem um jeito de driblar os defeitos em prol das qualidades).

Mas tenho uma ou outra preferência de época e a situação agora é mais ou menos esta abaixo. Vamos do mais fundamental para o mais específico.

1. Pessoas

Na maior parte do tempo, eu trabalho em casa.

A presença da Tarsila, Linus e Letícia, mesmo que às vezes incomode aqui ou ali, no geral é a motivação principal do trabalho. Quando eles não estão aqui durante muito tempo eu perco a graça e até a produtividade. Mas tem hora que eu mando todo mundo ir passear (como agora por exemplo). Mas tem hora que são eles que me mandam ir trabalhar no shopping. :P

O Miltinho é meu melhor amigo e parceirão de trabalho. É incrível como um cara pode ser meu irmão e diferente de mim em vários pontos mas nunca nos falta de assunto. Além disso, como diz a Tarsila, ele é o nosso herói particular. Trabalhar com ele também me dá segurança e foco na maioria das situações.

Os amigos no Google Talk, Skype e Twitter muitas vezes salvam o dia, mas também servem pra falar alguma abobrinha, trollagem ou comentários técnicos. Não dá pra ficar sem eles.

2. Música ambiente

É só dar uma olhada no meu Last.fm pra ver o que toca aqui. É praticamente sempre a mesma coisa: AC/DC, Iron Maiden, KISS, Nightwish, Beach Boys, Ultraje a Rigor, Ozzy...

Sem rock'n'roll no trabalho é sem graça. Com música alegre e animada a produtividade vai lá em cima. Um dia desses resolvi olhar o sangue meu, da Tarsila e no Linus no microscópio e tomei um susto: lá estava escrito "Heatseeker".

3. Plataformas

A máquina principal é MacOS X, mas tenho uma auxiliar com Ubuntu e algumas máquinas virtuais com Ubuntu e Windows, usando VirtualBox.

Tirando os exageros mais inflamados, o fato é que Linux e Windows são obrigatórios para qualquer programador que se preze. Fora que algumas ferramentas de migração e sistemas de legado só rodam neles.

Pelo gosto, o Ubuntu é o meu predileto, mas o MacOS X também tem muitas coisas legais, e o Macintosh foi a melhor máquina que já usei, então vale a pena continuar com o MacOS X como S.O. principal.

4. Linguagens e Frameworks

A linguagem principal, de longe, é o Python.

Na Raminel nós estamos pra qualquer parada, mas como somos só dois e a demanda por projetos em Python é alta, não sobra tempo para outras linguagens. A versão default do Python é a 2.7.

Algumas ferramentas específicas foram feitas e são mantidas em JavaScript, ObjectiveC e Delphi.

Nós temos a opinião de que para fazer a mesma coisa, basta uma só ferramenta boa e completa. Para sistemas full stack, o Django é completo, portanto nunca nos interessamos por Rails, web2py, etc. Para casos de assincronismo e paralelismo, usamos Node.js. Para geração de relatórios, Geraldo Reports. Para webservice eu prefiro otimizar o Django com middlewares do que me aventurar a outros.

Mas quando é preciso, encaramos o que aparece.

5. Ferramentas de programação

Virtualenv + pip + iPython são as ferramentas padrão em matéria de ambientes Python para qualquer projeto. Onde há a intenção de construir todo o deploy, seja para produção, seja para desenvolvimento ou testes, também uso buildout, mas são apenas dois casos.

A ferramenta oficial para controle de versões é o Git.

Uso iTerm para sessões locais e Terminal.app para SSH. Fiz algumas customizações no shell (agradecimentos ao Douglas Andrade) e uso brew para instalar alguns pacotes (agradecimentos a quem me sugeriu remover o MacPorts e instalar o brew).

O banco relacional é o PostgreSQL. O banco de chave/valor é o MongoDB e a ferramenta de cache é o Redis. Só fugimos disso quando é requisito específico do projeto.

Uso o MacOSX-SSHMenu para memorizar e dar acesso rápido para servidores via SSH (ou gnome-sshmenu no Linux). Uso o SiteMonitor para monitorar o status dos projetos/servidores que mantenho.

Uso o Chrome como navegador padrão e ChromoDoro para cronometrar o tempo de trabalho/pausa. OpenDiff para fazer merge.

6. Editores

Meu editor predileto há 13 ou 14 anos é o vi e seus variantes (quem usa Emacs e TextMate é fresco, hehe...). No Mac uso MacViM, no Linux e Windows uso gViM.

Para Cocoa, seja com ObjectiveC, seja com Python, uso XCode.

Para imagens uso Gimp e Inkscape.

7. Aplicativos de produtividade

O Google Docs é de longe a ferramenta que mais usamos para redigir textos e rascunhos, sejam contratos, requisitos, projetos, anotações em geral, contas, tarefas administrativas, etc. Temos também uma ferramenta própria para tarefas administrativas e coisas semelhantes.

Usamos o Assembla para gerenciar e armazenar projetos proprietários e tickets e o FreshBooks para time tracking e geração de invoices. GitHub para projetos abertos.

Google Calendar para organização do tempo e agenda em geral, Gmail como cliente de e-mail principal e o editor do Google Maps para organizar viagens em geral.

Das ferramentas desktop, uso o Go OpenOffice para o que o Google Docs não consegue resolver com a qualidade que preciso (propostas e apresentações, por exemplo). Recentemente comprei o KeyNote e Pages para usá-los no lugar do OpenOffice para esses casos. Vamos ver como vai ser :)

DropBox e Amazon S3 para backups.

Uso o Mail.app para e-mails de servidor próprio. QuickSilver para acesso rápido às aplicações. Colloquy e Skype para reuniões com colegas e clientes.

E muito post-it colorido na tela.

Fim

Bom, as ferramentas "padrão" são essas aí, mas claro que dependendo do projeto a gente muda de ferramenta ou seja lá o que for.

Minhas telas abertas num dia típico: