quarta-feira, 12 de março de 2014

A armadilha das soluções "corporativas"

Uma das mais antigas táticas da máfia em todos os tempos é oferecer o que você não precisa, para resolver o problema que você não tem. Essa tática é utilizada até hoje, com sucesso, pelos fornecedores de "soluções corporativas", que começam como uma pequena teia de aranha, e terminam com você, todo enrolado, sendo devorado por elas.



Uma oferta que você não pode recusar

Os criadores e os vendedores de soluções ditas "corporativas", sempre nos fazem ofertas "irrecusáveis", ou seja, facilidades e recursos que facilitarão o desenvolvimento das nossas aplicações, ou que aumentarão a segurança, ou o desempenho dos nossos sites. E, muitas vezes, oferecem "test-drives", provas de conceito e até mesmo participação em Eventos ou viagens internacionais para nossos funcionários, tudo para nos vender o que não precisamos.

Dessa forma cria-se uma rede de apoio, como uma teia de aranha, dentro da nossa Empresa, formada pelos funcionários e gerentes "cooptados" pela máfia, que passam a defender a tal solução, mesmo sem querer saber se é ou não apropriada para o problema em questão.

Eles nos vendem soluções que não precisamos, para problemas que não temos!

Como a máfia, muito bem demonstrada no filme "The Godfather". Logo na primeira cena, o "Bonasera" pede justiça a Dom Corleone, que, após uma pequena encenação, diz que vai fazer, porém, um dia vai lhe pedir um favor. É assim que as soluções corporativas funcionam. E o favor é enrolar TODO o desenvolvimento de aplicações da sua empresa, criando um legado de alto custo e que vai funcionar como uma "âncora" corporativa do seu desenvolvimento.

A adoção indiscriminada de "soluções corporativas" é uma das maiores causas do "acoplamento de plataforma", que eu venho atacando aqui, nos últimos tempos.

De que estou falando? 

De qualquer produto de software que contenha as palavras "Enterprise" ou "Corporativo" em seu nome. Coisas como: Enterprise Service Bus, Enterprise Application Container, Enterprise Framework etc.

"Você está falando bobagem!"

A primeira vez que comentei isso na empresa que trabalho, ouvi essa resposta acima. Realmente, para quem fez um treinamento bancado pelo fornecedor, essa era a única resposta apropriada, não? Eu não estou sempre certo, e vacilo muitas vezes, mas, no geral, costumo ter o meu nariz apontado na direção certa. E não estou sozinho! Voltando ao "Technology Radar" (Thoughtworks) de Janeiro de 2014, vamos ver o que consta como recomendação de adoção, no quesito "plataformas":

ADOPT
26. Elastic Search
27. MongoDB
28. Neo4J
29. Node.js
30. Redis
31. SMS and USSD as a UI

Agora, vamos ver o que consta como "Hold" (evitar ou parar de usar):

HOLD
45. Big enterprise solutions
46. CMS as a platform NEW
47. Enterprise Data Warehouse NEW

Eles recomendam exatamente as tecnologias que eu tenho defendido aqui, em artigos anteriores, como: "MongoDB" e "Node.js", e combatem exatamente as malditas "Big enterprise solutions". Veja a tradução do que eles encaixam nesse item:
"The gap between what enterprise-class commercial packages provide and what is actually needed is widening. This is especially true for internet facing applications. Innovative solutions that really scale and easily support modern techniques such as continuous delivery are written by practitioners for practitioners. They originate with many internet scale companies and are refined as open source software. Big enterprise solutions often obstruct effective delivery due to their accumulated bloat, cumbersome licensing restrictions, and feature sets that are driven by check-lists and imaginary requirements far removed from the realities of most development teams."
Traduzindo:
"A diferença entre o que os pacotes comerciais corporativos oferecem, e o que realmente é necessário, aumenta cada vez mais. Isso é especialmente verdadeiro para aplicações voltadas à Internet. Soluções inovativas, escaláveis e que suportem facilmente as técnicas modernas, como: Entrega contínua, são escritas por praticantes para praticantes (dessas técnicas). Elas se originam em empresas da Internet e depois são refinadas como software Open Source. As "Big Enterprise Solutions" frequentemente obstruem a entrega efetiva de soluções, devido ao seu "inchaço", às suas pesadas restrições de licenciamento e conjuntos de características, que são direcionadas por checklists e requisitos imaginários, há muito removidos da realidade da maioria das equipes de desenvolvimento."
Bom, se isso não mexeu com seu coração, pelo menos deve mexer com o seu bolso, ou pelo menos, o da sua Empresa. A verdade é que, as empresas que adotam um conjunto de "soluções corporativas", acabam "ancorando" o desenvolvimento de todas as suas aplicações a elas, o que acaba por "engessar" completamente o portifólio de TI, afetando a adoção de uma estratégia competitiva mais moderna.

E tudo começa com uma inocente "prova de conceito"... Depois, passa por treinamentos gratuitos, convites para participação em eventos, viagens gratuitas, canecas decoradas, iPads etc. Após conquistar uma "teia" de funcionários da empresa-alvo, os fornecedores podem começar a ditar as regras, e aí, você está irremediavelmente preso na teia.

Então, se a Thoughtworks (Martin Fowler) aponta esse caminho, só existem duas conclusões: Eu estou certo ao propor uma nova arquitetura de aplicações corporativas, ou estou errando acompanhado de pessoas muito ilustres!

Como evitar isso?

Algumas estratégias costumam funcionar bem. Por exemplo, exija que todas as decisões sejam devidamente documentadas, com uma lista de critérios (independente do fornecedor) e que sejam avaliadas mais de uma alternativa, com inclusão de soluções diferentes da que o "mafioso" te vendeu. Certamente, haverá revolta, pois os funcionários "cooptados" tentarão resistir e pressionarão para a manutenção do "status quo". Mas, ao insistir nisso, você verá que, aos poucos, o "castelo de cartas" cairá. Pois nada resiste a uma análise fria, com critérios independentes e várias alternativas.

Temos que pensar "fora da caixa" e buscar soluções de baixo "acoplamento de plataforma". Temos que deixar de concentrar funcionalidades em um só componente ou framework, temos que "diluir" a arquitetura das nossas aplicações corporativas, tornando-as mais ágeis e mais substituíveis.

Lembre-se: Não pague por soluções que você não precisa, para resolver os problemas que você não tem! Não existe "almoço grátis", e tudo que é oferecido pelo vendedor, vai acabar "viciando" sua empresa. Não aceite brindes, viagens e treinamentos gratuitos!