Archive for the ‘negocios’ Category

Ele Não Aguenta Mais Arroz Com Ovo

Monday, May 7th, 2007

Continuando na nossa série de alertas (não, não era uma série mas acabo de inventar isso) chegamos a um excelente texto sobre o futuro de java x .Net no infoQ. Deste eu destaco:

When .NET was first released in 2000/2001, the Java community considered it a “clone” of Java, both language and standard library. Comparing simple code samples surely support this impression. However, MS profited from many years of experience with Java, and managed to solve some issues that Sun only now realizes as problems. The impression that the .NET and the CLR are evolving faster than Java is not lost on the Java community.

Other examples of this are modularization and versioning, which.NET solved by choosing the assembly, a collection of classes, as the basic deployment unit. Assemblies are equipped with metadata such as version information, unlike Java’s Jar file which lack versioning metadata. This is troublesome for increasingly large applications, which load many libraries. OSGi now provides a solution for this, Sun is busy adding something similar to Java 7.

The Java language keeps on catching up with C#, adding features such as Generics and features such as AutoBoxing, Enumerated types or Annotations. C# now has anonymous expression support, which forms the underpinning of the LINQ technology. LINQ can be thought of a statically typed query language for many different types of data sources, such as XML, relational databases, but also arbitrary object graphs. The Java space, meanwhile, debates language minutiae such as language support for properties and which of four types of anonymous function to include in the language.

The Java space doesn’t really any of the mentioned items, except for the hosting interface, which was added in Java 6, under the name of JSR 223. This is basically just framework to add new language runtimes and initialize and access them in a standardized way.

Jim Hugunin continues with a detailed explanation of how dynamic method dispatch is handled, which makes use of extension methods and other existing CLR systems. The only comparable initiative is JSR 292, which among other things wants to add a new bytecode invokedynamic .This effort was started by Gilad Bracha, who soon after the creation of the JSR, left Sun, and is now not convinced that this project will bring any short term solutions:

Exceto a bizarrice do LINQ, este texto só mostra algo que vem sendo visto diariamente. Provavelmente a JVM e a CLR vão disputar como VMs de linguagens dinâmicas e de DSLs, e tudo mostra uma vantagem técnica para a MSFT. Acordemos.

RUP em Waterfall?

Sunday, May 6th, 2007

Vagando pela Internet sei lá porque achei a descrição de uma fábrica de software:

A Empresa oferece a seus clientes o acesso a um processo de produção baseado no RUP (Rational Unified Process) que atenua as distâncias frequentemente causadas entre o requirement e o delivery. É um centro de competência em desenvolvimento de sistemas com padrão internacional (em processo de implementação de CMMi nível 2).

Esta infra-estrutura permite a Empresa atender clientes dos mais variados segmentos, desenvolvendo ou integrando projetos para diversos ambientes e plataformas. Colocam também a empresa numa posição de vanguarda no setor.

Baseada nos mais modernos processos metodológicos, o processo inicia-se com o estabelecimento junto ao cliente da melhor solução para os seus sistemas, por profissionais altamente qualificados. Em seguida a engenharia de sistemas desenha a solução de acordo com o ambiente tecnológico existente.

Por último, a produção do código se inicia à medida que a engenharia de sistemas vai sendo concluída. Este formato apresenta produtividade elevada para a reutilização de código através de bibliotecas de objetos e ainda permite ao cliente dispor de todo o processo, ou parte dele, conforme suas necessidades.

Os mais modernos processos são…waterfall? O RUP é iterativo ao extremo, uma empresa que diz que faz RUP e tem ‘fases de projeto, codificação, testes, etc. só está se contradizendo. Esse é o mal da atualidade em TI: pessoas que não tem sequer noção do que estão falando.

IBM’s Bubble (Gum?)

Sunday, May 6th, 2007

Deu no meiobit que a IBM GlobalServices está a ponto de demitir 150.000 mil pessoas no mundo todo. A motivação seria o fato de que o braço de consultoria da Big Blue estaria sofrendo os efeitos de anos entrando em contratos que não dão lucro ou mesmo dão um belo prejuízo.

Tem anos que algumas pessoas vêm alertando para o fato de que o modelo de consultorias de tecnologia da informação atual é inviável, uma grande bolha. É diferente da bolha da web porque há benefício sendo gerado para o cliente. O problema é quando você tem, uhm.. 150.000 pessoas fazendo trabalhão que poderia ser feito pela metade.

As grandes consultorias, conhecidas no submundo de TI como ‘as empresas de três letras’, são especialistas em encher o cliente com profissionais saídos da faculdade ou dos cursinhos “aprenda Java em 15 minutos”, cobrando uma fortuna pela hora destes profissionais e dando uma mesada para os dito-cujos no lugar do salário e os “profissionais” vivem pulando de galho em galho por qualquer aumento de 1% na mesada que outra empresa promete. O resultado de contratar estagiários que pulam de galho em galho é software de péssima qualidade sendo desenvolvido e entregue.

O único motivo pelo qual esta coisa meio que dá certo é que já chegamos a um ponto na ciência da computação onde qualquer criança de dez anos consegue criar um programa CRUD. Ele não tem que se preocupar com arquitetura, design, projeto, performance: a plataforma dá tudo para ele (Dijkstra tinha razão…). Claro que apesar de 93.56% dos programas hoje em dia serem grandes CRUD, todos (ou quase) possuem aspectos não-CRUD. Geralmente estes são os aspectos não-funcionais e só se mostram em ocasiões do tipo problemas de performance, manutenção, grandes mudanças de fornecedor, extensão do sistemas e outras coisas que não acontecem no dia a dia mas quando acontecem são mortais.

Será que é o início do fim? E os milhares de empregos na área de TI que atraem e empregam milhares de incapacitados todos os anos? Minha visão é que vai haver um breve período cinza mas em breve eles vão voltar. Não adianta, enquanto não avançarmos um degrau técnico para que programas simples (93.56% dos existentes, lembrem-se) sejam criados e mantidos por administradores de empresas e outros perfis menos técnicos vão haver muitas vagas, muitos sistemas são construídos.

Não sei, posso estar errado mas eu já acertei algumas vezes.

Hackers Não Frequentam a SDN

Tuesday, April 24th, 2007

Ainda durante o STD2007 tive a chance de participar de um bate-papo
entre alguns convidados e Rich Green, VP de Desenvolvimento de
Software da Sun Microsystems. A Sun tem um zilhão de problemas na
maneira como lida com o desenvolvimento de software mas se tem algo
que deveria ser copiado é este contato entre as pessoas que mandam e a
comunidade.

Durante este bate-papo foram debatidos diversos assuntos sobre o
futuro da plataforma, seu posicionamento no mercado nacional, o papel
dos JUGs e etc. Acabou que não tive a chance de falar sobre um assunto
que considero importante, por isso enviei um e-mail ao Rich comentando
este fato.

O problema é que o mercado de desenvolvimento de software é dividido
historicamente em uma grande massa de programadores de medianos para
não-funcionais e uma pequena minoria de bons programadores. As
ferramentas da Sun (netbeans, Glassfish, java, etc) focam na grande
massa de programadores, uma opção economicamente interessante. As
ferramentas são todas gráficas, com drag-and-drop para até o que não
deve (mais sobre isso em outro post), mas demoraram anos para colocar
funcionalidades básicas no editor de código (prometidas para a versão
7, creio).

Deste modo os programadores da minoria (exceto os que trabalham para a
Sun ou outra empresa que te jogue uma IDE pela guela) não vêem
proveito na IDE a criam um estigma com ela. Todos tivemos péssimas
experiências com geração de código na vida e s mais experientes vão
sempre olhar torto para ferramentas mágicas. O Matisse, por exemplo, é
algo interessante porque depende de uma infra-estrutura de software
flexível, com geração de código mínima (EJB3 segue esta linha). Gerar
uma interface em matisse é cool, mas gerar 15 toneladas de um
XML para Java EE não é, pelo menos não para este
público.

Mas quem liga? Estamos falando de menos de 10% dos programadores do
mundo! O problema é que são estas pessoas que inovam.
Quando você não está integrado com a comunidade de inovação de
software você tem um problema muito grande. Pense se você já não viu
isso acontecer com a Microsoft (outra que sofre com estigmas, não desmerecidos) algumas vezes:

  1. Fulano lança algo cool fora da plataforma (como
    Hibernate, Spring, AOP, JGoodies, Rails…)
  2. A empresa dona da plataforma diz que essa inovação é
    desnecessária, é ruim, não é padrão, dá cárie nos dentes ou qualquer
    outro argumento desesperado
  3. Um tempo depois a nova versão da plataforma suporta essa
    funcionalidade
  4. .

A inovação ocorre fora da plataforma e a empresa teme que correr atrás
do prejuízo a cada versão. Quando as coisas são inventadas elas não
podem ser utilizadas na plataforma sem um enoooooorme trabalho de
adaptação, configuração, criação de adaptador, etc.

Para mim, a solução é algo que a MSFT está fazendo, como comentamos
aqui outro dia, que é criar dividir as coisas em Camadas. Dê todo o
poder de trabalhar com o core da plataforma aos desenvolvedores da
minoria e crie uma camada de abstração para a maioria dos
programadores, que vão adorar lidar com ferramentas gráficas e não se
preocupar com a qualidade do que é gerado.

Não basta haver um editor de código melhorzinho, um profiler e um
debugger. É preciso criar uma plataforma que trate a minoria e a
maioria como público-alvo. No Sun Tech Days deste ano não houve uma
única sessão que eu considere que foi para um programador de verdade.
tecnicamente este evento só vale pela interação com o staff da Sun e
os outros desenvolvedores. As sessões focavam a grande maioria,
exatamente como os produtos da Sun. A empresa tem que se livrar deste
estigma de ‘fazedora de ferramenta pra newbie’, existe gente de muita
competência nesta plataforma e eu realmente gostaria de ver este
talento em ação.

Cachorro Velho

Monday, April 23rd, 2007

Algumas coisas mudam. A que parece a Borland/CodeGear fez da sua IDE uma delas. Durante o STD2007 tive um bate-papo com o representante da empresa sobre o novo JBuilder, o 2007. Como o JBuilder me deu dezenas de péssimas experiências, eu realmente queria saber a quantas andava o produto após a integração com o projeto Eclipse. O JBuilder me surpreendeu. Positivamente, pela primeira vez na vida do produto.

Na verdade não foi a IDE, não há nada que você realmente precise ou não possa substituir com alternativas livres ou pagas, mas a política da Borland é algo muito diferente do usual. Este primeiro release do JBuilder foca em ferramenta de UML, os assistentes para gerar artefatos Java EE que todas as IDEs têm e em integração com plataformas de ALM (Application Lifecycle Management).

O que mais me surpreendeu foi que a integração padrão não é com a suite de ALM da Borland mas sim com ferramentas Open-Source e largamente populares como Subversion, Buzilla, Mylar e Liferay. Métricas? Que tal PMD e Find Bugs? Realmente parece que a separação entre Borland e CodeGear fez muito bem…

O problema do produto que (ou melhor: o problema que puder perceber neste bate-papo) é o licenciamento. A menos que você crie um mercado de apaixonados como o IntelliJ e TextMate ou prenda seus desenvolvedores como faz a Microsoft não há vida no mercado de IDEs pagas há mais de cinco anos. Dado o corte enorme de custos que é utilizar a infra-estrutura (editor, debugger, etc.) do JDT o preço da plataforma caiu uns bons 70%, mas ainda é muito caro. Mais caro que o IntelliJ, que eu já acho caro!

Fatalmente as Borland-shops vão adotar a ferramenta e, pelo que vi até então, vão fazer uma escolha tecnicamente justificável (suporte no Brasil, funcionalidades e plugins do Eclipse, assistentes para RAD e integração com ALM é bem útil) mas economicamente furada. As empresas que usam outras IDEs vão continuar as utilizando e nenhuma nova comunidade será criada. O JBuilder seguirá sua tradição de só ser utilizada por empresas que enfiam a ferramenta pela guela abaixo dos seus desenvolvedores. S o desenvolvedor é do tipo que não quer baixar os plugins do Eclipse que precisa ou não sabe que pode baixar o pacote completo com todos os plugins de uma vez só (algo que os evangelistas do NetBeans fingem que não existe) ele vai buscar sua IDE em netbeans.org, de graça.

A Borland vence tecnicamente a Sun ao reaproveitar uma infra-estrutura excelente ao invés de oferecer mais do mesmo como o NetBeans, mas perde em modelo de negócios já que a Sun já aprendeu que desde o início do século o modelo de licenças está falido.

Cachorros velhos aprendem truques novos, mas nem todos os cachorros e nem todos os truques.

Uma Comparação Interes$ante

Saturday, March 24th, 2007

Fazem algumas semanas que as revistas brasileiras só falam sobre a iminente reabertura total do banco de investimentos Goldman Sachs no Brasil. Não, você não cadastrou o feed errado, este blog ainda é sobre tecnologia. O que me fez pensar foi como os bancos de investimento tratam seus profissionais e como o fazem as consultorias de tecnologia. Nos dois segmentos, talento é tudo. Você tem uma centena de operadores, analistas e o que for, mas eles sozinhos não garantem o sucesso de um projeto, seja um IPO, uma compra agressiva ou a criação de um novo sistema.

A diferença é que no mundo onde as pessoas dão valor ao dinheiro os talentosos são recompensados. Pode ser porque é uma área mais antiga mas o fato é que os peixes-grandes destes lugares sabem muito bem que precisam manter sua mão de obra e evitar a qualquer custo que ela fuja para a concorrência.

Ao contrário do que possa parecer, um profissional técnico no desenvolvimento de sistemas hoje vale uma boa grana sozinho. Se você for realmente bom pode oferecer serviços de consultoria e acabar ganhando no mínimo o mesmo que uma empresa te pagaria de salário. Pode ser que você tenha que trabalhar mais do que se tivesse um ‘patrão’, mas dado os horários loucos e prazos insanos de hoje em dia nem sempre isso é verdade, pelo contrário: se for para manter apenas o valor que você ganha de salário possivelmente você conseguiria ter uma qualidade de vida melhor.

E quando o profissional vai embora no meio de um projeto temos um problema. No cenário atual um projeto geralmente é tocado por um bando de gente que não têm noção de computação básica (ainda que seus diplomas digam que têm) e um pequeno grupo (quase sempre de um) que faz a maior parte do trabalho intelectual. Quando este grupo sai para ganhar R$1.000,00 a mais num outro lugar os prejuízos são enormes.

Várias vezes na minha carreira eu já fui chamado para este tipo de situação. Atuando como consultor independente eu entrava num projeto cujo arquiteto ou líder saíra para ganhar cinco reais e duas mariolas a mais em outra consultoria commodity de três letras. É clássico encontrar uma sala com vários programadores que não têm muita noção do que estão fazendo olhando o consultor que chega como a pessoa que vai devolver a ordem. Como tudo foi muito rápido, não houve tempo de realizar um processo seletivo e a empresa paga ao consultor mais que o dobro do que pagava para o arquiteto/líder. No final do projeto o consultor vai embora e você ainda precisa contratar alguém fixo para tapar aquele buraco.

Bom negócio, heim? O que você faz para evitar isso na sua empresa? Que tal aprender com alguém que já faz isso há mais tempo do que existe a palavra ’software’?

O Futuro na JAOO

Tuesday, March 20th, 2007

Ótimo painel sobre o futuro da programação no JAOO. Especialmente o comentário do PragDave:

Dave: I’d like to predict that the current stacks of software by 10-15 years are going to be in a much worse legacy and more of a nightmare to maintain. You’re going to have employment forever maintaining this stuff. C++, Java code, C# code, this stuff is very complicated and very brittle with all these class libraries and frameworks. We’re digging ourselves in a really big hole and there will be a lifetime of opportunities for you people to maintain this stuff that you’re creating.

Prepare-se e pense nisso antes de comprar aquela ferramenta mágica ou criar mais um framework que faz a mesma coisa que todos os outros.

We Want You! (Again)

Saturday, February 24th, 2007

Mais uma vez, estou contratando para minha equipe. A última vez foi bem produtiva, então vamos seguir com o anúncio de emprego…

A idéia nesta equipe é um grupo pequeno e coeso de profissionais com grande conhecimento em tecnologia e desenvolvimento de sistemas. O trabalho exige um conhecimento acima do feijão-com-arroz que estamos acostumados a ver no mercado, e este tipo de profissional é difícil de ser encontrado.

Por isso estou colocando este post aqui, acho que quem se dá ao trabalho de ler este blog ao invés de um site de notícias ou tutorial sobre a última ferramenta da moda tem o perfil que estamos buscando. Este é possivelmente o maior anúncio de oportunidade de emprego que você já viu.

Temos uma vaga para o Rio de Janeiro. Nesta equipe, os profissionais são responsáveis por levantar requisitos técnicos, determinar arquiteturas e implementar sistemas de alto desempenho, com literalmente milhões de acessos em horários de pico (e milhares nos horários normais). Não existe a divisão entre analista/projetista/programador/arquiteto, esta equipe trabalha de maneira ágil com profissionais capacitados em todas estas áreas. A equipe utiliza metodologias ágeis no desenvolvimento: foco nas pessoas e não em especificações técnicas de trezentas páginas.

Basicamente a pessoa em questão precisa ser altamente proficiente em Java, pois é linguagem mais utilizada pela equipe. Acontece que não é a única, então conhecimento em outras linguagens é muito apreciado. C#, Ruby, PERL, Python, C++ ou Common Lisp são ótimos atrativos extras, mas não requeridos, apenas desejáveis.

Se você lê este blog então imagina que conhecimento Orientação a Objetos é essencial, não? Sim, você está certo. Conhecimento profundo do básico de OO: classes, herança e polimorfismo é o mínimo esperado. Conhecimento em Domain-Driven Design, métricas e Padrões (de Projeto e Arquiteturais) são vantagens.

Ah, com conhecimento em redes TCP/IP (você já teve que lidar com sockets na vida?), programação concorrente (threads, threads, threads…), shell scripts Linux/UNIX e Oracle (alguma coisa de PL/SQL), são ótimos, mas não essenciais.

Como desta vez não estamos contratando juniors, ter experiência em aplicações semelhantes te dará um diferencial interessante. Áreas que possivelmente deram experiência no nosso ramo são provedores de acesso e conteúdo, mega-portais, produção de mídia e redes de telefonia. Na verdade se você não for tão experiente não tem problema, basta ser alguém maduro e esperto o suficiente.

O mais importante é que esta pessoa deve ser compromissada. Não adianta entrar nesta seleção se você está feliz pulando de galho em galho nas consultorias como PJ, continue onde você está. Nosso interesse é trazer pra dentro de casa um bom profissional e fazê-lo crescer ainda mais, levando a empresa junto. Nós não temos clientes externos, nossos clientes estão na baia oao lado ou somos nós mesmos, então não adianta toda a técnica adquirida em enganar as pessoas. Estamos no mesmo barco aqui, amigo, se o sistema falhar você também não tem PL.

Acho que a principal vantagem que alguém com o perfil que procuramos verá é trabalhar com liberdade para criar, numa equipe de alto nível, utilizando metodologias ágeis e tecnologias de ponta (onde mais você iria usar memcached, rest, selenium…?). O horário é bem flexível também, e você não tem que trabalhar vestido de pinguim.

A posição é como CLT de uma das maiores empresas do mundo no seu segmento, com os benefícios (e impostos, não se iluda) esperados nesta posição. É um lugar para fazer carreira ou pelo menos para ficar um boooom tempo e não simplesmente participar de um único projeto.

Claro que como incoveniente máximo você irá trabalhar na minha equipe. Ok, vamos lá, eu não mordo. Não muito.

Se você se sentiu próximo a este perfil (não precisa ser exato, mas não pode ser muito distante) mande um curriculo seu em PDF ou DOC para oportunidade-rj@fragmental.com.br. É extremamente importante que no e-mail você me diga o título (ISBN é legal também) dos 3 últimos livros que leu. Se você parecer com o que estamos procurando vai receber um telefonema meu.

Observação: Este e-mail será desativado assim que a vaga for preenchida. Se você não se enquadra no perfil não perca nem o meu nem o seu tempo: não mande seu curriculo. O que eu vou fazer é apagá-lo, não vou “guardar para futuras oportunidades”, não vou encaminhar para lugar algum. Vou simplesmente apagar, e isso ainda pode atrapalhar em seleções futuras. Alguém que panfleta curriculos a torto e a direito não é o que eu espero pra mim ou meus clientes.

NOTA: Este post está sendo descaradamento “upado”

Da Série ‘Mãe Diná’

Friday, December 29th, 2006

Ano passado eu postei aqui o que eu acreditava que importaria no mundo da tecnologia em 2006.

Antes de postar a versão 2007 da minha futurologia pessoal vamos, ao contrário do que fazem os videntes de televisão, avaliar as besteiras que eu disse ano passado.

Ruby on Rails: O framework para aplicações web em Ruby realmente fez sucesso este ano. Sua influência no mundo do desenvolvimento pode ser vista nos novos frameworks para plataformas como Java e .Net e mesmo com tanto preconceito contra o que não é ‘enterprisey’ podemos ver esta plataforma decolando e ocupando espaço de PHP. Vários livros, inclusive brasileiros, lançados.
Ruby: A linguagem Ruby, no entenanto, não decolou como esperava. Parece que realmente o que importa hoje é a velocidade de desenvolvimento e a disponibilidade de bibliotecas e componentes prontos, poucos prestam atenção no que a linguagem consegue fazer quando bem projetada. Talvez ano que vem.
Migrações: Java 5 e EJB 3.0 Tirando quem não tem opção, os novos produtos já estão sendo desenvolvidos para Java 5. Existe um buraco de profissionais que dominem EJB 3.0 que deve ser preenchido em breve. Com o fim do suporte oficial ao Java 1.3 este movimento ficará mais intenso em 2007.
Linguagens de JVM Cada vez mais alardeadas como a maior novidade das novas versões (>6) de Java. Infelizmente Java 6.0 atrasou bastante e a maior parte do hype vai para o próximo ano.
Linguagens de Domínio (DSLs) Quando preparei a minha palestra do Rio Java Summit 2006 sobre linguagens de JVM e DSLs foi muito compkicado encontrar material. Tive que recorrer basicamente à materiais com mais de dez anos de idade e experiência pessoal. Digite Domain Specific Languages no Google e veja que isso mudou bastante hoje, ainda assim ainda não chegou no mercado. A falta de livros continua.
Open Solaris Acho que ninguém mais lembra que o Solaris esté sendo aberto. Péssimo marketing da Sun, infelizmente.
Celulares Apesar do caos entre as operadoras, os aparelhos celulares estão ganhando mais poder de fogo e ficando cada vez mais baratos.
Web 2.0 Ninguém ainda sabe direito o que é Web 2.0 mas já se ganha dinheiro com ela. A recente onde de mashups aposentando interfaces SOA é algo que merece atenção.

No final das contas acho que não errei por muito. Futurologia nunca funciona mesmo. Em breve os wild guesses para o ano de 2007.

Não me importa o que você tem que fazer agora…

Friday, November 10th, 2006

…leia isso.