Logo Tech Writers

Tech writers

Esse é o nosso blog para apaixonados por tecnologia! Aqui, softplayers e outros especialistas compartilham conhecimentos fundamentais para o desenvolvimento dessa comunidade.

SEJA UM TECH WRITER
O impacto do M&A na sociedade e a comunicação durante a fusão como chave para o sucesso
Tech Writers Fevereiro 10, 2022

O impacto do M&A na sociedade e a comunicação durante a fusão como chave para o sucesso

https://open.spotify.com/episode/2p3BXgOno2xChLEXgnM2A9?si=Z69-IvWwR6C7BmxaKsMayQ No episódio de hoje falaremos sobre M&A (do inglês Mergers and Acquisitions, ou em português, “Fusões e Aquisições”) e como isso gera um impacto na vida das empresas. Para isso, convidamos dois profissionais da área para debaterem a respeito desse tema. Guilherme Tossulino, Diretor de M&A da Softplan e Pierre Schurmann, Founder e CEO da nuvini. Confira um pouco mais sobre esse bate-papo a seguir! Trajetória dos convidados Pierre já está no mundo de startups e tecnologia desde 1996. Ele já foi fundador e investidor de diversas empresas ao longo da sua carreira. Em 2019, Pierre fundou a nuvini, uma empresa focada em M&A. A nuvini é uma empresa de Saas B2B (Software as a Service for Business to Business) que atua em três verticais estratégicas por meio de empresas que são líderes de seus segmentos. O seu propósito é transformar a história de pequenas e médias empresas através de tecnologias mais acessíveis na nuvem. Guilherme trabalha na Softplan há quase seis anos. Desde então, ele já atuou em várias frentes relacionadas a investimentos e aquisições. Há aproximadamente um ano, Guilherme está a frente na diretoria de M&A.  Comunicação como uma etapa essencial no M&A Na maior parte dos casos, é difícil deixar todos os indivíduos envolvidos cientes de tudo o que está acontecendo em um processo de fusão de empresas.  A maioria das empresas que a nuvini adquire são empresas menores. Por isso, durante o processo de M&A Pierre deixa claro que nas interações ele sempre pede para as pessoas tirarem todas as suas dúvidas. É uma grande mudança, logo é preciso salientar todas as confusões e não entendimentos. Mostrar o que vai mudar e o que vai permanecer como antes é extremamente importante. O processo de comunicação é a chave para gerar resultados positivos. Caso uma pessoa envolvida no projeto não entenda muito bem algo, uma parte da estratégia vai apresentar algum erro no resultado. Dessa forma, esclarecer dúvidas é fundamental. O impacto da fusão de empresas no ecossistema de Softwares É certo que quando ocorre a junção de forças entre empresas, isso gera um grande impacto para o ecossistema de Softwares brasileiro, uma vez que cada uma possui sua essência, independente dela ser pequena, média ou grande.  Atualmente há mais de 600 pessoas que fazem parte da nuvini. Como Pierre menciona, é uma comunidade que causa efeitos. Quando uma empresa adquire a outra, uma situação que ocorre que é parecida com as práticas do Valley, é o compartilhamento dos aprendizados e os diferentes conhecimentos sobre uma determinada área.  No momento em que você une duas ou três empresas, você possui um conjunto de possibilidades de ideias novas, pois cada uma delas já tinha a sua ”receita de bolo” que estava funcionando.  Compartilhar cada ideia entre todas é a melhor opção para estabelecer como que a fusão vai acontecer. Além disso, isso permite a disseminação de novas informações que um indivíduo de uma empresa, por exemplo, não teve acesso anteriormente para saber mais sobre.  Desafios do M&A Um aspecto essencial a ser analisado para que a empresa se mantenha na linha é tentar entender do ponto de vista cultural como as pessoas estão conectadas ao negócio. Existem muitos choques culturais durante o M&A pelo simples fato dos indivíduos terem culturas distintas.  Durante a conversa, Pierre aponta que as culturas podem ser diferentes, mas é fundamental que os valores sejam próximos, pois a longo prazo as empresas participantes do M&A não conseguem construir algo juntos. Gostou dessas reflexões? Ouça o bate-papo completo. Nele falamos de outras questões relacionadas com esse projeto social ligado a tecnologia. 

Projeto Vs. Produto: você sabe a diferença?
Tech Writers Fevereiro 07, 2022

Projeto Vs. Produto: você sabe a diferença?

O crescimento da cultura de produto nas empresas e a percepção de que muitas pessoas não conhecem o que isso significa, despertou-nos o interesse em falar sobre esse assunto. Afinal de contas, a área de produtos tem se tornado cada vez mais relevante no universo dos negócios.  Quando começamos a pesquisar sobre produto, de forma geral, encontramos muitas informações. No entanto, poucas estão focadas no conceito em si e em sua diferenciação do que seria um projeto.  Assim, os conteúdos acabam se tornando difusos, o que gera dificuldade para quem está iniciando ou querendo conhecer melhor o tema. Especialmente no que diz respeito às diferenciações entre projeto vs. produto.  A intenção deste artigo é tornar a sua vida mais fácil na hora de compreender esses dois conceitos. Continue a leitura!  Vamos começar discutindo o conceito de projeto. O que isso significa? Projeto Vs. Produto – 1º: O que é projeto de software? Ao longo da história da humanidade, o trabalho e suas definições foram se organizando lentamente. Nessa história, diversos projetos foram desenvolvidos, a exemplo das pirâmides, a muralha da China, o grande colisor de Hádrons…  E, ao longo do tempo, foi percebido um grupo de características em comum entre os projetos que os diferenciam das tarefas rotineiras. Em geral, eles têm objetivos bem definidos e prazo de conclusão. Segundo o Guia PMBOK, o projeto é um esforço temporário empreendido para criar um produto, serviço ou resultado exclusivo. A sua natureza é temporária, tem início e término definidos. A intenção, quando trabalhamos com diversos projetos, tanto de construção de uma casa ou um projeto de software, por exemplo, é atender ao cronograma e atingir o foco principal: a entrega do projeto. Uma das primeiras obras relacionadas ao tema é datada de 1697, o ensaio “An essay on Projects” (Um ensaio sobre projetos). No entanto, um dos grandes avanços na temática aconteceu em meados do século XIX, por meio das ideias de produtividade de Frederick Taylor, que focava na divisão do trabalho em tarefas pequenas e distintas.  Exemplos de gráficos de projeto Não podemos esquecer de citar Henry Gantt, que trabalhou com o próprio Taylor. Ele é inventor do gráfico que levou seu nome, constituído de barras, sendo que cada barra representa uma tarefa e seu tamanho representa uma duração. Exemplo de Gráfico de Gantt Do campo de conhecimento de projetos surgiu a disciplina de Gerência de Projetos. Na década de 50, surgiram dois métodos muito conhecidos chamados de CPM (Critical Path Method) e PERT (Program Evaluation and Review Technique).  Eles se popularizaram muito após a divulgação de estudos que mostravam o desvio em prazo e custos de projetos que não eram gerenciados. Exemplo de gráfico PERT/CPM Reforçando o conceito de Projeto, o PMI define como “um conjunto de tarefas, arranjado numa sequência ou relação definida, que produz um efeito ou saída pré-definida. Um projeto sempre tem um começo, meio e final”. Além do objetivo e prazo, um projeto tem inúmeras outras características importantes. Por exemplo: custos,riscos, requisitos (escopo), viabilidade, qualidade, planejamento, conflitos, documentação, aprendizados e etc. Para cada um desses itens existe uma grande área de conhecimento e estudo, com diversas técnicas e ferramentas para se aplicar.  Manifesto Ágil Em 2001 ocorreu a oficialização do Manifesto Ágil, onde 17 profissionais de desenvolvimento de softwares empenhados em inovar a entrega de software, trouxeram premissas à comunidade que mudou a perspectiva na época.  Esse manifesto expôs 4 valores e 12 princípios, que procuravam mitigar os problemas que a indústria de software sofria na década de 90, como, por exemplo: atrasos, estouro no orçamento, e softwares com baixa qualidade.  Apesar do esforço intenso desses profissionais no desenvolvimento, criando várias abordagens para melhorar as entregas como XP, FDD, SCRUM, entre outros, se fez necessário o Manifesto. Por meio dele foi viabilizada uma evolução no desenvolvimento de softwares, com soluções mais limpas que gerassem valor e minimizassem erros.  Essas contribuições serviram tanto para projetos como para produtos da nossa atualidade. Como o objetivo desse artigo não é aprofundar tanto assim em projetos, mas sim identificar e diferenciar projetos de produtos, acreditamos que com esse breve resumo já temos uma boa ideia do que se trata um projeto. 2º: O que é Produto de software? Agora vamos falar sobre produto. Produto é um bem, físico ou virtual, feito para resolver um problema, atender uma necessidade ou satisfazer um desejo.  O foco do produto é o resultado. Como o foco do produto é o resultado, ele está sempre em constante evolução. Primeiramente, temos o processo de Discovery (descoberta). Ele inclui a equipe de Produto aliada a equipe de UX (Experiência de usuário) de forma mais efetiva, mas inclui também a equipe de Engenharia que complementa a ideia de como fazer as hipóteses que estamos levantando. Podemos ter um entendimento melhor na figura abaixo: Times de produto (retirado do material da PM3 – Joca Torres) Além do processo de Discovery, temos o Delivery (entrega), que trata do desenvolvimento (transformar a hipótese em algo visível para o usuário) com o time de Engenharia de forma efetiva.  Esses processos não são rígidos, sempre evoluem através do aprendizado, que, ao longo do ciclo de vida do produto, se adapta e se modela. O foco no produto nos permite aprender, adaptar e manter o objetivo no resultado. O que se busca é o “outcomes over output”, ou seja, a melhor experiência para o nosso usuário frente a quantidade de softwares entregue. Essa frase é um título do livro de Joshua Selden, que aborda muito bem o tema. O livro demonstra que conseguimos potencializar os resultados para o negócio quando otimizamos as decisões de produto.  É o caminho feliz quando o negócio e o produto estão em sintonia. Assim como o projeto, o produto tem um ciclo de vida. Esses ciclos são de uma forma diferente dos ciclos de projetos no que tange o tempo. As fases do produto são mais ou menos duradouras, dependendo do fator de retenção (grau de aceitação dos usuários).  Exemplo Podemos descrever da seguinte forma: quando iniciamos e lançamos nosso MVP (Mínimo Produto Viável), temos uma versão inicial que entrega o essencial de valor ao nosso usuário.  Nesse momento, o que ocorre são apostas, pois corresponde  a introdução do produto no mercado. Após esse período, acontece o ciclo de crescimento do produto. Neste momento, lançamos novas versões que atenderão as necessidades do usuário (baseado nas métricas e insights de uso coletados), que promoverão ou não o Product Market Fit (seria dizer: “deu bom”, o produto engajou no mercado).  Chegar nessa fase de grande crescimento de usuários e engajamento das features criadas é um abismo que nem todos os produtos conseguem atravessar. Com essa travessia, o produto já “crescido” e reconhecido no mercado, chega à maturidade (ponto alto). Nesse momento ele alcançou  todo o seu potencial.  O desafio agora é perdurar esse momento, evitando retrocessos significativos. Por fim, temos o declínio, onde todo produto chegará algum dia.  Alguém lembra do Orkut, ICQ, entre outros que já não fazem mais parte do nosso dia a dia?  Podemos exemplificar esses momentos do ciclo de vida do produto e engajamento conforme imagens abaixo: Ciclo de Vida do Produto A curva de Rogers – ciclo de vida de adoção do produto Projeto Vs. Produto: qual a diferença? Projeto e Produto apresentam várias diferenças significativas entre si. Enquanto no projeto pensamos em atender o cronograma focados na entrega, no produto buscamos  entregar resultado com objetivo de atingir, diminuindo ou extinguindo, as dores do usuário. Esse interesse não se encerra, se repete ao longo do ciclo de vida do produto. Outro ponto importante são as diferenças entre o mindset do produto e do projeto. No primeiro, pensamos ao longo do processo em aprender e adaptar à medida que avançamos no ciclo de vida do produto.  Já no segundo, segue-se um plano de projeto (planejado detalhadamente logo no início e seguido à risca), não permitindo mudanças no escopo.  Outro detalhe é a essência do pensamento de produto: apresentar solução que seja importante ao cliente. Produto é diferente de Arte. Se ele não busca resolver uma dor do cliente, então o mesmo não irá dispor de pagamento pela solução. Sendo assim, torna-se desnecessário.  No projeto, o pensamento é diferente. Busca-se atender o escopo sem dar importância essencial à experiência do cliente (que são as percepções e sentimentos relacionados pelo efeito único da interação com o produto).  A preocupação do projeto é seguir o que foi acordado. Muitas vezes, ele não faz mais sentido quando chega a entrega.  Abaixo, segue uma tabela que apresentará mais informações sobre as diferenças entre eles: Conclusão Por fim, conhecer projeto e produto é viver em dois mundos com perspectivas diferentes, cada um com sua especificidade.  Este artigo teve o propósito de apresentar essas duas faces para que o seu entendimento sobre eles fique mais claro.  Esperamos ter conseguido tirar algumas dúvidas e contextualizar essas duas vertentes. Afinal de contas, dentro do escopo de um negócio, tanto projeto quanto produto, são essenciais.  Indicamos algumas referências bibliográficas para quem tem interesse em conhecer mais sobre Produto: CAGAN, Martin. Inspirado: Como criar produtos de tecnologia que os clientes amam. TORRES, Joaquim. Gestão de produtos de Software: Como aumentar as chances de sucesso do seu Software. EIS, Diego. Gestão Moderna de Produtos Serviços Digitais: O Produto Digital como meio de entregar valor para o usuário e para o negócio. MOORE, Geoffrey A. Atravessando o Abismo: Marketing e venda de produtos disruptivos para clientes tradicionais. SEIDEN, Joshua. Outcomes over output. Além do mais,  é sempre bom lembrar que o conhecimento é evolutivo, ou seja, as áreas estão sempre cheias de novidades. Por isso, interaja com as pessoas, tenha sempre em mente o seu lado questionador, e, o mais importante: use EMPATIA na sua vida como gestor de projetos ou de produtos.  Gostou de aprender um pouquinho mais sobre Projeto vs. Produto?  Confira mais conteúdos como esse em nosso Blog! Escrito pelos Tech Writes: Mariana Isabel Fernandes Braga da Silva Lima Vinícius Roggia Gomes

Git Gui Windows: Como criar, editar e excluir arquivos?
Tech Writers Janeiro 17, 2022

Git Gui Windows: Como criar, editar e excluir arquivos?

Aqui no Tech Writers já ensinamos um tutorial completo de como instalar e configurar o Git Gui para Windows de maneira simples, além de mostrarmos como manter seu projeto atualizado.  Se você já conferiu o artigo sobre como instalar o Git Gui, mas ainda não sabe como realizar outras funções na ferramenta, confira a seguir como realizar algumas operações básicas, como criar arquivos no Git Gui, editar e/ou excluir. Vale lembrar que, antes de realizar qualquer operação de manipulação de arquivos, você deve atualizar o seu projeto. Isso porque, a atualização evitará conflitos difíceis de resolver, como os que se apresentam no servidor GIT e não em seu ambiente local. Para resolução de conflitos, caso necessário, recomendamos o artigo do próprio Tortoise. Como criar um arquivo no Git Gui? Primeiramente, veja a seguir como você pode criar pastas ou novos arquivos no Git GUI. Funciona assim: dentro da pasta do projeto, onde você considerar pertinente, crie suas pastas e arquivos do Windows normalmente. Depois de criá-los, quando desejar mandar para o repositório remoto, não se esqueça de atualizar o GIT antes. Após atualizado, siga os passos a seguir para enviar seus arquivos: Com botão direito do mouse sobre o arquivo ou pasta, clique na opção “TortoiseGit” e, logo em seguida, clique em “Add”; 2. Após esse passo, realize o envio clicando no botão “Commit” ; 3. Informe uma mensagem descrevendo a alteração feita e pressione “Commit”; 4. Pressione o botão “Push” para enviar e em seguida clique em “OK”; 5. Por fim, aperte “Close”. Como atualizar arquivos Git? Agora que você já aprendeu como criar arquivos ou pastas Git, vamos atualizá-los. Siga os passos abaixo para atualizar seus arquivos Git: Antes de mais nada, atualize seu projeto. Após atualizado, altere o arquivo desejado. Isso marcará o arquivo com um ícone vermelho; 2. Para enviar as alterações, clique com o botão direito do mouse em “Git commit”, em seguida clique em “Master”; 3. Informe a mensagem que descreva a alteração e clique em “Commit” para prosseguir; 4. Envie para o repositório remoto através do “Push”;  5. Aperte “Ok” e para fechar clique em “Close”. Caso você queira excluir os arquivos, confira o próximo passo a passo! Como excluir arquivos do Git para Windows? Novamente e antes de qualquer procedimento, atualize seu projeto. Em seguida, para excluir o Git para Windows, siga os passos abaixo: Vá até o arquivo e o exclua normalmente; Vá até a raiz de seu projeto e verifique se ele está com o ícone vermelho; 3. Clique com botão direito e vá em Git “Commit”-> “master”; 4. Informe a mensagem da alteração realizada; Siga o mesmo processo de qualquer outro Commit, clicando em “Commit” > “Push …” > “Ok” > “Close”. Pronto, você já excluiu o arquivo. Mesmo assim, pode ser que outras operações sejam necessárias, dependendo das suas pretensões de uso com o GIT como merges, resolução de conflitos e afins. Para estes casos, clients GIT integrados a IDEs, ou mesmo o GIT na linha de comando tendem a ser melhores.  Se mesmo assim desejar utilizar essas operações com o TORTOISE, sugerimos ler a documentação completa do projeto. Nela você encontrará detalhes de cada um desses casos e como executar na ferramenta.  No caso de uso básico como, por exemplo, para manter documentações, este guia provavelmente te atenderá bem. Esperamos que tenha entendido tudo sobre o tema no nosso Git Gui Windows Tutorial!  Gostou de aprender um pouquinho mais sobre o Git para Windows? Confira mais conteúdos como esse no portal do Tech Writers!

Negócios inovadores e de impacto
Tech Writers Janeiro 07, 2022

Negócios inovadores e de impacto

https://open.spotify.com/episode/3uN1SCpdezUS0YFCpDLjY2?go=1&sp_cid=65617f9945b6dafa4bd6df3d4f755a20&utm_source=embed_player_p&utm_medium=desktop No nosso segundo episódio da Together in Tech, debatemos sobre a história do desenvolvimento da tecnologia e seus impactos. Hoje, no terceiro bate-papo, nós mostramos a concretização de como se deu esse avanço da tecnologia. Por isso, convidamos a Gerente de Operações da Construíde, Flávia Figliolino, para contar sobre oportunidades de negócios inovadores que geram verdadeiro impacto positivo na sociedade, como é o caso da Construíde. O que é a Construíde? A Construíde é uma organização não governamental (ONG) que tem como propósito impactar vidas através da construção de moradias dignas e com segurança. Esse projeto social foi consolidado há quase 5 anos e auxilia diversas famílias em vulnerabilidade, classificadas na classe D e E da sociedade (renda total de 0-2000 reais por mês).  Inovação dentro do cenário brasileiro Durante a conversa, Flávia expôs sua visão relacionada à inovação da Construíde e a importância de existir soluções revolucionárias para a sociedade atualmente. Como essa é uma organização sem fins lucrativos, o que é executado não gera um retorno financeiro. Por isso, o maior desafio que a empresa enfrenta hoje em dia tem ligação com a captação de recursos.  ”Quando a gente se depara em um cenário de atuação especificamente para esse público que nós atingimos, que é a classe D e E do Brasil, o que mais dificulta é a questão dos recursos, porque a inovação demora mais tempo para chegar pela falta de recursos e pela questão cultural/social.” aponta Flávia. A Construíde tem o objetivo de descobrir alternativas para viabilizar a inovação para lugares onde há pouca infraestrutura. Ou seja, encontrar um caminho que possa ser mais simples levar moradias dignas para famílias desamparadas para quebrar as barreiras culturais e sociais.  O papel da tecnologia na Construíde Hoje em dia, o avanço da tecnologia, junto da sua aplicação, tem sido um grande facilitador na vida das pessoas. No bate-papo, Flávia conta que seu foco maior como Gerente de Operações da Construíde é ajudar as famílias necessitadas. Só que, além disso, é preciso fazer o contato com agentes que possam viabilizar a construção de moradias. Ou seja, são duas pontas que precisam ter uma ligação para poderem ser possibilitadas. Nessa situação, quem faz o papel da tecnologia é quem está preocupado em achar soluções para levar inovações para a comunidade.  É muito comum o fato das comunidades não terem nenhum tipo de inovação. Há certas conjunturas em que famílias não possuem acesso à internet, por exemplo. A tecnologia tem a capacidade de compartilhar diversos tipos de conhecimento e informação, mas infelizmente muitas pessoas são privadas disso. No contexto da pandemia do COVID-19 isso dificultou bastante o aprendizado, pois as aulas estavam sendo feitas através do modo online.  ”Cada vez mais a gente está caminhando como sociedade, como humanidade, para entender que cada um precisa do outro. Ninguém construiu nada sozinho até hoje. As pessoas que se enxergam fazendo algo sozinhas, eu acredito que elas têm um prazo de validade menor. Cada vez mais estamos vendo o mundo precisando se reconectar” Flávia manifesta sua opinião a respeito da parceria de diferentes áreas de trabalho. Visões de mundo diferentes que se complementam A Gerente de Operações da Construíde acredita que a sociedade ainda está muito distante de se unir em diferentes áreas para se ajudar. Infelizmente, há diversas pessoas que pensam somente no próprio lucro do que realmente gerar algum impacto positivo para o coletivo. Além disso, o cenário das ONGs no Brasil também é algo delicado e que precisa de mais atenção por parte da população. Flávia expôs que ainda existem diversos empecilhos que dificultam que essa inovação chegue para todos.  Mas, a sociedade está no caminho certo, basta rever algumas questões para que tudo fique mais viável e acessível para todos. Precisamos usar a tecnologia e aprimorá-la cada vez mais para que possamos unir áreas distintas de trabalho e gerar inovações.  Gostou dessas reflexões? Ouça o bate-papo completo. Nele falamos de outras questões relacionadas com esse projeto social ligado a tecnologia. 

Como configurar Git no Windows e manter o projeto atualizado?
Tech Writers Janeiro 03, 2022

Como configurar Git no Windows e manter o projeto atualizado?

Quer aprender como configurar o Git no Windows e saber também como fazer para manter o projeto atualizado? Preparamos esse conteúdo para te ajudar!  Esse guia tem por objetivo facilitar o configurar o Git no Windows para quem não possui experiência alguma com o sistema. Ele também explica como realizar operações básicas, como configurar o client Git na máquina, clonar um projeto, adicionar, remover e editar arquivos.  Com o intuito de facilitar nossa explicação, dividimos o artigo em duas partes para te ensinar a configurar Git no Windows.  Alguns conceitos básicos, como, o que é um clone, pull ou push, não serão abordados aqui. Isso porque são conceitos mais teóricos sobre Git e o objetivo desse texto é explicar a parte prática. Para compreender esses conceitos, recomendamos a leitura deste artigo da Lumis.  É válido lembrar que o artigo indicado foi feito utilizando um servidor Gitlab. Logo, caso você queira trabalhar com GitHub, ou GitServer, seria necessário apenas adequar a navegação na hora de encontrar os comandos de clone para o seu repositório remoto. Como configurar Git no Windows e instalá-lo? Como ferramenta de interface gráfica Windows para o Git, utilizaremos o Tortoise Git. Essa ferramenta se integra ao Explorer do seu sistema, permitindo o uso do Git diretamente nas pastas de projeto. Para instalar, siga os seguintes passos: Baixe e instale o Git para Windows por meio desse projeto Git Hub ou desse link direto; Para instalar, basta dar “Next” continuamente até a finalização da instalação deste primeiro programa; Em seguida, faça aqui o Download do Tortoise (cliente Git para Windows); Inicie a instalação prosseguindo com todas as opções default definidas pelo programa; Na hora que for solicitado usuário e e-mail, informe nos campos os dados de usuário do seu servidor Git; Crie uma pasta centralizadora de seus projetos. Sugerimos que você crie na pasta raiz de seu usuário a pasta “git”. Após seguir esse passo-a-passo, o client para Git já está instalado em sua máquina e pronto para uso. Como configurar um projeto no Git para Windows? Após a conclusão da etapa anterior, é hora de configurar um projeto Git para Windows. Faça da seguinte maneira: Dentro da pasta Git que você criou (ex.: C:\Users\Seu_usuario\git), crie a pasta que guardará os dados do seu projeto (ex.: meu-projeto); Uma vez criada a pasta, clique com o botão direito em cima dela e no menu “Git Clone…”; Depois disso, vá no seu Git web, entre no projeto que deseja clonar, e clique no botão “Clone”, copiado o link do HTTPS; Cole na URL; Marque as opções Recursive e Branch, informando na branch “master” (caso você deseje trabalhar com a branch master); Aperte “OK”; aperte “Close”; Com isso, você terá o projeto configurado em seu ambiente local. Pegando a última versão: como atualizar o projeto Git?  É sempre interessante atualizar seu projeto. Isso evita conflitos com as alterações realizadas pelos demais colegas. Por isso, sempre inicie atualizando seu projeto, e, antes de mandar qualquer coisa para o servidor, atualize novamente. Isso tornará a sua vida muito mais fácil.  Para atualizar o projeto é muito simples: Vá até a pasta do seu projeto onde aparece o ícone verde; Clique com o botão direito, e no menu “TortoiseGit”, clique no botão “Pull”;  Clique em “OK”;  Caso queira ver as diferenças que vieram nessa atualização, clique no botão “Pulled Diff”; Caso não, basta clicar no botão “Close”. Este artigo continua na parte 2, onde vamos ensinar  a realizar operações sobre os arquivos no seu repositório Git. Fique atento à nossa página para não perder nenhum conteúdo! Gostou de aprender um pouquinho mais sobre como configurar Git no Windows?  Confira mais conteúdos como esse em nosso Blog!

Decorator: Saiba quando usar este padrão de projeto e veja um exemplo prático 
Tech Writers Dezembro 20, 2021

Decorator: Saiba quando usar este padrão de projeto e veja um exemplo prático 

O Decorator é um dos design patterns mais populares e úteis na programação orientada a objetos e é uma alternativa flexível e poderosa às subclasses tradicionais. Porém, sua implementação é relativamente semelhante ao Composite, o que pode gerar algumas dúvidas. Hoje, vamos descomplicar a aplicabilidade e conceito do padrão de projeto Decorator, abordado pela GoF (Gang of Four) em seu livro “Padrões de Projeto”. Continue lendo e descubra o que é o Decorator, quando usar e veja um exemplo prático! Qual é a definição do padrão de projeto Decorator? O Decorator é um padrão de projeto estrutural que permite adicionar comportamentos a um objeto dinamicamente, sem precisar alterar o código original do objeto. Ou seja, ele permite que você adicione ou remova comportamentos a um objeto de forma flexível e modular, sem a necessidade de alterar sua estrutura interna ou criar subclasses para cada combinação possível de comportamentos. O Decorator, também chamado de “Wrapper”, é o quinto padrão de projeto estrutural listado pela GoF. Sua intenção é relativamente simples de se entender, uma vez que ela apenas busca acrescentar alguma funcionalidade dentro de classes. Conforme descrito pelos autores: “Sua intenção é, dinamicamente, agregar responsabilidades adicionais a um objeto. Os Decorators fornecem uma alternativa flexível ao uso de subclasses para extensão de funcionalidades”. Aqui na Tech Writers também temos um artigo abordando outro padrão de projeto, o Strategy, que você pode conferir também. Diagrama oficial do livro “Padrões de Projetos: Soluções Reutilizáveis de Software Orientados a Objetos” Quando usar o Decorator? O padrão de projeto Decorator pode ser útil quando você precisa adicionar funcionalidades extras a um objeto sem alterar sua estrutura original, servindo de alternativa às subclasses tradicionais. Ele também é útil quando se tem várias opções de personalização ou combinação de funcionalidades e você quer evitar a criação de subclasses excessivas.Ou seja, ele é recomendado sempre que você precisar adicionar responsabilidades a um objeto de maneira flexível e dinâmica. Exemplo prático do uso do padrão Decorator Para entender melhor o conceito, vamos analisar um exemplo prático da implementação do padrão Decorator. Vejamos o seguinte cenário: Em uma determinada lanchonete, cada um dos lanches disponíveis no cardápio possui diferentes versões: normal, gourmet e vegano. Trazendo para o mundo do desenvolvimento, de qual forma poderíamos reaproveitar o máximo de métodos/atributos em comum entre cada um dos lanches (objetos)? Aqui, podemos aplicar o Decorator, onde o lanche gourmet e vegano são “variantes” de um lanche comum. Segue exemplo abaixo, utilizando um X-Salada e um Cachorro-quente como opções de cardápio: Podemos começar com uma declaração simples do que poderia ser o lanche. Para simplificar o Decorator, vamos apenas alterar o preço entre gourmet, vegano e comum. Assim, vamos ficar apenas com o método getValor(). Aqui, temos a implementação dos nossos lanches “comuns”. Estes objetos também são chamados de “componentes concretos”, dentro deste padrão de projeto. Cada um dos componentes concretos possui seus próprios atributos e métodos. Para simplificar, vamos focar apenas no valor dos lanches. Então, a primeira implementação do nosso Decorator aparece. Neste primeiro momento, ele serve apenas como uma classe intermediária para os decoradores concretos, que virão a seguir. Em alguns cenários, inclusive no nosso, a criação deste método é opcional, uma vez que ele apenas define a forma de instanciação dos decoradores filhos. Ainda assim, neste exemplo nós seguiremos a estrutura proposta pela GoF. Uma das principais desvantagens desta classe intermediária é o aumento de complexidade no código. Em um cenário mais real, esta classe poderia possuir alguns métodos e obrigar a sua implementação para as classes filhas. No nosso caso, estamos apenas delegando a implementação de getValor(), que vem da interface Lanche. Como decoradores concretos, conforme nosso exemplo, teríamos os seguintes: Como podemos observar, os Decorators, especificamente no nosso caso, possuem apenas uma modificação de incremento de valor. Este “comportamento extra” trazido aos lanches, servirá como modelo para decorar componentes concretos, como por exemplo o XSalada ou o CachorroQuente. Quando um LancheGourmet for instanciado com um XSalada como parâmetro portanto, um valor de “9,95” será acrescentado ao valor original do x-salada, e quando um LancheVegano for instanciado com um CachorroQuente como parâmetro portanto, um valor de “7,5” será acrescentado ao valor original do cachorro-quente. Obviamente, o incremento de valor é apenas um exemplo. Utilizando deste conceito, qualquer adição de funcionalidade ou alteração de comportamento poderia ser aplicado nos lanches. O importante é compreender o objetivo: ao invés de criarmos as classes CachorroQuente, CachorroQuenteVegano, CachorroQuenteGourmet, XSalada, XSaladaVegano, XSaladaGourmet etc., basta decorarmos os componentes concretos (XSalada e CachorroQuente) com nossos decoradores concretos. E você, já conhecia este design pattern? Ainda tem alguma dúvida sobre o Padrão Decorator? Deixe um comentário e confira outros conteúdos Tech Writers!