Publicações

Compreendendo os benefícios de incorporar a modernização em uma estratégia de migração de aplicativos

03 mai 2023 / by Insights da Codurance posted in Posts, Migração para a núvem

0 Comments

Não existe uma resposta única que descreva a importância de se modernizar a tecnologia enquanto negócio, da mesma forma quando se trata de modernizar sistemas legado. Existem, entretanto, diversas razões que trazem sentido a essa prática.

Este artigo aborda diversas razões pelas quais as empresas devem, enquanto pensam em migrar seus sistemas, entender os benefícios de modernizar e evoluir suas aplicações para tecnologias mais modernas.

Modernização não é apenas um novo termo que está na moda. Trata-se de uma estratégia para assegurar que os negócios estão ocorrendo com alta performance e no topo do seu nicho de mercado, permitindo acompanhar mudanças de tendência e demandas dos clientes de forma rápida. Se considerarmos por exemplo, uma empresa como a Cazoo, é possível constatar que ela mudou completamente o mercado de carros usados no Reino Unido. Sim, grande parte disso foi gerado pelo serviço oferecido. O fator decisivo foi, entretanto, ter em seu núcleo uma estratégia que abraça práticas e tecnologias de engenharia moderna. Tudo isso ajudou a catapultar a empresa ao status de unicórnio em tempo recorde no Reino Unido. As empresas concorrentes, que já participavam do mercado a muito tempo, se viram em posição de desvantagem e com necessidade de recuperar o tempo perdido. Mas afinal, como é possível que as empresas já consolidadas consigam acompanhar o ritmo da tecnologia moderna?

Tradicionalmente, a tecnologia da informação, ou ‘TI’, era vista apenas como um centro de custos. No entanto, com a tecnologia tão permeada e onipresente em todos os aspectos do negócio nos dias de hoje, é preciso enxergá-la como o principal núcleo facilitador.

Existem vários indicadores que as empresas podem utilizar como guia enquanto avaliam se devem ou não começar uma jornada de modernização de software. Um indicador chave ocorre quando os sistemas ficam cada vez mais difíceis de se modificar e a tecnologia apresenta-se incapaz de acompanhar o ritmo dos negócios. Com o tempo isso se traduz em aumento nos tempos de resposta, o que significa que as soluções demoram cada vez mais a chegar nas mãos dos clientes finais. Como resultado, isso normalmente leva uma empresa a se tornar incapaz de acompanhar seus concorrentes e perder participação de mercado.

Como sabemos, a tecnologia evolui muito rapidamente e hoje é capaz de promover soluções que há 10 anos atrás simplesmente não eram possíveis. Por exemplo: os sistemas financeiros, em que a maioria da base instalada foi escrita 15 ou mais anos atrás. Naquela época os navegadores de internet não eram nem de perto tão poderosos e nem contavam com tantos recursos como hoje, resultando em várias aplicações desenvolvidas para desktop. Reforça-se o fato de que a computação em nuvem ainda não havia realmente decolado.

As aplicações desktop trouxeram alguns desafios com o tempo, como instalação, atualização e atendimento a muitas localizações geográficas.

Se avançarmos para os dias de hoje, os navegadores de internet estão muito mais maduros e servem de plataforma para construir aplicações poderosas, ricas em recursos e com elevada performance, algo impossível 15 anos atrás.

Objetivos de negócio da modernização

Para os negócios avançarem estrategicamente, é vital ser proativo ao invés de reativo quando se trata de tecnologia. Os sistemas devem receber constante cuidado e atenção, sendo capazes de evoluir constantemente para se manterem em linha com as demandas.

O acesso a novas tecnologias deve ser aproveitado. Isso significa que é importante revisar tudo que já foi feito, mesmo as aplicações que rodem razoavelmente bem, por que podem haver maneiras melhores de se fazer as coisas e libertar maior potencial. A resultante disso pode ser equacionada por uma maior velocidade de entrega ou melhores condições de operabilidade, que, por sua vez, aumentam seu custo-benefício, confiabilidade, segurança, performance e sustentabilidade.

No entanto, modernizar a tecnologia não é apenas adotar as melhores e mais recentes tecnologias. É vital entender primeiro as necessidades do negócio e depois avaliar quais tecnologias podem atendê-las melhor. A primeira etapa para qualquer projeto de modernização bem-sucedido é entender os objetivos e motivadores de negócios, por exemplo, os motivos para migrar para a nuvem durante a modernização da tecnologia. Tudo está relacionado a esses objetivos de negócios e ao que a empresa espera alcançar. O alinhamento do negócio é vital nesta fase, não apenas algo para esperar que aconteça, mas algo que seja estratégico para o negócio e alcance dos benefícios.

Benefícios como qualidade, tempo e custo podem ser alcançados, mas estão relacionados à qualidade das entregas. Se o tempo não for gasto focado em estabelecer metas boas e alcançáveis, há uma boa chance de fracasso. Na verdade, quase três quartos das organizações (74%) iniciaram um projeto de modernização do sistema legado, mas não conseguiram concluí-lo. Mas, se o seu software não for capaz de acompanhar o ritmo dos negócios, é um impedimento. Se a tecnologia está atrasando sua organização, isso pode significar que você não é capaz de escalar em termos de ofertas de serviços ou mesmo em novos mercados. É vital virar o jogo e remover a tecnologia como um bloqueador de qualquer crescimento organizacional. Muitas vezes, o único caminho a seguir é embarcar em um esforço de modernização de software.

Impacto da modernização nos negócios existentes

Ao embarcar em um esforço de modernização de software, as empresas também devem se precaver para não estrangular suas operações atuais. É preciso manter um nível mínimo de ‘luzes acesas’ - a tecnologia é aquilo que torna os negócios viáveis enquanto gera renda. A forma de abordagem e níveis de modernização devem ser objetos de muita atenção, propiciando que os negócios continuem a ocorrer enquanto são incrementalmente modernizados. Isso pode ser atingido ao destacar diferentes áreas nos sistemas, que terão abordagens específicas e individuais, onde gradualmente o trabalho poderá ser feito até que cada parte do sistema seja modernizada.

O impacto da Modernização nas pessoas e habilidades

Como parte de um esforço de modernização, deve-se levar em consideração a lei de Conway. No passado, em 1967, Melvin Conway introduziu a ideia de que os sistemas de uma organização deveriam tentar refletir uma estrutura similar à sua própria estrutura de comunicação. Esse aspecto possibilita sistemas pouco acoplados. Também há muita pesquisa acerca de composições de times, que sugerem que aqueles com maior índice de sucesso são constituídos por equipes multi-disciplinares, ou seja, com maior diversidade de habilidades e disciplinas. Idealmente, cada time deveria possuir todas as habilidades de que necessita, permitindo-o ser totalmente independente e desacoplado dos outros, tornando possível a atuação com maior autonomia e, finalmente, com maior velocidade.

Se imaginarmos uma empresa que deseja começar um esforço de modernização de software, envolvendo migrar para arquitetura de micro serviços, então, para que ela seja verdadeiramente bem sucedida, a organização deverá preparar equipes muito experientes e com grande conhecimento geral do sistema, para que estas estabeleçam propriedade sobre cada novo micro serviço criado. Para algumas organizações isso pode demonstrar o contraste sobre como seus times são constituídos atualmente. Novamente, um outro exemplo, se há um administrador de banco de dados (DBA) na organização, que dê suporte às bases instaladas em infraestrutura local, esse papel provavelmente precisará evoluir após uma migração para serviços de dados externos ou plataformas em nuvem. Rotinas de backup e otimizações passariam teoricamente a ser desempenhadas pelos provedores de serviço. Muitas organizações evoluíram papéis como o de DBA para atividades mais relacionadas a ciência de dados após essas migrações.

Portanto, como parte do esforço de modernização de software, é importante levar em consideração a topologia das equipes e o impacto nas definições atuais de cada papel.

Além disso, entender como o software será entregue ajudará a determinar funções e responsabilidades. A modernização envolve não apenas a adoção de novas tecnologias, mas também a avaliação e melhoria dos processos. Por exemplo, para muitas organizações, grande parte do esforço de modernização de software envolve a incorporação de mais automação e a adoção de padrões de engenharia maduros, como integração contínua e entrega contínua, para garantir um processo de implantação robusto e repetível para seu software. Isso pode, por exemplo, envolver a substituição de um conjunto de casos de teste executados manualmente por testes automatizados. Nesse caso, o papel desses testadores manuais pode evoluir.

Funcionários que trabalham para manter infraestruturas locais irão, provavelmente, precisar ser treinados novamente para adotar tecnologias de nuvem, que possivelmente envolverá atualização de habilidades, mudanças na estrutura organizacional, procedimentos de manutenção e responsabilidades futuras. Provedores de serviços de nuvem geralmente oferecem ajuda nesse processo, por exemplo, a AWS tem um modelo de responsabilidade. Isso ajuda a detalhar em que nível o negócio é responsável por governar e gerenciar o novo sistema de nuvem.

As empresas também precisam se preparar para mudanças no recrutamento e retenção. Existem comunidades diferentes para cada tecnologia. A maturidade de cada tecnologia vai determinar o tamanho de sua comunidade. Se é madura, ou evoluiu de forma rápida, haverá grande popularidade ao seu redor. Haverão muitas pessoas com as habilidades e vontade de trabalhar com essa tecnologia. No entanto, se a empresa trabalha com tecnologias ultrapassadas, haverá uma comunidade menor de pessoas dispostas a trabalhar com elas, dificultando a tarefa de recrutamento.

Mover para a nuvem e modernizar não se trata apenas de tecnologia. O conjunto de tarefas que as empresas precisam executar vão ser diferentes na nuvem, a automação e outros serviços irão alterar os processos adotados.

Quando é o momento certo para modernizar?

Como mencionado no início, não existe uma medida universal em se tratando de modernização de tecnologia. A resposta para essa pergunta depende do contexto e do apetite por riscos por parte da empresa, sendo que se a organização não for capaz de detalhar as diretivas de negócio, visão técnica e um mapa de objetivos, pode ser que ainda não seja o momento certo de começar. Nesse estágio, se a necessidade de empresa for de migrar rapidamente para a nuvem, uma estratégia comum seria focar apenas em ‘rehosting’ (mudar de servidor), ou ‘lift and shift’ - que permite iniciar a migração para a nuvem enquanto prepara-se para assumir mais riscos numa modernização completa. Essas estratégias mais completas estão detalhadas em Estratégias de migração de aplicativos - Os 3 R's.

Em um cenário ideal, os negócios evoluem gradualmente, ao invés de ter que modernizar - uma sutil mudança de direção ao invés de reversão total de sentido. Entretanto, ao negligenciar a visão técnica enquanto uma tecnologia funciona corretamente por 10/15 anos e não ter atenção ao tempo certo de modernizar ou evoluir, podem fazer sentir os efeitos de não o fazer. Esses efeitos podem ser, por exemplo, contratempos em produção, ou tempos extensos de entrega, indicando a decomposição arquitetural com o tempo. Se esses são os indicadores presentes na necessidade atual de modernização, o tempo ideal para isso já passou e a empresa já passa por desafios que afetam os negócios.

Os benefícios da modernização versus os desafios de não o fazer

O perigo de não se modernizar pode ser refletido na participação de mercado de uma empresa, e também na habilidade de reagir às demandas dos consumidores. Além disso, aumento de tempo de entrega, infelicidade das equipes e ocorrência de problemas nas atualizações - que compromete proporcionalmente a capacidade de entrega.

Isso leva de volta a maneira como os sistemas são suportados, e a habilidade de responder rapidamente às mudanças de mercado. Se a vantagem competitiva está diminuindo de velocidade, ou os sistemas deixaram de receber suporte pela comunidade, isso pode gerar problemas de segurança e perda da habilidade de atender às demandas dos clientes. Outro desafio é conter a infelicidade dos empregados, o ambiente de trabalho se torna desafiador.

Esses desafios podem ser invertidos para entender os benefícios da modernização. As empresas podem responder às mudanças rapidamente, permitindo que cresçam e evoluam junto com os negócios, à medida que se adaptam em diferentes direções para acompanhar as demandas dos consumidores.

As empresas podem então contar com maior disponibilidade de talento, facilidade de retenção e melhorias de performance, segurança e confiabilidade.

O potencial dos negócios pode ser libertado, e ao invés de gastar tempo com preocupações relacionadas a tecnologia, o tempo pode ser utilizado para adicionar valor ao negócio. Vamos pegar como exemplo empresas mais novas, como a Cazoo, mencionada acima. Problemas e oportunidades de negócios são respondidos mais rapidamente, pois a empresa pode se concentrar inteiramente em seus negócios, em vez de se preocupar com dívidas técnicas.

Read More

Estratégias de migração de aplicativos - os 3 R's

03 mai 2023 / by Insights da Codurance posted in Posts, Migração para a núvem

0 Comments

Os 3 R's

Em 2011, o Gartner cunhou a frase "os 5R's" para descrever diferentes estratégias de migração para a nuvem. Mais recentemente, isso evoluiu para os “7R’s” 

Na Codurance, sentimos que a grande maioria das migrações para a nuvem tende a adotar uma de apenas três dessas estratégias. Cada uma dessas estratégias apresenta um apetite de risco diferente para o negócio e se concentra em diferentes escalas de tempo e preparação do negócio.

Esses 3 Rs estão listados abaixo.

1. Rehosting 

Rehosting (geralmente mais comumente chamada de 'lift and shift') geralmente envolve a migração de aplicativos de software para a nuvem com muito pouca (ou nenhuma) alteração de arquitetura ou design sendo feita. Na verdade, passando de computação local, como máquinas virtuais, para máquinas virtuais hospedadas por um provedor de nuvem. A organização ainda mantém todo o software e serviços nessa máquina virtual da mesma forma que faziam anteriormente no local.

Essa estratégia geralmente é a melhor escolha quando uma organização tem pouco apetite por riscos. Ele permite que muitas operações e formas de trabalho continuem 'como estão' sem a necessidade de mudanças generalizadas. Veja, por exemplo, a situação de uma organização que precisa migrar a infraestrutura para a nuvem em um prazo apertado, imposta por restrições de negócios mais amplas. Rehosting permite uma mudança rápida para a nuvem, permitindo que o negócio continue. Embora essa estratégia não permita realmente que uma organização aproveite todo o poder de uma plataforma na nuvem, ela ainda traz benefícios, se os objetivos de negócios se alinharem, por exemplo, economia de custos no local com economia na nuvem. 

2. Replatforming 

Com que grau de 'Lift and shift' uma empresa se sente confortável?

Semelhante à rehospedagem, a replataforma é a mudança inicial para a nuvem, mas a mudança aqui é que uma organização está começando a fazer algumas alterações em seu cenário técnico, embora ainda não mude significativamente a arquitetura. Muitas vezes, isso envolve uma leve adoção de tecnologias nativas da nuvem na forma de serviços gerenciados. Portanto, os bancos de dados podem ser transferidos para o serviço gerenciado de banco de dados do provedor de nuvem ou um componente de agregação de log local pode ser substituído por um serviço gerenciado para análises e relatórios. Quando o apetite ao risco é um pouco maior, essa é a estratégia que as empresas tendem a adotar.

Muitos desses serviços gerenciados nativos da nuvem são inerentemente elásticos por design. Isso significa que, ao adotá-los, as organizações podem começar a colher alguns desses benefícios, como escalabilidade automática para lidar com picos e quedas no tráfego.

Ao decidir qual estratégia de migração para a nuvem adotar, há alguns fatores a serem considerados. Por exemplo, talvez sua organização precise obter os benefícios da nuvem em um período de tempo relativamente curto. Ou talvez os custos de manutenção precisem ser reduzidos. Nesse caso, rehosting ou replatform provavelmente seria a estratégia mais apropriada a seguir.

Adotar qualquer um dos dois primeiros R's - Replatforming ou Rehosting - permite que a organização veja os benefícios rapidamente. Já o 3º R -  Refactoring / Re-architecting  - conforme mencionado abaixo, é para empresas que possuem visão técnica de migração para nuvem. 

3. Refactoring / Re-architecting (e um pouco de recompra) 

'Como as empresas podem se beneficiar da migração de aplicativos legados para a nuvem' refere-se à importância de identificar o(s) impulsionador(es) de negócios por trás de uma migração para a nuvem. Esses direcionadores de negócios devem formar a base de uma visão técnica para garantir o alinhamento com as metas de negócios. Isso permite que as organizações especifiquem as qualidades que precisam que as arquiteturas técnicas exibam. Capturar essas qualidades na forma de métricas permite que mecanismos sejam implementados para garantir que uma arquitetura técnica atenda aos resultados pretendidos.

Uma abordagem de 'lift and shift', semelhante ao rehosting, muitas vezes oferece uma rota mais rápida para migrar para a nuvem e, portanto, permite uma rápida realização de valor como resultado, em algumas áreas. Por exemplo, reduzindo o custo de manutenção da infraestrutura.

No entanto, uma estratégia de rehosting geralmente não leva em consideração a evolução futura de uma organização e se o cenário tecnológico atual suporta isso.

É aqui que entra a estratégia de re-arquitetura. Isso geralmente é mais voltado para o futuro, garantindo que a plataforma de nuvem seja projetada de forma que possa suportar a evolução da organização sem a necessidade de redesenhos por atacado.

Re-arquitetar dessa maneira envolverá mudanças de tecnologia e sistemas durante esse processo. As questões que precisam ser enfocadas, é como isso parece no futuro, quais objetivos estão sendo alcançados? Por exemplo, se uma empresa deseja entrar em um novo mercado ou lançar várias novas linhas de serviço, elas dependem muito da estrutura e, portanto, precisam ser levadas em consideração na visão técnica dessa estratégia. A re-arquitetura é uma abordagem mais estratégica para obter vantagens competitivas.

No entanto, ter uma estratégia de re-arquitetura depende de ser um objetivo de toda a empresa. A migração para a nuvem dessa maneira não pode ser feita isoladamente e, muitas vezes, leva em consideração um propósito comercial. Qual é o propósito de estar na nuvem? E quais são os benefícios e mensuráveis que você deseja alcançar? Que serviços adicionais você espera alcançar? Visibilidade ou monitoramento, facilidade de adesão, grandes benefícios de dados. Todos esses benefícios dependem da mudança estratégica para a nuvem.

Também é importante entender como o negócio está se saindo tecnicamente. Se o local não estiver funcionando, a migração para a nuvem não será uma solução instantânea. Se a organização está lutando para entender bem como está gerenciando seu software local, é provável que isso também aconteça na nuvem. Neste ponto, é entender o roteiro em vez de fazer o movimento.

Atualizando com uma estratégia de re-arquitetura em grande escala

Se o roteiro técnico de um negócio estabelecido está apontando para uma re-arquitetura em larga escala, é um sinal de que algo deu errado. No cenário ideal, uma organização gostaria de expandir seus serviços e crescer gradativamente, evoluindo a plataforma. No entanto, nem sempre é esse o caso. Se as plataformas não mudaram ou evoluíram nos últimos 5 a 10 anos, elas geralmente não são adequadas para o propósito, interrompendo a possibilidade de respostas rápidas ao mercado.

Ao re-arquitetar, a organização deseja que o sistema faça algo que atualmente não pode fazer. Por exemplo, não pode criar uma boa auditoria? A empresa pode monitorar o desempenho ou a segurança?

Há uma etapa necessária para avaliar esses grandes sistemas, entender o mapeamento atual e avaliar os serviços atuais que a nuvem oferece. Nesse instante, os negócios podem concluir uma revisão bem arquitetada, que, do ponto de vista do aplicativo, analisa como a plataforma precisa ser reorganizada e entende como os requisitos atuais são mapeados para o sistema em nuvem. Sem mapear isso, é difícil ver todos os benefícios que podem ser alcançados usando provedores de nuvem.

Como a Recompra se encaixa nessa estratégia?

Os 6 R's originalmente cunhados mencionam a recompra como sua própria estratégia. No entanto, neste caso, ela foi adicionada com re-organização/re-arquitetura porque está dentro dos objetivos de negócios de longo prazo. Trata-se de mudar a forma como um negócio interage com uma ferramenta para economizar no esforço comercial, o que não traz valor de volta para o negócio. Não tem vantagem competitiva. Tomemos, por exemplo, o Salesforce, para uma organização, ao mudar para uma solução em nuvem ou SaaS, permite que o foco seja o valor comercial puro, em vez de aumentar o custo ou a dívida técnica em algo em que o negócio não está focado.

Qual estratégia é a certa para você?

Ao elaborar a estratégia certa para o seu negócio, é importante lembrar que o negócio não está preso a apenas uma dessas estratégias. Muitas vezes, a estratégia de rehosting pode atuar como um bom primeiro passo na jornada de adoção da nuvem muito mais ampla de uma organização. A estratégia de migração para a nuvem pode então ser expandida quando a empresa se sentir pronta, por exemplo, os aplicativos podem ser modernizados.

Saiba mais sobre o benefício da modernização de software como parte de uma estratégia de migração para a nuvem de negócios em: Compreendendo os benefícios de incorporar a modernização em uma estratégia de migração de aplicativos

Read More

Estratégias de migração para a nuvem: criando inovação na nuvem

03 mai 2023 / by Insights da Codurance posted in Posts, Migração para a núvem

0 Comments

Criando inovação na nuvem

O que significa inovação na nuvem? A inovação é geralmente definida como a introdução de algo novo - seja uma ideia, método ou processo. Aplicar isso ao contexto da computação em nuvem significa usar plataformas e serviços em nuvem para resolver desafios de negócios de novas e melhores maneiras, permitindo que eles se destaquem entre seus concorrentes.

Aproveitar a inovação na nuvem geralmente permite que as organizações entrem em novos mercados ou criem novas ofertas de linha de serviço. Além disso, essa inovação também pode ajudar a fornecer insights mais poderosos e significativos sobre o desempenho de uma organização e permitir que decisões baseadas em dados sejam tomadas. Tomemos, por exemplo, Aprendizado de Máquina - as organizações normalmente tinham que fazer grandes investimentos iniciais se quisessem adotá-lo, o que tornou a barreira de entrada muito alta e a adoção proibida para eles. Atualmente, a maioria das plataformas de nuvem fornece mecanismos em que o Aprendizado de Máquina é muito mais acessível. Como resultado, as organizações podem, por exemplo, oferecer soluções inovadoras para seus clientes que alavancam o aprendizado de máquina, sejam recomendações de produtos e experiências de usuário mais inteligentes e personalizadas ou geralmente construindo altos níveis de inteligência em seus sistemas.

A inovação usando a nuvem tornou-se mais acessível a empresas de todos os portes, e não apenas àquelas que têm acesso a grandes investimentos. A nuvem reduziu a barreira de entrada para organizações que adotam abordagens diferentes.

Os provedores de nuvem permitem que as empresas experimentem com custos muito mais baixos do que ter que construir e manter a infraestrutura subjacente no local. Freqüentemente, os provedores de nuvem oferecem um nível gratuito de avaliação inicial para acessar seus serviços. Isso dá às organizações a liberdade de experimentar com muito mais liberdade, sem a sobrecarga de custos. Isso desbloqueia a inovação.

Testar novos serviços em nuvem para oferecer serviços ou experiências novos ou inovadores ao cliente e oferece às organizações a chance de se diferenciar de seus concorrentes. Tomemos, por exemplo, novos métodos de pagamento. Se durante a jornada do cliente for bem-sucedida, ela permite que a empresa se destaque instantaneamente da multidão, pressionando a concorrência para alcançá-la. O baixo custo do teste permite que as empresas também parem de testar os serviços se eles não forem benéficos.

Serviços em nuvem para acelerar a inovação nos negócios

Entender como o uso da nuvem pode acelerar a inovação nos negócios é fundamental. Existem serviços de nuvem frequentemente negligenciados que podem ajudar a expandir os negócios, resolvendo problemas que anteriormente sobrecarregariam as equipes, impedindo-as de se concentrar em sua proposta de valor principal. Serviços gerenciados, por exemplo, tendem a ser inerentemente elásticos. Se tomarmos como exemplo um banco de dados, quando hospedado no local, é claro que é necessário manter esse banco de dados. Isso vem na forma de backups, planejamento de recuperação de desastres, provisionamento de recursos e assim por diante. Todas essas atividades exigem esforço e investimento de uma organização, mas não agregam valor diretamente, são mais atividades de suporte. Se uma organização mudar para um banco de dados de serviço gerenciado na nuvem, muitas dessas atividades são tratadas pelo provedor de nuvem e geralmente projetadas com escalabilidade em mente. Isso dá às organizações a capacidade de dimensionar seus serviços sem a sobrecarga adicional de gerenciamento da infraestrutura, como acontecia antes. Isso, por sua vez, permite que alcancem novos mercados e criem novas ofertas de serviços para seus clientes mais rapidamente do que antes.

Existem serviços cloud que do ponto de vista operacional podem otimizar o funcionamento do negócio, como ferramentas de gestão de custos que permitem gerir todos os serviços a partir de uma localização central. Ao combinar isso com boas práticas de gerenciamento de infraestrutura (como marcação apropriada de recursos), isso pode dar às organizações uma grande visão sobre seus custos de infraestrutura de nuvem e possivelmente oferecer soluções inovadoras.

Da mesma forma, a maioria das plataformas de nuvem oferece serviços de monitoramento de infraestrutura e serviços. Isso permite que as organizações tenham uma configuração de observabilidade abrangente para seus sistemas, permitindo que compreendam o estado desses sistemas a qualquer momento e, talvez mais importante, o motivo de estarem no estado em que estão. Esse tipo de prática pode não parecer muito empolgante, mas é extremamente importante. Feito corretamente, ele permite que as organizações resolvam proativamente quaisquer problemas nos sistemas de produção antes que eles afetem amplamente os clientes.

Blockchain está rapidamente se tornando uma tendência tecnológica na qual muitas organizações estão apostando firmemente ou querendo experimentar. Para as empresas que querem jogar neste espaço, os provedores de nuvem estão lançando serviços para permitir que as organizações integrem seus sistemas com o Blockchain. Fornecer as APIs para interagir com eles, em vez de fazer isso sozinhos. Isso está abrindo as portas para mais inovações, sendo capaz de resolver problemas do mundo real com tecnologia que não estava disponível anteriormente. Por exemplo, com o blockchain, estamos vendo as questões de propriedade da terra na África sendo ajudadas, usando o blockchain como uma forma de mostrar quem é dono de qual parte das terras.

Como impulsionar a inovação na nuvem

A possibilidade de inovação usando a nuvem é uma realidade, mas ser capaz de impulsioná-la como um negócio costuma ser o obstáculo que as empresas enfrentam.

Garantir que as equipes tenham espaço e tempo suficientes para inovar é vital. Se as equipes puderem gastar tempo procurando novas ferramentas, haverá a oportunidade de entender onde a inovação é possível. Freqüentemente, os negócios e, portanto, as equipes estão tão focados no curto prazo que geralmente há pouco ou nenhum tempo para entender como os problemas de negócios podem ser resolvidos de maneiras novas e diferentes ou se novas tecnologias abrem novas possibilidades e oportunidades. O Google, por exemplo, costumava ter tempo dedicado à inovação - conhecido como googles ‘20% do tempo’ era uma política de que 20% do tempo de um engenheiro poderia ser gasto em seus projetos pessoais, permitindo-lhes experimentar novos, criativos e ideias inovadoras, pesquisando novas tecnologias ou se aprimorando. Isso permitiu que novas ideias fossem apresentadas à empresa, à medida que as equipes investiam na pesquisa e no desenvolvimento para tornar a empresa melhor.

Ter uma visão técnica clara é vital para qualquer organização. Porém, muitas vezes muitos caem na armadilha de construir uma visão técnica que depois não é ajustada e evoluída ao longo do tempo. É importante traçar uma direção geral ou "Estrela do Norte" como parte de uma visão técnica, mas também é importante que ela seja constantemente avaliada para permitir mudanças na organização, mas também para acompanhar as mudanças na tecnologia. Sem isso, é possível definir uma 'grande visão' onde você perderá novas tecnologias. É assim que as empresas ficam presas e caem na armadilha de precisar embarcar em um esforço de modernização de software em larga escala. Ao revisar constantemente sua visão e roteiro de tecnologia, você pode garantir que ele esteja alinhado com as metas e necessidades de negócios.

Atualizar habilidades e criar processos adaptáveis - isso força as empresas a observar como fazem as coisas e entender a inovação e a eficiência. Além disso, fazer com que as pessoas olhem para a inovação em vez de combater incêndios - depois de migrar para a nuvem, o que você costumava fazer no local (gerenciamento de baixo nível) libera recursos para olhar para a inovação em vez de combater incêndios. Ao entender as funções das equipes e os padrões do que elas fazem, permite que os conjuntos de habilidades sejam movidos para onde se encaixam melhor. Por exemplo, alguém que anteriormente cuidava do banco de dados, como sua função muda quando você migra para a nuvem? Seria o ajuste certo para eles agora se concentrarem na ciência de dados?

Desafios comuns a serem evitados com a inovação em nuvem

Dan McKinley em 2015 falou sobre "Choosing Boring Technology", e como muitas vezes é uma estratégia muito menos arriscada do que adotar tecnologias mais novas, talvez menos maduras. Embora isso seja verdade, essa abordagem pode sufocar a inovação. O desafio que as organizações enfrentam é entender seu nível de risco e o quanto estão preparadas para investir em inovação. Algumas organizações optam por ser as primeiras a adotar novas tecnologias. Isso é bom, mas é importante tomar essa decisão, totalmente ciente dos riscos e compensações envolvidos. Por exemplo, tecnologias mais novas, por sua própria natureza, ainda não foram amplamente adotadas, então há menos exemplos de uso delas e, portanto, talvez não tão maduras ou "endurecidas pela batalha". Alguns casos de uso que você pode precisar podem não ser totalmente suportados ou a documentação pode ser muito leve.

Read More

Como as empresas podem se beneficiar da migração de aplicativos legados para a nuvem?

03 mai 2023 / by Insights da Codurance posted in Posts, Migração para a núvem

0 Comments

Mudança para a nuvem

Mudar para a nuvem pode ser considerado uma mudança com os tempos. Mas, para qualquer empresa, entender por que você deve fazer uma mudança costuma ser a primeira pergunta que precisa ser respondida nesse processo ou estratégia.

A base de qualquer proposta de migração deve estar em como uma migração para a nuvem ajudaria a dar suporte aos objetivos de negócios. Por exemplo, escalabilidade, entrada em novos marcadores ou otimização de custos seriam apenas alguns motivos de negócios. Entender por que você está migrando para a nuvem e entender os problemas de negócios que está tentando resolver permite que você entenda se é a escolha certa para o seu negócio. Isso permite que você determine a estratégia de migração que deve adotar, bem como o que precisa medir ao longo do caminho.

Este artigo irá guiá-lo pelas etapas do que significa mudar para a nuvem para aplicativos legados e os benefícios que isso pode trazer para o seu negócio.

Concentrando-se primeiro no motivo pelo qual você se moveria, segue as declarações feitas acima. Entender a necessidade de mudança da empresa pode ajudar a definir benefícios claros e metas mensuráveis para a empresa.

Por que minha empresa precisaria migrar para a nuvem

A sobrecarga operacional de ter uma propriedade no local é um motivo popular para mudar para a nuvem. Manter a infraestrutura física no local exige muito esforço e investimento, atualizar patches de segurança e fornecer diferentes controles de acesso exige grandes despesas gerais. Se o seu negócio principal não envolve a prestação de serviços técnicos, o esforço necessário não agrega muito valor ao seu negócio. Quando isso excede os benefícios de ter uma propriedade local, a nuvem é uma opção viável. A remoção dessa sobrecarga libera as equipes para se concentrarem em problemas que agregam mais valor aos negócios. Por exemplo, deixar de gerenciar bancos de dados para incorporar a ciência de dados e obter insights significativos que podem ser realimentados no fluxo de valor.

O risco é outra área a ser considerada ao pensar na migração para a nuvem. Ao migrar para a nuvem, você está efetivamente transferindo um grau de risco para seu provedor de nuvem e é importante entender como isso se encaixa no seu apetite de risco geral e no processo de gerenciamento de risco. Por exemplo, o risco de gerenciamento de hardware e segurança pode não ser relevante para seus objetivos ou especificações de negócios do dia a dia, o que significa que o gerenciamento desse processo envolve a contratação de toda uma equipe ou especialistas. A transferência desse risco para os provedores de nuvem economiza o capital e o esforço de gerenciamento dessas equipes ou especialistas. Mudar para a nuvem pode ser o primeiro passo para gerenciar o risco, mas com o mesmo custo? A empresa também precisa reconsiderar a evolução das políticas atuais em relação à recuperação/backup de desastres, pois elas também mudarão quando você migrar para a nuvem.

Os benefícios de migrar para a nuvem

Depois de entender os motivadores de negócios para migrar para a nuvem, é importante entender as vantagens (ou desvantagens) adicionais. Os provedores de nuvem podem fornecer às empresas acesso a serviços que não possuem atualmente ou que seriam proibitivamente caros para configurar no local. As plataformas de nuvem oferecem acesso a esses serviços de maneira muito mais econômica, o que reduz a barreira de entrada e adoção. Tomemos, por exemplo, big data/análise de ciência de dados, que envolveria um investimento bastante grande, as empresas agora são capazes de alavancar serviços gerenciados em plataformas de nuvem. Os provedores de nuvem oferecem muitos níveis diferentes de uso, alguns até mesmo oferecendo algum tipo de nível gratuito. Isso torna incrivelmente barato para as organizações experimentar como novos serviços podem oferecer soluções inovadoras para seus problemas de negócios, sem o perigo de um compromisso de longo prazo no início.

Embora esses exemplos possam ou não ser relevantes para o seu negócio, algumas coisas são importantes a serem consideradas. A mudança para a nuvem sempre deve ser apoiada por um driver de negócios claro, ou seja, uma mudança para a nuvem deve ser uma resposta às necessidades de uma Organização. Por exemplo, pode ser uma necessidade de maior escalabilidade ou um desejo de reduzir custos operacionais. Uma migração para a nuvem não deve ser vista apenas por lentes técnicas. O motivo mais importante para mudar é que ele está alinhado com os objetivos de negócios. E esses objetivos de negócios geralmente são diferentes, dependendo da necessidade do negócio. Por exemplo:

Aplicativos - A adoção de serviços gerenciados pode ajudar as organizações a consolidar suas ferramentas técnicas. Por exemplo, em vez de ter ferramentas separadas de diferentes fornecedores para agregação de logs, alertas, painéis, etc., tudo isso pode ser reunido no mesmo provedor de nuvem.

Regulamentações - Dependendo do setor em que atua, as regulamentações podem ser caras e com altas restrições de tempo e prazos iminentes. Os provedores de nuvem criam patches e soluções para os regulamentos de sua infraestrutura, resolvendo os problemas sem que a empresa invista tempo.

Conjunto de habilidades - Os provedores de nuvem geralmente criam esquemas de treinamento e certificações, facilitando a contratação de funcionários com conhecimento existente dos sistemas. A infraestrutura local pode exigir um alto nível de treinamento para integrar alguém, enquanto a adoção da nuvem traz um nível de padronização em relação às habilidades.

Por que investir na migração para a nuvem?

Investir na migração para a nuvem precisa resolver os desafios que você enfrenta atualmente com seus aplicativos legados. O acesso a uma maior elasticidade de computação pode ser um fator importante na mudança para a nuvem. A elasticidade automatizada da infraestrutura e o poder de computação de um provedor de nuvem permitem que as organizações lidem com picos e quedas de tráfego em seus sistemas com relativa facilidade e de maneira altamente econômica. Tradicionalmente, as organizações precisariam investir tempo e dinheiro no planejamento e aquisição de hardware extra em preparação para os próximos picos de tráfego esperados (por exemplo, cargas de temporada como o Natal para varejistas on-line).

A comunicação de valor retornado ao negócio é determinada pelos desafios compreendidos neste primeiro ponto, por que o negócio mudou para a nuvem? Suponha que foi o custo, ao entender os custos de execução anteriores, permite definir métricas para quanto a infraestrutura de nuvem está custando agora. Nesse caso, você também pode mostrar a economia de custos ao entender o impacto nos negócios. Por exemplo, se o tempo de inatividade foi um grande problema, criando reclamações de clientes, você pode medir o tempo de inatividade, as reclamações de clientes e a carga de trabalho da equipe que lida com reclamações. Se os regulamentos foram o motivo para mudar para a nuvem, continuar trabalhando com seu provedor para entender quais patches foram implementados para ajudar a alinhar sua organização com esses requisitos pode ser comunicado à empresa e uma compreensão do esforço que teria sido necessário interno.

Então, para a questão de porquê você moveria aplicativos legados para a nuvem, em última análise, depende de seus objetivos de negócios por que seria uma boa ideia para seus negócios. Há benefícios em todos os desafios, mas não haverá benefícios se não houver desafios.

Continue sua jornada de migração para a nuvem entendendo qual estratégia é a certa para o seu negócio com: Estratégias de migração de aplicativos - Os 3 R's 

Read More

3 passos para criar uma estratégia de modernização de software

03 mai 2023 / by Insights da Codurance posted in Posts, modernização de software

0 Comments

Não é nenhuma surpresa que 60% das empresas concordam que sofrerão competitivamente se não modernizarem seu software. Na última década, o software tornou-se cada vez mais importante para as empresas no que diz respeito ao gerenciamento do dia-a-dia, mas você não pode confiar na mesma tecnologia de hoje.

Read More

Estratégias de modernização de software para tornar seu software fácil de alterar

03 mai 2023 / by Insights da Codurance posted in Posts, modernização de software

0 Comments

À medida que as empresas crescem, seus sistemas e processos crescem com elas. Garantir que o software seja fácil de mudar para esse crescimento é um grande passo para a evolução futura. Frequentemente, os sistemas são continuamente construídos para esse crescimento, mas tornam-se difíceis de mudar e monolíticos.

Read More

Como posso alinhar meus objetivos de negócios com a tecnologia?

14 abr 2023 / by Insights da Codurance posted in software modernisation, Posts

0 Comments

Quando os negócios e a tecnologia estão alinhados, atingir as metas de negócios torna-se mais gerenciável. O conceito de alinhamento muitas vezes preenche a lacuna entre conhecimento, habilidades e comunicação. Assim, criando um ambiente onde todos trabalham para a estratégia do negócio. Muitas vezes negligenciado, esse alinhamento cria um ambiente de negócios onde todos trabalham para os mesmos objetivos, criando equipes mais eficientes trabalhando em direção a objetivos estratégicos de longo prazo e uma organização onde o desenvolvimento entende o contexto operacional do projeto, ajudando a identificar potenciais obstáculos desde o início.

Como isso pode ser feito?

Eliminando silos organizacionais e alinhando as equipes aos objetivos estratégicos de negócios

Embora as equipes focadas no lado tecnológico dos negócios tenham evoluído rapidamente nos últimos anos, a adoção da tecnologia nem sempre se traduziu em processos de negócios simplificados. Os silos em desenvolvimento geralmente são formados devido a objetivos técnicos estarem em primeiro plano, que nem sempre se alinham aos objetivos estratégicos mais amplos definidos nos negócios. Além disso, a falta de compartilhamento de informações entre as equipes prejudica a transparência, com os silos criando uma estrutura de definição de metas individuais em vez de trabalhar em direção aos objetivos organizacionais. Isso pode levar a uma falta de eficiência.

Quebrar silos geralmente inclui tomar medidas para mudar a atitude e a cultura dos funcionários. O ímpeto pode então ser criado por meio de uma mentalidade colaborativa em todos os departamentos. Essa mentalidade pode ser criada por:

  • Compartilhamento de metas de negócios relacionadas ao esforço da equipe
  • Projetando métricas compartilhadas
  • Estabelecer transparência e melhor colaboração entre as equipes

 

Evolução empresarial impulsionada pela tecnologia

A evolução da tecnologia transformou a forma como os negócios são conduzidos nas últimas décadas. Com a tecnologia continuando a evoluir, é provável que mais inovações venham. As empresas que podem se adaptar rapidamente a novas ferramentas e tecnologias atenderão às necessidades de um mercado em constante mudança.

 

Linguagem onipresente

Linguagem onipresente é a prática de construir uma linguagem comum e rigorosa entre desenvolvedores e usuários. No âmbito do Domain Driven Design, esta linguagem existe dentro de um Bounded Context que faz parte de um Context Map mais amplo. Isso cria uma linguagem baseada em modelos dentro do negócio que é completa e compreensível, usando elementos simples que se combinam para expressar ideias complexas. Também ajuda com a sutil diferença dentro de diferentes Bounded Contexts, onde os mesmos termos podem ter significados diferentes. Prestar atenção em como descrevemos os conceitos ajuda a preencher a lacuna entre os vários silos da organização.

 

Colaboração mais próxima

Como mencionado anteriormente, a comunicação é a chave para alinhar os objetivos de negócios e tecnologia. Um fator significativo é criar uma colaboração e relacionamentos mais próximos entre os dois. A adoção de novas tecnologias e o desenvolvimento de roteiros tecnológicos precisam da adesão da alta administração. A primeira etapa é identificar as principais áreas do roteiro que se alinharão com as metas de negócios. Essas áreas podem ter prioridade e começar a educar os desenvolvedores sobre onde o esforço precisa ser concentrado. Uma colaboração mais próxima precisa ser contínua, garantindo que os esforços permaneçam focados nas metas de negócios e permitindo que as equipes de desenvolvimento obtenham feedback de qualidade mais rapidamente.

Feedback de qualidade mais rápido

Os ciclos de feedback são cruciais ao alinhar os objetivos de desenvolvimento aos da estratégia de negócios. Os engenheiros só podem se mover com segurança tão rápido quanto sua compreensão de como uma mudança afeta um sistema. Portanto, quanto mais longo o ciclo de feedback, mais tempo leva para corrigir um problema. O feedback atrasado também pode resultar em supercorreção com base no feedback anterior “obsoleto”. Obter feedback positivo e negativo sobre o processo de desenvolvimento de software permite que as equipes de desenvolvimento de software entendam o impacto que seu trabalho tem sobre os objetivos de negócios, permitindo que criem eficiência na direção certa.


Read More

Como posso aproveitar novas tecnologias em meu software?

14 abr 2023 / by Insights da Codurance posted in Posts, modernização de software

0 Comments

Aproveitar a tecnologia deve ser simples. Como novas tecnologias surgem todos os dias, um diferencial de negócios hoje pode ser uma commodity amanhã. É essencial ter a capacidade de alavancar constantemente novas tecnologias para manter o foco no que é exclusivo do negócio. 

Quais técnicas existem para permitir que as empresas aproveitem a nova tecnologia?

Aqui estão alguns exemplos de como a nova tecnologia pode aprimorar os recursos de negócios:

  • Usando a estratégia nativa da nuvem para aproveitar a capacidade de escalar e ser flexível
  • A arquitetura sem servidor cria uma maneira de criar e executar aplicativos sem precisar gerenciar a infraestrutura
  • A integração de terceiros permite a integração com tecnologias mais recentes sem ter que se preocupar com o tempo e custo de desenvolvimento
  • Usar a conteinerização é uma alternativa à virtualização; ela evolui encapsulando ou compactando o código do software e todas as suas dependências para que possa ser executado de maneira uniforme e consistente em qualquer infraestrutura.
  • Ter a capacidade de aumentar ou diminuir a capacidade (conhecido como dimensionamento elástico). Mais importante em ambientes de nuvem, quando é necessário atender a demandas crescentes quando necessário.
  • Aproveitar o poder da automação aumenta a eficiência e alcança ou mantém uma vantagem competitiva por meio da redução de erros e despesas.
  • Ao gerenciar e provisionar a infraestrutura como código em vez de processos manuais, você pode obter a vantagem de um tempo mais rápido de produção e comercialização, ajudando a empresa a ser a primeira em um cenário competitivo, com consistência aprimorada e menos configuração durante o rascunho.
  • A utilização de bancos de dados gerenciados permite que a empresa se beneficie do monitoramento contínuo e do dimensionamento automatizado fornecidos pelo provedor de banco de dados
  • Os frameworks modernos criam uma estrutura de suporte conceitual e tecnológico definida com módulos específicos que podem servir de base para o desenvolvimento de novos softwares

Como alavancar a tecnologia pode alcançar o sucesso nos negócios? - Os benefícios

Vantagem competitiva

Estamos no meio de uma revolução digital nas últimas décadas, e as empresas que a abraçaram totalmente foram algumas das que obtiveram um grande sucesso. A necessidade de acompanhar a revolução digital está diretamente ligada à complexidade e necessidade de velocidade do ambiente atual. As organizações que continuarem a adotar novas tecnologias se prepararão para melhor atender às necessidades de clientes e acionistas.

Michael Porter, da Harvard Business Review, diz que “a nova tecnologia muda a natureza da competição”, alterando a estrutura da indústria e, ao fazê-lo, alterando as regras da concorrência; criar vantagem competitiva ao oferecer às empresas novas maneiras de superar seus rivais; e gerando negócios totalmente novos, muitas vezes de dentro das operações existentes de uma empresa.

Redução de custos

O negócio é sobre o gerenciamento de custos. Muitas vezes, é um ato de equilíbrio delicado entre manter os custos baixos e maximizar os ganhos. A tecnologia desempenha um papel crucial no gerenciamento de custos por meio da melhoria da eficiência operacional: redução de perdas, menos erros e gastos aprimorados. Novos avanços tecnológicos apenas aumentaram essa eficiência operacional, permanecendo a chave para a redução de custos.

Os serviços de nuvem gerenciados ajudam a reduzir o custo do software, incluindo manutenção, migração, monitoramento e otimização. Isso permite que processos sejam aliviados, como backups em nuvem e manutenção de infraestrutura em nuvem, aliviando a carga de trabalho da equipe interna para se concentrar em tarefas mais críticas. 

Atualização tecnológica

Em vez de usar sistemas até que eles não possam mais funcionar com eficiência, as empresas podem optar por atualizar ou substituir a infraestrutura regularmente, esse processo é conhecido como "atualização de tecnologia".

A manutenção da infraestrutura legada pode ser cara, com tecnologia de data center desatualizada levando a desempenho lento, ineficiências e sobrecarga administrativa. Eficiência energética, taxas de falha e possíveis custos de tempo de inatividade são formas de justificar atualizações regulares de hardware.

Mitigação do fim de vida

Nem tudo foi construído para durar para sempre, e essa é frequentemente a realidade do software. A maioria das empresas procura substituir seus serviços de software regularmente quando, com o tempo, param de atender o cliente com eficiência, tornam-se lentas para mudar, param de receber atualizações do sistema ou perdem a garantia (conforme mencionado na atualização de tecnologia).

Quando os servidores param de emitir atualizações e patches, o software ou as plataformas se tornam mais vulneráveis a ameaças de segurança. E as ferramentas de terceiros geralmente não são compatíveis. Alguns dos perigos do fim da vida são os seguintes:

  • Vulnerabilidades de segurança
  • Incompatibilidade de software
  • Problemas de conformidade
  • Altos custos operacionais
  • Baixo desempenho e confiabilidade




 

O resultado positivo é que, ao aproveitar a nova tecnologia, o fim da vida útil geralmente não é um problema, pois o software e as plataformas são atualizados ou substituídos antes desse estágio.

 

Read More

Como criar soluções de software inovadoras

14 abr 2023 / by Insights da Codurance posted in Posts, modernização de software

0 Comments

A inovação contínua só é possível quando suportada por um software bem desenhado e flexível. Para inovar, as empresas precisam ser capazes de experimentar. Portanto, para alcançar experimentos adequados à inovação, eles precisam ser relativamente fáceis de concluir a um custo baixo. Os sistemas devem ser inicialmente projetados para que os experimentos possam ser independentes e concluídos com o mínimo de impacto nos negócios como de costume.

As empresas precisam ter um software que permita a inovação para acompanhar as demandas dos consumidores e garantir que possam competir em um mercado exigente. O artigo a seguir destaca como uma empresa pode oferecer suporte à criação de software flexível e bem projetado, adequado para inovação, dividido em produto, processo e implementação.

Produto

Criando uma mentalidade de start-up para utilizar loops de feedback rápidos

Lean start-up é uma metodologia de desenvolvimento de negócios e produtos que visa encurtar os ciclos de desenvolvimento de produtos. Essa metodologia de negócios enfatiza o feedback do cliente sobre a intuição e a flexibilidade sobre o planejamento. Em uso, as empresas podem se recuperar de falhas com mais frequência do que durante as formas tradicionais de desenvolvimento de produtos, reduzindo o risco de mercado e evitando a necessidade de lançamentos de produtos caros e deficiências financeiras.

A mentalidade de Lean startup complementa o uso de ciclos de feedback rápidos. Um dos pontos mais críticos para a criação de um bom software é a comunicação, e os loops de feedback são usados para obter feedback sobre o processo de desenvolvimento de software. O feedback não se limita aos pontos positivos, mas também aos negativos que não se alinham com a necessidade do negócio. Concluir um loop de feedback o mais rápido possível acelera e melhora o processo geral de desenvolvimento.

A coisa mais crítica para criar um bom software é a comunicação. Os loops de feedback são mecanismos usados para validar ideias de produtos e refinar o processo de desenvolvimento de software. O objetivo é disponibilizar feedbacks positivos e negativos imediatamente para as equipes. Fazer isso o mais rápido possível acelera e melhora o desenvolvimento geral.

Processo

Usando Feature flags para permitir a inovação

Feature flags são uma técnica de desenvolvimento de software que ativa e desativa a funcionalidade durante o tempo de execução sem implantar um novo código. Ela Permite um melhor controle e mais experimentação ao longo de todo o ciclo de vida.

O objetivo por trás dessa técnica é criar funcionalidades condicionais no código para tornar a lógica disponível para determinados grupos de usuários por vez. Se a flag estiver ativada, o novo código será executado. Se a flag estiver desativada, o código poderá ser ignorado.

Os benefícios de usar feature flag são os seguintes. 


  • Testes
    Feature Flags permite que as equipes de desenvolvimento testem novos recursos durante a produção, ao mesmo tempo em que reduz o risco de um lançamento inicial ruim, pois o recurso pode ser revertido rapidamente, se necessário. Esse processo permite que a funcionalidade de novos lançamentos seja validada no mundo real com testes de usuário precisos, minimizando o risco.
  • Ciclos mais rápidos de lançamento
    As equipes podem modificar o comportamento de um sistema sem fazer alterações de código disruptivas no código ativo, portanto, sem afetar outras equipes. Além disso, as feature flags criam uma simplicidade para implantar no processo de desenvolvimento, economizando tempo.
  • Entrega contínua
    Feature flags carregam a capacidade de permitir um aprendizado rápido. Isso permitirá que as empresas forneçam e entreguem continuamente software para seus usuários de maneira mais rápida. As organizações costumam usar feature flags para realizar lançamentos graduais de recursos, corrigir bugs no código sem reimplantar e experimentar um ciclo de desenvolvimento mais simplificado.
  • Bloqueio de features
    A técnica Feature flags pode ser usada para implementar lançamentos direcionados de uma funcionalidade específica para um subconjunto de usuários. Essa funcionalidade pode ser ótima para testes A/B, mas também pode ser usada para liberar funcionalidades apenas para um subconjunto de clientes.

    Testes AB 

    Experimentos são necessários para criar software inovador. Receber feedback e dados do público real ajuda a entender as prioridades e necessidades. Usando o teste A/B, as equipes podem gerar esses dados. O teste A/B pode ser implementado usando sinalizadores de recursos, conforme mencionado acima, bem como outras formas, como o uso de gateways de API que direcionam condicionalmente o tráfego para diferentes implantações. Ao habilitar um recurso para metade de um segmento de usuários e desabilitar o recurso para a outra metade, a empresa pode entender como os dois se comportam em relação a uma determinada métrica.

    Os testes A/B podem ser implementados para segmentos específicos de público, por exemplo, usuários que moram em um determinado país ou se encaixam em um perfil de usuário específico.

    Infraestrutura como código

    "Infraestrutura como código (IaC) é o gerenciamento e o provisionamento de infraestrutura por meio de código, em vez de processos manuais."

    O gerenciamento da infraestrutura de TI é um processo manual. Isso inclui altos custos indiretos e complexidade de comunicação, criando barreiras à inovação sem investimento significativo devido ao comprometimento, como construção e manutenção de data centers. Isso também afeta a escalabilidade; com configuração manual necessária, isso cria problemas durante os horários de pico.

    Como a infraestrutura como código resolve esses problemas, criando um espaço para inovação? O uso da computação em nuvem libera a empresa da construção e manutenção de data centers (e dos altos custos associados). Antes do IaC, as equipes de TI precisavam alterar manualmente as configurações para gerenciar a infraestrutura. Considerando que o IaC permite que a configuração da sua infraestrutura assuma a forma do arquivo de código. Isso gera benefícios como

    • Velocidade
    • Consistência
    • Responsabilidade
    • Eficiência
    • Custos mais baixos 

    Benefícios que podem se traduzir em ser mais flexível e adaptável às mudanças nas demandas dos consumidores e mudanças no mercado.

    Dimensionamento elástico

    O dimensionamento elástico é a capacidade de ajustar a capacidade para manter um desempenho estável e previsível com o menor custo possível. Conforme mencionado acima, este é um processo manual com infraestrutura local que envolve comprometimento e investimentos significativos de tempo. Com a nuvem, você pode automatizar esse processo para ajustar a capacidade conforme sua necessidade. Por exemplo, isso envolveria grandes picos durante as temporadas de férias, como Black Friday ou Natal para o setor de comércio eletrônico.

    Ele permite que as empresas mantenham automaticamente o desempenho conforme projetado, criando disponibilidade em momentos imprevisíveis. Além disso, há eficiência de custo ao pagar apenas pelos recursos de que você precisa. À medida que a demanda diminui, também diminui o excesso de capacidade de recursos para evitar gastos excessivos.

    A visibilidade é um benefício adicional, pois uma empresa pode usar os dados para entender suas necessidades de desempenho. Ajudar a entender em que estágio a inovação é possível e fornecer a eles os dados para se destacar em um espaço de mercado lotado.

    Desenho/Implementação

    Arquitetura modular – experimentos localizados

    A arquitetura modular é uma forma de gerenciar a complexidade de um problema, dividindo-o em módulos gerenciáveis menores. A arquitetura modular é um estilo que ajuda a visualizar o sistema, não apenas em camadas ou serviços, mas um nível abaixo, à medida que as partes são divididas em módulos físicos menores. Esses módulos estão confinados no contexto em que são fornecidos.

    Este estilo é para criar um ambiente propício para testes e experimentos. As equipes podem trabalhar em módulos fechados para garantir que os experimentos sejam limitados a um ambiente e não afetem os negócios, ou alterem o código que outra equipe pode precisar para seu sistema.

    A recolha de informações está inserida na arquitetura e no design.


    A observabilidade capacita os desenvolvedores a usar uma abordagem orientada por dados em todo o ciclo de vida do software. Isso permite que os desenvolvedores planejem, criem e implantem softwares que sustentam ótimas experiências do usuário.

    O que isso significa na prática e como isso ajuda na inovação? A observabilidade ajuda a melhorar os tempos de ciclo de planejamento, diminui as taxas de falha de mudança e aumenta a frequência de lançamento. Para que uma empresa seja bem-sucedida em inovação e tenha um bom desempenho em relação aos concorrentes, é essencial colocar os lançamentos nas mãos dos consumidores primeiro.

    Com uma abordagem baseada em dados, desenvolvedores e empresas são capazes de superar o quê e descobrir o porquê. Isso significa que eles podem se concentrar no código de maior prioridade e impacto nos negócios para chegar à solução mais rapidamente.

    Usar dados e ferramentas para observar o comportamento de um sistema, antes, durante e depois do desenvolvimento para aprender sobre seus padrões ajuda a entender como ele se comportará diante de seu usuário. Isso pode melhorar e impactar a maneira como o software se comporta com os usuários. Tomemos, por exemplo, arquitetura orientada a eventos - é quando uma mudança no estado aciona a criação de um evento. Esses eventos são detectados por um ou mais consumidores de eventos que reagem de acordo. Por exemplo, quando um item é adicionado ao carrinho de um cliente em uma plataforma de comércio eletrônico, um produtor de evento pode acionar um evento detalhando essa ação. Um consumidor de evento, por sua vez, pode se inscrever nesse produtor e atualizar o inventário para refletir a alteração na disponibilidade do produto.

    Produtores e consumidores são gerenciados independentemente um do outro, o que significa que essa natureza desacoplada permite que o desenvolvimento alcance benefícios de resiliência, escalabilidade e manutenção.

    A capacidade de reunir essa informação a partir de uma série de experimentos rápidos permite a tomada de decisão baseada em dados, reduzindo ineficiências e especulações e, conforme mencionado acima, sendo mais eficiente.

Aproveitar as técnicas existentes para tornar o software mais fácil de mudar, mais evolutivo e flexível significa que as mudanças por meio da experimentação e dos dados são mais fáceis de realizar com sucesso e com mais segurança. A experimentação de software não deve impactar os negócios como de costume, mas deve apoiá-los. Entender como seu público deseja se comportar com seu software é um bom passo para a inovação contínua pelo motivo certo.

Read More

Como otimizar a implementação de software para uma mudança sustentável

13 abr 2023 / by Insights da Codurance posted in Posts, modernização de software

0 Comments

As empresas só podem se mover tão rápido quanto o software de qualidade pode ser entregue. Criar mudanças sustentáveis é fazer mudanças eficientes e mais seguras. Todos os pontos a seguir contribuem para otimizar a implementação de software para mudanças sustentáveis.

 

Criando Desenvolvimento de Software Sustentável

O que isso significa em termos empresariais? À medida que o ritmo da inovação aumenta nas empresas em todo o mundo, o tempo de vida esperado de aplicativos de software bem-sucedidos precisa aumentar com isso. A tecnologia e o software devem ser fáceis de mudar em ritmo paralelo à inovação. O desenvolvimento sustentável tem a ver com eficiência e equilíbrio entre as necessidades de curto e longo prazo.

Utilizando a arquitetura modular e alinhada com o negócio

A modularidade do software é a decomposição de um programa em programas menores com interfaces padronizadas. À medida que as empresas competem para entregar os valores mais críticos do cliente, mais rapidamente, criando uma arquitetura modular alinhada aos objetivos de negócio, as diferentes funções de software são divididas. Isso permite que módulos separados sejam desenvolvidos rapidamente sem ficarem presos em uma teia complexa de outras funções, permitindo que as equipes evitem obstáculos para aumentar a velocidade e a mutabilidade.

Este processo é sobre ser flexível, aprimorando o software existente para atender às necessidades do negócio de forma mais sustentável. Como resultado, as empresas podem trabalhar continuamente em novos recursos, mantendo a qualidade do software existente e sem colocar em risco a confiabilidade do produto.

Sem flexibilidade, o ritmo de desenvolvimento é mais lento, com mais bugs e problemas de teste. Isso cria projetos de hardware antigos e caros e de hardware em fim de vida, impactando a abordagem sustentável para o desenvolvimento de software.

Processos ágeis (práticas XP)

A programação extrema (XP) é uma das estruturas ágeis, sendo sua principal característica a ênfase nos aspectos técnicos do desenvolvimento de software. Introduzido por Ken Beck et al na década de 90, o objetivo é criar software de alta qualidade rapidamente, adaptável e, portanto, sustentável. XP é um dos métodos de engenharia de software mais populares dentro da metodologia Agile. Algumas das principais práticas desse método são:

#1 – Programação em Par

Programação em Par é quando dois (possivelmente mais) engenheiros trabalham lado a lado para desenvolver o código juntos. Essa prática visa otimizar a qualidade e promover a comunicação da equipe.

Leia mais para entender como a Programação em Par funciona:
https://www.codurance.com/publications/should-i-use-pair-programming

#2 - Padrões de Codificação

Os projetos que carecem de um conjunto padrão de regras sofrem de falta de consistência e aumentam a probabilidade de problemas técnicos e defeitos. Dentro de qualquer projeto isso gera ineficiência, fazendo com que a implantação se torne insustentável.

Entenda mais sobre por que escrever um código de qualidade é importante: https://www.codurance.com/publications/2020/09/29/is-it-even-possible-to-deliver-software-compliant-fast-and-correctly/

#3 – Ritmo Sustentável

Um dos princípios fundamentais do Manifesto Ágil é respeitar o equilíbrio entre vida profissional e pessoal das equipes e incentivar o desenvolvimento sustentável, o que aumenta o moral e a qualidade do produto. O XP reforça esse valor para maximizar a eficácia da equipe.

#4 – Desenvolvimento dirigido por testes (TDD)

O XP afirma que os testes de unidade devem ser escritos antes do código, o que é uma prática com a qual muitas organizações não estão acostumadas. No entanto, o processo de TDD exige que os testes sejam escritos junto com o código de produção em um loop iterativo e restrito, garantindo que a alteração do código seja continuamente verificada por testes automatizados.

Saiba mais sobre TDD:

https://www.codurance.com/publications/2018/05/26/should-we-always-use-tdd-to-design

 https://www.codurance.com/publications/2015/05/12/does-tdd-lead-to-good-design

XP oferece práticas que podem beneficiar a maioria das equipes de software na criação de uma abordagem estruturada para a entrega de software. Cria uma cultura de eficiência e código bem elaborado que se adapta ao futuro.

Cultura DevOps de processos estáveis e repetíveis

A cultura DevOps abrange aspectos técnicos, comerciais e culturais do desenvolvimento. Criando:

Maior velocidade e qualidade dos lançamentos de produtos. A cultura DevOps acelera o lançamento do produto introduzindo entrega contínua, incentivando um feedback mais rápido e permitindo que os desenvolvedores corrijam bugs durante os estágios iniciais, permitindo que as equipes se concentrem na qualidade do software.

Resposta mais rápida às necessidades do negócio. As equipes podem reagir a solicitações de alteração mais rapidamente, adicionando novos recursos e atualizando os existentes.

Melhor ambiente de trabalho. Os princípios do DevOps levam a uma melhor comunicação entre os membros da equipe. Criando maior produtividade e agilidade, muitas vezes sendo considerados mais produtivos e com habilidades cruzadas.

Forte ênfase na qualidade do código

A qualidade do código costuma ser considerada um elemento abstrato que não afeta os resultados. No entanto, na realidade, uma codificação incorreta pode prejudicar o desempenho do produto, afetando negativamente a eficiência. Um impacto semelhante é criado com cantos de corte. Para que o código seja atualizado paralelamente à inovação, o código deve estar correto em primeira instância.

A manutenibilidade é uma das causas mais frequentes de falta de sustentabilidade ao trabalhar em código escrito por outros indivíduos. Para criar alterações e extensões, o código precisa ser adaptável e legível.

À medida que as empresas crescem, o software também e, dentro disso, o código associado. Se o código não for criado com qualidade para escalar, ele pode falhar catastroficamente nesses pontos de pressão, prejudicando os objetivos de negócios.

 

 

 

Read More

Por que a cultura é tão importante no desenvolvimento de software?

11 abr 2023 / by Insights da Codurance posted in Posts, modernização de software

0 Comments

A capacidade de uma empresa de atingir seus objetivos geralmente está centrada na receita e no lucro, mas entender como os níveis de produtividade e a satisfação do funcionário se encaixam nisso pode ser a chave para o sucesso do negócio e geralmente depende em grande parte de sua cultura. Para começar a definir cultura e seu sucesso não deve ser confundido com outros aspectos de um benefício comercial, Horowiz define cultura como três coisas:
  • O comportamento coletivo de todos na organização.
  • O que as pessoas fazem quando não estão dando a elas uma direção.
  • A maneira do Negócio fazer as coisas.

Portanto, a cultura é um reflexo do ambiente de trabalho e da liderança dentro dele.

Por que a cultura é importante para o desenvolvimento de software?

Uma cultura saudável reúne os desenvolvedores em torno de um objetivo comum, de criar código de alta qualidade, melhorando continuamente e aproveitando o processo. A cultura não é apenas fundamental para o alinhamento e eficácia do trabalho, mas para recrutar e reter talentos de alto nível.

A criação de uma boa cultura para as equipes de desenvolvimento de software pode ser alcançada por

  • Proporcionando espaço para autonomia e domínio
  • Criação de um senso de propósito
  • Treinamento Contínuo
  • Coaching e mentoria
  • Comunidades internas de prática
  • Engajamento com comunidades externas

Embora a cultura de uma empresa geralmente seja definida pelos comportamentos, as ações implementadas podem criar a trajetória para um ambiente de trabalho bem-sucedido.

Usando tecnologia moderna e atraente

Há duas seções para este ponto de ação, a primeira focando na progressão na carreira e na motivação dentro de uma equipe de desenvolvimento de software. O ritmo da inovação na indústria de software é exponencial e, para as empresas, o foco é obter vantagem competitiva por meio de conhecimento coletivo, experiência e criatividade. Portanto, a busca por atrair funcionários com um conjunto de habilidades modernas e inovadoras nunca foi tão importante. As equipes também são mais atraídas para trabalhar em novas técnicas e tecnologias modernas que têm uma vida útil mais longa, em vez de atualizar continuamente o software legado.

A segunda se enquadra na expectativa do negócio. Dar aos funcionários acesso às ferramentas e tecnologias de que precisam para realizar seu trabalho e deixá-los trabalhar da maneira que funcionar melhor para que sejam mais eficientes. Se os sistemas administrativos forem lentos e ineficientes, isso pode afetar a moral dos indivíduos. Sem as ferramentas para realizar tarefas administrativas com eficiência, isso afeta a produtividade em outros lugares.

Treinamento Contínuo 

É relatado que empresas com culturas de aprendizado contínuo têm uma produtividade 37% maior e 92% mais chances de inovar.

No entanto, esse caminho de cultura não é apenas fornecer oportunidades de aprendizado, mas criar uma verdadeira mudança, para permitir que a força de trabalho assuma todo o potencial que o treinamento tem a oferecer, para fornecer tempo e expectativas.

Focando, especialmente na cultura de aprendizagem contínua, um conjunto de valores e práticas que estimulam os indivíduos (e o negócio como um todo) a aumentar continuamente o conhecimento, a competência, o desempenho e a inovação. Isso é alcançado por meio do compromisso com a melhoria contínua e da promoção de uma cultura de inovação.

Coaching e mentoria 

Uma cultura de coaching e mentoria é um estilo de gerenciamento e trabalho em conjunto com o compromisso de fazer crescer o negócio e as pessoas no negócio. Abrange não apenas habilidade e desempenho, mas o desenvolvimento de cada indivíduo e sua carreira.

Pode ajudar as equipes a trabalhar juntas em direção a um objetivo comum, criando o hábito de desafiar um processo ou suposição. Também acelerando a transferência de conhecimento.

Ao criar essa cultura nas equipes de desenvolvimento de software, ela ajuda a reduzir a rotatividade de talentos, melhorando o envolvimento dos funcionários e o comprometimento com o trabalho para contribuir com o desempenho individual e da equipe.

Comunidades internas de prática (CoP)

Uma comunidade de prática é um grupo de pessoas que compartilham uma preocupação comum ou interesse em um tópico. Grupos se reúnem para cumprir objetivos individuais e de grupo.

Dentro das equipes de desenvolvimento de software, ao ter CoPs internas, pessoas que normalmente não colaborariam (se estiverem em equipes ou projetos diferentes) podem ser conectadas. Isso incentiva o compartilhamento de informações e experiências em todo o negócio. A coordenação entre todos os membros do negócio permite a resolução de problemas, a partilha de boas práticas e muitas vezes ajuda a remover quaisquer bloqueios no processo.

Essa comunicação aumenta o compartilhamento de conhecimento e ajuda a melhorar a cultura de coaching e mentoria.

Engajamento com comunidades externas

Grande parte de todas as técnicas citadas tem acesso ao conhecimento e aprendizado, o que continua com o engajamento com as comunidades externas. Muitas vezes, uma empresa não tem todas as respostas, e é por isso que incentivar o envolvimento fora da empresa apenas ajuda a aumentar o compartilhamento e o desenvolvimento do conhecimento. Ser capaz de conversar sobre problemas, objetivos de carreira ou novas tecnologias com novas pessoas aumenta a satisfação e melhora a taxa de retenção de funcionários. Também permite que funcionários experientes posicionem seu próprio conhecimento dentro da comunidade de software.

Comunicar-se externamente também aumenta a taxa de atração de novos talentos. 

Criar uma cultura de negócios na qual os funcionários se sintam felizes em trabalhar, não apenas ajuda na retenção, mas, como mencionado acima, oferece um espaço para trabalho eficaz, crescimento da produtividade e iniciativa para inovação. Portanto, a cultura se torna importante na modernização do software, pois é a chave para ajudar os desenvolvedores a trabalhar em direção a um código de maior qualidade e um ambiente de trabalho onde todos se esforçam para melhorar continuamente. Garantir que o software e os funcionários evoluam com o negócio, em vez de trabalhar como sempre funcionou.

Read More

Desenvolvimento Ágil de Produtos na Prática

06 abr 2023 / by Lucy Broomfield posted in agile, Posts, processo, desenvolvimento de produto

0 Comments

A agilidade, ou a capacidade de responder às mudanças em seu mercado, costuma ser considerada um dos preditores mais significativos do sucesso de uma empresa. Na verdade, os projetos ágeis desfrutam de uma chance 60% maior de sucesso em comparação aos projetos mais tradicionais do tipo “cascata”.

Mas o que é Ágil? O conceito de uma abordagem Agile é algo que é muito discutido. Mas pode haver muita confusão sobre o que isso realmente implica. Tem algo a ver com paredes cheias de post-its coloridos? É um software sofisticado de gerenciamento de projetos? Ou algo que você só aprende com consultores especializados?

Nesta publicação, abordaremos os principais e mais importantes conceitos e processos do desenvolvimento de produtos Agile e como você pode aplicá-los à sua própria organização.

Primeiro, antes de olharmos para Agile, vamos dar uma olhada em cascata:

Cascata (Waterfall)


‘Cascata" (Waterfall) é o nome do estilo mais tradicional de desenvolvimento de produtos, tanto para software quanto para produtos físicos.

Segue um processo linear. Para começar, normalmente há um longo processo de planejamento (Planning), onde absolutamente tudo para todo o projeto é planejado. Esta fase de planejamento pode levar vários meses.

Após a conclusão do planejamento, o projeto passará para a próxima etapa, 'Design', onde todo o design do produto é finalizado. O projeto continua passando pelas etapas, sempre completando a última etapa completamente antes de passar para a próxima.

Finalmente, o produto acabado completo é lançado no mercado, meses, senão anos, após o estágio inicial de planejamento. Como resultado, o produto errado pode ser lançado no mercado. O que originalmente poderia ter sido um produto bem planejado com um ótimo ajuste ao mercado, agora pode estar desatualizado quando for lançado. A tecnologia pode ter mudado ou a demanda do mercado pode ter mudado.

 

Cascata (Waterfall) x Ágil

 

Então, olhamos para a Cascata (Waterfall), mas o que isso tem a ver com o Agile?
Bem, com o Agile, dividimos o processo em Cascata em partes menores.
Primeiro, fazemos apenas o planejamento necessário para começar. Em vez de planejar o produto inteiro, planejaremos apenas um componente muito pequeno dele, talvez apenas um ou dois recursos.

Em seguida, pretendemos construir e projetar apenas o suficiente para podermos enviar esse pequeno conjunto de recursos - também conhecido como 'versão incremental'.
No Agile, todo esse processo, desde o planejamento até a liberação incremental, geralmente leva cerca de 2 semanas e é frequentemente chamado de 'sprint'.
Depois de fazer um lançamento, começamos o ciclo novamente. A cada vez, estamos planejando apenas o suficiente para criar a próxima versão incremental de software funcional.

Ao enviar pequenos lançamentos regulares, o processo do produto é flexível. À medida que enviamos pequenos conjuntos de recursos ou versões incrementais, podemos começar a testar rapidamente e coletar feedback do usuário sobre cada recurso enviado. Esse teste contínuo significa que podemos responder rapidamente a requisitos novos e em constante mudança. Como resultado, podemos ajustar continuamente o roteiro de curto prazo para atender às necessidades do cliente, o que significa que temos muito mais chances de entregar um produto final que nossos usuários adoram.

Princípios Agile


O desenvolvimento ágil de produtos é baseado nos 12 princípios ágeis. No entanto, a fim de manter este artigo amigável para iniciantes, vamos nos concentrar apenas em 4 princípios-chave abaixo que acho útil ter em mente se você for novo no Agile.

1-Refletir e ajustar: Em intervalos regulares, a equipe reflete sobre como se tornar mais eficaz, então sintoniza e ajusta seu comportamento de acordo.

2-Satisfazer o cliente: Nossa maior prioridade é satisfazer o cliente por meio da entrega antecipada e contínua de software valioso.

3-Entregue com frequência: Entregue o software funcionando com frequência, de algumas semanas a alguns meses, com preferência pela escala de tempo mais curta.

4-Equipes auto-organizadas: As melhores arquiteturas, requisitos e designs surgem de equipes auto-organizadas.


Como você pode ver pelos princípios, Agile não é uma lista de processos a serem seguidos ao criar um produto, mas sim um conjunto de valores e crenças orientadoras que podem ser usados para ajudar a tomar decisões ao desenvolver produtos.

Se você está aprendendo sobre o 'mundo ágil', há uma boa chance de também ter ouvido outros termos, como 'Scrum' e 'Kanban'. Scrum e Kanban são metodologias ágeis populares. Eles são estruturas de desenvolvimento de produtos projetadas para ajudar as equipes a alcançar os princípios ágeis.

No entanto, embora essas metodologias possam ajudar uma equipe a ser ágil, elas não são necessariamente ágeis em si mesmas. Seguir essas metodologias só resulta em uma prática ágil se ajudar a equipe a alcançar os princípios ágeis. Você não precisa necessariamente seguir uma metodologia ou processos estritamente se achar que não está ajudando sua equipe a alcançar os princípios ágeis. A equipe está refletindo e se ajustando? Você está entregando recursos com frequência? Alcançar os princípios ágeis é o que determina se uma equipe é realmente ágil.

Talvez você esteja seguindo o Scrum, que sugere ter uma reunião diária para se conectar com sua equipe. Mas depois de segui-lo por algum tempo, simplesmente não está funcionando. Você descobre que sua equipe é mais produtiva e satisfeita tendo reuniões sentadas em torno de uma mesa. Tudo bem também! Você pode fazer essa mudança. Parte do Agile está respondendo à mudança, revisando seus processos e adaptando, e isso também pode significar adaptar como você estrutura o desenvolvimento de seu produto.

Por fim, você deve usar o que achar que ajuda sua equipe a tomar melhores decisões ágeis. Não existe um método ou sistema verdadeiro que seja a única maneira de ser Ágil.
Para equipes novas no Agile, pode ser mais fácil seguir uma metodologia estabelecida para começar com alguma estrutura em vigor, então, quando sua equipe se sentir confortável, você pode tentar mudar a fórmula.

Quem compõe uma equipe ágil?


Uma equipe ágil é composta por:

Equipe de desenvolvimento
Essa equipe geralmente inclui habilidades como design, desenvolvimento, teste e entrega. Os membros da equipe geralmente desempenham várias funções, alguns dias eles podem estar testando e outros dias desenvolvendo.

Product owner (Proprietário do produto)
Um Product owner (proprietário do produto) é responsável por maximizar o valor do produto criado pela equipe de desenvolvimento. Essa função interna reúne requisitos técnicos, prepara o backlog do produto e detalha as histórias do usuário.

Partes interessadas / acionistas (Stakeholders)
As partes interessadas podem ser qualquer pessoa afetada pelo desenvolvimento de um projeto de software. Isso inclui uma ampla categoria de pessoas, como usuários finais, executivos e TI.

Entendendo seus usuários


Antes de prosseguirmos, vamos examinar a comunicação com os usuários e entender suas necessidades.

No início do desenvolvimento de um produto, e de forma consistente durante todo o processo, você deve se comunicar e testar com os usuários. Geralmente, esse é um trabalho principalmente para o profissional de UX da equipe, se você tiver um, mas realmente todos os membros da equipe devem ser incentivados a conversar regularmente com usuários reais.

A comunicação com o usuário pode ser feita de várias maneiras:

  • Entrevistar usuários atuais sobre como o produto funciona em suas vidas.
  • Permitir que os usuários testem seus novos recursos após um sprint e forneçam feedback.
  • Perguntar aos usuários em potencial sobre sua experiência com produtos concorrentes.

O objetivo da comunicação com o usuário é identificar as necessidades do usuário. Um exemplo de necessidade do usuário pode ser “comparar convenientemente as tarifas de telefonia móvel”. As necessidades do usuário sempre devem ser baseadas em conversas reais com as pessoas, não nas necessidades que a equipe acha que o usuário deseja.

Definindo a estratégia do produto

No início de um novo projeto de desenvolvimento de produto Agile, você precisa definir a estratégia do produto. Isso resume a necessidade de negócios que seu projeto está abordando. Em termos mais simples: qual é o objetivo final deste projeto Agile e como você o alcançará?

Os proprietários do produto são responsáveis por criar uma estratégia de produto em colaboração com suas partes interessadas para garantir a adesão e o alinhamento. It is optional, but recommended to include key members of the development team too.

Definir uma estratégia clara é crucial em um ambiente Ágil. Às vezes, as equipes de desenvolvimento podem se sentir presas aos detalhes de um projeto e perder de vista o objetivo geral por trás de todo o seu trabalho. A estratégia do produto é uma meta de alto nível à qual a equipe pode se referir para ter certeza de que está vendo o quadro geral.

Para se preparar para uma reunião de estratégia de produto, você já deve ter trabalhado de perto com os usuários para entender seus pontos problemáticos, pesquisado o mercado e estar ciente de seus objetivos comerciais gerais. Existem muitos modelos e ferramentas de tela que você pode usar para ajudá-lo a criar sua estratégia de produto. Um que eu acho muito amigável para iniciantes é o método de Elevator Pitch.

Read More

Por que o gerenciamento de riscos de software é importante?

06 abr 2023 / by Insights da Codurance posted in Posts, modernização de software

0 Comments

À medida que as oportunidades de inovação e crescimento são reconhecidas, muitas vezes não estão isentas de riscos associados. Gerenciamento de riscos, excelência operacional, segurança e conformidade não podem ser deixados de lado durante o desenvolvimento de software. Gerenciar esses riscos torna-se crítico para a sustentabilidade de uma organização.

Os riscos comumente associados podem ser conformidade com regulamentos, certificações, problemas de produção, e proteção de dados, os quais podem aumentar o custo se não forem mitigados corretamente.

O gerenciamento e a mitigação de riscos podem ser alcançados por:

Isolar e introduzir controles mais rígidos em áreas críticas

Entender as áreas de risco é fundamental para identificar e lidar com todos os riscos aos quais uma organização pode estar exposta. Sistemas críticos são os sistemas cuja falha pode resultar em perda de vidas, danos significativos ou danos ao meio ambiente. Ser capaz de isolar áreas como essas para implementar um controle mais rígido das alterações ajuda a garantir que o risco não esteja sujeito a um ambiente ativo. Isolar áreas que requerem auditorias mais rigorosas, de modo que mudanças em áreas não relacionadas não acionem auditorias, também pode reduzir significativamente o tempo e o esforço necessários para manter auditorias de sistemas críticos.

Adotando uma abordagem estratégica para a conformidade regulatória


Autoridades em todo o mundo divulgam e atualizam recomendações no ambiente de tecnologia, incluindo o uso da tecnologia em nuvem. Espera-se que as organizações cumpram os requisitos estatutários, incluindo leis de tecnologia, leis e regulamentos setoriais. O alinhamento com os regulamentos deve ser uma abordagem estratégica das empresas, com mais atenção aos requisitos e desenvolvimento para minimizar riscos e custos.

O objetivo das regulamentações no desenvolvimento de software é garantir a mais alta qualidade possível do produto final e, ao mesmo tempo, proteger o usuário (de situações como vazamentos de dados). As diretrizes geralmente são estabelecidas para o processo de desenvolvimento e seguir uma abordagem estruturada ajuda a entender cada etapa com facilidade. Isso também permite que cada etapa seja revisada por uma equipe sênior de partes interessadas para garantir que os regulamentos sejam cumpridos e possam ser facilmente adaptados.

Saiba mais sobre como as empresas podem ter a capacidade de responder às mudanças (como regulamentos) no mercado usando a abordagem Agile para desenvolvimento de produtos:

Desenvolvimento Ágil de Produtos na Prática.

Uso de serviços na nuvem para criar ambientes seguros e escaláveis


A escalabilidade da nuvem refere-se à capacidade de aumentar ou diminuir os recursos conforme necessário para atender à demanda em constante mudança. A computação em nuvem, ao contrário das máquinas físicas em data centers (cujos recursos e desempenho são relativamente definidos), pode ser facilmente ampliada ou reduzida por meio do gerenciamento "just-in-time" dos recursos disponíveis. Recursos e aplicativos podem ser deslocados conforme necessário.

Isso aumenta a conveniência e permite flexibilidade, pois as empresas podem atualizar os sistemas para atender a novos requisitos ou aumentar a capacidade e o armazenamento. Além disso, ajudando nos custos de recuperação de desastres, eliminando a necessidade de construir e manter centros de dados secundários.

À medida que o uso da nuvem continua a se expandir, os provedores de nuvem continuam a fazer um investimento significativo para garantir a proteção e a conformidade dos dados. Muitos serviços de nuvem para empresas possuem recursos de segurança integrados, incluindo criptografia, ameaças de terceiros e autenticação baseada em função do aplicativo.

Auditoria e registro projetados como cidadãos de primeira classe - requisitos operacionais


O software poderia ser projetado de forma mais eficaz para gerenciar riscos se o logging não fosse tratado como uma reflexão tardia ou uma ferramenta de depuração, mas sim como um recurso de aplicativo, parte dos requisitos de observabilidade mais amplos. Os requisitos para o logging são ser capazes de registrar os eventos que acontecem, ser capazes de reagir a todos e diferentes tipos de eventos (de várias maneiras), entender os padrões de longo prazo e registrar os eventos corretamente. Ao garantir a excelência operacional durante a auditoria (e a etapa de logging), isso ajuda a minimizar riscos futuros.

Eficácia operacional e controle de custos


Melhorar a eficácia operacional não é um truque de uma etapa, mas sim um esforço combinado de todas as equipes. É uma mentalidade a ser adotada em toda a organização, que maximiza os resultados e ajuda a rastrear e garantir o controle de custos. De acordo com o mantra do DevOps, a dica para fazer com que várias equipes trabalhem juntas é separar sua organização criando uma única equipe de DevOps que supervisiona o desenvolvimento, as operações e tudo mais. A excelência operacional serve como uma meta cultural compartilhada por todas as equipes e membros da equipe durante o processo de desenvolvimento e implantação de software. Ao tornar a excelência parte integrante de sua cultura, você ganha um princípio que pode guiar todas as suas equipes

Engenharia de Confiabilidade do Site (SRE)


A engenharia de confiabilidade do site é um conjunto de práticas e princípios que incorpora a engenharia de software e os aplica a problemas operacionais e de infraestrutura. O resultado, para criar sistemas de software altamente confiáveis e facilmente escaláveis.

As definições mais comuns dos princípios de engenharia de confiabilidade do site são as seguintes:

  • Automação ou eliminação de qualquer coisa repetitiva que também seja econômica para automatizar ou eliminar.
  • Evitar buscar muito mais confiabilidade do que o estritamente necessário. Definir o que é necessário é uma prática por si só.
  • Projeto de sistemas com viés para a redução de riscos de disponibilidade, latência e eficiência.
  • Observabilidade, como a capacidade de fazer perguntas arbitrárias sobre seu sistema sem ter que saber antecipadamente o que você deseja perguntar


Read More

Assinando o TTC

06 abr 2023 / by Natalie Gray posted in codurance, Posts, cultura, carreiras, inclusão e diversidade

0 Comments

A Codurance tem o prazer de anunciar que se tornou signatária do Tech Talent Charter (TTC), uma organização sem fins lucrativos com a missão de promover maior igualdade na tecnologia do Reino Unido e reduzir a crescente lacuna de habilidades tecnológicas. O TTC fornece uma comunidade e plataforma de conteúdo e ferramentas para apoiar as iniciativas de inclusão e diversidade de seus membros e criar novas oportunidades para atrair e reter talentos diversos. Eles também produzem um relatório anual de benchmarking usando dados de seus membros que acompanham a diversidade em tecnologia em todo o Reino Unido.

Read More

Inclusão e Diversidade na Codurance

05 abr 2023 / by Natalie Gray posted in Posts, cultura, carreiras, inclusão e diversidade

0 Comments

2020 foi um ano estranho, para dizer o mínimo. Aqui na Codurance, tivemos que adaptar nossos processos, sistemas e formas de trabalho para garantir que nossa equipe possa trabalhar remotamente, manter sua saúde e bem-estar e atender nossos clientes sem interrupções. Nem sempre foi fácil, mas continuamos a prosperar com o apoio de nosso pessoal fantástico, ótimas ferramentas e uma cultura de aprendizado. É essa grande cultura que primeiro atraiu nossa chefe de talentos e pessoas para a Codurance, como ela explica abaixo:

Read More

Uma reflexão sobre Software Craftsmanship

05 abr 2023 / by Mashooq Badar, Sandro Mancuso posted in software craftsmanship, Posts, comunidade

0 Comments

Muitas pessoas dentro e fora da comunidade de Software Craftsmanship referem-se a Craftsmanship como uma “Metáfora” para o Desenvolvimento de Software. Nós mesmos frequentemente nos referimos ao Software Craftsmanship como uma metáfora sem pensar muito no que isso significa para nós. Pensando mais profundamente, e olhando para nossos comportamentos e valores dentro da comunidade, não consideramos Craftsmanship como uma metáfora para o Desenvolvimento de Software. Dizer que Craftsmanship é uma metáfora para o desenvolvimento de software é dizer que é como um ofício, mas não literalmente um ofício. Essa não é a nossa perspectiva - achamos que o desenvolvimento de software é um ofício.

Read More

O software craftsman

05 abr 2023 / by Sandro Mancuso, Co-founder and Group CEO posted in software craftsmanship, Posts, comunidade, cultura

0 Comments

O Software Craftsman define o mindset do Software Craftsmanship e o que significa ser um desenvolvedor de software profissional.

Este livro é uma enciclopédia sobre o comportamento, atributos e estrutura de uma organização que se esforça para crescer em profissionalismo e aderir aos princípios de Software Craftsmanship.

Robert C. Martin

O livro abrange uma ampla gama de assuntos relacionados à nossa profissão e está repleto de conselhos e histórias pessoais que ilustram o estado atual de nossa indústria, como as coisas poderiam ser melhores e o que os desenvolvedores podem fazer para trazer mais profissionalismo, pragmatismo e orgulho para nossa indústria.

O prefácio traz uma história muito inspiradora sobre como Sandro encontrou seu primeiro mentor e como esse relacionamento moldou sua vida pessoal e profissional.

Parte I - O Mindset e Atitude

Na primeira parte, Sandro define o mindset do Software Craftsmanship e a atitude esperada de verdadeiros artesãos de software.

  • Capítulo 1 Desenvolvimento de software no século XXI

    Descreve como a senioridade é medida erroneamente na maioria das empresas e explica como os desenvolvedores devem evoluir e se comportar para lidar com formas de trabalho mais modernas.

  • Capítulo 2 Agile

    Descreve os problemas com a maioria das adoções ágeis e como o Software Craftsmanship pode ajudar a resolvê-los, fornecendo um bom equilíbrio entre processos e práticas técnicas.

  • Capítulo 3 Software Craftsmanship

    Define o mindset do Software Craftsmanship, fornecendo uma história detalhada e a razão para o que se tornou um movimento internacional.

  • Capítulo 4 A Atitude de Software Craftsmanship

    Explica a atitude que se espera de um software craftsman e dá várias dicas de como se tornar um profissional melhor.

  • Capítulo 5 Heróis, Boa Vontade e Profissionalismo

    Aborda como lidar com pressão e prazos apertados de maneira profissional.

  • Capítulo 6 Software Funcionando

    Descreve os problemas de software de baixa qualidade e como culpar a empresa por isso não é uma opção. Com uma atitude diferente, os desenvolvedores poderiam tornar as coisas muito melhores.

  • Capítulo 7 Práticas Técnicas

    Ajuda os desenvolvedores a entender e comunicar o valor de negócio associado às práticas técnicas, aumentando as chances de adotá-las. Também fala sobre pragmatismo e responsabilidade.

  • CapítuloO Longo Caminho

    Este capítulo é sobre a determinação necessária para ter uma carreira de sucesso. Este é um dos capítulos favoritos de Sandro e não vamos estragá-lo contando mais. :)

Parte II - Uma Transformação Total

Na segunda metade, Sandro se concentra em trazer os princípios e valores do Software Craftsmanship para as organizações.

  • Capítulo 9 Recrutamento

    Para a maioria das empresas, o recrutamento está quebrado. Este capítulo explica como atrair grandes desenvolvedores, redigir descrições de cargos e ter um recrutamento *proativo*.

  • Capítulo 10 Entrevistando Software Craftsmen

    Afirma que o processo de entrevista é uma negociação comercial e fornece conselhos para empresas e candidatos para chegar a acordos mutuamente benéficos.

  • Capítulo 11 Anti-Padrões de Entrevista

    Muitos bons desenvolvedores acabaram rejeitando uma empresa por causa de uma experiência ruim durante as entrevistas. Este capítulo fornece muitos conselhos sobre as coisas que devem ser evitadas ao entrevistar desenvolvedores.

  • Capítulo 12 O Custo da Moral Baixa

    Aborda o impacto que o baixo moral tem em uma organização e como corrigi-lo injetando um pouco de paixão.

  • Capítulo 13 Cultura de Aprendizagem

    Fornece muitas ideias e exemplos para criar e nutrir uma cultura de aprendizagem. Também mostra que qualquer desenvolvedor pode fazer isso mesmo sem o suporte da administração.

  • Capítulo 14 Impulsionando Mudanças Técnicas

    Identifica diferentes padrões de ceticismo e oferece muitas ideias sobre como superá-los. Ele também fornece conselhos sobre como estabelecer confiança e como aumentar as chances de convencer pessoas com pontos de vista opostos.

  • Capítulo 15 Craftsmanship Pragmático

    Craftsmanship sem pragmatismo não é craftsmanship. A qualidade não é cara - a falta de habilidades é. Este é um capítulo importante que destrói alguns mitos sobre o craftsmanship ser caro e lento.

  • Capítulo 16 Uma Carreira como Software Craftsperson

    Introduz uma grande mudança de atitude quando se trata de gerenciar nossas próprias carreiras. Este é um capítulo forte que inspirou muitos desenvolvedores desde que o livro foi publicado. Garantimos que não voltará a olhar para a sua carreira com os mesmos olhos.

Apêndice - Mitos do Craftsmanship e Outras Explicações

Devido à sua importância, este apêndice deveria ter sido apresentado como um capítulo próprio. Como acontece com tudo o que se torna popular, existem muitos equívocos sobre Software Craftsmanship. Este apêndice aborda muitos deles, incluindo: a diferença entre desenvolvedores e artesãos; elitismo; a velha metáfora — aprendiz, jornaleiro e mestre; o papel de mestre artesão; diferenças entre Craftsmanship e XP; foco estreito e práticas técnicas; esclarecimentos sobre alguns pontos feitos anteriormente no livro sobre Agile Coaches e gestores.

Se você quiser saber mais sobre o livro, você pode ler o prefácio e um capítulo de amostra.

Read More