artigo que fiz vinculado ao noticiario de TI do Rio grande do Sul e região: Todo mundo odeia o legado. É hora de substituí-lo?
A Ascensão de SOA
Publicado em: 19 de fevereiro de 2012
artigo que fiz vinculado ao noticiario de TI do Rio grande do Sul e região: A Ascensão de SOA
[OFF] Fazendo a diferença no Natal
Publicado em: 17 de outubro de 2011
Oi pessoal, um pouco sumido do Blog, é verdade, prometo tirar as teias de aranha e postas muitas coisas boas para 2012..
Mas a idéia do Post é outra, que tal contribuir com um sorriso inocente neste natal? Então.. uma amiga minha está com uma vakinha em aberto para comprar brinquedos, roupas, doces para as crianças carentes.. então quem quiser contribuir, de alguma forma, com qualquer valor, ela (e as crianças) ficarão muito agradecidos. Só clicar aqui. Quem não puder, mas quiser ajudar com um twitt ou um curtir, já está ótimo também.
Abraços.
Eu já fui um. Entrar em uma empresa e querer mudar tudo é o maior desafio que uma pessoa quer, a mudança por si só é estimuladora. Acho que muitos já foram assim, mas, este post é para quem ainda está sendo ou pretende pretendia ser. Saiba como não ser o programador revolucionário, mas sim, o cara da nova geração da sua empresa.
É muito bom mudar, transformar, e isso deve ser feito com cuidado, mas nunca, jamais, da noite pro dia. É o erro que o pessoal (principalmente da geração Y) comete com freqüência. Resolvi aqui listar alguns destes erros que eu já fiz, presenciei e superei. Mas não vou deixar ninguém na mão, deixo na verdade a minha opinião sobre estes pecados e a forma que eu agiria em cada situação. Espero que sirva de aprendizado para o seu sucesso profissional.
#1 – Não faça críticas ao legado. É legado e todo legado tem problemas. Sua empresa não é exceção ao todo, todos têm legados e todos sofrem com este. Não julgue um legado pela linguagem que este fora implementado. Por pior que seja, se for, ainda é um ativo da empresa, afinal, é o que mantém o negócio no ar. Idéias revolucionárias para substituí-lo continuam a ser idéias, ainda não existem e não estão em produção. Não faça o novo criticando o presente/passado. Principalmente se alguém que faz parte do presente/passado esteja na sua equipe. E se você for de alguma consultoria, mais atenção ainda, pois ninguém quer ouvir que o seu sistema legado é uma droga. Eles querem soluções. Não cometa este erro para não ouvir um “faça melhor”. Na verdade, faça melhor e quando for virar à chave, o agradeça e as pessoas que nele trabalharam. Todos ficaram felizes.
#2 – Não tente implantar uma metodologia ágil da noite para o dia. As pessoas que trabalham na sua empresa podem estar acostumadas e confortáveis com a atual metodologia de trabalho, por mais burocrática e engessada que esta venha a ser, implantar uma metodologia nova em um ambiente de TI é necessário muito esforço, alinhamento com sua equipe, gerencia e seus clientes, para piorar, este alinhamento é incremental: primeiro planta-se uma sementinha sobre uma oportunidade e depois vá regando até brotar e crescer, mas atente-se ao risco de morrer na primeira tempestade. Por exemplo, um dos programadores conhece o negócio, mas não sabe usar determinada API, enquanto outro sabe da API, mas não conhece o negócio… Coloque os dois lado a lado, mostre para eles que, se os dois pensarem juntos, se alternarem no comando do teclado e do código, algo bom pode fluir. Diga ao final que isso se chama programação em par, uma técnica da metodologia ágil Extreme Programming, certamente eles vão querer saber mais sobre este tal de XP. Veja oportunidades nas dificuldades, é a melhor forma de se conseguir algo, resolvendo um problema real. Fazer sua equipe comer agile com farinha falhará.
#3 – Tenha opiniões formadas, do contrário, não opine! Você pode ser questionado e não saber se defender, conseqüentemente sua moral irá despencar. Se quer tratar um assunto com alguém, saiba do que está falando. Quer falar de Test-Driven Development com alguém? Domine isso antes. Tenha tido experiência com isso antes. Tenha escrito testes antes (duplo sentido). Ser xiita, defender algo que conhece apenas teoricamente ou porque leu em algum artigo por aí é um erro fatal. Fuja disso.
#4 – Não seja resistente com o fornecedor picareta. Eu e você (e até eles) sabemos que, o que eles mais querem é vender (menos o seu gerente, que costuma acreditar em conto de fadas)! Quanto ao negócio propriamente dito, eles tratarão disso vendendo consultoria depois. Mas o primeiro passo continua a ser vender o software “faz tudo” de um milhão de dólares. Isso não significa que você vai falar para seu gerente não comprar. É uma variante do pecado #3, afinal, você vai saber argumentar o motivo de não comprar? Ou vai dizer apenas que a empresa é picareta, pois um amigo do seu irmão lhe disse? – Monte uma apresentação, faça gráficos (gerentes adoram gráficos), mostre as alternativas, soluções open-source e a economia que ele terá escolhendo X ao invés de Y. É assim que se toca, camarada. Fuja da resistência, apresente alternativas e os benefícios relacionados.
#5 – Não force ninguém a usar o que você usava na sua empresa anterior. A empresa atual usa cruisecontrol? Aprenda cruisecontrol antes de falar do Hudson. Sua empresa usa JDeveloper? Aprenda JDeveloper antes de falar do Eclipse. Sua empresa usa bugzilla? Use o bugzilla antes de falar do Jira. E por ai vai… Critique apenas o que você conhece e sabe que existe algo melhor, para então sugerir. Você corre o sério risco de ser ignorado e/ou ser visto como uma pessoa resistente, por mais certo (ou não) que esteja.
Se você achou os cinco pecados coerentes entre si, você captou a mensagem! E você, poderia contribuir com esta lista?
Robson
Procura-se SCRUM Master com fortes conhecimentos na plataforma .NET e que queira morar nos E.U.A.
Publicado em: 2 de outubro de 2010
Pessoal, rapidinha.. um amigo meu pediu para anunciar, eles estão procurando você um profissional sênior, Scrum Master (de verdade), inglês fluente, domínio da plataforma .NET (com foco em ASP.NET), Visual Studio 2008, Transact-SQL, SQL Server, disposto a trabalhar numa das empresas mais sérias de Porto Alegre e se mudar de mala e cuia para Atlanta/USA em seu primeiro desafio. Interessados enviar e-mail com CV atualizado e pretensão salarial (CLT) para alex DOT schiroky AT compasso DOT com DOT br – informando no título “Scrum/.NET”.
Feito!
We want you! Think beyond! #jobs
Publicado em: 19 de abril de 2010
Olá, três ou quatro leitores. Quero dizer que, a empresa que trabalho está com algumas vagas em aberto, e nós gostariamos muito que você, não um guru mas, um cara que manja e sabe o que faz, que não discrimina tecnologia, um verdadeiro pragmático, proativo, corre atrás das coisas que não domina ainda, se mantem sempre atualizado, who knows a bit about english, come a própria comida de cachorro e, claro, tem amor pelo que faz … venha trabalhar conosco!
As oportunidades são para Porto Alegre/RS – mas não nos importamos se você for daqui ou da Polônia, mas sim se você está disposto a mudar pra ca. Vale lembrar que algumas oportunidades também exigem disponibilidade para viagens.
Os interessados devem encaminhar currículo para o e-mail curriculos at ilegra.com, identificando a vaga para a qual pretende concorrer.
As vagas: 2 para DBA Oracle (pleno/sênior); 3 para Analista de Sistemas; 1 para Programador Java/Plsql; 2 para Arquiteto de Software; 10 para Programador Java; 2 para Programador Plsql; 3 para Programalista Java; 1 para Oracle developer; 1 para Programador LINC II (SP); 2 para Gerente de projetos.
See you.
Pare. Pense. Tente você mesmo responder esta pergunta antes de prosseguir com a leitura. O que vem a ser o padrão VO que vemos presentes prefixando nossas classes em nove de cada 10 sistemas que trabalhamos em Java ? Ahá, eu já imaginava que você soubesse… mas… sabe mesmo?
Bem, na verdade existem dois tipos de Value Objects, que são os criados pela Sun, para mascarar os problemas das primeiras versões das distribuições EJBs e o que faz sentido num paradigma O.O.. Em minha humilde opinião, o segundo é mais coerente, pois de fato favorece um padrão, do contrário do primeiro, que na verdade acabou virando um anti-pattern. Portanto, focaremos este simples post no segundo e ao final, fazendo uma ressalva ao primeiro.
De acordo com Martin Fowler, Eric Evans e outros evangelistas de um modelo de domínio rico, um Value Object é um simples objeto, usualmente com atributos que não referenciam outros objetos, imutáveis e sem identidade, pois são meramente representativos. Em outras palavras, um verdadeiro objeto de valor – O objeto vale mesmo alguma coisa. Exemplos:
Numero: é um típico exemplo de um VO. O seu valor justifica sua existência. É imutável, pois você não consegue mudar os valores de um numero. Deve-se criar um novo para isso. Sua comparação não se resume em todos seus atributos, comparando apenas o valor o qual representa é suficiente.
Dinheiro: Philip Calçado, provavelmente baseado no exemplo de Fowler, dá um ótimo exemplo de VO falando do objeto Dinheiro. Um dinheiro, supomos aqui, Reais, possui um valor: dois, cinco, dez, vinte, cinqüenta, etc… na vida real, é um papel. Obviamente, alterar seu valor resultaria em rasura ou problemas com a policia, justificando assim sua imutabilidade, no entanto, se eu te empresto dez reais, não há necessidade de receber os mesmos dez reais de pagamento. Pode ser outra nota, tanto que tenha o mesmo valor.
Cor: Oras, uma cor vale, herm… uma cor! Por isso que para representar cores é muito melhor usar Enums, a propósito, tudo, ou a grande maioria do que é VO deveria ser possível de se representar utilizando Enumeradores.
Deu para entender a grande sacada do verdadeiro VO? Ele representa um valor, simples e intuitivo, certo? Muito próximo do que chamamos de primitivos, afinal, se os criadores de linguagens de programação conhecessem todos os VOs possíveis, não precisaríamos ter objetos explicitamente declarados para estes, pois nossos compiladores reconheceriam um simples R$ 10,30 no editor, sendo dez reais e trinta centavos.
Mas então, não era bem isso que você achava que era um VO? Bom, vejamos se eu adivinho: Pra você, um VO era uma estrutura, com getterns and setters, comumente utilizada para transportar valores entre camadas e camadas. Então, é bem esta mesmo a confusão. Este é o TO (Transfer Object) – uma adaptação do padrão Data-Transfer Object (também catalogado por Fowler) – O TO na verdade é um valor composto por vários atributos, serializado (é transportado entre camadas), servindo principalmente para minimizar o trafego de objetos numa rede.
Recapitulando o que você vê nos sistemas por aí, não são VOs e sim TOs! Mas e se eu te falar que a utilização deles normalmente ocasiona em redundância do seu modelo, você acreditaria? Então, é. A grande maioria dos sistemas que utilizam TOs, de duas uma: ou realmente não sabem o que estão fazendo ou não seguem o principio “você não vai precisar disso no futuro”. É balela. Como já disse, TOs são para trafegar objetos de JVMs distintas entre TIERS (dica: vide padrão memento para construir arquiteturas distribuidas com TOs, eficazes). Quantos destes sistemas aí realmente precisam fazer isso? A grande minoria, creio. Ter TOs em LAYERS é puro hype.
Layers vs Tiers.
Não precisa cortar seus pulsos se você concordava comigo desde o inicio, é que gosto de manter a interatividade nos meus post subestimando meu leitor. Afinal, este tipo de post só é util para quem está aprendendo e não para quem já sabe
Siga-me, maldito.