domingo, 7 de março de 2021

Mindfulness com Origami

 

Você com certeza já ouviu falar de Mindfulness, esse termo pode ser traduzido de forma livre para “Atenção Plena”, ou seja, é o ato de se concentrar fortemente numa tarefa no momento atual para que você utilize todo o seu potencial para executá-la.

Os benefícios da utilização dessa concentração são vários, entre os principais voltados para área de tecnologia são: mente aberta, confiança, desapego, aceitação e o principal paciência. Estamos vivendo uma época em que somos constantemente bombardeados dos mais diversos estímulos, e caso não tenhamos controle e consciência estaremos sempre se “perdendo” num mar de pensamentos, e sabendo que o pensamento é nossa principal ferramenta de trabalho, é fundamental que possamos ter nossa mente focada para gerar ideias com qualidade.

Existem algumas maneiras de praticar o estado de atenção plena, a mais conhecida é a através da prática de meditação, entretanto num ambiente de trabalho, caso não exista um espaço que ofereça essa possibilidade, fica muito mais difícil. Outra forma é através da respiração cadenciada, ou seja, através do controle da inspiração e expiração podemos induzir o estado, contudo é necessário um tempo longo para completar o ciclo. 

Uma forma bem interessante e simples e que pode ser utilizada em qualquer lugar, hora e ambiente, é executar dobraduras, mais conhecidas como origami. Origami é uma arte milenar japonesa de representar elementos naturais através de dobras em folhas de papel utilizando somente as mãos, sem cortá-la ou colá-la. Quem assistiu a série “La Casa de Papel” deve lembrar que quando o professor entrava em negociação com a polícia, ele pegava uma folha de papel e iniciava a dobradura de origami, isso porque essa ação lhe obrigava a manter a sua mente no momento atual. 

Efetuar a dobradura de um origami pode aumentar nossa atenção plena de forma simples. Iniciar uma dobradura exigirá somente uma folha de papel e pode ser executada em qualquer local e qualquer situação, seja numa reunião, numa palestra, ou em sua mesa. Durante o processo de dobradura sua mente estará sendo "obrigada" a se colocar no momento presente, para executar o próximo passo, com isso ela não consegue escapar para o passado ou futuro.  Todo origami é único, ou seja, isso irá lhe treinar a abandonar o perfeccionismo, a autocrítica ou o autojulgamento. O ato da dobradura pode ser considerado uma micro meditação, porque você está completamente envolto no processo e dentro do aqui e agora. O origami também força a desaceleração, porque o ato de dobrar o papel em formas predeterminadas deve ser feito com paciência e consideração. Por fim, ao final da dobradura você poderá compartilhar com outras pessoas o resultado, tanto o origami, como a forma de fazer, criando assim conexão.

Como iniciar? Simples! Escolha um modelo de origami, eu recomendo um Tsuru, por conta da quantidade de dobras, exigirá de seu cérebro uma concentração maior para lembrar os passos, abaixo vou deixar um passo a passo, execute algumas vezes até decorar os movimentos. Toda vez que você for iniciar uma atividade que precise aumentar sua atenção, inicie a dobradura do origami, naturalmente seu cérebro irá se adaptar após a execução e lhe prover mais potencial em foco na atividade subsequente. E claro, pratique sempre, pois através da repetição o estado gerado pelo Mindfulness será mais facilmente acessado a cada nova sessão.



Marcelo Goberto de Azevedo 

Arquiteto na GFT Brasil

//marcelogoberto.com.br


sábado, 6 de fevereiro de 2021

As Três Leis do TDD

 

Já enumerei as principais razões para utilização da metodologia de Desenvolvimento Orientado a Testes neste artigo (link) e também como praticar em sessões de Coding Dojo neste outro artigo (link), dessa vez quero abortar as leis do TDD (Test Driven Development), essas leis que podemos entender como regras são fáceis de entender e principalmente nos fornecem uma forma simples de validar o que estamos fazendo.

Essas regras foram definidas por Robert C. Martin (Tio Bob), principalmente no intuito de auxiliar no processo de iniciação na utilização da metodologia TDD, essas três regras são mecânicas, você deverá aplicá-las porque irá lhe forçar a escrever código de melhor qualidade e aumentará a facilidade de manutenibilidade.

Lei 1: Você não pode escrever nenhum código fonte, antes de escrever uma especificação de teste que falhe

Isso quer dizer basicamente, o principal e o óbvio para a metodologia, nenhum código pode ser criado, ou classes, ou interfaces, ou seja nada, antes que a especificação do testes seja escrita e falhe, que obviamente irá falhar porque não tem nenhum código para ser validado.

Lei 2: Você não pode escrever mais do que um teste para falhar (e não compilar é falhar)

Muitas vezes já queremos adiantar todas as possíveis soluções e cenários plausíveis para garantir que o que iremos desenvolver irá cobrir os testes e atendendo os resultados esperados, porém esses testes não são testes unitários, são especificação de testes de comportamento, ou seja, você terá que primeiro escrever uma especificação de teste, essa especificação falhará, você então irá codificar para passar no teste e só depois você poderá escrever uma nova especificação de teste para um novo comportamento, dessa forma a cada nova especificação, codificação, estará sendo criado uma pilha de testes que continuaram sendo validados sobre o que está sendo desenvolvimento com qualidade e sem quebras.

Lei 3: Você não pode escrever código fonte mais do que o suficiente para passar no teste que está falhando

Essa talvez seja a regra mais difícil de executar, porque como programador é natural durante o processo de implementação, já tentamos adiantar passos e prever condicionais, situações e comportamentos, porque dessa forma conseguimos escrever códigos que aceleram a implementação final, porém a metodologia nos obriga a dar um passo de cada vez para que possamos ter ciência e principalmente cobertura de todo o processo, com isso fica bem claro que o código fonte que devemos implementar tem que ter o propósito de fazer o teste ser passado e somente isso. Um exemplo básico para ilustrar, caso escreva um teste que precise validar a soma de dois valores (exemplo 1 e 3), sua função deve simplesmente retornar 4, isso fará o teste passar. O motivo por trás disso é forçar você a pensar e dar pequenos passos e ser muito mais produtivo do que tentar codificar em grandes etapas.

Essas três leis podem parecer simples e talvez irão criar um processo moroso inicialmente, entretanto a principal função do TDD é garantir qualidade de código gerado e principalmente cobertura de testes focadas na solução do problema. Ter implementações menores oferecem um poder de concentração maior num único ponto, o que potencializa sua capacidade de resolver o centro do atual problema, com o ponto resolvido, você passa para o próximo e assim até o final. É exatamente para isso que servem essas três leis.


Marcelo Goberto de Azevedo 

Arquiteto na GFT Brasil

//marcelogoberto.com.br


segunda-feira, 11 de janeiro de 2021

A Importância da Escalabilidade

 

Há um tempo atrás a maioria das empresas mantinha projeção de expansão programadas e limitadas, se imaginava uma estrutura final para as aplicações que sempre iria atender as necessidades por um longo tempo. Entretanto, o cenário atual possibilita cada vez o crescimento rápido e volátil de qualquer negócio, com isso se torna essencial criar soluções que se adaptem rapidamente aos novos patamares utilizando a escalabilidade para gerar estabilidade aos seus usuários.

Mas o que é escalabilidade? É basicamente a condição de uma solução de lidar com uma quantidade crescente de trabalho, minimizando o tempo de inatividade e erros, ou seja, é garantir que sempre seja possível atender a todos usuários com uma experiência de qualidade.

Existem dois tipos de escalabilidade, a mais utilizada é Dimensionamento (conhecido como horizontal), esse tipo é quando aumentamos o número de máquinas ou instâncias onde a aplicação está instalada, oferecendo através de balanceamento a distribuição de processamento de carga evitando a sobrecarga num único ponto. O outro é a Ampliação (conhecido como vertical), é quando efetuamos o aumento da capacidade computacional da máquina ou instância, para garantir que sempre haja recurso para processar as requisições. Não há uma opção ideal, é necessário a avaliação do cenário para definição de uma solução, e ainda pode ser considerada uma terceira opção que é a utilização de uma mistura entre as duas opções.

Além do fator mais importante, a disponibilidade da aplicação, o custo é outro fator que com a utilização da escalabilidade é beneficiado, isso porque através de uma estrutura altamente volátil podemos criar regras automatizadas de modificação de recursos que irão manter o ambiente do tamanho necessário para cada momento, reduzindo o investimento desnecessários, ou seja, estamos pagando pelo que está sendo consumido e não pelo achamos que será consumido.

Outro fator beneficiado também é a segurança, com a escalabilidade, a redundância e aumento de recursos de forma automática garante a disponibilidade e segurança dos dados. Falhas de hardware e gargalos que podem danificar os dados são corrigidos de forma praticamente automática.

A escalabilidade é cada vez mais um diferencial vital para qualquer solução, desde as monolíticas chegando nos micro serviços, por isso é fundamental fazer parte da concepção desde o início, porque dessa forma será possível garantir, disponibilidade, estabilidade, versatilidade, segurança e direcionamento de recursos.


Marcelo Goberto de Azevedo 

Arquiteto na GFT Brasil

//marcelogoberto.com.br