Trabalhar em projetos de implementação de soluções mistas é um das coisas mais estressantes que existem, como em um acordo entre cavalheiros você se compromete em entregar uma infraestrutura robusta e estável e uma outra empresa se compromete em entregar um software funcional e estável, sabemos porém que a realidade não é bem assim, principalmente quando trabalhamos com projetos com prazos apertados, clientes com budget reduzido e fábrica de softwares de fundo de quintal.
Vamos a um exemplo prático, implementação da solução de NFe (Nota Fiscal Eletrônica), o governo brasileiro já havia informado a todas as empresas brasileiras com lucro presumido a necessidade da implementação de um sistema que se comunicasse com o SEFAZ (Secretária da Fazenda de cada Estado) para emissão de uma Nota Fiscal de forma eletrônica, porém como a grande maioria das coisas que acontecem no Brasil, tudo ficou para última hora, as empresas só começaram a se mover faltando poucos meses para data final de implementação, o que resultou em projetos caóticos, sistemas instáveis e muitos problemas.
O interessante disso é que surgiram centenas de empresas que dizem ser especialistas em implementação de NFe, trabalhei com a grande maioria destas empresas e posso afirmar, cada implementação ou solução é diferente devido a uma grande variável: O Cliente. A maioria das soluções de NFe que implementei foram desenvolvidas em JAVA, daí a necessidade do cliente ter um servidor aplicacional JAVA instalado em sua infraestrutura, correto ? Errado ! Alguns dos fornecedores de NFe esqueceram-se de informar isso aos clientes, legal não ?!
Os fornecedores mais espertos informaram aos seus clientes a necessidade da aquisição de um servidor aplicacional JAVA, a grande maioria recomendou JBoss, e a explicação para essa indicação é simples, a empresa desenvolvedor da solução de NFe não quer gastar dinheiro com licenciamento, JBoss é freeware. O problema é que a grande maioria dos clientes no Brasil não utiliza JBoss, isso falando de empresas de Telecom e TI, eles utilizam mais o WebLogic ou WebSphere.
Vários desenvolvedores JAVA que leram este trecho acima devem estar falando: Mas isso não é problema, se é JAVA roda em qualquer ambiente! Sim, mas para isso o programa deve ter sido desenvolvido para isso, e vocês não acham que uma fábrica de software de NFe pensou nisso, acham ?!
Nesses 4 anos de implementação de NFe eu me vi frente a uma centena de erros diferentes pois empresas ditas especialistas em NFe não conhecem o básico sobre infraestrutura ou até mesmo como funciona um servidor aplicacional como o WebLogic ou o WebSphere. Erros do tipo: A aplicação não funciona no JRockit, mas roda como uma beleza no SUN Java Hotspot.
Isso porquê fábricas de software de NFe não possuem experiência em desenvolvimento JAVA e nem na realização de testes, é fácil culpar o mordomo, neste caso eu, ou o cara de infraestrutura, mas quando você pega um cara de infraestrutura que possui conhecimentos de desenvolvimento a coisa muda de figura e como muda ! Algumas cenas tinham que ser gravadas pois o pessoal não acreditaria, como por exemplo: O desenvolvedor compilou o código em JAVA SDK 1.6 e queria porque queria que ele rodasse em JAVA SDK 1.5, sem dar erros.
É importante que o profissional de infraestrutura, principalmente aquele que trabalha com suporte a servidores aplicacionais, saiba um pouco de desenvolvimento, assim fica mais fácil identificar o verdadeiro vilão da estória, que nem sempre é o mordomo !
Vejo muito developer “bitolado” que não sabe o básico de infraestrutura, em que no final finda culpando o ambiente tecnologico (É mais fácil culpar os outros mesmo..) pelo mal funcionamento do software.
Já vi isso acontecer, e PIOR! Uma empresa de software (só de software mesmo) migrou uma aplicação em clipper para java em um cliente e o que aconteceu? Diversos problemas/bugs do sistema novo que não estava pronto, e a culpa dele não ter rodado bem foi a “infra”.
O que softwarehouse sugeriu?
Cobrou uma consultoria de 20.000 só para falar “troca isso, troca aquilo, compre um servidor IBM xyz”.
Resolveu?
Bem… o ambiente ficou melhor mais o problema/bugs ainda persistem..
Enfim! Complicado d+!
Sou desenvolvedor Java e sou obrigado a concordar, inúmeras vezes já vi outros desenvolvedores colocarem a culpa na infra ou no banco de dados e quando vai ver é o software. Agora já vi também muita gente de infra dizendo que a culpa era do software, na verificação o servidor tava com gargalo ou porta bloqueada ou configuração feita errada.
O servidor de aplicação é um ponto de atrito muito comum pq é sempre a questão quem faz a manutenção? A equipe de desenvolvimento ou da infra? Porque é um ponto que afeta profundamente as duas equipes.
Minha experiência mostra que quando finalmente as duas conseguem trabalhar juntas e juntas eu digo próximas fisicamente a coisa começa a andar melhor, não só porque elas passam a conversar, mas porque começa a ter um certo “relacionamento” entre as equipes coisa que telefone e/ou video conferencia não deixam ter. Outra coisa que ajuda muito é um bom coordenador que mande nas duas áreas pois a prioridade é o cliente e não a área de desenvolvimento e/ou infraestrutura.
Para equipes de banco de dados a mesma regra se aplica.