Categories
Etc.

Meu ambiente de trabalho em 7 itens

O Anderson Casimiro (@duodraco) começou um meme muito legal: “Seu ambiente de trabalho em 7 itens”. Nele você escreve sobre quaisquer 7 coisas do seu ambiente de trabalho que achar mais interessantes e em seguida indica de 3 a 5 pesoas para fazerem o mesmo. O Anderson passou o meme para o Ivo Nascimento (@ivonascimento), que depois mandou para o Bruno Roberto Gomes (@brgomes) e por fim para o Hélio Costa (@hlegius) que me colocou nesta roda.

Então vamos lá, as 7 coisas que mais gosto e acho importantes no meu ambiente de trabalho são:

1) Git + Github

O Git é uma fantástica ferramenta de controle de versão. Sua característica principal é ser um sistema de controle de versão distrubuído, o que significa que você pode criar repositórios locais independentes de um servidor central, por exemplo. Com isso você pode criar facilmente novos branchs e repositórios praticamente sem custo (ou seja, muito rápido). Outra coisa sensacional é que o Git praticamente resolve sua vida com relação a merges. Na maioria das vezes ele consegue “se achar” sozinho e resolver conflitos para você, o que poupa um bocado de tempo quando você está trabalhando em equipe com várias pessoas alterando a mesma base de código.

O Github faz o Git – que ja é fantástico – ficar ainda melhor. O Github mudou para melhor a forma de colaboração entre desenvolvedores em projetos open source. Basta você criar um clone remoto do projeto que deseja contribuir, fazer suas alterações e fazer um “pull request”. Você pode adicionar colaboradores nos seus repositórios ou até mesmo criar um time de colaboradores. Isso é mais ou menos o que as pessoas já faziam antes, o Github apenas entendeu esse processo e criou uma ferramenta excelente para suportá-lo com algumas melhorias. E isso tudo não serve apenas para projetos abertos não, você pode fazer como eu (e muita gente) e por alguns míseros dólares você terá seus repositórios privados para trabalhar nos seus projetos particulares. Hoje basicamente não tenho nada importante que não esteja no Github.

2) Google App Engine

O Google App Engine também é um absurdo. Com ele você pode desenvolver aplicações Python ou Java num estalar de dedos e colocá-las para funcionar numa infraestrutura bastante confiável e rápida. O App Engine oferece banco de dados, cache, storage e várias coisas úteis que te ajudam a focar na sua aplicação e esquecer a infraestrutura. Para os Railers que lêem este blog, o Heroku é um bom quebra galho (mesmo sendo bem mais simples que o App Engine).

3) VMWare Fusion

O VMWare Fusion me possibilita ter vários sistemas operacionais com diferentes browsers para testar minhas aplicações web em uma máquina só. Além disso, como trabalho muitas vezes desenvolvendo coisas que serão servidas com Red Hat Enterprise Linux ou CentOS, posso facilmente criar ambientes de desenvolvimento locais com esses sistemas operacionais e continuar trabalhando no conforto do meu Mac sem ficar com medo das coisas não funcionarem em produção.

4) TextMate

Todo mundo tem seu editor preferido, e o meu é o TextMate. Gosto dele porque é leve, fácil de escrever plugins e snippets e possui umas centenas de plugins disponíveis por aí para trabalhar com qualquer linguagem que já precisei até hoje, suportar sistemas de controle de versão, e por aí vai. Infelizmente não consigo usá-lo para todas as linguagens que trabalho. Por exemplo, quando programo em Java ainda prefiro usar o Eclipse, ou o XCode para brincar com iOS, mas para todo o resto uso o TextMate (ou, quando em servidores remotos, o Vim).

5) Shell

Não tem como sobreviver sem um shell. Eu costumo usar o Terminal do Mac OS X com algumas customizações, e como shell uso o Bash. Além de me possibilitar diagnosticar problemas em servidores remotos, ver logs e etc., também uso o shell para algumas tarefas de desenvolvimento como usar o Git (incluindo resolver conflitos, prefiro fazer manualmente), buscar arquivos, inspecionar minha máquina e por aí vai. Também costumo escrever shell scripts para fazer algumas tarefas pessoais como codificar vídeos com ffmpeg e fazer backups remotos.

6) MacBook + Mac OS X

Os Macs são computadores que simplesmente funcionam. É isso. Meu MacBook Pro é potente e tem um hardware excelente que não me deixa na mão. E quanto ao Mac OS X, ao invés de ficar no meu caminho me pedindo drivers para fazer qualquer coisa ele simplemente funciona e deixa o caminho livre para que eu possa trabalhar. Já se foi a época em que eu tinha tempo para comprar peça por peça e montar meu próprio computador, ou então ficar re-configurando meu xorg.conf a cada update de sistema operacional. 🙂 Hoje não dá mais, preciso focar em coisas mais importantes.

7) Monitor adicional de 24″, teclado e mouse

Nós que trabalhamos intensivamente com computadores não podemos nos dar ao luxo de não ter um teclado, mouse ou monitor confortáveis. O monitor de 24″ é o mais importante do meu setup de trabalho. Usar dois ou mais monitores me deixa muito mais produtivo, além de ser muito mais confortável do que o display do MacBook (porque é gigante). Se você nunca tentou usar dois monitores, não perca mais tempo e tente agora, você vai ver a diferença. Quanto ao mouse e teclado, durante muito tempo usei hardware Microsoft (aliás, isso eles fazem bem) mas recentemente tenho usado o Magic Mouse e um mini teclado sem fio, ambos da Apple.

E para continuar a brincadeira…

Indico mais 5 pessoas para participar:

Categories
Google Microsoft

Será que é tão bom assim trabalhar no Google?

Todo mundo já deve ter lido em vários lugares vários motivos para querer trabalhar no Google. Mas até agora ninguém havia escrito nada sobre as coisas ruins de se trabalhar lá.

Eis que acontece o seguinte: pelo que eu entendí, um fulano que trabalhava para a Microsoft saiu da empresa para montar uma startup. Essa startup foi comprada pelo Google e conseqüentemente o cara virou funcionário do Google. Depois de um tempo esse cara foi contratado novamente pela Microsoft. Quando ele foi re-contratado, ele falou sobre suas experiências no Google comparando com as experiências que teve na Microsoft.

Então o contratador resolveu divulgar para a empresa toda (Microsoft) a opinião do ex-Google, e um anônimo pegou este e-mail interno da Microsoft e criou um blog anônimo falando sobre algumas coisas não tão boas sobre o Google e que ninguém até agora havia comentado.

Será que é verdade mesmo?

Categories
Engenharia de software

Programadores ou apertadores de botão?

Ontem estava conversando com uns amigos sobre os novos programadores que estão surgindo por aí, especialmente os que usam o Visual Studio .Net. O Visual Studio nem parece que foi feito para pessoas que sabem programar. Muitas vezes não dá para fazer certas coisas programando código mesmo, você é obrigado a usar um dos milhares de wizards da ferramenta.

Um dos meus amigos estava contando que quando ele começou a programar estava precisando colocar um combo box numa página e os itens deste combo precisavam ser lidos de uma tabela do banco de dados. Ao procurar na internet para descobrir como isso era feito, as únicas referências que ele encontrou eram de wizards! Simplesmente ele não conseguia encontrar uma página que mostrasse o código para fazer o que ele queria.

Eu ainda não tirei minhas conclusões definitivas sobre isso. Ás vezes eu acho que as pessoas estão ficando preguiçosas, ás vezes eu acho que falta mesmo qualificação para os programadores e ás vezes eu acho que é tudo isso ao mesmo tempo. Ultimamente a quantidade de gente desse tipo tem aumentado muito por aí. As novas ferramentas de desenvolvimento estão tornando os programadores em apertadores de botão!

Programar é uma atividade intelectual que exige conhecimento técnico (linguagens, plataformas, sistemas operacionais, tecnologias), conhecimento específico sobre o negócio para o qual o sistema é desenvolvido, capacidade de resolver problemas e criatividade. Quanto mais as pessoas se preocuparem em aprender sobre ferramentas ao invés de tecnologias e práticas de desenvolvimento, mais vão surgir os apertadores de botão e as características acima vão sendo substituídas por conhecimentos de wizards, opções da ferramenta e botões diversos que fazem coisas mágicas.

Na semana passada saiu um artigo na Artima entitulado Visual Development versus Coding que fala exatamente sobre isso.

A opinião do David Intersimone é a mesma que a minha: é muito legal ter ferramentas visuais para te ajudar a fazer as coisas, note bem, para AJUDAR. Mas se você precisar (e vai), você tem que saber codificar.