segunda-feira, 30 de março de 2020

A Maior Virtude de um Profissional de TI Sênior




Após praticamente 30 de anos de tecnologia vigente em nosso cotidiano e com centenas de títulos e posições criadas, já temos um grande número de profissionais que se enquadram na categoria Sênior, porém a mais importante das virtudes é completamente deixada de fora na maioria das vezes por esses profissionais no dia a dia. Não é que ela seja desconhecida ou menos importante, é que essa característica deveria ser intrínseca ao perfil Sênior e praticada em todos os momentos. 

Essa virtude é a Paciência!

Quando iniciei minha na carreira, toda tarefa designada à mim, me parecia urgente e deveria ser feita o mais brevemente possível para atender o prazo estipulado, e todos sabemos como os prazos são importantes, logo, a questão não é atrasar as tarefas, mas a velocidade que ela é iniciada, ou seja, não se dedicava muito tempo para "pensar" e sim parte  para "executar". Isso é típico de quem esta começando e não detém de muita experiência, entretanto sobra energia.

Com o passar dos anos, muitas experiências são adquiridas, seria muito natural que os profissionais mais seniores tenham posturas mais parecidas com sábios, que por conta de suas bagagens, tendem a analisar, estudar, avaliar e debater antes de iniciar qualquer movimento, vejamos esse lindo exemplo de um sábio diante de uma adversidade.

Conta a lenda que um velho sábio, tido como mestre da paciência, era capaz de derrotar qualquer adversário no quesito “paz interior”. Certa tarde, um aprendiz apareceu com a intenção de desafiar tal mestre.

E o aprendiz começou a vociferar contra o mestre. Chegou até a jogar algumas pedras em direção ao sábio. Durante horas, ele fez tudo para provocá-lo, mas o sábio permaneceu impassível! No final da tarde, sentindo-se já exausto e humilhado, o aprendiz se deu por vencido e foi embora.

Impressionados, os alunos perguntaram ao mestre como ele pudera suportar tanta indignidade. Aí o mestre perguntou: “Se alguém chega até você com um presente e você não o aceita, a quem pertence o presente?” “A quem tentou entregá-lo”, respondeu um dos discípulos e o mestre completou: "A sua paz interior depende exclusivamente de você. Ninguém pode lhe tirar a calma. Só se você permitir."

No conto figurativo, graças a experiência do sábio aliada a paciência, ele pode resolver a situação sem a necessidade de nenhum rompante. A paciência é uma virtude que não pode ser confundida com a tolerância excessiva, com a aceitação da falta de qualidade, com o não cumprimento do dever. Uma pessoa paciente é aquela que tem domínio sobre o seu ser, ou ainda a capacidade de resistência a influências externas e o domínio da própria vontade.

A paciência é uma virtude fundamental para um profissional sênior. Ela pressupõe um exercício constante de empatia, ou seja, de se colocar no lugar de outra pessoa, isso auxilia muito no trabalho em equipe. Requer a humildade para respeitar opiniões alheias mesmo que delas discordando, auxiliar aqueles que estão iniciando na carreira, manter a calma em momentos turbulentos e principalmente se utilizar dela para inspirar a todos a sua volta.

Marcelo Goberto de Azevedo 
Arquiteto na GFT Brasil
//marcelogoberto.com.br

terça-feira, 24 de março de 2020

Principais Motivos para Adoção de Desenvolvimento Guiado por Teste (TDD)




Cada metodologia tem suas vantagens para adoção, a TDD (Test-Driven Development ) oferece uma técnica simples que pode garantir a qualidade de entrega e principalmente a segurança nas alterações realizadas no código após sua implementação.

A técnica dessa metodologia é escrever os testes primeiro e depois codificar, dessa maneira você irá se preocupar em pensar em cenários de aceitação, como entrada e saída para atender requisitos de funcionalidade, antes de efetivamente implementá-los. 

Tudo Terá um Teste Afinal

Tudo que precisa ser criado deverá começar pelo teste, para que possamos criar os testes, precisamos ter pleno entendimento da implementação para escrever os testes que precisaram ser validados para atender os requisitos. Outro ponto, é que os testes são evolutivos, devemos escrever um teste, efetuar a implementação, verificação seu resultado positivo, melhorar o código, testar o resultado, escrever um novo teste, implementar a solução, verificar seu resultado e assim por diante. Se durante o processo de uma nova implementação ou melhoria algo quebrar, os testes anteriores vão apontar e tudo deverá ser validado antes de darmos continuidade.

Redução de Código Complexos

Muitas vezes escrevemos códigos que acabam ficando imutáveis, ou seja, uma vez que funcionou ficamos com receio de alterá-lo e acabar quebrando o que está funcionando. Tendo uma fundação baseada em testes, podemos tranquilamente analisar o código para efetuar sua refatoração para simplificá-lo ou ainda performá-lo, sem a preocupação que ao final ele poderá quebrar algo, porque os testes vão garantir sua aderência. Outro fator positivo é que os testes não serão escritos para atender a codificação e sim cenários de negócios, como consequência teremos mais códigos testáveis.

Simplicidade em Primeiro Lugar

Todo desenvolvedor tem o deve ter como parte principal do seu trabalho planejar a implementação, e sem dúvida alguma sendo feito esse planejamento da forma mais simples e objetiva possível o resultado será praticamente a perfeição, já dizia Leonardo da Vinci, "Simplicidade é o último grau de sofisticação".  Quando definimos iniciamos pelo teste que precisa ser validado, temos que pensar na implementação mais simples que atende os requisitos e caso a solução não seja simplista no primeiro momento, podemos melhorá-la num próximo ciclo garantido a qualidade da execução.

Código Refatorados com Segurança

Muitas vezes temos que alterar códigos de terceiros, ou os nossos próprios, e não se sentimos confortáveis em garantir que nada irá parar de funcionar, contudo, se essa rotina contiver testes que foram escritos exclusivamente pensando em atender os requisitos de negócio, podemos tranquilamente efetuar alterações e aplicar os testes para validá-los, com isso qualquer alteração fica praticamente segurança em fornecer a garantia de sucesso na sua implementação.

Basicamente, o ciclo do TDD é escreva o teste, implemente um código para fazer o teste ser válido e melhore o código sem quebre nenhum teste. Repita esse ciclo até que sinta-se todos os requisitos foram testados e atendidos.

Para um cenário onde um desenvolvedor deve garantir seu produto final, ou seja, a codificação de uma necessidade, essa metodologia oferece muitos fatores positivos para facilitar a entrega e também garantir a qualidade, é um paradigma começar por algo que não seja o código, porém após um período de adaptação você verá como é mais simples e funcional utilizar o método Test-Driven Development (TDD).


Marcelo Goberto de Azevedo
Arquiteto na GFT Brasil
//marcelogoberto.com.br

sexta-feira, 20 de março de 2020

Regras de Ouro para Reuniões Online


Prepare o material a ser usado na reunião com antecedência

Mesmo com todas as facilidades de ter tudo a mão em seu computador, esteja previamente preparado com o documento já separado, ou janelas abertas em segundo plano, envie materiais comuns que serão utilizados para todos os participantes.

Organize o ambiente

Esteja onde você estiver, caso você abre a câmera o fundo deve ser neutro ou corporativo. Caso esteja de home office vale a pena organizar o espaço, na maioria das vezes, a simples mudança de local do computador para uma parede resolve o problema.

Atenção ao vestuário

Sua apresentação é um ponto importante, lembre-se é uma reunião de trabalho, esteja apresentável como se estivesse trabalhando normalmente no escritório.

Seja pontual

Esse ponto é importantíssimo, além do fato que se atrasar é visto com um pessímo hábito, ainda detona falta de respeito com os demais participantes, esteja on-line e disponível para ser chamado cinco minutos antes do horário combinado, para garantir que a reunião comece pontualmente.

Cuidado com a distração

Nunca fique olhando sites, e-mails ou arquivos não relacionados à reunião para não perder o foco. Para fugir da tentação, a dica é deixar tudo fechado.

Microfone ligado só quando você for falar

Quando você for falar você deve ligar o microfone, fora essa condição os ruídos de seu ambiente vão interferir na fala de outro participantes e acabar tirando o foco e atrapalhando.

Silêncio é fundamental

No formato home-office, fique sozinho no ambiente e peça para os membros da família não interromperem. O cuidado deve ser redobrado, coloque o celular no modo silencioso e o telefone fixo da casa longe do espaço de trabalho.



Marcelo Goberto de Azevedo
Arquiteto na GFT Brasil
https://www.marcelogoberto.com.br/


segunda-feira, 16 de março de 2020

Arquitetura de Nuvem Básica


Alguns conceitos que todos desenvolvedor deveria saber antes de iniciar no mundo da nuvem.

O diagrama abaixo é uma representação de uma aplicação web básica bem estruturada, caso você não seja um desenvolvedor da nuvem, provavelmente achará complicado.


A seguir vamos conhecer cada um desse componente e dar uma introdução para que você possa ter o conhecimento necessário quando incluí-lo na arquitetura do projeto. 

1. DNS

A sigla DNS (Domain Name System), é a tecnologia que permite a internet. Esse componente permite que todos os IP e domínios possa ser referenciados e encontrados. Imagine uma gigante lista telefônica da internet, é através dela que é possível encontrar onde está um determinado  endereço. Quando informamos um domínio em nosso navegador, por exemplo  www.pudim.com.br, esse endereço será pesquisa nesta lista telefonica para encontrar onde deve ser direcionado a navegado, por trás é sempre um IP, no caso desse endereço é o 54.207.20.104.

2. LOAD BALANCE

O Load Balance é um componente essencial para a arquitetura de nuvem, uma das principais características das aplicações em nuvem é sua escabilidade horizontal, ou seja, podemos criar inúmeras instâncias (replicas) das aplicações para atender um grande demanda de requisições, garantindo assim a disponibilidade. E neste cenário que o Load Balance entra, porque ele será o responsável por distribuir essa demanda entre todas as instâncias existentes, garantir um as regras neles definidas sejam atendidas para evitar sobrecarga em determinada instância e prover alta performance das requisições.

3. WEB APP SERVER

Esse são os servidores de aplicativos web, basicamente é onde a aplicação está instalada e responderá ao usuário através do recebimento da requisição e fornecerá uma resposta HTML. Por ser o cérebro da aplicação, será responsável por se comunicar com uma variedade de outros componentes, como banco de dados, filas, cachês, microserviços e muito mais. As implementações no servidor requer uma escolha de uma linguagem (C# .NET , Node.js, Ruby,  Scala, Java, etc). 

4. DATABASE

Basicamente todo aplicativo utiliza banco de dados para armazenar informações. É através deles que podemos armazenar e atualizar os dados capturados ou gerados pela aplicação. No modelo nuvem, principalmente com microserviços, é bem comum utilizarmos vários banco de dados. Além disso atualmente existe duas versão de banco de dados, sendo a mais utilizada o banco relacional (SQL Server, Oracle, MySql, etc) e banco não relacional (CosmoDB, MongoDB , DynamoDB, etc), basicamente a diferença é que o relacional oferece maior consistência e confiabilidade e não relacional tem como vantagem uma escalabilidade maior, com a informação agrupada e armazenada no mesmo registro. 

5. CACHE SERVER

O serviço de cache basicamente fornece a consulta e persistência de dados em praticamente tempo real. Os aplicativos geralmente utilizam consulta ao banco de dados que são executadas várias vezes e retornam o mesmo valor, para evitar o processamento dessa informação, o cachê armazena esse resultado em memória e o mantêm disponível pelo tempo configurado para a aplicação, efetuando assim um grande ganho de performance. 

6. JOBS

A maioria dos aplicativos da precisa trabalhar de forma assíncrona, ou seja, que não esteja associada à resposta à solicitação de um usuário. Para isso são utilizado as "filas de trabalho", é através delas que rotinas são agendadas para serem executadas de tempos em tempos para realizar trabalhos que não necessitam que aconteçam diretamente associados a usuários. As opções de linguagem e estruturas subjacentes são tão numerosas quanto para os servidores da web e na sua grande maioria podem ser criados no conceito "serverless ", que são algoritmos que são executados sem servidor e com orientação para eventos. 

7. STORAGE

Esse repositórios são uma maneira simples e escalável de armazenar e acessar dados na nuvem. Eles são perfeitos para qualquer tipo de informação que você armazenaria num sistema de arquivos local, com o beneficio de ser acessível por meio de http de qualquer local. E ainda pode contar com a configuração de redundância para garantir sua alta disponibilidade. 

8. CDN

A CDN (Content Delivery Network) é uma tecnologia que oferece uma maneira de permitir o acesso a arquivos estáticos (html, css, javascript, imagens, etc) mais rapidamente do que permitir que o usuário tenha que chegar até a aplicação web para receber seu conteúdo. Basicamente ele funciona distribuindo uma cópia do conteúdo mais atual entre muitos servidores em todo mundo, assim quando um usuário efetuar o acesso ao aplicativo web, esse conteúdo será entregue pela CDN mais próxima ao usuário e evitando assim consumo de tráfego do servidor, isso irá garantir uma latência bem menor para o usuário e uma melhor experiência.

Trabalhar com a nuvem é simples e complexo ao mesmo tempo. Esses elementos apresentados são uma pequena parte das inúmeras possibilidades que existem para montar uma arquitetura, porém espero que seja útil para dar o ponta pé inicial na sua utilização. Acredite que o futuro das aplicações será inevitavelmente estar na nuvem.

Marcelo Goberto de Azevedo 💫
Arquiteto na GFT Brasil
//marcelogoberto.com.br/

quarta-feira, 11 de março de 2020

Desenvolvimento de Projeto Colaborativo Online


Já imaginou um time de colaboradores desenvolvendo em modo colaborativo em tempo real sem estar fisicamente no mesmo local, cada desenvolvedor pode escrever e verificar códigos que estão sendo gerados ou modificados instantemente com segurança.


O Live Share do Visual Studio 2019 agora permite essa funcionalidade, o processo é bem simples e rápido, neste artigo vamos exemplificar como iniciar.

O VS 2019 já contém essa funcionalidade habilitada, 
o VS 2017 é necessário a instalação através do Marketplace.

Primeiro passo é abrir o projeto que deseja efetuar a colaboração, depois você deve clicar na opção “Live Share” localizada no topo direito da janela.


Assim que a sessão for criada será exibido uma notificação e o atalho para a sessão que deverá ser enviado para os participantes já estará na sua área de transferência.


Importante: Somente neste momento você pode alterar a sessão
para somente leitura através da opção “Make read-only”

Conforme os convidados forem entrando, por padrão não é necessária autorização para ingressar, se deseja habilitar uma autorização, você pode configurar através da opção Tools > Options > Live Share > Authetication > Require guest aprroval. Outras configurações que são importantes:
  • Co-debbugging > Allow guest Control - Permite os convidados possam iniciar, pausar e habilitar pontos de parada;
  • Share Build > Allow guest control – permite que o usuário inicie a compilação do projeto remotamente;
  • Advanced > Increased guest limit – Por padrão somente 5 convidados são permitidos, alterando essa propriedade o público poderá ser de até 30 convidados.


Quando o usuário acessar o atalho para se juntar a sessão, será necessário aceitar a abertura do tipo de atalho, para que inicie automaticamente o Visual Studio com a sessão na máquina do convidado, esse processo pode ser um pouco lento, alguns segundos, por conta de subir a instância.


Através da aba “Live Share” será possível verificar os participantes que estão conectados na sessão, você poderá habilitar a função “Follow” que faz com que sua interface siga os passos desse usuário e você poderá também encerrar a sessão de um determinado usuário.


Quando um projeto Web é executado os convidados recebem uma notificação para que possam aceitar a abertura da instância do navegador.



Ponto Interessante: Para cada ponto de interação de um convidado fica evidenciado através de indicador visual e se você marcar para seguir o usuário, suas telas ficaram sincronizadas.



Agora ficou mais fácil programar, você pode reunir toda a equipe ao mesmo tempo.

Marcelo Goberto de Azevedo
Arquiteto na GFT Brasil
https://marcelogoberto.blogspot.com/


segunda-feira, 9 de março de 2020

Primeiro Dashboard no PowerBI


O PowerBI é uma ferramenta de analise de dados, assim como outras do mercado: Tableau, QlikView, entre outras. Elas se propõem a fornecer a descoberta de dados através de Inteligência de Negócio (BI) . Atualmente as empresas detém um enorme repositório de dados provenientes de múltiplos sistemas e todas essas informações podem fornecer indicadores (KPIs), painéis, visões, gráficos, relatórios que ajudam em tomadas de decisão.  Entretanto a compilação, agrupamento, normatização e relacionamentos desses dados sem uma ferramenta de BI é praticamente impossível.

Vamos iniciar um dashboard no Power BI para que possamos entender um cenário básico e sua rápida aplicação, existem duas formas de construir um relatório, pode ser feito diretamente através do site http://www.powerbi.com/ ou efetuar o download do PowerBi Desktop, neste artigo estarei utilizando a versão desktop.

Para esse primeiro contato, vamos exemplificar como criar um mapa com dados provenientes de um arquivo csv online, vamos utilizar os dados referentes aos casos confirmados do corona vírus ao redor do mundo para criar um mapa de pontos de casos.

O primeiro passo será criar um "conjunto de dados", vamos iniciar a importação do arquivo com informações, esse arquivo que iremos utilizar está disponibilizado dentro de uma estrutura no Github




Vamos selecionar a opção "Web" para criar essa fonte de dados



Devemos informar o caminho do arquivo, importante saber que estando referenciado na internet, se a origem dos dados forem atualizadas, seu relatório poderá efetuar essa atualização rapidamente.



Os dados serão carregados, porém a primeira linha não está como cabeçalho, para isso será necessário clicar em "Transformar os Dados"



E selecionar a opção "Usar a Primeira Linha como Cabeçalho", automaticamente acontece a referência, após isso podemos finalizar a importação clicando na opção "Fechar e Aplicar"



Os dados foram carregados para dentro do PowerBi, podemos ser utilizados para criação dos elementos



Para uma simples exibição, basta agora adicionar o elemento de mapa e referenciar o campo, primeiramente façamos a inclusão do elemento "Mapa"



Basta definir a propriedade "Localização" com o campo "Country/Region" e a propriedade "Tamanho"  com o campo "3/7/20"



Pronto, seu mapa estará exibindo os locais que tiveram casos confirmados até o dia 07 de março de 2020.



Com um simples ajuste, também podemos exibir uma tabela para exibição do dados.

Em apenas alguns minutos foi possível criar um gráfico a partir de uma fonte de dados na nuvem. No próximo exemplo, vamos explorar a utilização de dados de múltiplas origens e criar relacionamento entre esses dados para criação de relatórios complexos.


Marcelo Goberto de Azevedo
Arquiteto na GFT Brasil
https://marcelogoberto.blogspot.com/

segunda-feira, 2 de março de 2020

Conquistando a Certificação Azure Fundamentals (AZ-900) em 10 dias





Essa certificação é considerada a inicial para qualquer profissional da área de tecnologia que irá atuar com conceito de nuvem, pois ela provêm todo o balizamento inicial dos conceitos, terminologia, ferramentas, benefícios, enfim, os conceitos fundamentais para ter autoridade sobre a famoso "Cloud".

Neste modelo, utilizei o Trello como ferramenta para controle de atividades e cronograma, segue o atalho para utilização como base, para dar inicio aos seus estudos.  O processo é bem simples, cada "card" contém um conteúdo ou atividade que deve ser realizada dentro do dia, uma vez realizada, basta movê-lo para "Realizado", com isso você poderá acompanhar seu progresso.


Os recursos que iremos utilizar para estudar e garantir que você passe na prova serão:

  1. Conteúdo da Microsoft (Learn) em inglês, importante estudar em inglês, porque a prova será neste idioma e as vezes durante as traduções, algumas coisas ficam meio estranho e geram confusão;
  2. Simulação de prova, utilize o portal (https://www.whizlabs.com/), o preço é bem convidativo, se você solicitar via chat, ainda consegue um desconto em média de 30% para a sua compra, o valor de cinco simulados ficou em torno de US$ 11,00.


Durante esses 10 dias você necessitará em média de 1 a 2 horas de dedicação para cumprir todas as tarefas do cronograma e ao final estará 100% apto para passar na prova.

Algumas dicas que podem auxiliar e tranquilizá-lo para alcançar a certificação:

  • Você não precisa saber tudo, ou seja 100%, as empresas precisam que você domine um determinado assunto, não que seja o sabe tudo, por isso que a nota mínima é 70% de acerto sobre a prova, se você estudou para 100%, será muito fácil conseguir 70% e garantir a certificação;
  • Todas as questões oferecem opções para resposta, caso tenha dúvida, execute o processo de eliminação, ou seja, remova as opções que tem certeza que são incorretas, isso diminuirá o número de respostas para escolher;
  • Um método que ajuda na hora da realização da prova, leia cada pergunta calmamente, escolha a resposta e passe para próxima, ao final das questões, volte ao inicio e revise cada uma das respostas. Caso seja necessário, corrigia a opções previamente escolhida, porém faça isso somente uma vez, porque quanto mais tentar revisar ou entender, poderá gerar falta de confiança;
  • Antes e durante a prova procure estar relaxado, lembre-se, você se preparou com antecedência, estudou, reviu as questões incorretas, tudo irá dar certo ao final.


Tenho certeza que será fácil alcançar essa certificação.

Marcelo Goberto de Azevedo
Arquiteto na GFT Brasil
https://marcelogoberto.blogspot.com/