You are currently browsing the archives for the engenharia category


Scrum pra nós é rules

Tenho desempenhado o papel de arquiteto de software na equipe corporativa de arquitetura de software da CVC Turismo há pouco menos de um ano. Esta tem sido uma experiência muito interessante e divertida sob muitos aspectos, mas sobre tudo, pela oportunidade de trabalhar dirigido por novos paradigmas. Um deles é o agilíssimo Scrum.

Scrum tem sido regra em nossa equipe há cerca de 6 meses. Ainda temos, obviamente, até pelo pouco tempo de experiência nesta metodologia e background no RUP, algumas coisas que lapidar, que melhorar, que aprender, mas já temos visto resultados muito, muito, empolgantes.

Nossa equipe é composta por 5 pessoas: Eu, JOss, Morais, Valdir, e Léo, nosso Scrum Master. Todos muito comprometidos com o pensamento Scrum que, com certeza, tem sido nosso grande diferencial de sucesso, hava vista os elogios da própria diretoria de TI, que até já promoveu workshops para apresentarmos o Scrum a outras equipes da empresa.

Atualmente estamos desenvolvendo, entre outras atividades menores, o core-business repository da CVC, batizado de SysturDM, que na próxima quarta-feira entra em sua quarta sprint, deixando pra trás outras 3 completamente bem-sucedidas. Além deste, já concluímos com sucesso total outros dois ou três projetos menores.

Scrum trouxe aos nossos projetos sinergia, motivação, colaborativismo, e um ambiente indiscutivelmente informativo. Resultado? Software útil em poucas semanas, chefe feliz… Opá! Acho que um aumento salarial vem que vem… =)

Taí! Quem disse que empresas grandes não dão crédito a metodologias ágeis?

Scrum pra nós é rules!

Aproveitando, quero indicar o blog do Guilherme Chapiewski. Leitura mais que obrigatória!

A Plataforma Java não é sobre a Linguagem Java

A Plataforma Java, mais notadamente a Enterprise Edition, vem experimentando, a cada ano, um crescimento sem precedentes na história da computação. Centenas de corporações investem milhões do dólares em servidores de aplicações, ambientes de execução para dispositivos móveis, ambientes integrados de desenvolvimento, frameworks e mais frameworks; enquanto um verdadeiro exército de programadores vai se formando e se tornando adeptos desta. O resultado destes investimentos são um sem número de aplicações distribuídas, web e mobiles que são desenvolvidas e disponibilizadas para milhões de usuários, ano após ano.

A Máquina Virtual Java (JVM), por sua vez, já é considerada a melhor e mais moderna máquina virtual da atualidade, provendora de um robusto ambiente de execução de aplicativos em dezenas de plataformas de hardware e software diferentes.

Tudo isto é fantástico. Mas não é tudo!

A Plataforma Java não é sobre a Linguagem Java. Ela não é exclusiva à Linguagem Java. Em uma analise fria e simplista, ela é apenas uma plataforma para execução de aplicativos distribuídos em bytecodes nativos da JVM.

É claro que numa analise mais detalhada ela seria mais do que isto. Mas em poucas palavras, é isto mesmo que ela é. A própria Sun_Microsystems já tem acreditado nisto e vendido esta idéia. Os maiores exemplos são a linguagem Groovy, que está sendo padronizada pela JSR 241, a versão Java do interpretador Ruby, o JRuby.

Quer saber? Taí um dos motivos de louvor da plataforma .NET da Microsoft. A plataforma .NET pode executar mais de vinte linguagens de programação diferentes, como se fossem uma só, porque também trabalha com o conceito de bytecode, os quais são executados sobre a CLR (Common Runtime Language). Ou seja, você não precisa ter uma única linguagem de programação para resolver todos os seus problemas computacionais; você pode escolher a melhor para o momento - eu falo sobre isso no meu post anterior. Isto sim é fantástico! E o melhor de tudo, é que a Plataforma Java também está caminhando nesta direção.

Já há algum tempinho é possível você escrever programas usando Groovy, JRuby, Jython, ou mesmo JavaScript, e executar na JVM. É a magia da JSR 223, Scripting for the Java Plataform. E não pense você que isto é fazer o gosto de meia dúzia de programadores. Isto é, na verdade, um novo leque de oportunidades para a própria Platadorma Java.

Este é o futuro do Java como plataforma de desenvolvimento, distribuição e execução de aplicativos de alta disponibilidade.

# O jeito Ruby:
puts 'Tchau!'
# O jeito Python:
def tchau():
    print "Tchau!"
// O jeito Java:
public class Goodbye {
    public static void main(String[] args) {
        System.out.println("Tchau!");
    }
}
// O jeito Groovy:
println "Tchau!"

Não há uma única linguagem de programação

É gosado ver como de uns anos pra cá se proliferou a idéia de que há uma linguagem de programação que pode resolver todos os problemas computacionais. Essa idéia ganhou a maioria de seus adeptos entre os programadores Java, já que Java carrega consigo o conceito de “escreva uma vez, execute em qualquer lugar”. Doce ilusão. Não a de que programas escritos em Java podem ser executados em qualquer lugar, porque a Máquina Virtual Java já é uma realidade bem pouco virtual há anos. Mas a idéia pretenciosa de que todos os problemas computacionais da face da terra poderiam [e deveriam] ser resolvidos com Java. Poder ser executado em qualquer lugar não significa necessariamente ser a melhor opção em termos de resolução de um problema computacional, quando este tem uma plataforma computacional invariável.

Bem, antes que alguém pense o contrario, vou dizer clara e francamente, no bom e velho português de Luis Vaz de Camões: Eu adoro Java! É sério. Eu comecei aprender Java na versão 1.1.8, em meados de 1997, e ganho dinheiro com ela a mais de 7 anos. Fiz faculdade, comprei um apartamento, me casei, comprei um carro, viajei pra vários lugares, comprei uma centena de coisas, inclusive o laptop no qual estou escrevendo este post, programando com Java. Mas não me atrevo a pensar que Java é a linguagem de programação ideal para resolver todo e qualquer problema computacional. Não mesmo!

Voltemos um pouco no tempo. Década de 90, Sun Microsystems, Green Project, o princípio da linguagem Java.

A linguagem Java não foi projetada para resolver os problemas computacionais os quais são resolvidos com ela hoje. Ela foi projetada com um objetivo, mas ao longo dos anos foi se adaptando a outros bem diferentes. Por que então deveríamos pensar que ela é a única e melhor opção?

Isso parece lógico, não? Pois é… É o que é…

Cada problema computacional é diferente do outro, ainda que semelhantes. Assim, cada um deles deve ser analisado por diversos pontos de vista da engenharia de software:

– Ambiente de execução;
– Produtividade de implementação, teste e distribuição;
– Escopo topológico;
– Experiência de usuário;
– Custo e oferta de profissionais;
Apenas para citar alguns.

Fato é que, sempre há uma linguagem de programação mais aderente à resolução de um determinado problema computacional, e em um ambiente profissional, programadores, arquitetos e engenheiros de software não podem levar a cabo suas preferências pessoais. O sucesso do dado projeto vale mais.

É claro que sempre será mais divertido programar com a linguagem que se tem maior preferência, ou mesmo paixão. Mas linguagens de programação são o meio e não o fim.