quinta-feira, 27 de janeiro de 2011

Conteúdo da palestra sobre Unit Test com T-SQL

Oi pessoal.
Conforme planejado, ontem nós fizemos o nosso nono encontro do grupo SQLServerDF para falar sobre testes unitários e T-SQL. Dentre os presentes, somente um desenvolvedor trabalha com testes unitários, então parte do desafio era mostrar que a ideia é válida e que não é perda de tempo.


Quando você já fez muitas palestras acaba ficando um pouco crítico, e mesmo com um início um pouco distraído da minha parte, achei muito bom o resultado. Começamos com um exemplo bem simples de procedure e testes, e de pouco em pouco fomos aumentando a complexidade, trocando um insert básico com um MERGE bem complexo, mostrando erros comuns de programação, e como poderíamos evitar de sermos queimados na fogueira dos erros em produção, tudo garantido pelos testes.


No fim acredito que consegui mostrar o valor de se ter uma massa de testes confiável e como último ato, fizemos um refactoring do banco e algumas alterações no procedimento, rodamos os testes e foi só sucesso! :-)


Eu gravei a apresentãção com o Camtasia e estou produzindo o vídeo, mas como eu não tenho um microfone bluetooth, provavelmente o áudio não irá ficar satisfatório. De qualquer forma você pode baixar o PDF e demos AQUI.





E a frase que mais foi dita: "E aí, vai para produção ou não vai?". Com testes? Vai sim, fácil...


[]s
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
http://www.srnimbus.com.br/

quinta-feira, 20 de janeiro de 2011

[SQLServerDF] Encontro IX - Testes de unidade com T-SQL

Bom dia pessoal, tudo bem?
Vamos começar as atividades de 2011 com mais um encontro do grupo SQLServerDF? Anotei as dicas de vocês e estou em contato com alguns palestrantes para organizar nossa agenda, mas como eu ainda estou negociando datas e não quero adiar mais nosso início, vou aproveitar e falar sobre um tema que gosto e tenho utilizado bastante.

As informações sobre o encontro são:

Local: Auditório da Microsoft - Edifício Corporate Financial Center, sala 302
Data e horário: 26/01/2011, 17:00h ~ 19:30h
Tema: Testes de unidade com T-SQL
Descrição: Um desenvolvedor profissional utilizando C# ou Java está acostumado a criar testes de unidade (xUnit tests) para desenvolver um código mais robusto, resistente e verificável quando temos alterações de regras de negócio ou refactorings. Porque o programador T-SQL não pode usar os mesmos princípios com T-SQL?
Nessa sessão eu vou demonstrar como escrever testes de unidades eficientes para os procedimentos e funções, testando o curso básico correto, cursos alternativos, exceções esperadas e se o dado está sendo corretamente manipulado por seu código. Nesse primeiro encontro provavelmente não teremos tempo para utilizar o Visual Studio 2010 ou outra ferramenta de terceiros, somente código T-SQL e batches para nos ajudar a automatizar os testes (o que lá fora eles chamariam de poor man´s T-SQL testing :-)).
Palestrante: Luciano [Luti] Moreira


Favor mandar para o grupo um e-mail confirmando sua presença, pois o tamanho do auditório não é ilimitado.


[]s
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br

terça-feira, 11 de janeiro de 2011

SSIS Fuzzy Lookup e SQLDumper

Ontem eu passei por um bug do SSIS que já está registrado no Connect, mas ainda não tem nenhuma informação de solução. Aproveitei para me distrair um pouco com o dump e resolvi blogar o bug, pois talvez você possa passar pelo mesmo. Então vamos lá...

Estou com minha máquina x64 e usando o BIDS montei um pacote simples que utilize fuzzy lookup (no meu caso contra uma tabela com 1 milhão de registros). Porém quando disparei a execução do pacote, no meio dela apareceu um prompt invocando o SQLDumper e a execução do pacote simplesmente parou, mostrando o mesmo em execução (amarelo), sem falhar ou terminar com sucesso. Mudei um parâmetro ou outro, a massa de dados e nada de resolver o problema, a execução do pacote sempre parava da mesma forma.

Uma pesquisa rápida na internet me mostrou a resposta, que estava lá no connect: Fuzzy lookup triggers SQLDUMPER, even with very small dataset with Run64BitRuntime set to false. Então basta ir à configuração do projeto, em Debugging, e colocar a opção Run64BitRuntime como true. Tentei novamente e tudo funcionou, mas particularmente ainda espero uma resposta definitiva, pois poderia ser um caso onde eu não tenho um driver 32 bits (veja comentário no connect) ou então eu quero após o lookup debugar um script component e, como vocês sabem, tenho que definir a opção acima como false para meu breakpoint funcionar corretamente.

Por curiosidade, peguei o mini dump no caminho “C:\Program Files (x86)\Microsoft SQL Server\100\Shared\ErrorDumps\SQLDmpr0003.mdmp” e abri no Visual Studio 2010, onde no dump summary podemos ver descrito claramente um access violation (0xC0000005) com a informação: “The thread tried to read from or write to a virtual address for which it does not have the appropriate access.”
 
Continuando a diversão, peguei o minidump e abri no windbg, então logo de cara ele mostra a thread de nosso interesse (número 204):

This dump file has an exception of interest stored in it.
The stored exception information can be accessed via .ecxr.
(36d0.204): Access violation - code c0000005 (first/second chance not available)

Carreguei os símbolos corretos e deu uma olhada na thread stack:

# 24 Id: 36d0.204 Suspend: 0 Teb: fff0e000 Unfrozen
ChildEBP RetAddr Args to Child
1186ea28 76c10816 00000770 00000000 1186ea70 ntdll!ZwWaitForSingleObject+0x15
1186ea94 75511184 00000770 00000064 00000000 KERNELBASE!WaitForSingleObjectEx+0x98
1186eaac 75511138 00000770 00000064 00000000 kernel32!WaitForSingleObjectExImplementation+0x75
1186eac0 00a9a0be 00000770 00000064 73773105 kernel32!WaitForSingleObject+0x12
1186eb48 00a99c99 737731c9 00000000 00000104 DtsDebugHost!CDmpDump::DumpInternal+0x32e
1186eb84 00a9325a 00a9d5fc 73773799 644b3000 DtsDebugHost!CDmpDump::Dump+0x59
1186edd4 00a932db 1186eea8 00000000 1186edf0 DtsDebugHost!SSISInternalPerformDump+0x19a
1186ede4 6419cccf 1186eea8 1186ee78 75539d57 DtsDebugHost!WEDExceptionFilter+0xf
1186edf0 75539d57 1186eea8 708ea443 00000000 mscorwks!InternalUnhandledExceptionFilter+0x16
1186ee78 774306e7 1186eea8 774305c4 00000000 kernel32!UnhandledExceptionFilter+0x127
1186ee80 774305c4 00000000 1186fb70 773ec390 ntdll!__RtlUserThreadStart+0x62
1186ee94 77430469 00000000 00000000 00000000 ntdll!_EH4_CallFilterFunc+0x12
1186eebc 77418799 fffffffe 1186fb60 1186eff8 ntdll!_except_handler4+0x8e
1186eee0 7741876b 1186efa8 1186fb60 1186eff8 ntdll!ExecuteHandler2+0x26
1186ef90 773d010f 0086efa8 1186eff8 1186efa8 ntdll!ExecuteHandler+0x24
1186ef90 769c99e4 0086efa8 1186eff8 1186efa8 ntdll!KiUserExceptionDispatcher+0xf
1186f2e8 75c4747e 80010088 660330a8 40600000 msvcrt!memcpy+0x1e0
1186f308 75404c78 1186f324 8001007c 1186f7f4 oleaut32!BSTR_UserMarshal+0x50
1186f344 75404c0d 1186f7f4 00359f8a 80010078 rpcrt4!NdrpUserMarshalMarshall+0x4b
1186f374 753e6f8a 1186f3e4 1186f7f4 00359f8a rpcrt4!NdrUserMarshalMarshall+0xd8
1186f3a0 7548013d 708da17a 1186f7ec 0300002c rpcrt4!NdrpClientMarshal+0xf6

1186f7b4 75c0ba02 00359b50 00359f28 1186f7ec rpcrt4!NdrClientCall2+0x19a
1186f7d4 75afc95d 00000020 00000014 1186f894 ole32!ObjectStublessClient+0xa2
1186f7e4 21c571a0 0f81a67c 02379a6c 660330a8 ole32!ObjectStubless+0xf
1186f894 21c571a0 000db174 02379a6c 660330a8 DTS!CGenericEventsImpl::OnCustomEvent+0x2d1
1186f944 21c57a84 000dcbc4 02379a6c 660330a8 DTS!CGenericEventsImpl::OnCustomEvent+0x2d1
1186f96c 227ec729 02379a6c 660330a8 003b8404 DTS!CComponentEventsImpl::FireCustomEvent+0x47
1186f998 227d6d5f 00000000 660330a8 003b8404 DTSPipeline!CErrorHandler::FireCustom+0x52
1186f9b8 6605a756 023eb850 660330a8 003b8404 DTSPipeline!CComponentMetaDataObject::FireCustomEvent+0x26
1186fa2c 2280f75f 023ea488 00000014 1fb555e0 TxBestMatch!CTxFuzzyLookup::ProcessInput+0x107
1186fa94 2280f387 2401e670 00000000 023f3c8c DTSPipeline!CPathExecutionItem::DoWorkPI+0x21a
1186fab4 228119b7 1186fad3 023ef018 00000000 DTSPipeline!CPathExecutionItem::DoWork+0x3d
1186fad4 22811a71 00000000 00000000 1186fb1c DTSPipeline!CSchedulerThread::ProcessWork+0x55
1186fae4 728d29bb 023f3c8c 708dad70 00000000 DTSPipeline!CSchedulerThread::ProcessWorkThreadProc+0x1f
1186fb1c 728d2a47 00000000 75513677 023ef018 msvcr80!_endthreadex+0x3b
1186fb24 75513677 023ef018 1186fb70 773f9d42 msvcr80!_endthreadex+0xc7
1186fb30 773f9d42 023ef018 597c16c4 00000000 kernel32!BaseThreadInitThunk+0xe

1186fb70 773f9d15 728d29e1 023ef018 00000000 ntdll!__RtlUserThreadStart+0x70
1186fb88 00000000 728d29e1 023ef018 00000000 ntdll!_RtlUserThreadStart+0x1b

Olhando a pilha acima, vemos que o pipeline do SSIS estava em execução e processando o nosso fuzzy lookup, quando ele foi fazer uma cópia de memória (memcpy), que gerou a exceção, pois logo depois temos o dispatcher da exceção que em breve utiliza o CDmpDump para gerar o mini dump.

Se executarmos a instrução .ecxr poderemos ver efetivamente que foi a instrução memcpy que gerou a exceção, inclusive quais foram as posições de memória, armazenadas nos registradores ESI e EDI, com o correto ajuste de segmento.

0:024> .ecxr
eax=a66330a8 ebx=1186f7f4 ecx=067f73d6 edx=00000000 esi=8000fffc edi=99fecfdc
eip=769c99e4 esp=1186f2e0 ebp=1186f2e8 iopl=0 nv dn ei pl nz ac po nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00010612
msvcrt!memcpy+0x1e0:
769c99e4 f3a5 rep movs dword ptr es:[edi],dword ptr [esi]

Erro simples e solução mais ainda, mas valeu a diversão. Espero que você tenha gostado e até um próximo post!

 
[]s
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br

quarta-feira, 5 de janeiro de 2011

Calendário Nimbus de treinamento SQL Server

Bom dia pessoal, tudo bem?
Acabei de elaborar o nosso calendário de treinamento para os próximos meses, este focado em SQL Server (outras novidades deverão aparecer), mas antes gostaria de ressaltar algumas alterações que estamos fazendo nos cursos, para melhorá-los ainda mais.

SQL01 - SQL Server 2008: Acesso a dados com o Transact-SQL (http://intranet.srnimbus.com.br/treinamento/paginas/curso.aspx?COD=SQL01)

O treinamento passa a ter 28 horas e com exercícios classificados em níveis diferentes, mais exemplos e casos para aplicação. Dessa forma atendemos tanto aquele profissional que já sabe o básico de consulta e quer aprimorar o seu T-SQL, quanto aquele que está iniciando a linguagem. De qualquer forma, seguindo a nossa linha de treinamento, queremos sair da superficialidade e mostrar que consultas podem ser bem complexas.

SQL02 - SQL Server 2008: Programando com o Transact-SQL (http://intranet.srnimbus.com.br/treinamento/paginas/curso.aspx?COD=SQL02)

O treinamento continua com 40 horas, mas estamos removendo os módulos 03 (bloqueios) e 12, o módulo de introdução ao Service Broker. O primeiro está presente nos cursos de internals e no de otimização, e particularmente eu não achava produtivo o módulo do Broker que é superficial para uma implementação complexa, então o assunto merece um treinamento só para ele, certo?

Em contrapartida, estamos recriando todos os laboratórios para termos algo mais fim a fim e ainda mais prático e realista, pois não queremos que você saia da sala de aula e ainda fique com aquele "e agora?" na cabeça. Vamos focar em uma programação mais complexa, com exemplos prático de problemas no tratamento de exceções, eficiência na programação, bugs introduzidos no código e como trabalhar com testes unitários, melhorando a qualidade do seu código. Outro módulo que recebe uma atenção maior será o de XML, que possui uma boa complexidade e merece mais tempo para ser discutido e implementado.

Nem preciso dizer que este é o meu xodó, não é? Venho incluindo algumas novidades no treinamento e toda vez que falo dele dá vontade de entrar numa sala para ministrá-lo. Ele já está mais do que maduro e complexo, mas ainda estou trazendo melhorias e cada vez mais tentando deixá-lo eficiente e detalhado. Minha maior dificuldade com ele é conseguir entregá-lo em 40 horas, incluindo alguns tópicos extras que poderiam fazer parte desse treinamento, ele chegaria a 60 horas sem a menor... 
SQL07 - SQL Server 2008: Recursos de otimização para o desenvolvedor (http://intranet.srnimbus.com.br/treinamento/paginas/curso.aspx?COD=SQL07) 
Esse é outro treinamento que adorei ministrar e estamos melhorando-o ainda mais, o ministrei duas vezes em São Paulo no fim do ano passado e ficou apertado, mesmo sem laboratório e em 24 horas, pois quando falamos de tuning e troubleshooting, a discussão vai longe.
A primeira alteração é que ele não é mais crash course, pelo contrário, agora ele dura 40 horas e está com novos exercícios e laboratório, estamos incrementando todos os módulos, principalmente o de indexação (posso falar 4 dias disso sem parar), colocando novos exemplos de tuning, quebrando muitos mitos e ainda criando módulos separados, um para otimização de T-SQL e outro para programação eficiente com ADO.NET.

SQL04 - SQL Server 2008: Administração e Monitoramento
(
http://intranet.srnimbus.com.br/treinamento/paginas/curso.aspx?COD=SQL04)
Esse curso está sendo reestruturado para ser mais detalhado em todos os módulos e vai durar 40 horas também: queremos discutir mais cenários de segurança e seus problemas, cenários complexos de PBM e audit, análise de overhead, bem como exemplos de TDE junto a problemas com certificado e gerenciamento destes.
O módulo de backup e recovey (o mais longo do curso) está recebendo novos exemplos de disaster recovery, revisamos o módulo de jobs para que você saia com um guia de implementação de alertas e cuidados, além de incluirmos maiores detalhes sobre checagens de consistência. Monitoramento ganha mais corpo nesse novo treinamento, bem como resource governor e scripting, mas o módulo de transferência de dados vira um subitem.
Estamos trabalhando para diminuir o número de assuntos abordados com maior superficialidade, pois não acredito que o retorno deles seja tão efetivo. Então voltado para o DBA estamos trabalhando também em outra direção, que é apresentar em breve mais treinamentos de curta duração (16 ou 24 horas) focado em um só assunto (alguns dos recursos de HA, por exemplo), aí você vai poder afirmar que conhece a fundo determinado tema. Espere mais novidades em breve!
SQL05 e SQL06 - Integration Services
(http://intranet.srnimbus.com.br/treinamento/paginas/curso.aspx?COD=SQL05 e http://intranet.srnimbus.com.br/treinamento/paginas/curso.aspx?COD=SQL06)Devo confessar que estou viciado em SSIS, no ano passado passei a maior parte do ano trabalhando com ele, mas não tive tempo de agendar nenhuma turma, e chegou a hora de aplicarmos esses treinamentos. Garanto que vocês não vão se decepcionar.
SQL09 - Upgrade para o SQL Server 2008
Fora os outros treinamentos já anunciados, no ano passado entregamos 4 turmas fechadas do treinamento SQL09, focado em upgrade para o SQL Server 2008 e R2. Ele ainda nem foi publicado no site, mas seu conteúdo conta com um dia para revisarmos as novidades (para DBAs que ainda estão no 2005) e mais dois dias somente discutindo detalhes de upgrade, como escrever o plano e preparar sua equipe, considerações para cenários de alta disponibilidade, DTS, full-text e engine relacional.
O interessante desse treinamento é que ele chuta aquelas poucas transparências sobre upgrade que você vê em outros treinamentos e efetivamente provê um guia detalhado de diversos pontos (eventualmente não técnicos, mas sim de processo) que você deve se atentar durante um processo de upgrade. Acreditamos que depois do curso, sua mudança para uma nova versão (seja até o SQL11 - Denali) será bem mais tranquila e suave.
Bom, depois de escrever tudo isso vamos ao calendário (data, curso, cidade, horário, instrutor, investimento).

# 10/01/2010 - Pequeno ajuste no calendário, o SQL03 em Brasília vai até dia 18, não 28!
Fevereiro/2011
14/02 a 22/02 - SQL01 - Brasília - Matutino - Gilberto Uchôa - R$ 1.000,00
14/02 a 18/02 - SQL03 - Brasília - Integral (manhã e tarde) - Luciano Moreira - R$ 1.500,00
Março/2011 
28/02 a 04/03 e 14/03 a 18/03 (paramos no carnaval) - SQL02 - Brasília - Matutino - Gilberto Uchôa - R$ 1.500,00
21/03 a 01/04 - SQL07 - Brasília - Matutino - Luciano Moreira - R$ 1.500,00


Abril/2011

04/04 a 08/04 - SQL03 - São Paulo - Integral - Luciano Moreira - R$ 1.800,00
25/04 a 06/05 - SQL04 - Brasília - Matutino - Luciano Moreira - R$ 1.500,00

Maio/2011

16/05 a 20/05 - SQL03 - Nordeste (ainda estou definindo a cidade) - Integral - Luciano Moreira - R$ 1.800,00
30/05 a 03/06 - SQL05 - Brasília - Matutino - Luciano Moreira - R$ 800,00

Junho/2011

06/06 a 10/06 - SQL06 - Brasília - Matutino - Luciano Moreira - R$ 800,00

Se você quer participar de uma dessas turmas (ou várias), mande um e-mail para luciano.moreira@srnimbus.com.br, indicando qual turma quer participar e assim que tivermos o número mínimo de alunos, enviaremos o(s) contrato(s) para assinatura.Se tudo correr conforme programado, ainda haverão algumas novidades nesse calendário.
Gostou? Não vejo a hora da diversão começar...
[]s
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br

segunda-feira, 3 de janeiro de 2011

Doação geek: Hemocentro

Bom dia pessoal.
Que tal começarmos o ano com o pé direito e ajudar o próximo (e quem sabe você!) fazendo uma pequena boa ação?

Como deve ser do conhecimento de todos, é comum os bancos de sangue estarem com estoque em baixa, e uma pequena doação nossa pode ajudar (e muito) outra pessoa quando ela mais precisa. Mas muitos não doam sangue por medo, por impossibilidade ou por desconhecimento, então se você está no primeiro ou terceiro grupo, que tal mudar sua atitude?
Eu estarei nessa quinta-feira, dia 06/01/2010 no Hemocentro de Brasília (http://www.fhb.df.gov.br/) logo no início da manhã (próximo de 7:00h) para fazer minha doação. Então que tal se juntar a mim e aproveitar para fazer deste gesto um ato coletivo?

Mais informações sobre quem pode doar, restrições alimentares e condições básicas, você encontra no site do Hemocentro.

Chamei de doação geek pelo teor do blog, mas mesmo não sendo geek você está convidado, ok?! Se ao menos mais uma pessoa aparecer, já é um começo...


=============================================================
Atualização...
Bom, como foi dito, no dia 06/01/2010 eu estive no hemocentro e fiz minha pequena doação. De quebra ainda tirei umas fotos...


Foram 470 ml dessa vez, moleza, apesar da minha veia que estava tímida hoje.
Doar sangue é mole, eu quero ver é depois de tomar um baita lanche que eles servem, correr uns 300 metros até o seu carro, debaixo de uma chuva sinistra que resolver cair, e isso com quase meio litro de sangue a menos... :-)

O ponto baixo da brincadeira foi que eu não encontrei nenhum conhecido por lá...
=============================================================

 
[]s
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
http://www.srnimbus.com.br/

domingo, 2 de janeiro de 2011

2011 – O ano para ** sua carreira?

PDF aqui.

Com regularidade eu escrevo alguma coisa a respeito do próximo ano e é natural que muita gente pare nessa época do ano para pensar um pouco e planejar como gostaria de se ver no fim de 2011, então aproveito para compartilhar com vocês algumas reflexões e ideias para os próximos 365 (agora 363) dias que estão à nossa frente.

Um olhar sobre 2010 

Seu ano foi bom profissionalmente? Conseguiu aquele aumento? Trocou de emprego ou de cargo? Está fazendo o que você gosta?
 
E pessoalmente? Conseguiu ficar com sua família? Fez novos amigos? Cuidou da sua saúde? Praticou esporte e brincou com seus hobbies?
 
Meu ano foi muito interessante, profissionalmente eu aprendi demais com a Nimbus, conseguimos fazê-la crescer, passamos por dúvidas quanto ao seu funcionamento, tomamos decisões difíceis e buscamos diversas oportunidades. Tecnicamente continuei trabalhando com SQL Server, tive oportunidade de desenvolver com .NET e trabalhar com o Azure, mas meu foco ficou mesmo com o SQL Server e tive oportunidade de me especializar ainda mais com o SSIS.
 
Pessoalmente eu estou vivendo diversas mudanças, depois de voltar de uma viagem de 33 dias lá no outro lado do mundo, onde pude ver muita coisa diferente, mudamos para a nova casa (na minha vida somente havia morado em apartamento), passamos por um aperto financeiro para concluí-la (primeira vez também), tive um ano gostoso com minha mulher, curtimos a gravidez juntos e agora estamos com o Bernardo, que hoje está com dois meses e uma semana de vida, e nesse tempinho já nos deu muito que refletir. 
Não vou gastar muito tempo aqui com o meu ano, mas resumindo, gostei bastante de 2010, acho que consegui atingir alguns dos objetivos que havia posto para mim, mas deixei outros de lado, que vou perseguir incessantemente em 2011, então o próximo ano promete ser bem desafiador.
 
Então vou focar este post em algo que me marcou...
 
Felicidade pessoal e profissional 

Pode parecer piegas ou bobagem, mas nesse ano o que mais me chamou a atenção foi como fracassamos em nos sentir satisfeitos com nossa vida, em buscar o que desejamos e como gastar energia de forma efetiva, nas coisas que realmente importam. Vindo de um workaholic (tive que aceitar essa característica pessoal, a contragosto), isso requer uma análise profunda...
 
Acredito que conseguimos o melhor dos resultados, profissionais e pessoais, quando estamos sem estresse, animados com os desafios, alegres, em sintonia com o ambiente ao nosso redor, enfim, quando estamos executando a menor ou mais repetitiva tarefa e não pensamos: COMO EU QUERIA ESTAR FAZENDO OUTRA COISA.

Recentemente vi em um programa na TV a pergunta 20/10, que é o seguinte: “Se você tivesse 20 milhões na sua conta bancária ou soubesse que somente têm mais 10 anos de vida, você faria o mesmo que está fazendo hoje?”. No meu caso eu viajaria mais e teria algumas regalias (claro!), mas a resposta foi um sonoro SIM, trabalharia feliz com as mesmas coisas que faço hoje, com uma grande ressalva: teria que melhorar meu work-life balance (balanço entre vida pessoal e trabalho). Caso contrário eu preferiria largar tudo (inclusive a computação) a manter uma vida desbalanceada, o que me assustou bastante, já que sou um geek de carteirinha.
 
E o pior foi pensar que se eu fizer essa pergunta para muitos amigos, tenho certeza que algo em torno de 80% a 90% responderia que não, o que é triste, muito triste. Sabe alguns dos efeitos disso:
 

  • Você executa seu trabalho de forma pior.
  • Você trabalha mais horas (e mesmo assim o resultado sai abaixo do que você poderia produzir).
  • Você comete erros bobos no meio da madrugada ou perde o trabalho de um fim de semana por causa do cansaço (li esses dois no twitter de amigos bem recentemente).
  • Você briga em casa ou discute com colegas no trabalho.
  • Vê o sucesso de outros com maus olhos, ao invés de ficar feliz pela pessoa.
  • Você deteriora sua saúde
Que merda, será que têm que ser assim? Pensei em mim, nos amigos e na empresa que estamos criando, que é natural tomar a cara dos seus “pais”, então será que todos estamos fadados a trabalhar 12 ou 14 horas por dia? 
 

Uma mudança radical


No contexto acima, na primeira semana de novembro eu tomei uma decisão radical: Vou trabalhar menos, ser mais efetivo e provar que é possível criarmos a cultura (e uma empresa) onde valorizamos a pessoa em primeiro lugar, com uma qualidade ímpar no trabalho, balanceando vida profissional e pessoal. 
Para isso eu precisaria me reeducar e focar no que é importante, então garanti que durante o horário de trabalho: 
  • Não atendo telefone a não ser que seja algo que estou esperando
  •     Sim, excluí do celular todos os números que não sejam próximos ou de algum cliente em que estou executando um serviço.
  •     No Brasil não existe cultura de deixar recado... Bom, se não deixou recado não deve ser importante, então não espere que eu retorne.
  •     Posso perder oportunidades? Claro que sim, mas é o preço a se pagar.
  • Não atendo celular em reunião
  •     É uma FALTA DE RESPEITO com as outras pessoas, que estão desperdiçando seu tempo para ouvir você falar com outra pessoa. Pense nisso, seu tempo não é mais precioso que o dos outros.
  • Desliguei todas as redes sociais e e-mail
  •     Gosto da minha presença online, mas é uma distração enorme.
  • Foco
  •     Dentro do cliente, passei a procurar novos locais que me permitem focar e ser mais produtivo, minimizando as interrupções.
  • Menos tarefas paralelas
  •     É complicado estarmos executando uma tarefa e de repente aparece um pensamento de outro problema. Se não têm banda para executar com calma o que está ao seu redor, vá para o próximo passo.
  • Diga NÃO
  •     Esse é o meu calcanhar de Aquiles. Acho extremamente difícil dizer não, quero tentar agradar as pessoas e até hoje é natural eu aceitar algo (mesmo sabendo que vou me estressar) e depois executar o que me foi pedido achando tão ruim, que preferiria passar fome a ter que acabar a tarefa.

Hoje estou tentando manter 40 horas de trabalho semanais, o que já foi piada no twitter, mas estou conseguindo executar bem. São 40 horas de trabalho efetivo (já vi gente enrolando uma tarde inteira, isso não é trabalho, ok?). Assim quando chego em casa eu posso ficar com a família, me divertir com meus hobbies, escrever artigos e estudar o que me interessa 
Esse último é o mais interessante, se eu estou estudando sem a obrigação de saber que é para entregar alguma coisa no dia seguinte ou uma tarefa do trabalho, isso não me incomoda nem um segundo, pelo contrário, me dá extremo prazer. Mas se é uma dedicação extra por pressão, então o estresse vêm junto e toda uma série de problemas.
 
O ** do título  

Troque os asteriscos pelo que é mais importante na sua carreira: Alavancar, Organizar, Redirecionar, Jogar fora, Priorizar... Mas faça algo a respeito. A menos que você tenha atingido o seu Nirvana, sempre existe algo a ser executado.


Ao longo dos anos já tive a chance de dar conselhos (espero que bons) a muitas pessoas, e me agonia profundamente vê-las insatisfeitas, mas sem nada planejando ou sinal de que vão mudar alguma coisa. Galera, que droga, a mudança começa por você.

Não existe receita de bolo para nada nessa vida, mas podemos ser espertos e tentar aprender com outras pessoas. Converse com quem está ao seu lado, procure bons exemplos (sempre tenho meus ídolos :-)) e não desista.

Particularmente eu recomendo o livro “Getting Things Done” e uma das pessoas que considero demais (Brent Ozar) também usa o GTD (http://www.brentozar.com/archive/2010/12/goals-where-were-going-we-dont-need-goals/).

Curiosamente vi hoje no blog do amigo Nogare uma meta para 2011 que vai de encontro com o post: Trabalhar no máximo 50 horas por semana (http://www.diegonogare.net/Blog/post/Realizacoes-de-2010-e-Objetivos-para-2011.aspx). Estou torcendo por você!

Muitas vezes o caminho é árduo, a mudança requer coragem e, claro, não existe garantia de sucesso. Mas uma pessoa bem mais inteligente que eu uma vez disse: Talento é 99% transpiração e 1% inspiração.

Bom, continuo na minha jornada e se isso não der certo, vou pegar meus vinte milhões e fazer outra coisa...

[]s
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br