Marco Gomes

Criador da boo-box. Empreendedor dedicado, nerd veterano, interneteiro profissional, cristão aprendiz, fotógrafo amador, marido apaixonado.

Textos marcados como ‘trabalho’

No Mac OS X os programas não são janelas

Uma das principais diferenças pra quem migra de Windows ou Linux pra computadores Apple com Mac OS X[bb] é a diferença no conceito de janelas. No Windows, Gnome e KDE, o programa é uma janela. No Mac OS X, o programa pode ter uma ou mais janelas, ou não.

Acredito que este conceito é herança das idéias de Jef Raskin[bb] para o projeto Machintosh, onde a interface não teria janela alguma, e os aplicativos poderiam ser usados em qualquer lugar. Se eu quisesse usar os recursos de edição de foto enquanto edito um documento, poderia fazê-lo, assim como usar a calculadora no meio de um chat com um amigo, por exemplo.

No Mac OS X, os aplicativos podem ter janelas, mas se você fecha a janela, o progra ma continua rodando, normalmente. Quando eu abro o navegador Safari, automaticamente uma janela é exibida, se eu fecho esta janela o programa continua em execução. O mesmo para qualquer outro programa, como Mail, Address Book, Firefox.

Com isso você pode ter cliente de e-mail, torrents, musica, gerenciador P2P, instant messenger, dois navegadores Web e calculadora sem quem nenhum deles ocupe espaço na sua área de trabalho com janelas ou atalhos na barra de ferramentas.

A desvantagem é que se você não se cuidar, pode deixar muitos programas abertos e consumir toda a sua memória RAM com aplicativos que não estão sendo utilizados.

Eu particularmente gosto muito do modo como o OS X gerencia as janelas, me deixando livre pra ter vários aplicativos abertos sem que eles ocupem espaço na minha área de trabalho. Porém, já vi vários usuários pouco cuidadosos com Photoshop e Flash abertos sem necessidade, assim não tem 4 GB de RAM que aguente.

Gravei um vídeo que explica este conceito:

Produtividade pra programadores

Algumas semanas atrás o Diego (Tableless) Eis me encaminhou uma cópia do documento sobre Produtividade que o Élcio Ferreira escreveu, onde ele fala sobre montagem de bicicletas, construção de software e qualidade de código.

Veja bem: Eu recebi o documento, de graça, pra escrever sobre ele aqui no blog, não recebi dinheiro e não alterei minha opinião só porque recebi de graça, cada palavra que você lê aqui é sincera e não pode ser comprada. Se você está incomodado com essa atitude, pare de ler o post agora e me xingue por email. É bom que eu saiba quantos leitores meus condenam este tipo de prática.

Ele fala um bocado de coisas que eu, Marco Gomes, já sei, como conceitos da Web 2.0, Padrões Web, AJAX e JSON, isso é praticamente metade do documento. É bom pra introduzir o assunto a quem está completamente fora desde mundo ou nunca trabalhou com conceitos mais modernos da Web.

O que mais valeu a pena, na minha experiência de leitura, foram os capítulos sobre Programação Pragmática, Não Repita a si Mesmo (DRY), Ortogonalidade (Desacoplamento) Tracer Code, Desenvolvimento Orientado a Testes (TDD) e Controle de Versão.

Programação Pragmática[bb] é um conceito/filosofia/mentalidade/religião que vem me conquistando cada vez mais nos últimos dias. Nas palavras do Élcio:

O programador pragmático é, antes de tudo, um inconformado e um otimista. Ele não consegue repetir dezenas de vezes a mesma tarefa sem se perguntar se há uma maneira melhor. Ao mesmo tempo, ele acredita que há maneiras melhores, e que ele pode desenvolver uma.

[...]

O programador pragmático não se contenta em conhecer uma solução, uma linguagem e um jeito de aprender a fazer as coisas.

[...]

Outra atitude do programador pragmático é a responsabilidade. Ele não se contenta em sentar-se em seu cubículo e esperar por tarefas de programação, mas entende que é parte do seu trabalho envolver-se em todo o processo de desenvolvimento.

Significa que ele nunca vai dizer coisas como:

_ Não fiz backup do código, isso é responsabilidade do departamento de infra-estrutura. (Não importa de quem é a culpa, você vai ter que fazer de novo.)

_ Eu imaginei que isso não ia funcionar, mas o cliente quis assim. Ele assinou uma aprovação para o desenvolvimento disso. (Você viu o problema e não disse nada?)

_ O framework que nós compramos não fala com as versões antigas do nosso banco de dados. (Sim, e?)

Isso é só uma pequena amostra, se você se interessou por este pequeno pedaço, compre o PDF completo.

Estes conceitos de programação pragmática e produtividade já foram usados em meu mais novo projeto, a integração boo-box + WeShow, que ainda não foi publicada mas vai entrar no ar em breve. Veja no blog boo-dojo como eu conduzi a implementação da parte client-side do projeto.

Além disso, eu também já escrevi sobre produtividade pra instruir uma equipe que eu coordenava no meu emprego anterior, é um documento bem antigo, mas que contém muita coisa boa.

Saiba mais sobre programação pragmática

Produtividade: Simplicidade e Foco

Em um mundo onde os prazos são curtos, os objetivos ambiciosos e os recursos limitados, como mover o mundo com apenas um ponto de apoio e uma alavanca?

Ao longo de minha experiência como desenvolvedor e líder de equipes de desenvolvimento web, aprendi que o caminho mais fácil pra produtividade é: retirar tudo que não for essencial e se concentrar no objetivo.

Simplicidade

Um artigo do Zen Habits, comentado pelo Sérgio F. Lima, diz que você deve tirar tudo que “for possível”, quando nada mais puder ser retirado, aí sim você pode começar a organizar.

Atingir a simplicidade é menos fácil do que parece, constantemente me pego discutindo sobre o porque a boo-box não deveria ter “aquele recurso tão legal”. O mesmo com qualquer outro projeto, como o Wallpapr e os novos produtos da empresa.

Ser simples sem deixar pedaços faltando é uma habilidade que venho exercitando, tirar tudo é fácil, manter apenas o necessário não. Se perguntar se a ferramenta precisa de um recurso é complicado, porque você, que é especialista na ferramenta sempre tem mais habilidade pra manuseá-la que qualquer outro usuário, logo, teria facilidade pra absorver o novo recurso. Mas pense no novo usuário, que não quer se preocupar em aprender mais uma ferramenta, ele precisa do recurso novo? Interface boa é que não exige que o usuário pense pra utilizá-la.

A simplicidade é importante na produtividade porque é retirando toda a gordura que você consegue reduzir seu projeto de modo que ele caiba no prazo. Costumo dizer que é possível entregar qualquer produto em qualquer tempo, tudo depende de quantas partes você vai retirar pra cumprir o prazo.

Foco

Um dos maiores problemas que encontro em equipes de desenvolvimento é a falta de foco. Explico: O programador pega um projeto, ao invés de começar pelo início ele vai logo fazendo o final (que normalmente é a parte que ele mais gosta), depois, faz uma parte do meio, seguido do final do início, depois faz umas coisinhas de um outro projeto e volta novamente pro projeto inicial, fazendo o final do meio, logo depois faz o início do final… O prazo acaba e o projeto está embolado, com várias partes soltas completamente inúteis e “só falta integrar o componente de controle de usuários com o gerenciamento de produtos usando um Web Service, coisa simples” mas nunca fica pronto.

Se concentrar no trabalho e esquecer o resto do mundo pode ser muito difícil pra algumas pessoas. Instant Messengers, Twitter, excesso de janelas e programas abertos, alertas em tempo real pulando na sua frente e apitando sempre que chega um e-mail ou um contato fica online, podem ser a bomba atômica da sua produtividade. Desarme-os.

Além disso você pode se pegar distraído por excesso de objetos em sua mesa, excesso de poluição visual em seu campo visual, celular apitando, pessoas conversando, barulhos de TV. É possível eliminar todas essas distrações e, mesmo que você jure que elas não atrapalham existem estudos (e minha experiência própria) comprovando que tudo influencia seu subconsciente, alterando seu estado de tranquilidade e melhorando ou piorando seu poder de concentração.

Ferramentas

Tão importante quanto limpar seu ambiente de trabalho é limpar sua mente, tenha sempre em mãos um lugar em que possa despejar qualquer idéia/tarefa que de repente pipoque em sua cabeça. Se livrar das distrações mentais na hora que elas aparecem é importante pra que você não fique se torturando: “tenho que lembrar de pagar a conta de luz, tenho que lembrar de pagar a conta de luz”.

Um dos meios que consegui pra me livrar de distrações mentais é usar a metodologia GTD do David Allen[bb], cujo princípio é exatamente este: Guarde seus lembretes em um sistema confiável na hora que eles aparecem na sua mente, assim seu cérebro fica livre pra produzir sem distrações novamente. Mas esse é apenas um dos meios, e eu nem sigo tão à risca assim. Se quiser saber mais sobre GTD pesquise na Web e compre o livro[bb].

Quando quis passar a guardar minhas tarefas em um sistema, fui testando várias ferramentas diferentes que pudessem se adaptar à metodologia GTD: blocos de papel, Remember The Milk, Things, e-mail, iGTD.

Os blocos de papel são bons se aliados a outras ferramentas, na rua usa o papel e em casa coloca num sistema digital. Se mantidos apenas em blocos de papel suas tarefas podem se perder no tempo, e pode ficar extremamente difícil achar alguma coisa após algumas semanas. Papel não funciona bem no longo prazo.

Ferramentas cheias de recursos como o Remember The Milk, Things e iGTD confundem sua cabeça, não importa se você usa Photoshop, um Home Broker ou Eclipse pra trabalhar, pra coletar e organizar tarefas a interface não pode ser cheia de botoes, modo de visualização em tabela ou lista, organizadas por prioridade, data, nome, projeto… Isso tudo só atrapalha.

Os programas supracitados funcionam muito bem pra várias pessoas, mas pra mim não deu, muita complicação me fazia querer criar a tarefa já com projeto, prioridade, data, tags, isso matava completamente minha produtividade. O recomendado é simplesmente criar uma pequena sentença que te faça lembrar o que fazer “enviar e-mail pro Navarro perguntando como estão os ganhos com a boo-box” pronto, depois eu coloco ela no projeto certo, insiro tags e prioridade, mas na hora em que lembro da tarefa só preciso guardá-la em outro lugar pra ela parar de me atrapalhar, assim volto a pensar no código JavaScript que estou escrevendo.

O melhor meio que encontrei foi o texto puro, sim, arquivinho de texto, simples, com acesso rápido na barra de ferramentas do sistema operacional. São três arquivos segundo o contexto:

  • boo-box: tarefas e projetos relacionados com o não-trabalho :)
  • marcogomes: projetos e tarefas da vida pessoal, Wallpapr, envio de coisas pelo correio, lista de compras, moradia etc.
  • check: todos os artigos que tenho que ler na Web, sempre que encontro um artigo que merece ser lido eu coloco neste arquivo, assim ele incha sem poluir meus outros contextos com artigos, esta é a maior lista.

Quando preciso anotar algo, abro o arquivo certo e anoto, mais tarde organizo.

A sintaxe dos arquivos:

Wallpapr:
- implementar permalink @done
- corrigir, how many *do* you want
- Linkar as imagens pra main photopage

Publicar diff do Zuardi:
- implementar diff http://moourl.com/b4ek8
- anunciar no blog @blog

Projetos são seguidos de dois pontos, tarefas precedidas por hífen, identação significa subprojetos, tags são inseridas no final começando com arrouba. Pronto, simples assim, nada mais.

Pra editar e gerenciar o arquivo estou usando o TaskPaper, que comprei no pacote MacHeist, facilita a edição e manipulação das tarefas sem complicar a interface. Porém, existe versão dele na Web e você, mesmo que não use Mac, pode usar qualquer bom editor de texto.

Nunca se prenda em rédeas, mais importante que ferramentas e metodologias é você se libertar das distrações e conseguir achar seu caminho para a iluminação produtiva =D

O ano em que parei de trabalhar

Arrume um trabalho que você goste e não precisará trabalhar um só dia em sua vida. – Confúcio

Faz 6 meses que eu não levanto com a sensação de: como eu queria dormir mais 10 minutos, desde que larguei meu emprego e resolvi mergulhar de cabeça na boo-box, parei de trabalhar e passei a construir.

Não há mais aquele pensamento miserável de: essa semana eu construi 3 sites de 400 mil reais cada um e meu salário tá na mesma, nunca mais tirei conclusões desmotivantes como: hoje vou trabalhar naquele projeto chatíssimo da loja de roupas do deputado Abomiraldo Fiponso, só porque ele vai colocar a empresa que trabalho dentro da Secretaria Pública de Finanças Secundárias.

Absolutamente tudo que faço tem impacto direto e visível na empresa, cada acerto e cada erro podem ser notados imediatamente. Isso tem sido tão excitante que não há mais “trabalho”, tudo se assemelha mais a um jogo onde cada ação conta diretamente no resultado da partida, só que a partida é minha vida (e de algumas outras pessoas), logo, não posso nem pensar em fracassar :)

Se você ainda experimenta essa sensação de droga, preciso ir trabalhar, reflita um pouco, peça uns dias de folga, ache algo que te satisfaça, não importa se é ser DJ na noitada ou cortar grama[bb]. Se o que te satisfaz é o que você faz atualmente, só que feito de outra maneira, converse com seu chefe sobre como gostaria de trabalhar. É possível ser profissionalmente feliz[bb] mesmo sem ser empreendedor, em minha opinião a chave pra satisfação se chama autonomia de: horário, execução, escolha de projeto.

Esse ano, graças a amigos que nos ajudaram desde o início do projeto boo-box, e às pessoas que acreditaram em nosso potencial pra mudar a maneira como o marketing é feito, consegui parar de trabalhar.

Agora vem a parte que parece encarte de CD:

Os meus agradecimentos pessoais podem ser divididos em partes

Com certeza eu esqueci um monte de gente, desculpaê!

Se 2008 for tão bom quanto 2007, e vai ser, vou surtar com tanta mudança de vida.

Ataque Ninja! Produtividade com times pequenos, ágeis e eficientes

Hoje aconteceu o primeiro dia do WebDevCamp São Paulo, houve apresentações de Fábio Akita on Rails, George Guimarães (Pagestacker), Manoel Lemos (BlogBlogs), Marco Gomes (eu mesmo :), e Mercado Livre.

[update 2007-12-01] Havia esquecido de avisar que (talvez) estarei transmitindo o evento ao vivo pelo canal WebDevCampSP do Ustream.tv, aparece lá pra ver se está rolando mesmo :) [/update]

Eu fiz uma apresentação sobre produtividade[bb] com times pequenos ágeis e eficientes, veja os slides abaixo:

Caso não consiga ler algum texto, principalmente dos meus “post-its” de lembrete (que não apareciam na apresentação ao vivo), clique em ver no SlideShare, depois no botão “Full” abaixo dos slides, com isso as telas vão ficar gigantes e você vai conseguir ler tudo.

Depois pretendo fazer uma breve transcrição do que comentei em cada slide… Ou não :)

[o - ] taligado? edição 01

Está no ar a primeira edição do podcast que faço com o Gilberto Jr, esta edição é somente sobre startups, empresas de tecnologia que estão começando, e temos um convidade muito especial: Elcio Ferreira, da Visie.

Ouça agora!