Fork me on GitHub

Viagens, opiniões e afins

by Andre Fonseca


Despertar de uma nova consciência.. será ?

No post anterior, contei um pouco sobre algumas das conversas que vemos tendo dentro da nossa cerveja semanal, o #horaextra.  Recapitulando, existe um pessoal que sempre que pode se reúne as segunda-feiras para tomar um chopp e colocar os assuntos em dia. Essa galera totalmente GEEK e apaixonada por que fazem  não consegue se desligar do assunto tecnologia, comunidade, etc. Um dos temas recorrentes nos últimos encontros, trocas de e-mail, chats, e diversas outros meios de comunicação, tem sido a questão do empreender.
Empreender, em minha humilde opinião, é ter uma ideia e coloca-la em prática. Não como um sonhador, mas com os pés no chão: analisando a viabilidade, validade, consistência, mercado, etc.  Os empreendedor é um ser especial que segundo o Wikipedia defini-se:
… aquele indivíduo que detém uma forma especial, inovadora, de se dedicar às atividades de organização, administração, execução; principalmente na geração de riquezas, na transformação de conhecimentos e bens em novos produtos – mercadorias ou serviços; …
De certa forma, empreender é gerar riqueza; buscar riqueza. Acredito que também aí exista um idealismo, algo maior que só enriquecer:  exista um desejo de criar e realizar. Porém, no final, quando tudo mais se dissipa, empreendemos na busca de ganhar dinheiro. Assim é de se esperar que alguém que busque dinheiro seja alguém que jamais irá gastar o seu tempo em fazer algo que não seja dentro do seu foco: Lucro. Num preconceito somos levados a crer que o empreendedor dificilmente fará algo somente por ajudar o outro.
Qual não a minha surpresa, já que também tenho esse preconceito a respeito de quem empreende,  quando ouvi uma proposta de negócio em que o mote é de ajudar outras pessoas com seu negócio, servir de encubadora, fomentadora. Sim, isso mesmo que você leu. Um negócio para ajudar os outros a realizar seus negócios. E antes que alguém diga – “Ah tá, os caras estão afim de criar um consultoria.. algo para ganhar dinheiro” –  quero avisá-los que tudo isso seria feito sem custo.
Confesso que consigo até ver alguém lendo isso e dizendo – “Esses caras são loucos. Devem ser todos aqueles socialistas de barbas longas com camisa do Che “. Bom, nada disso meu caro. Todos que estão embarcando nessa oportunidade são pessoas que também querem enriquecer, ganhar dinheiro, etc.  A questão está mais ligada a COERÇÃO. Segundo o dicionário on line que consultei, o significado da palavra é:
Ato de coagir. Render, forçar a fazer.
Aqui, segundo o Henrique Bastos, quem cunhou o termo na discussão, COERÇÃO tem mais a ver com a questão do meio, o contexto, levando as pessoas as realizarem algo. Na medida que promovemos as iniciativas das pessoas, mesmo sem cobrar por isso, estamos de certa forma alterando o ambiente. Recriando o clima tornamos “a terra fértil” para todos. Seria como se todos colaborássemos no plantio, no final, essa mudança facilitaria e propiciaria o plantio de todos. Ai que está a ideia revolucionario. Doando parte do nosso tempo, acabamos não só ajudando alguém como nos ajudando também. Isso fica claro quando pensamos em Open Source. Ao contribuir, você ganha em aprendizado  e experiência e com isso se torna mais preparada para quando for trabalhar.
É puro small acts na veia.
Published by Andre, on setembro 10th, 2010 at 12:39 pm. Filled under: agil,atualidades,Sem categoria1 Comment

Diário de bordo deste últimos tempos

Nesses últimos tempos tenho estado distante do blog mas foi por um bom motivo acreditem.  Estou numa nova empresa, a Globo.com, e lá venho tendo diversos desafios. Dentre esses diversos desafios, um deles tem sido o uso de novos tecnologias bem longe da minha zona de conforto que é o Java.

Para os que acompanham o blog a um certo tempo pode soar como repetitivo porém é válido dizer que de um bom tempo até então tenho procurado aprender novas coisas. Confesso que tenho sentido na pele o peso do ditado “não se ensina truque novo a cachorro velho“. Não sou tão cachorro velho assim (tenho apenas 30 anos)  embora esteja na estrada a muitos anos. Com isso, ganhasse uma certa falsa tranquilidade de estabilidade. A verdade meus amigos que nada é garantido e nos dia de hoje que não estuda (constante aprendizado) está fadado a morrer num curtíssimo intervalo de tempo.

Não se ensina truque novo a cachorro velho

Bem, para não gastar energia em muitas coisa e no final não conseguir chegar a lugar nenhum, resolvi focar. Taí uma boa dica para a galera: foque.  Essa situação presente de que temos que saber de tudo, tem feito um nó na cabeça de todos. Temos que ser bons em tudo. Calma.  A maior qualidade que admiro numa pessoa é sua capacidade de aprender. Não gosto daqueles caras que chegam dizendo que sabem tudo e que vomitam um monte de sopa de letrinha. Geralmente basta que se aprofunde um pouco no assunto que eles revela a sua pouco profundidade em tudo.

Prefiro pessoas que tenham noção das coisas e  capacidade para ” se virar”, ou seja, capacidade para aprender aquela determinada tecnologia ou qualquer coisa correlata.  Mas não se esqueça de focar. Porque foco?

Infelizmente nós seres humanos não somos multithread. Sendo assim, é preciso tratar um coisa de cada vez, em fila.Querer estudar um monte de coisa ao mesmo tempo gera confusão e no final terá gasto um tempo enorme e terá apenas noção daquilo.Volto a dizer que admiro a pessoa que tenha um horizonte amplo mas precisamos ser mais “especialista em algo”.  Por isso foco.

É legal ter foco. Evitar lidar com muitas coisas ao mesmo tempo. Fazer uma coisa de cada vez até o fim

Tendo em mente isso, resolvi focar em Python. Python é uma excelente linguagem. Poderosa, permite fazer muitas coisa com um simplicidade franciscana.  Exemplos: temos excelentes ferramentas gráficas em python, Django, Web2py, e por ai segue.

Quiz a vida brincar um pouco comigo e com isso cai num projeto novo onde tudo está sendo feito em Ruby on Rails.  Confesso que foi uma loucura no início. Mas agora estou adorando, pois está sendo uma excelente oportunidade de conhecer a funda Ruby e o Rails, coisas sobre as quais sempre escutei muito.

O Ruby é um experiência nova que vai muito além do uso de um nova linguagem: é experimentar um novo forma de encarar a questão de desenvolver uma aplicação.  Tudo em Ruby – veja os códigos de coisas feitas em Ruby no github – parece ter um cuidado especial para que fique bonito. Quando falo bonito, não me refiro somente o produto final, estou falando também e inclusive do código.

São implementações que sempre primam pela legibilidade, pelo beleza (isso mesmo) do código. Tudo parece conspirar nessa direção. Veja um exemplo:

3.time verifique_saldo

Isso é tão emblemático que tem sido copiado para outras plataformas e linguagens. Um bom caso é o Grails.

Bem vou ficando por aqui pois a família me chame e reclama um pouco por minha atenção. Até a próxima.

Published by Andre, on junho 15th, 2010 at 8:53 pm. Filled under: Sem categoriaNo Comments

Shu Ha Ri

Shu Ha RI

Published by Andre, on maio 31st, 2010 at 7:49 pm. Filled under: Sem categoria Tags: , No Comments

“martelo é para pregar e não apertar parafusos”

Uma das coisa que escutei e sempre repeti por realmente acreditar que faça sentido é que, existe a ferramenta certa para cada tipo de trabalho.  Não adianta acreditar que aquela “paradinha” maneira que você conhece de “traz para frente”  vai ser a melhor solução para todos os seu problemas, pois simplesmente como uma verdade absolut, ela não será e quem a criou sabe disso. Note que eu disse – “não será a melhor opção”- e não = “não resolverá ou não fará”.

Acredito que todas a novas linguagens são capazes  de resolver a grande maioria de nossos problemas computacionais atuais.  Em raríssimos casos poderemos apenas usar uma determinada linguagem…muito mais por requisitos de processamento, velocidade e etc do que capacidade daquela linguagem. Falo isso, pois cansei de ouvir gente dizer que a linguagem B não é capaz de fazer o que a linguagem C faz. Ela faz sim, só que de uma forma mais complexa ou mais verbosa, por exemplo.

Sei que tocar nesse assunto é meio “chover no molhado” por ser este um tema muito falado e batido, porém, gostaria de dar uma visão real disso.  Imagine você numa situação em que precisar fazer um sistema. Este sistema possui várias facetas: uma parte para cliente, outra que ficará com um processamento em batch (background), etc. Já tive requisitos como estes em diversas oportunidades e em cada uma delas foi uma solução adotada.  Posso dizer que o pior dos casos foi quando tentamos usar a mesma “estrutura” para tudo.

Imagine que agora você comece a aplicação para os requisitos acima e faça tudo dentro de um servidor de aplicação. Aquela típica solução Java, onde um dentro do JBoss ou outro esteja tudo… Ali estão a lógica do sistema web, os processamentos em batch agendados via Quartz, etc.  Imagine também que isso tudo estará dentro de um servidor Linux (qualquer distribuição que seja)  - coisa bem factivel.  Dái começo a colocar algumas perguntas:  se todo sistemas linux tem um Cron (serviço de agendamento) por que usar algo feito em java para fazer a mesma coisa? Se argumentarem que é para garantir a independencia de plataforma, pergunto qual são as reais possibilidades de mudar a plataforma (SO, etc) ?  Com certeza que bastante remotas.

Esse tipo de coisa pode ser ainda mais extrapolado. Imagina agora que dentro do seu sistema é preciso processar diversos conteúdos de arquivos e importar seus dados para a base de dados do sistema. Muito fariam uma classe para que você fizessem um upload e processar. Mas não seria mais interessante deixar que alguém carregue via ftp e um processo agendado trate-o depois. Esse processo poderia ser algo escrito em bash mesmo pois será ultra rápido em comparação a uma aplicativo java. Mais uma vez aqueles xiitas diriam que seria para manter a questão da independencia de plataforma, mas quantas vezes sua web app mudou de servidor (SO, hardware, etc) nos últimos anos?

Se ousarmos um pouco mais, dada as recente evoluções da JVM (Java Virtual Machine)  as possibilidades vão além de usar o sistema operacional. Hoje é possível escolher em qual linguagem irá escrever cada parte de seu sistemas e estas coexistirem sem nenhum problema.  Antes que pensem que isso é um discurso de incentivo ao uso de Java, linguagem da qual gosto, estou usando esse ela como exemplo por ser um bom exemplo de como isso funciona e tem sido alvo de investimento.

Famosos produtos tem usado uma “tecnologia” para fazer a parte de integração com usuário e outra para fazer toda a parte de Kernel do sistema. Acredito que o Twitter seja um exemplo disso, pois sua parte de interna foi toda reescrita em Scala (nova linguagem objeto- funcional da JVM) .

Voltando a parte prática da coisa, um exemplo de  que é bom conhecer diversas ferramentas e saber empregá-las, é um caso num empresa que era preciso fazer medições de audiência em páginas. A solução inicial era de conteúdo dinamico em todas as páginas que quando acessadas iriam no servidor e gravavam um dado no banco de dados. Essa solução embora resolvesse o problema, ela acabava por onerar por demais o processamento pois tal parte não poderia ser posta em cache e a cada acesso, haveria uma requisição no servidor e um acesso ao banco de dados. O pessoal então passou para algo mais hibrido e pouco ortodoxo para época:  fez uma modificação para que o servidor colocasse no arquivo de log os dados de quem estava acessando e construiram um programa em shell para analisar esses logs. Com isso, embora não tivessemos um “tempo real” dos acessos, para os nosso requisitos de estatísticas serviu perfeitamente e reduziu a carga e o processamento, deixando para uma outra tecnologia que lida melhor com busca via regex fazer o trabalho dela.

Essa solução não sei se funciona ainda, acredito que com saida da terceirizada que fez da empresa tenha sido tirado,  mas foi uma marca para me mostrar que existem outras possibilidades além daquela que eu sabia na época. É isso que conta. E num mundo cada vez mais competitivo é importante ter mais de uma “carta na manga”.

Bem até a próxima pessoal.

Published by Andre, on abril 11th, 2010 at 1:56 pm. Filled under: atualidades,eventos,Groovy,Java,novidades,python,ruby,Scala,Sem categoria Tags: , , , , , No Comments