Riak, alta performance NoSQL para seu projeto
23 de Dezembro de 2012, 0:00 - sem comentários aindaEsse ano de 2012 ajudei a comunidade Riak que a cada dia esse banco de dados vem me surpreendendo. Estou para escrever um blogpost desde fevereiro, mas como vida de programador (pelo menos para mim esse ano) é agitada.
Resolvi falar sobre a performance nesse primeiro blogpost sobre Riak e colocar na mesa um teste (relativamente simples) para compara o tempo de inserção, realmente é um teste simples se tratando de NoSQL.
Antes de mostrar a comparação acho importante deixar claro as vantagens que temos em utilizar Riak:
- Disponibilidade: sistema de recuperação de dados onde trabalha de forma inteligente para que esteja disponível para ler e escrever operações, mesmo em ambiente com falha, assim garantindo a integridade dos dados;
- Tolerância a falhas: pode perder o acesso aos nós (Servidores Riak), devido à falha de rede ou partição de hardware e nunca perder de dados;
- Simplicidade de utilização: facil adição de máquinas em um cluster Riak, sem ocorrer uma carga nos servidores – isso em um pequeno grupo de servidores como uma grande quantidade de servidores Riak;
- Escalabilidade: Riak distribui automaticamente os dados ao redor do cluster e produz um aumento de desempenho quase linear quando você adicionar dados.
Depois de deixar claro os itens acima podemos colocar na messa o Riak e o grande MongoDB, lembrando que esse blogpost não é para falar qual NoSQL é melhor ou para você parar de utilizar um ou outro banco, Riak e MongoDB tem algumas características semelhantes, esse foi o motivo de colocar em teste os dois.
O teste foi simples preciso inserir 1 milhão (1000000) de registro no meu banco de dados, qual banco de dados entrega isso mais rápido para mim?
Código Python usando drive nativo do Riak:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
Código Python usano drive nativo do MongoDB:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
Um código simples onde faço um loop que vai de 0 a 1000000 (estou fazendo 1000001 inserção), e dentro de cada interação do loop estou gerando um registro no banco de dados. Veja abaixo o resultado:
1 2 3 4 5 |
|
Realmente o tempo de execução do Riak é muito mas muito rápido, o que me deixou mais surpreso foi o tempo do MongoDB, o MongoDB demorou 9 vezes mais comparado com o Riak.
Não estou falando que o MongoDB é ruim, ate mesmo que tenho projetos grande em produção usando ele e dependendo do projeto/infra recomendo usar MongoDB.
The post Riak, alta performance NoSQL para seu projeto appeared first on Thiago Avelino.
Palestra sobre London Framework na PyCon Argentina
20 de Novembro de 2012, 0:00 - sem comentários aindaNo começo de junho o Mariano (organizador do evento PyCon Argentina 2012, me fez um convite para ir palestra sobre London Framework (Framework criado por Marinho Brandão).
Nada melhor do que conhecer pessoas e principalmente culturas novas, entender o que os Argentinos estão desenvolvendo e o que anda estudando, ou seja, fazer network (como falamos na área de tecnologia). Dava para ver no rosto dos argentinos a vontade de aprender e de consumir o maximo de informação possível, na PyCon Argentina de 2012 teve uma ótima seleção de palestra, onde foi abordado temas como asynchrony (twisted), Plone (com Erico Andrei – Brasileiro), web2py (com Massimo Di Pierro – criador do framework), Python 3.3 (com Brett Cannon – Desenvolvedor Google) e muito mais.
Tive grande privilegio de palestra sobre London Framework, foi apresentado o motivo de criar um novo framework (Python) e hoje temos funcionando dentro do London. A repercussão foi muito positiva, recebi muitos tweets e e-mails de desenvolvedores querendo saber mais sobre London Framework, o que mostra grande aceitação e necessidade (semelhantes) do framework dentro da comunidade Argentina. Veja abaixo os slide da palestra de London Framework:
A pedidos da organização, fiz minha palestra em portunhol (tinha planejado apresentá-la em inglês, já que não sou fluente em espanhol). Pelas conversas de corredor, acredito que o público entendeu bem o meu portunhol!
No final do primeiro dia de evento tivemos uma confraternização, onde a organização da PyCon Argentina chamou uma pizzaria conhecida de Buenos Aires para fazer algumas pizza. A forma dos argentino preparar a pizza é bem diferente de nos Brasileiros, não querendo puxar sardinha para os Argentinos, é muito gostosa a pizza Argentina.
The post Palestra sobre London Framework na PyCon Argentina appeared first on Thiago Avelino.
Plone, por onde começar?
6 de Novembro de 2012, 0:00 - sem comentários aindaPlone é um CMS (Content management system, ou seja, sistema de gestão de conteúdo), no Brasil muito usado no Governo (saiba mais porque o Governo Brasileiro selecionou Plone como sistema de gestão de conteúdo, palestra do Giuseppe Romagnolli na Plone Symposium).
Por onde começa?
Como estou usando uma maquina Linux vou explicar como subir o Plone em ambiente Unix.
Iremos usar versão 4.2.2 (estável) do Plone, para começa precisamos baixar o source do Plone e descompactar:
$ cd /tmp/
$ wget --no-check-certificate https://launchpad.net/plone/4.2/4.2.2/+download/Plone-4.2.2-UnifiedInstaller.tgz
$ tar -vxf Plone-4.2.2-UnifiedInstaller.tgz
$ cd Plone-4.2.2-UnifiedInstaller
Antes de instalar o Plone precisamos instalar alguns pacote no Linux, como:
- python-distribute
- python-dev
- build-essential
- libssl-dev
- libxml2-dev
- libxslt1-dev
- libbz2-dev
- subversion
- git
- libjpeg62-dev
- libreadline-gplv2-dev
- wv
- poppler-utils
- python-imaging
$ echo "Instalar biblioteca Python"
$ sudo aptitude install python-distribute python-dev build-essential libssl-dev libxml2-dev libxslt1-dev libbz2-dev
$ echo "Instalar biblioteca de imagem"
$ sudo aptitude install libjpeg62-dev libreadline-gplv2-dev wv poppler-utils python-imaging
$ echo "Instalar controle de versão"
$ sudo aptitude install subversion git
Após a instalação das dependências do Plone, vamos começa a realmente interagir com o Plone. Agora precisamos instalar o Plone, existe dois modelo de Plone, um onde instalamos a instancia Plone e outra que instalamos um Cluster de ZEO (ambiente de produção que precisa isolar ZEO do Plone):
$ ./install.sh standalone
No final da instalação do Plone o mesmo vai retorna algumas informações importante como a senha do usuário Administrador do Zope, pasta que foi instalado o Plone, informações para suporte (da comunidade) e etc.
########################################################################################### Installation Complete ###################### Plone successfully installed at /home/avelino/PloneSee /home/avelino/Plone/zinstance/README.htmlfor startup instructions Use the account information below to log into the Zope Management InterfaceThe account has full 'Manager' privileges. Username: admin Password: xxxxxxx
This account is created when the object database is initialized. If you changethe password later (which you should!), you'll need to use the new password. - If you need help, ask the mailing lists or #plone on irc.freenode.net.- The live support channel also exists at http://plone.org/chat- You can read/post to the lists via http://plone.org/forums - Submit feedback and report errors at http://dev.plone.org/plone(For install problems, specify component "Installer (Unified)") avelino@SAO-NT-01072:/tmp/Plone-4.2.2-UnifiedInstaller $
Agora depois do Plone instalado queremos subir um site:
$ cd ~/Plone/zinstance
$ lltotal 600-rw------- 1 avelino avelino 316 Nov 6 17:53 adminPassword.txt-rw------- 1 avelino avelino 4161 Nov 6 15:11 base.cfgdrwxr-xr-x 2 avelino avelino 0 Nov 6 17:53 bin-rw-r--r-- 1 avelino avelino 3901 Oct 22 19:16 bootstrap.py-rw------- 1 avelino avelino 7498 Nov 6 17:52 buildout.cfg-rw-r--r-- 1 avelino avelino 4192 Oct 22 19:16 develop.cfgdrwxr-xr-x 2 avelino avelino 0 Nov 6 15:11 develop-eggs-rw-r--r-- 1 avelino avelino 686 Oct 22 19:16 lxml_static.cfgdrwxr-xr-x 3 avelino avelino 0 Nov 6 17:52 partsdrwxr-xr-x 2 avelino avelino 0 Oct 22 19:16 products-rw-r--r-- 1 avelino avelino 3490 Nov 6 17:53 README.htmldrwxr-xr-x 2 avelino avelino 0 Oct 22 19:16 srcdrwx------ 10 avelino avelino 0 Nov 6 18:17 var-rw-r--r-- 1 avelino avelino 9112 Oct 22 19:16 versions.cfg-rw-r--r-- 1 avelino avelino 1901 Oct 22 19:16 zopeapp-versions.cfg-rw-r--r-- 1 avelino avelino 1115 Oct 22 19:16 zope-versions.cfg-rw-r--r-- 1 avelino avelino 2517 Oct 22 19:16 ztk-versions.cfg
$ bin/instance fg
2012-11-06 18:59:47 INFO ZServer HTTP server started at Tue Nov 6 18:59:47 2012 Hostname: 0.0.0.0 Port: 80802012-11-06 18:59:47 INFO Archetypes2012-11-06 18:59:53 INFO plone.app.theming Patched Zope Management Interface to disable theming.2012-11-06 19:00:01 INFO Zope Ready to handle requests
Temos o Zope/Plone rodando na porta 8080 liberado para todos os IP de sua maquina, ao acessar o endereço no browser http://127.0.0.1:8080/ veremos esse site:
Precisamos criar um Plone Site, para isso basta clicar no botão “Criar um novo site Plone, após clicar você será redirecionado para uma pagina onde deve preencher com nome e titulo do site, abaixo dessas duas informações temos a lista de produtos (para quem vem de outro CMS geralmente é chamado de Plugin) instalados no Plone. Como estamos começando agora vamos deixar todos em branco e clicar em Criar site Plone.
Após clicar no botão você acabou de criar o seu Plone Site.
Agora basta você colocar conteúdo em seu Plone Site.
Comunidade Plone Brasil
No Brasil temos a comunidade PloneGov-BR.
The post Plone, por onde começar? appeared first on Thiago Avelino.
Comandos tmux (cheat sheet)
8 de Outubro de 2012, 0:00 - sem comentários aindatmux é um software que pode ser usado para vários consoles de multiplex virtuais, permitindo que um usuário acesse múltiplas sessões de terminais separados dentro de uma janela de um único terminal ou sessão de terminal remoto. É útil para lidar com vários programas a partir de uma interface de linha de comando, e para separar os programas a partir do shell do Unix, que começou o programa. Distribuído sob uma licença BSD.Segue abaixo um cheat sheet:
# tmux - terminal multiplexer
## Managing tmux sessions: $ tmux # start tmux server $ tmux at # attach running sessions to a terminal $ tmux ls # list running tmux sessions
## Sharing sessions between terminals: $ tmux new -s session_name # make new named session $ tmux at -t session_name # attach to exist session (allowing shared sessions)
## Commands (used within a running tmux session): c - create new window n/l - next/last window & - kill current window
% - split window, adding a vertical pane to the right " - split window, adding an horizontal pane below ←/→ - move focus to left/right pane ↑/↓ - move focus to upper/lower pane ! - Break current pane into new window x - Kill the current pane. d - detach the current client
[ - enter copy mode (then use emacs select/yank keys) * press CTRL-SPACE or CTRL-@ to start selecting text * move cursor to end of desired text * press ALT-w to copy selected text
] - paste copied text
? - show tmux key bindings
### NOTE:* All commands need to be prefixed with the action key.* By default, this is CTRL-b
The post Comandos tmux (cheat sheet) appeared first on Thiago Avelino.
Plone para desenvolvedores Python
30 de Agosto de 2012, 0:00 - sem comentários aindaSempre que uma pessoa vinha falar de Plone para mim eu não me sentia muito bem pois não conhecia e o pessoal que sempre conversei que desenvolvia em Plone e depois conheceu Django sempre falava que não valia apena mexer com Plone! Será que isso é realmente verdade?
Depois do que eu escutei o pessoal falando eu não queria nem saber desse cara chamado Plone, ate mesmo que para desenvolver uma solução de gerenciamento de conteúdo usando Django não é muito trabalhoso (Realmente era assim que eu pensava, mal eu sabia que estava completamente enganado). Como eu fiz para mudar esse preconceito que tinha?
Realmente para mim mudar esse pensamento foi preciso senta e conhecer a ferramenta, não foi um trabalho muito facil pois como já relatei vim de Django e para mim era preciso subir um ambiente relativamente parecido, mas é Plone e ele roda encima do servidor de aplicação Zope e isso é algo que eu não conhecia (apenas tinha uma ideia do que era mas o que é realmente não sabia) em fim, depois do esforço de conhecer o Zope e Plone achei bacana. Mas achar bacana e colocar em produção é bem diferente.
No começo de agosto assumi um cargo de lider tecnico da tv1.com, eis que surge uma demanda gigantesca pois atendemos muitos sites do Governo Brasileiro, tais como:
- Portal Brasil
- Secom
- Planalto
- Biblioteca da Presidencia
- Emquestão
- entre outros…
Todos os sites é em Plone, e por esse motivo tive que estudar ainda mais do que estava estudando…
Semana passada Liz Leddy e Nejc Zupan (dois desenvolvedores Plone) estava no Brasil para participar do evento Plone Symposium South America e Caipirinha Sprint (um dos melhores sprint que participei).
O sprint foi muito bom fiquei surpreso com a qualidade do código que o Plone tem e como o pessoal leva a escrita de teste unitario e teste funcional a serio, o que posso falar é que 100% do código Plone tem cobertura de teste (se você que ver com os seus proprio olhos aqui explica como rodar os teste com coverage).
Bom o que posso falar mais é que agora sou um core commiter do Plone:
Bom nós desenvolvedores (Python) temos mania de criticar (ter preconceito) ou não ter uma iniciativa para estudar uma nova tecnologia, o que posso falar para essas pessoas (eu realmente sou um desse) é: Conheça para depois tomar suas propria decisão, se você acha que um projeto pode ser mais simples ou melhor em um ponto especifico, não esqueça que você desenvolvedor (Python) tem capacidade de ajudar um projeto open source.
The post Plone para desenvolvedores Python appeared first on Thiago Avelino.
Proxy transparente com Nginx
9 de Agosto de 2012, 0:00 - sem comentários aindaMuitas pessoas usa Squid para fazer qual quer tipo de proxy, ate mesmo para proxy transparente para usar em servidor web, por exemplo:
Você tem um site que precisa ter IP aqui no Brasil so que como o custo de servidor e link aqui no Brasil é muito caro, você pode fazer um proxy transparante para o servidor aqui no Brasil ser um cara que vai receber a requisição e repassar para o outro servidor que esteja em qual quer lugar do mundo. Com essa solução podemos ter uma maquina simples (maquina com pouco poder de processamento) pois ela só vai receber o trafego e repassar para o servidor que esteja em outro local.
Vamos imaginar um exemplo pratico, preciso que o usuário acesse o IP 177.71.248.185 (é um servidor da Amazon no Brasil), esse servidor precisa receber a requizição e repassar para o IP 67.159.35.2 (é maquina principal onde é processado o backend, esse servidor esta fora do Brasi). Foi usado essa solução em um portal que atendo para ter baixa latencia.
Vamos ao exemplo pratico:
upstream server { server 67.159.35.2; } server { listen 80; server_name avelino.us www.avelino.us; location / {
proxy_cache proxy-cache; proxy_cache_key "$host$request_uri$args"; proxy_ignore_headers "Cache-Control" "Expires"; proxy_cache_min_uses 1; proxy_hide_header Set-Cookie; proxy_cache_valid 200 301 302 30m; proxy_cache_valid any 0m; proxy_buffering on;
proxy_pass http://server; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }
}
Criei um “upstream server” para falar qual é o servidor de destino do trafego, na configuração acima tem um cache de 30 minutos pois no servidor principal tem cache de 4 horas.
Logicamente que existe desvantagem com isso, pois vamos estar trafegando em duas (ou mais) rede, assim usando o trafego do servidor que esta recebendo a primeira requisição e do segunda que esta recebendo um requisição do primeiro.
The post Proxy transparente com Nginx appeared first on Thiago Avelino.
Console colorido usando Node.js
27 de Julho de 2012, 0:00 - sem comentários aindaPara quem esta acostumado trabalhar com make para subir um ambiente ou o pessoal que gosta de escrever alguns shell scripts para automação de simples rotinas acho muito importante colocar cor nos retornos do script, isso é ótimo para sinalizar o que realmente o software (ou script) esta fazendo.
Para deixar um retorno colorido usando Node.js não é muito diferente de shell script, pois o que vai processar o retorno é um console bash (zsh ou qual quer outro shell), veja o exemplo abaixo de como deixar um retorno de shell script colorido:
echo -e " \033[0;30m Preto \033[0m --> 0;30 "
echo -e " \033[0;31m Vermelho \033[0m --> 0;31 "
echo -e " \033[0;32m Verde \033[0m --> 0;32 "
echo -e " \033[0;33m Marrom \033[0m --> 0;33 "
echo -e " \033[0;34m Azul \033[0m --> 0;34 "
echo -e " \033[0;35m Purple \033[0m --> 0;35 "
echo -e " \033[0;36m Cyan \033[0m --> 0;36 "
echo -e " \033[0;37m Cinza Claro \033[0m --> 0;37 "
echo -e " \033[1;30m Preto Acinzentado \033[0m --> 1;30 "
echo -e " \033[1;31m Vermelho Claro \033[0m --> 1;31 "
echo -e " \033[1;32m Verde Claro \033[0m --> 1;32 "
echo -e " \033[1;33m Amarelo \033[0m --> 1;33 "
echo -e " \033[1;34m Azul Claro \033[0m --> 1;34 "
echo -e " \033[1;35m Purple Claro \033[0m --> 1;35 "
echo -e " \033[1;36m Cyan Claro \033[0m --> 1;36 "
echo -e " \033[1;37m Branco \033[0m --> 1;37 "
Bom como comentei acima em Node.js não é muito diferente, seja exemplo abaixo:
'use strict';
//// http://avelino.us/2012/07/27/console-colorido-usando-node-js////
// Retorna o texto em vermelho
console.log("\033[31m Aqui esta o texto em vermelho.")
// Retorna o texto em azul
console.log("\033[34m Aqui esta o texto em vermelho.")
// Volta o padrão do bash
console.log("\033[0m Aqui estamos dando reset nas cores do bash.")
// Criando variavel para deixar um pouco mais simples
var red, blue, reset;
red = '\u001b[31m';
blue = '\u001b[34m';
reset = '\u001b[0m';
console.log(red +"Aqui esta o texto em vermelho. "+ blue +"Aqui esta o texto em vermelho. "+ reset +"Aqui estamos dando reset nas cores do bash.")
Perceba que no começo do script estamos usando o “'use strict'
;
“, para não termos problema com o formato loco de color dentro das strings. No exemplo que estamos usando variáveis coloquei as colors em Unicode (eis ai uma problema!).
Porque uso “\u” nos códigos unicode?
Bom realmente eu não entendi muito bem o porque o Node.js trata dessa forma, mas achei uma essa explicação:
Octal literals can be identified by a numeric value starting with a leading 0 (zero). Since this is a source of a possible unintentional octal values when the programmer zero-pads decimal numbers of varying lengths in the source code to make then look prettier and more uniform. The strict mode disallows the octal mode due to this reason.
The ESCape code can be represented in a number of ways. Decimal 27 , Hexadecimal 1B , Octal 33 or Binary 00011011.
So instead of write the ESC code in a string as \033 you can as well just choose one of the other modes. Hexadecimal for instance: \x1B.
In your example you used the two-byte unicode representation of the character \u001b which works just as well.
I’m still an oldschool C head and usually assumes all strings to be plain ASCII so I’d use \x1B by default instead of this newfangled unicode crap Java is using. ^_^
Realmente não é muito produtivo desenvolver dessa forma, mas temos algumas iniciativas open source que pode nos ajudar com o retorno de cores dentro do Node.js.
- cli-color - Mariusz Nowak
- colorize - Matt Patenaude
- sty - Trevor Burnham (Esse projeto aceita você coloca objetos html como marcação)
Todos os projetos acima estão dentro do npm.
The post Console colorido usando Node.js appeared first on Thiago Avelino.
Criando package (modulo) em Node.js
23 de Junho de 2012, 0:00 - sem comentários aindaExiste muitas pessoas querendo estudar Node.js pela simplicidade de trabalhar com processamento assíncrono e por usar JavaScript em server side. JavaScript é uma linguagem simples mas para desenvolvimento Client side mas ao mesmo tempo quando colocamos JavaScript do lado do servidor começa a surgi algumas duvidas como: estrutura do software, como criar biblioteca, qual Framework usar e muitas outras.
Dando uma olhada no Github vi que tem muitos software que parece uma lingüiça com mais de 500 linhas em um mesmo arquivo, aí me vem a seguinte pergunta “JavaScript não é orientado a objeto?” logicamente que sim, então tem alguma coisa errada pois uns dos paradigma é dividir funcionabilidade onde cada modulo faça sua parte e usando todas faz o que foi proposto a ser feito.
Então vamos lá, seguindo um exemplo simples:
- Conectar em um banco de dados
- Fazer insert, update e delete
- Desconectar do banco de dados
O exemplo usado encontra-se no repositorio “example-nodejs-mongodb” na minha conta do Github, nesse exemplo vou usar o banco de dados MongoDB por ser mais simples de instalar e usar (Pois é um banco de dados NoSQL) . Dado que já esteja instalado o MongoDB em seu sistema operacional (Para usuarios Linux basta baixar o source do MongoDB no site e depois rodar o binario mongod, já para usuarios Windows não tenho não tenho experiencia no ambiente mas achei esse tutorial que pode ajudar). A instalação do NodeJS e NPM no Linux e Windows é uma operação relativamente simples, por isso não vou detalhar todo o processo, você pode ver nos artigos nesse blogpost.
A primeira coisa que temos que ter em mente é que tudo o que é escrito dentro de um package (proprio) não é levado para fora, você precisa especificar o que realmente quer expor do seu package. No arquivo mongocon.js temos um exemplo de como trabalhar com exports no Node.JS:
var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/avelinous'); exports.mongoose = mongoose;
var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/avelinous'); exports.mongoose_schema = mongoose.Schema;
{ "name": "mongo_test", "description": "A package using mongoose ODM", "author": "Thiago Avelino <thiagoavelinoster AT gmail DOT com>", "dependencies": { "mongoose": ">= 2.7.0" }, "engine": "node 0.6.19" }
Vagas de Python para trabalhar remoto
7 de Maio de 2012, 0:00 - sem comentários aindaA duas semana eu escrevi um blogpost sobre “Trabalhar para empresa de fora do Brasil” e realmente vale muito apena, como a demando do projeto aumentou consideravelmente estamos precisando de desenvolvedores para entrar no time. Nosso time é responsável por desenvolver algumas ferramentas de SEO.
Conhecimento necessario:
- Dominio do idioma inglês;
- Python;
- Django (Caso conheça outro frameworks é importante).
Itens importante:
- Tradução de projeto open source;
- Foco (Como o trabalho é remoto, temos que sempre ter foco no que estamos fazendo);
- Conhecimento em arquitetura de software;
- Contribuido com projeto open source (Ideal que tenho o repositorio aberto);
- Ótimo conhecimento em desenvolvimento ágil;
Estamos procurando por pessoas criativas, que gostem de inovação, de pesquisar e identificar novas tendências e de encarar desafios complexos com agilidade e velocidade.
Se você se encaixa neste perfil, envie seu curriculo em inglês para mim (thiagoavelinoster AT gmail.com) com uma lista dos últimos 5 livros técnicos que você leu, Github, Twitter, LinkedIn e o que você quiser compartilhar.
Trabalhar para empresa de fora do Brasil
20 de Abril de 2012, 0:00 - sem comentários aindaO tema é muito abrangente mas vou focar justamente para a área tecnologia onde temos a possibilidade de trabalhar remoto (vulgo home office, que é um outro tema que gera muita polemica).
Hoje fecha um total de 3 dias trabalhando na empresa Mochii (Realmente achei o site da empresa muito nerd e extremamente diferente, esse e outros motivo me fez trabalhar com eles) e durante esses três dias tive uma ótima experiencia para compartilhar.
Primeiro que o dono da empresa é muito acessível, sem essa frescura de hierarquia (Não que eu ache totalmente hierarquia desnecessário, mas em alguns caso ao meu ver não precisaria de tanta burocracia).
Segundo que o time de desenvolvimento de lá é 100% aberto a ideias e a criticas (logicamente que criticas construtivas e que saiba conversa sobre o porque não concorda com determinada parte do código), muito diferente de alguns desenvolvedores no Brasil (Sei que tem em outros lugares do mundo mas como trabalhei muito tempo no Brasil estou usando como referencia) que se apega com código desenvolvido.
Uma coisa que realmente me deixou muito surpreso foi em relação a cobrança de como esta indo a tarefa que eu (Thiago Avelino) assumi, o dono da empresa chegou para mim e falou que eu deveria conversa com um funcionario que saberia explicar melhor sobre o porque esta usando a tecnologia X, Y e Z, depois do lider do desenvolvimento me explicado foi atribuido uma tarefa e não fui cobrado nem uma vez sobre a tarefa, realmente isso é muito diferente aqui no Brasil, principalmente quando um desenvolvedor novo entra em um time, geralmente tem sempre um cara no time que fica pergunta “e ai esta entendendo?“, ao meu ver isso tem o seu lado bom e consequentemente o seu lado ruim.
O lado bom é que tem a interação do time com o novo desenvolvedor, mais isso acaba ficando chato pois se o novo desenvolvedor não esta entendo ele vai ficar com vergonha (ou alguma coisa do genero) de se expressa falando que não esta entendo alguma parte do fluxo do projeto ou mesmo código.
Poderia falar mais 1001 experiência que tive essa semana, mas vou ir gerando blog post com os passar das semanas, assim posso ir aprofundando cada dia mais da experiência vivida.
Realmente vale apena trabalhar para uma empresa de fora do Brasil.