Enable javascript in your browser for better experience. Need to know to enable it? Go here.
Blogs Banner

As implicações da complexidade das camadas de tecnologia

Para prosperar no ambiente digital você precisa entender as implicações do dinâmico panorama da tecnologia para a sua empresa. Este é o primeiro artigo da série Ecos do Technology Radar, uma série dedicada a executivos, na qual autores compartilham suas ideias e experiências com problemas e soluções usando a tecnologia para orientar a diferenciação no negócio. Atualmente em seu sexto ano, o Technology Radar da Thoughtworks é uma avaliação de tendências que impactam significativamente o desenvolvimento de software e a estratégia de negócios, feita por um conselho consultivo internacional de especialistas em tecnologia.  

Até pouco tempo atrás, antes de mídias sociais, mobilidade, Internet das Coisas, nuvem e Big Data modificarem o campo, as camadas de tecnologia (diferentes camadas necessárias para implementar uma aplicação) eram mais simples e em geral específicas de cada fornecedor. Um bom exemplo é o conjunto de camadas da Microsoft: linguagens .NET para programação, IIS como servidor para web e aplicações e o banco de dados SQL Server.

Atualmente, as camadas de tecnologia explodiram. Temos plataformas como Microsoft Nano Server, Deis, Fastly, Apache Spark e Kubernetes. Novas ferramentas surgem toda semana, incluindo Docker Toolbox, Gitrob, Polly, Prometheus e Sleepy Puppy. Linguagens de programação e novos frameworks como Nancy, Axon, Frege e Traveling Ruby são introduzidos. Técnicas avançadas como Lago de Dados, Gitflow, Flux e NoPSD amadurecem. Essa lista é longa, muito longa.

Em todas as edições do Technology Radar , incluimos aproximadamente 120 itens e deixamos de fora quase a mesma quantidade por falta de espaço. Nos últimos cinco anos, consideramos mais de 2 mil "blips" para o radar. Enquanto um pequeno subconjunto de tecnologias recomendadas pode funcionar para uma aplicação específica, a variedade das camadas de tecnologia tem tido um crescimento exponencial nos últimos cinco anos (aproximadamente).

Mas por que você, um executivo ou gerente, deveria se importar? Por que você, CEO, se importaria? Não é essa a função de especialistas em tecnologia? Não! Se software e desenvolvimento de software são as chaves para o seu futuro digital, então você deve se importar – não com os detalhes, mas com o que as tendências em geral significam para sua empresa.A tecnologia orienta, de muitas formas, a diferenciação e a disrupção – e executivos e gerentes devem entender as implicações deste panorama da tecnologia para tomar decisões importantes

A complexidade das camadas de tecnologia

Implicações:

O panorama da tecnologia se mantém em um estado de equilíbrio dinâmico. À medida que novas tecnologias e abordagens aparecem, o ecossistema as adota para criar um novo equilíbrio.

Estas são algumas das mudanças recentes:

Soluções de um único fornecedor são coisas do passado

No passado recente, até mesmo algumas grandes empresas mantiveram soluções de um único fornecedor para suas camadas de tecnologia. Em meados dos anos 2000s, um amigo do Jim trabalhava em um projeto de data warehouse para uma empresa que comprava soluções exclusivamente da IBM. Para o projeto de data warehouse, o cliente insistiu em usar uma camada de tecnologia (data warehouse) da IBM em um ultrapassado hardware AS/400. A equipe tentou convencer o cliente de que nesse caso um conjunto de tecnologias da Microsoft seria muito mais eficaz. Depois de exceder um prazo atrás do outro usando hardware e tecnologia da IBM, desenvolver um protótipo usando o conjunto de camadas da Microsoft em servidores do Windows e muitas reuniões depois, a equipe de desenvolvimento finalmente convenceu a gerência a trocar o conjunto de camadas. O progresso melhorou drasticamente. A solução de fornecedor único falhou a partir do momento em que a empresa ingressou em uma nova área de aplicação.

Essa é uma tendência que vem crescendo significativamente. Há tantas coisas acontecendo tão rapidamente que até mesmo empresas do tamanho da Microsoft ou da Oracle não conseguem acompanhar. Não apenas o ritmo das mudanças é muito acelerado, mas também temos observado que muitas dessas mudanças são disruptivas, tornando assim produtos existentes obsoletos – e é difícil para qualquer empresa abandonar algo que já foi sua menina dos olhos.

A ascensão de ferramentas de código aberto contribui ainda mais para isso. Produtos de código aberto facilitam colaborações mais significativas entre empresas, permitindo que fornecedores criem novas ferramentas a partir de várias outras tecnologias sem ter que concordar com múltiplas licenças. Isso encoraja empresas menores e mais focadas, que podem se especializar em uma única área. Há pouco incentivo atualmente para grandes corporações de tecnologia se consolidarem, exceto – e aqui está uma grande ironia – quando a tecnologia está morrendo.
 

Desenvolver soluções móveis significa lidar com múltiplos fornecedores de sistemas operacionais para diferentes dispositivos. Desenvolver soluções de Big Data significa lidar com diferentes tipos de sistemas de gerenciamento de banco de dados, sendo muitos de código aberto ou de fornecedores novos no mercado – já se foi o tempo de uma solução de dados única.

Se você deseja ser uma empresa digital, a crescente complexidade das camadas de tecnologia significa uma também crescente complexidade dos fornecedores – o que inclui tanto as dores de cabeça quanto as oportunidades associadas a eles.

A composição da equipe e as estruturas da empresa precisam mudar

À medida que a complexidade das camadas de tecnologia cresce, organizar suas equipes tendo como base as camadas da tecnologia torna-se cada vez menos eficaz. Nos primórdios da Internet, quando existiam apenas algumas camadas de tecnologia – lógica de negócio, banco de dados, middleware, apresentação –, as equipes organizadas em torno delas não eram exatamente incríveis, mas funcionavam em algum grau. Hoje, não funcionam em grau quase nenhum. A grande diversidade de habilidades necessárias para desenvolver uma aplicação hoje implica forte aumento no trabalho colaborativo, e não silos disfuncionais. São cada vez mais raros os exemplos em que uma ou duas pessoas possuem todas as habilidades necessárias para desenhar, construir e implantar uma aplicação. Além disso, as equipes estão ficando maiores para adquirir as habilidades necessárias, e equipes mais diversas têm que colaborar mais internamente para serem bem-sucedidas.

Antigamente, o custo operacional e a complexidade encorajavam empresas a criar silos técnicos de desenvolvimento, QA e operações, mas a nuvem e o foco na cultura DevOps permitiram provisionar máquinas automaticamente e entregar novas funcionalidades de produto diariamente. Essas capacidades nos dão uma nova oportunidade arquitetural. Ao invés de dividir sua arquitetura em camadas técnicas, as equipes cada vez mais se organizam em torno de conceitos de domínio como Cliente ou Pedido, absorvendo as camadas técnicas em um serviço. Essa tendência a organizações por domínio (ou produto) ao invés de organizações por camadas técnicas vem acelerando a caminhada das empresas rumo ao digital. Se as empresas continuarem a se organizar em linhas de silos técnicos, o números de funções divididas em silos com suas interações necessárias vai aumentar drasticamente, provocando problemas mais sérios de integração.

Equipes colaborativas tornam-se uma necessidade absoluta

À medida que equipes se tornam mais complexas, a colaboração se torna mais crítica. Como observado acima, as equipes de hoje precisam de uma gama mais ampla de habilidades, que variam de conhecimento específico da camada de tecnologia a operações, design de produto e gestão de produto. Essa diversidade tanto dificulta uma colaboração eficaz, quanto a torna mais necessária. Um dos benefícios dos movimentos Agile e Lean tem sido o incentivo a equipes multifuncionais, colaborativas e capacitadas.

Construir uma capacidade de entrega de software se tornou muito mais difícil

Engenharia é importante. Cada vez mais empresas estão percebendo que suas estratégias digitais permanecem improdutivas sem uma capacidade de entrega de software de primeira linha.

"Conforme as tecnologias digitais incessantemente remodelam a concorrência, produtos e serviços dependem cada vez mais do software para diferenciação e performance. Apesar da importância vital do software, surpreendentemente, as lideranças dão pouca atenção a ele. Pesquisas recentes sugerem, no entanto, que as empresas pagam um preço por subestimar a importância estratégica de produzir software com excelência." ["Os perigos de ignorar o desenvolvimento de software", McKinsey Quarterly, 2015]

Existem cinco fatores-chave que impactam na possibilidade de uma empresa construir uma capacidade de entrega de software de primeira linha: amplitude de habilidades, profundidade de habilidades, aprendizado rápido, inovação e tomada de decisão.

5 fatores-chave para construir uma capacidade de entrega de software de primeira linha

A amplitude de habilidades necessárias para desenvolver aplicações hoje aumentou drasticamente, ao passo que as camadas de tecnologia se tornaram mais complexas. Para acompanhar o ritmo, você pode precisar desenvolver habilidades em Internet das Coisas, assim como habilidades em entrega de software.

Mas não apenas a amplitude de habilidades aumentou, a profundidade de habilidades necessária (avançadas x básicas) também cresceu. Aplicações de ponta demandam habilidades de ponta. Assim como uma seleção com futebol mediano não tem nenhuma chance de ganhar uma Copa do Mundo, uma equipe de desenvolvimento com habilidades medianas tem poucas chances de entregar uma aplicação complexa.

Como já observamos, com o rápido ritmo de mudança das camadas de tecnologia, as habilidades e o conhecimento necessários no futuro serão diferentes. Isso significa que você precisa não apenas de pessoas que possuam as habilidades necessárias hoje, mas que sejam capazes de adquirir rapidamente as habilidades necessárias no futuro.
 

Em um longo relato, um gerente queixa-se por estar relutante em enviar desenvolvedores para um treinamento, temendo que, por esse motivo, eles deixem a empresa. Como resposta, escuta: "E se você não treiná-los e eles ficarem?"

Partindo das próprias habilidades técnicas, as pessoas precisam aplicar essas habilidades de formas inovadoras. É preciso haver um senso de aventura e exploração na cultura da sua empresa.

Por último, mas não menos importante, sua empresa precisa melhorar a tomada de decisões no que se refere a competências e habilidades. Você precisa decidir questões como: de quais habilidades você precisa? Você precisa desenvolver cada uma dessas habilidades internamente? Qual é a profundidade que você precisa em cada conjunto de habilidades? Como você balanceia treinamento formal e métodos de aquisição de habilidades por experiência? Como você mantém as habilidades atualizadas? Você desenvolve habilidades internamente ou usa recursos externos?

Recursos externos x recursos internos x recursos compartilhados: opções mais complicadas e não mais determinadas pelo custo

Muitas empresas estão descobrindo que não basta apenas desenvolver e manter a tecnologia e a capacidade de entrega de software necessárias hoje. Algumas delas não conseguem atrair o talento necessário porque os mais talentosos desenvolvedores são bastante disputados e frequentemente desejam viver em cidades "de primeiro escalão" como Nova Iorque ou Londres, enquanto muitos departamento de IT corporativos se encontram em locais menos glamorosos e de custo mais baixo. Algumas não conseguem manter talentos por longos períodos, porque não têm uma pipeline contínua de projetos digitais. Durante o período de estratégias de corte de custos e foco na eficiência da década passada, muitas empresas terceirizaram tanto da sua capacidade, que reconstruir tudo para se adequar às necessidades de hoje levaria muito tempo e as deixaria em desvantagem competitiva. As decisões relativas aos recursos dos negócios digitais de hoje devem ter como foco a inovação, o tempo do ciclo de entrega e a geração de valor – e não a economia de custos.

Atualmente, o desenvolvimento de tecnologia terceirizado não é orientado a redução de custos, mas a aquisição de competências. Além disso, você deve procurar parceiros que não apenas ofereçam a competência que você precisa atualmente, mas que também demonstrem capacidade de desenvolver novas competências rapidamente.

Enquanto trazer competências para dentro da empresa soluciona algumas questões mais urgentes, também resulta nos mesmos problemas de recorrer à terceirização baseada em custo, com o agravante de amplificar os problemas. Por exemplo, a opção por terceirizar sempre carrega potencial para problemas relacionados a transferência de conhecimento, caso você queira em algum momento trazer as aplicações terceirizadas de volta para dentro da empresa. A complexidade das camadas de tecnologia potencializa esses problemas de transferência de conhecimento. Aumentar o número de fornecedores e de novos tipos de contratos significa adicionar desafios extras. Por exemplo, fazer contratos pode ser mais difícil, já que contratos de desenvolvimento orientados a controle de custos são melhor compreendidos do que contratos centrados em inovação e orientados a valor.

Construir uma empresa de tecnologia de ponta é caro

Ouvimos relatos de clientes com receio de adotar camadas de tecnologia modernas (por exemplo, o Hadoop), porque não acreditam que as pessoas vão se qualificar suficientemente para usá-las. Ao mesmo tempo, querem atrair novos jovens talentos e sabem que para isso precisam adotar tecnologias modernas que os empolgue. Esse paradoxo não pode ser resolvido pela área de TI – ele requer liderança executiva.

Não há como contornar isso: se você quer construir uma empresa com excelência digital, não é possível fazê-lo com uma mentalidade de corte de custos. Considerando a complexidade das camadas de tecnologia, a necessidade de inovar na tecnologia, no modelo de negócio e nos níveis de produto, além da disputa por talento, colocar em prática uma estratégia para construir uma empresa de tecnologia de ponta não é algo simples de ser feito. A decisão de avançar nessa frente deve ser feita através de uma estratégia geral de negócio (construir uma empresa empreendedora, criar um negócio digital) e ter como foco o valor, e não o custo. O custo é importante como um delimitador, e não como um objetivo.

Mudança na tecnologia pode ser desgastante, mas você precisa manter o ritmo para se manter à frente

Prosperar no ambiente competitivo de hoje requer quatro capacidades-chave: criar uma estratégia digital eficaz; implementar um processo de gerenciamento de portfólio dinâmico e orientado a valor; construir uma capacidade de entrega de software rápida e iterativa; e cultivar uma cultura adaptativa e inovadora em toda a empresa.
 

O ponto principal é que as mudanças na tecnologia estão exigindo outras mudanças no seu negócio. Mudanças que terão um impacto a longo prazo na viabilidade do negócio. Nos últimos anos, a complexidade das camadas de tecnologia necessárias para aplicações de negócios digitais aumentou, deixando as empresas frente a frente com um dilema. Por um lado, há a necessidade de encarar o desafio dos negócios digitais. Por outro, há a dificuldade inesperada de desenvolver as habilidades necessárias para enfrentar esse desafio. Conforme o ritmo da mudança na tecnologia aumenta, a estratégia de tecnologia deve integrar sua estratégia de negócio. A única forma relevante de fazer isso é criar uma empresa capaz de avaliar, adotar e se adaptar a novas tecnologias.

Aviso: As afirmações e opiniões expressas neste artigo são de responsabilidade de quem o assina, e não necessariamente refletem as posições da Thoughtworks.

Atualize-se com nossos insights mais recentes