<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Altieres Ribeiro Lopes on Medium]]></title>
        <description><![CDATA[Stories by Altieres Ribeiro Lopes on Medium]]></description>
        <link>https://medium.com/@altrs?source=rss-1b1d1eb7b27e------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/0*MhoSIWeg8Xjf11Sa.jpg</url>
            <title>Stories by Altieres Ribeiro Lopes on Medium</title>
            <link>https://medium.com/@altrs?source=rss-1b1d1eb7b27e------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 15 Nov 2026 10:20:50 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@altrs/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[Tratando de Aumento Salarial em uma Gestão Horizontal]]></title>
            <link>https://medium.com/atelie-de-software/tratando-de-aumento-salarial-aa728544a4c5?source=rss-1b1d1eb7b27e------2</link>
            <guid isPermaLink="false">https://medium.com/p/aa728544a4c5</guid>
            <category><![CDATA[empreendedorismo]]></category>
            <category><![CDATA[agile]]></category>
            <category><![CDATA[o-ateliê]]></category>
            <category><![CDATA[gestão]]></category>
            <category><![CDATA[pessoas]]></category>
            <dc:creator><![CDATA[Altieres Ribeiro Lopes]]></dc:creator>
            <pubDate>Mon, 18 May 2020 13:08:35 GMT</pubDate>
            <atom:updated>2020-05-18T16:47:06.623Z</atom:updated>
            <content:encoded><![CDATA[<p>Como tratamos de aumento salarial aqui no Ateliê de Software?</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1000/0*YtYiAu_8T-pB25Gl" /></figure><p>Este é um assunto relevante em qualquer empresa, pois salário, mais do que remuneração, reflete no reconhecimento sobre o trabalho. Em um modelo de gestão horizontal e distribuído, percebemos um panorama especialmente desafiador, sempre cercado por debates e discussões.</p><p>Adotamos o termo <a href="https://share.atelie.software/o-estilo-de-gest%C3%A3o-da-webgoal-cff6d44ef15b"><strong>gestão horizontal</strong></a> para definir nossas práticas de gerenciamento, pois não nos orientamos em hierarquias. Ou seja, uma decisão de aumento salarial não vem de um gestor, pois não há gestores!</p><blockquote><a href="https://share.atelie.software/gest%C3%A3o-das-pessoas-ou-do-sistema-24aca461a17a">Leia também: Gestão das pessoas ou do sistema?</a></blockquote><p>A principal dificuldade nesse contexto é que não há uma figura objetiva para pedir um aumento, e conversar com o grupo por vezes gerava algum nível de constrangimento. <strong>É comum o assunto ser visto pelas pessoas como tabu. </strong>Em razão dessas dificuldades cotidianas, buscamos alternativas que pudessem nos ajudar.</p><p>O primeiro passo foi combinar a <strong>frequência</strong> com que o tema seria abordado, além da definição de uma <em>&quot;fórmula&quot;</em> para que as pessoas pudessem saber o valor do dinheiro disponível, criando então alguns <strong>indicadores</strong>. Essa fórmula nos ajudou a manter a sustentabilidade da empresa, dando visibilidade à disponibilidade financeira, e apreciação sobre possibilidade de aumento para os interessados. Contudo, sempre parar toda a empresa para apreciar salários e discutir os indicadores não estava mais se mostrando algo viável.</p><p>Neste contexto, utilizamos da ajuda de uma valiosa ferramenta: <a href="https://percival.live/pt"><strong><em>Percival</em></strong></a><strong> </strong>(“<em>PERCeIved VALue”)</em>, desenvolvido por <a href="https://www.linkedin.com/in/klaus-wuestefeld/"><strong>Klaus Wuestefeld</strong></a> . O <em>Percival </em>tem como finalidade gerar uma mensuração mais simples e mais justa sobre a apreciação de nossa contribuição.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*i4K9ddqgreP7AfAsyn700g.png" /><figcaption>Dados gerados pelo Percival</figcaption></figure><p>Sabemos que algumas empresas utilizam esses resultados de forma direta na definição de salários. <strong>Em nosso contexto, porém, preferimos usar esses dados de forma auxiliar, sendo uma das variáveis implicadas nas decisões sobre aumentos.</strong></p><p>A apreciação dos resultados do Percival se dá em dois momentos distintos: o <em>primeiro momento</em> é para definir quais pessoas teriam <strong>prioridade</strong> em obter um aumento salarial. Esta informação é uma mensuração individualizada, que consiste na combinação do <strong>resultado do Percival</strong>, do <strong>salário atual </strong>da pessoa e da<strong> quantidade de dias em que ela está sem receber aumento. </strong>Já o <em>segundo momento</em> consiste efetivamente na decisão sobre o aumento salarial: <strong>se haverá</strong>, e <strong>de quanto será</strong> . Como os resultados do <em>Percival </em>já representam uma percepção do grupo, entendemos que no momento de decisão sobre aumento salarial já não é mais necessária a participação de todos da empresa. A apreciação sobre um pedido de aumento é feita por um grupo pequeno e voluntário (em uma dinâmica que batizamos de <em>WillRaise</em>), onde apresentam seus pontos de vista e apontam juízos importantes para que possam chegar a uma síntese e consequente decisão. Toda colocação é bem vinda, inclusive questionar o próprio resultado do <em>Percival</em>.</p><p>Sobre o funcionamento do <em>Percival</em>: sua utilização é simples e eficaz. Todas as pessoas da empresa acessam a ferramenta através de seu e-mail corporativo, onde estão dispostos os nomes de todos os colegas em uma planilha composta por linhas. Cada participante poderá elencar o nome do colega para cima ou para baixo, de acordo com sua apreciação sobre sua contribuição na empresa. Em paralelo, é pedido ao participante que indique o grau de certeza para sua apreciação acerca de cada pessoa. Um baixo grau de certeza, por exemplo, indica que você não tem conhecimento suficiente para fazer uma apreciação precisa sobre a contribuição daquele colega, o que é considerado no resultado da ferramenta. Depois de executadas as apreciações, são gerados gráficos que exibem, segundo a visão do grupo, o quanto cada pessoa contribui para a empresa, e o quanto essa pessoa conhece e é conhecida pelos seus pares (o que é chamado de <em>notoriedade</em>).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*GI6JQhDZ3BACL6IP69AjQg.png" /><figcaption>Dados gerados pelo Percival</figcaption></figure><p>Com esta ferramenta, agora podemos saber com maior precisão quem teria prioridade em receber um aumento salarial, sempre de acordo com o tempo em que a pessoa está sem receber aumento e com sua contribuição na empresa.</p><p>Lembrando que, com o resultado do <em>Percival</em>, ainda tomamos a decisão sobre o aumento salarial em relação a outros indicadores, apreciada na dinâmica citada anteriormente (<em>WillRaise). C</em>onsiste em criar uma fila de prioridades, com ajuda do <em>Percival,</em> e alguns tópicos que podem ser abordados durante a dinâmica. São elas:</p><ul><li>Resultado do <em>Percival</em>;</li><li>Depoimento de um membro do time da pessoa;</li><li>Consulta ao P.O do projeto em que ela atua;</li><li>Escuta da pessoa candidata ao aumento;</li><li>Verificação se há recursos financeiros para o aumento.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hs9JFZ1aJZQI1Ugc_UDxQQ.png" /><figcaption>Imagem ilustrativa de como é uma sessão do WillRaise.</figcaption></figure><p>Um dos problemas que encontramos é que as pessoas recém contratadas, normalmente, ficam com um nível de contribuição mais baixa, o que pode se justificar por sua recente integração. Por mais que este fenômeno possa ser compreendido, <strong>isso pode gerar um real desconforto.</strong></p><p>Outra dificuldade está na crença de que <strong>pessoas com perfil mais introvertido não são notadas</strong>, e que isso impactaria na avaliação, ainda que seja mensurado o grau de certeza ao apreciar um colega. Temos incentivado a troca de pares entre times para ajudar o grupo a se conhecer (o que, além de tudo, promove uma <a href="http://www.extremeprogramming.org/rules/movepeople.html">troca de conhecimento</a> sensacional). Temos percebido também que, independentemente destes receios, pessoas tímidas e comprometidas vêm sendo sim bem reconhecidas.</p><p>O uso do <em>Percival</em> com este mini-processo tem nos ajudado a abordar o tema Aumento Salarial com maior eficácia em nosso modelo de gestão distribuída. Contudo, o tema permanece sensível, e sempre revisitamos nossos métodos em debates e discussões. Obviamente, problemas novos surgirão e, como somos iterativos e incrementais, sempre estaremos em busca de respostas.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/0*siQUzX_a4dr8lVoK.png" /></figure><p>→ <a href="http://marketing.atelie.software/form-para-assinar-news-blog-share"><strong>NEWSLETTER ASSINE NOSSA!</strong></a><strong> </strong>E fique por dentro de tudo o que acontece no Ateliê de Software da <a href="http://webgoal.com.br/">Webgoal</a> .</p><p>Dê um alô pra gente! Você pode acompanhar as redes sociais: <br>→ <strong>Email:</strong> contato@atelie.software <br>→ <a href="http://atelie.software/"><strong>Site</strong></a><strong><br></strong> → <a href="https://goo.gl/IJJPd4"><strong>Facebook</strong></a><br> → <a href="https://goo.gl/1147hb"><strong>Instagram</strong></a><br> → <a href="https://goo.gl/afIL5i"><strong>Twitter</strong></a><br> → <a href="https://goo.gl/nmbVb6"><strong>Youtube</strong></a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=aa728544a4c5" width="1" height="1" alt=""><hr><p><a href="https://medium.com/atelie-de-software/tratando-de-aumento-salarial-aa728544a4c5">Tratando de Aumento Salarial em uma Gestão Horizontal</a> was originally published in <a href="https://medium.com/atelie-de-software">Share! por Ateliê de Software</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Permissões na AWS, use Roles e não Users]]></title>
            <link>https://medium.com/atelie-de-software/permiss%C3%B5es-na-aws-use-roles-e-n%C3%A3o-users-e7622744975f?source=rss-1b1d1eb7b27e------2</link>
            <guid isPermaLink="false">https://medium.com/p/e7622744975f</guid>
            <category><![CDATA[cloud]]></category>
            <category><![CDATA[cloud-best-practices]]></category>
            <category><![CDATA[desenvolvimento-software]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[amazon]]></category>
            <dc:creator><![CDATA[Altieres Ribeiro Lopes]]></dc:creator>
            <pubDate>Mon, 31 Jul 2017 14:02:15 GMT</pubDate>
            <atom:updated>2017-07-31T14:04:47.031Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*dNy6euJbnxEvdOv3n7L8_Q.jpeg" /><figcaption>amazon.com</figcaption></figure><p>Neste post vamos configurar um projeto em <em>Ruby on Rails</em> para enviar emails via <em>AWS SES</em> de forma segura, sem utilizar credenciais (usuário e senha).</p><p>O serviço que permite configurar o gerenciamento de identidades e níveis de acesso aos recursos da <em>AWS</em> (<em>Amazon Web Services</em>) é o <em>IAM</em> (<em>Identity and Access Management</em>). Nele você cria <strong><em>Policies</em></strong> (políticas que agregam um conjunto de permissões), <strong><em>Users</em></strong> (perfis com credenciais) e <strong><em>Roles </em></strong>(perfis sem credenciais).</p><p>Vamos usar como exemplo a configuração do serviço de envio de email, o Amazon <em>SES</em> (<em>Simple Email Service</em>). O mesmo se aplica aos outros serviços, como o de armazenamento de arquivos (<em>Amazon S3</em>). Se pesquisarmos como configurar um projeto em Ruby on Rails para utilizar o <em>SES</em>, a grande maioria dos resultados encontrados ensinam a gerar credenciais <strong><em>SMTP</em></strong> e utilizá-las. Alguns outros ensinam a criar um <strong><em>User </em></strong>e configurar alguma gem que faça o envio utilizando a <em>API</em> do <em>SES</em>.</p><p>A forma mais segura e <a href="http://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#use-roles-with-ec2">recomendada pela própria AWS</a>, no entanto, é utilizar uma <strong><em>Role</em></strong>. E estes são os principais motivos:</p><ul><li>Não necessita credenciais de acesso (usuário e senha). Seu código fonte não vai conter nenhuma informação sensível.</li><li>Não necessita configuração no servidor. O <em>IAM</em> provê dinamicamente credenciais temporárias para instâncias <em>EC2</em>.</li><li>As credenciais temporárias, como o nome sugere, são renovadas automaticamente de tempos em tempos.</li></ul><p>Ao configurar uma nova instância <em>EC2</em>, seja diretamente ou via <em>ElasticBeanstalk</em>, você informa qual <strong><em>Role</em></strong> aquela instância (ou conjunto de instâncias) deve assumir quando em execução. São as permissões dessa <strong><em>Role</em></strong> que definem a quais recursos a instância terá acesso.</p><h4>Na AWS são apenas 3 passos</h4><p>Vamos demonstrar via<em> console web</em> mas poderiam ser executados via <em>awscli</em> no terminal.</p><p>1. Para garantirmos o <a href="http://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege">mínimo de privilégios possíveis</a>, vamos começar criando uma <strong><em>Policy</em></strong> que somente permita o envio de emails. Se você desejar, também é possível <a href="http://docs.aws.amazon.com/ses/latest/DeveloperGuide/control-user-access.html#iam-and-ses-restrict-addresses">limitar qual o remetente dos emails</a>, e uma <a href="http://docs.aws.amazon.com/ses/latest/DeveloperGuide/control-user-access.html#iam-and-ses-restrict-API-usage">série de outras coisas</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*a07ZDsRFOoeSpcgWaucLHg.png" /></figure><p>2. Depois, crie uma <strong><em>Role</em></strong> do tipo <strong>AWS Service Role → Amazon EC2 → selecione a Policy criada no passo anterior</strong>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*aSwQTQgyO_9HsmGJMM6pVA.png" /></figure><p>3. Agora é só definir que a EC2 terá essa <strong><em>Role</em></strong> no momento que você estiver criando ela.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*1GXfkLr3q5qkkoHcjY9L1Q.png" /></figure><h4>No Rails também são apenas 3 passos</h4><p>1. No seu projeto <em>Rails</em>, adicione a <em>gem</em> <a href="https://github.com/aws/aws-sdk-rails"><em>aws-sdk-rails</em></a> no seu <em>Gemfile</em>, oficial da <em>AWS</em>. O último <em>commit</em> dela é antigo, mas ela mesma não tem praticamente nenhum código, ela apenas configura o <em>Rails</em> para usar a <em>gem</em> que tem os códigos importantes.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/b19cb2c53c290f5e76435e5c6c601ac2/href">https://medium.com/media/b19cb2c53c290f5e76435e5c6c601ac2/href</a></iframe><p>2. Configure seu <em>production.rb</em> para fazer o envio via :aws_sdk.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/aaab2b0eeee7efdf1b9778d9fa4c246f/href">https://medium.com/media/aaab2b0eeee7efdf1b9778d9fa4c246f/href</a></iframe><p>3. Por fim, configure a variável de ambiente AWS_REGION para a região que estiver usando.</p><p>Pronto! Faça deploy do seu projeto na EC2 e ele já vai enviar emails sem necessidade de especificar nenhuma credencial!</p><p>Em ambiente de desenvolvimento não daria pra fazer isso, pois as <strong><em>Roles</em></strong> só funcionam nas EC2. Como costumamos usar o <a href="https://mailtrap.io/">Mailtrap.io</a> neste ambiente, isso não é nenhum problema pra gente.</p><p>Apenas como lembrete, inicialmente o SES provê apenas acesso <em>Sandbox</em>, ou seja, só envia emails para emails que você previamente confirmou serem seus. Para ter acesso de produção é necessário <a href="http://docs.aws.amazon.com/ses/latest/DeveloperGuide/request-production-access.html">solicitar um aumento no limite de envio</a>. Você não entendeu errado, é necessário <em>solicitar um aumento no limite de envio </em>para liberar o <em>acesso de produção</em>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*hpdil_RdUvuBtUDbgJ8olw.png" /></figure><p>→ <a href="http://marketing.atelie.software/form-para-assinar-news-blog-share"><strong>ASSINE NOSSA NEWSLETTER!</strong></a><strong> </strong>E fique por dentro de tudo o que acontece no Ateliê de Software da Webgoal.</p><p>Dê um alô pra gente! E nos acompanhe nas redes sociais:<br>→ <strong>Email: </strong>contato@atelie.software<br>→ <a href="http://atelie.software/"><strong>Site</strong></a><strong><br></strong>→ <a href="https://goo.gl/IJJPd4"><strong>Facebook</strong></a><br>→ <a href="https://goo.gl/1147hb"><strong>Instagram</strong></a><br>→ <a href="https://goo.gl/afIL5i"><strong>Twitter</strong></a><br>→ <a href="https://goo.gl/nmbVb6"><strong>Youtube</strong></a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e7622744975f" width="1" height="1" alt=""><hr><p><a href="https://medium.com/atelie-de-software/permiss%C3%B5es-na-aws-use-roles-e-n%C3%A3o-users-e7622744975f">Permissões na AWS, use Roles e não Users</a> was originally published in <a href="https://medium.com/atelie-de-software">Share! por Ateliê de Software</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[gems e Docker em dev]]></title>
            <link>https://medium.com/atelie-de-software/gems-e-docker-em-dev-5bccb5aa581e?source=rss-1b1d1eb7b27e------2</link>
            <guid isPermaLink="false">https://medium.com/p/5bccb5aa581e</guid>
            <category><![CDATA[docker-compose]]></category>
            <category><![CDATA[desenvolvimento-software]]></category>
            <category><![CDATA[docker]]></category>
            <category><![CDATA[ruby-on-rails]]></category>
            <dc:creator><![CDATA[Altieres Ribeiro Lopes]]></dc:creator>
            <pubDate>Mon, 09 Jan 2017 12:28:45 GMT</pubDate>
            <atom:updated>2018-06-04T12:51:37.475Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*vZmkIlLJgHTWGvRJPyBOfQ.png" /></figure><p>Quando criamos nosso primeiro projeto <em>ruby</em> usando o <em>Docker</em> tínhamos que fazer um &quot;docker build&quot; a cada alteração no <em>Gemfile </em>e cada <em>build</em> instalava todas as <em>gems</em>…</p><p>Na <a href="https://docs.docker.com/compose/compose-file/#/volumes-volumedriver">versão 2 do docker-compose</a> podemos criar volumes de forma bem intuitiva e transparente, sendo que os <a href="https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes">volumes têm as seguintes características</a>:</p><ul><li>Volumes são inicializados quando um <em>container</em> é criado. Se a imagem base do <em>container</em> contém dados no ponto de montagem, estes dados são copiados para o novo volume após sua inicialização. (Isto não se aplica a volumes que mapeiam um diretório do host.)</li><li>Ao subir um <em>container</em> baseado em uma nova imagem, possíveis diferenças no diretório não serão replicadas no volume.</li><li>Volumes persistem mesmo que o <em>container</em> seja excluído.</li><li>Volumes podem ser compartilhados e reutilizados entre <em>containers</em>.</li><li>Alterações em um volume são feitas diretamente.</li></ul><p>Sabendo disso, nosso <em>Dockerfile</em> não adiciona <em>Gemfile</em> nem faz <em>bundle</em>:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/f401f431f308f02ee6a7978a02692f81/href">https://medium.com/media/f401f431f308f02ee6a7978a02692f81/href</a></iframe><p>E nosso <em>docker-compose.yml</em> tem um volume específico para as <em>gems</em>:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/0e46060aa20890083d57cfc1add3375d/href">https://medium.com/media/0e46060aa20890083d57cfc1add3375d/href</a></iframe><p>Desta forma, ao executar um &quot;<em>bundle update</em>&quot; apenas as <em>gems</em> novas são baixadas e instaladas, acelerando bastante o ciclo de instalação das <em>gems</em>. Mesmo que você exclua o <em>container</em> e crie um novo, o volume continuará existindo. Sempre que quiser fazer um <em>bundle</em> limpo, basta remover o volume executando &quot;docker volume rm …&quot;</p><p>Puristas podem considerar a <a href="https://12factor.net/dev-prod-parity">paridade de ambientes entre desenvolvimento e produção</a> e questionar a existência de um volume que não existirá em produção. Mesmo neste caso, acredito que esta técnica seja útil no início do projeto e, a partir do momento que as <em>gems</em> do projeto &quot;estabilizarem&quot;, você remove o volume do <em>docker-compose.ym</em>l sem nenhuma outra modificação no projeto.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*hpdil_RdUvuBtUDbgJ8olw.png" /></figure><p>→ <a href="http://marketing.atelie.software/form-para-assinar-news-blog-share"><strong>ASSINE NOSSA NEWSLETTER!</strong></a><strong> </strong>E fique por dentro de tudo o que acontece no Ateliê de Software da Webgoal.</p><p>Dê um alô pra gente! E nos acompanhe nas redes sociais:<br>→ <strong>Email: </strong>contato@atelie.software<br>→ <a href="http://atelie.software/"><strong>Site</strong></a><strong><br></strong>→ <a href="https://goo.gl/IJJPd4"><strong>Facebook</strong></a><br>→ <a href="https://goo.gl/1147hb"><strong>Instagram</strong></a><br>→ <a href="https://goo.gl/afIL5i"><strong>Twitter</strong></a><br>→ <a href="https://goo.gl/nmbVb6"><strong>Youtube</strong></a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5bccb5aa581e" width="1" height="1" alt=""><hr><p><a href="https://medium.com/atelie-de-software/gems-e-docker-em-dev-5bccb5aa581e">gems e Docker em dev</a> was originally published in <a href="https://medium.com/atelie-de-software">Share! por Ateliê de Software</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Mitos da Integração Contínua]]></title>
            <link>https://medium.com/guilda-do-c%C3%B3digo/mitos-da-integra%C3%A7%C3%A3o-cont%C3%ADnua-984e05f096d1?source=rss-1b1d1eb7b27e------2</link>
            <guid isPermaLink="false">https://medium.com/p/984e05f096d1</guid>
            <category><![CDATA[continuous-integration]]></category>
            <category><![CDATA[xp]]></category>
            <category><![CDATA[agile]]></category>
            <category><![CDATA[integracao-continua]]></category>
            <category><![CDATA[tdd]]></category>
            <dc:creator><![CDATA[Altieres Ribeiro Lopes]]></dc:creator>
            <pubDate>Tue, 13 Sep 2016 20:33:03 GMT</pubDate>
            <atom:updated>2016-09-13T20:33:03.119Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/825/1*nfP4gSdJJzU1VrCNdFVDAQ.jpeg" /></figure><p>Quem não tem uma boa história para contar sobre o quanto sofreu ao <em>mergear</em> alguma funcionalidade que desenvolveu durante alguns dias e a versão atual do código que estava em produção? A medida que nossa experiência aumenta, percebemos que este tipo de atitude, segurar código sem <em>comitar</em> ou mesmo <em>comitar</em> numa <em>branch</em> independente, frequentemente traz dores de cabeça.</p><p>Quando trabalhamos em um time ágil, que realmente deseja entregar valor para o cliente o mais cedo possível, devemos observar as diversas práticas da <a href="http://www.extremeprogramming.org/"><em>eXtreme Programming</em></a>. Quando estas práticas são usadas em conjunto os benefícios são evidentes. Neste post vamos destacar a Integração Contínua, que está diretamente relacionada ao uso de um VCS (<a href="https://en.wikipedia.org/wiki/Version_control">sistema de controle de versão</a>, como o <a href="https://git-scm.com/">git</a>), a <a href="http://www.extremeprogramming.org/rules/unittests.html">criação de testes automatizados</a> e à <a href="http://www.extremeprogramming.org/rules/pair.html">programação em par</a>.</p><p><strong>A primeira dica</strong> é que trabalhar em um código obsoleto pode causar muita dor de cabeça, por isso, o recomendado é integrar (<em>mergear</em>) o código desenvolvido pelo par com o código desenvolvido por todos os outros pares várias vezes ao dia. No pior dos casos, ao menos uma vez ao dia.</p><p>Entre os problemas que podem acontecer se não integrarmos frequentemente estão: grande quantidade de conflito a ser resolvido, duplicação de código (dois pares desenvolveram a mesma funcionalidade de forma <em>parecida</em>) e problemas de compatibilidade entre as funcionalidades desenvolvidas. Para que você consiga integrar seu código com mais frequência, pode ser necessário alguma mudança na sua forma de programar. <strong>Três coisas que funcionam muito bem em nosso time são</strong>:</p><ol><li>Ao trabalhar em uma estória de usuário, iterar nesta estória, ou seja, dividi-la em pedaços <strong>entregáveis</strong> que até podem ir para produção (<em>continuous delivery</em>);</li><li>Quando não conseguimos dividir a estória em entregáveis que façam sentido para o usuário, organizamos o desenvolvimento do código de forma que o usuário não tenha acesso à funcionalidade. Em um exemplo simplista, deixamos para colocar o link da funcionalidade no menu do sistema na última iteração da estória;</li><li>Usar <em>feature toggles</em>, ou seja, existe uma <em>flag</em> no sistema fácil de alterar, que habilita o uso da funcionalidade em desenvolvimento. Neste último caso é bastante comum habilitar a funcionalidade para alguns clientes (os <em>beta testers</em>) antes de habilitar para todo mundo.</li></ol><p><strong>A segunda dica</strong> é: somente um par integra por vez. É muito possível que mais conflitos sejam gerados em decorrência dos <em>merges</em> paralelos! A importância da comunicação entre os membros do time pode ser destacada mais uma vez aqui, tanto para saber quando os outros estão integrando e ajudar na resolução dos conflitos, quanto para saber o que está sendo feito<br>e o que possivelmente você poderá reaproveitar.</p><p><strong>A terceira dica</strong> é automatizar a execução da suíte de testes. É aqui que entram as ferramentas como <a href="https://jenkins.io/"><em>Jenkins</em></a><em>, </em><a href="https://travis-ci.org/"><em>Trevis</em></a><em>, </em><a href="https://www.go.cd/"><em>GoCd</em></a> e outros. Esta dica é a última por uma razão, como diz o <a href="http://agilemanifesto.org/iso/ptbr/manifesto.html">manifesto ágil</a>:</p><blockquote>“Indivíduos e interações mais que processos e ferramentas”</blockquote><p>De nada irá adiantar a ferramenta se o time não tiver o hábito de integrar frequentemente, como vimos nas duas primeiras dicas. Estas ferramentas executam toda suíte de teste a cada <em>commit</em> e, possivelmente, geram algum artefato. O grande ganho deste tipo de ferramenta é o <em>feedback</em> constante da saúde do código de produção. Se acontece algum descuido e sobe algum teste quebrado para o VCS, a ferramenta de integração contínua irá executar os testes e notificar o time por email, Slack ou qualquer outra forma.</p><p>Lembrando que o objetivo aqui não é encontrar culpados, mas sim descobrir o problema mais cedo. Como a <a href="http://www.extremeprogramming.org/rules/collective.html">propriedade do código é coletiva</a>, qualquer membro do time pode corrigir o erro apontado pela ferramenta.</p><p>Compartilhe nos comentários alguma atitude positiva do seu time e aguarde um dos nossos próximos posts sobre Entrega Contínua.</p><p><strong>Facebook:</strong> <a href="https://www.facebook.com/atelie.software/?fref=nf">https://www.facebook.com/atelie.software</a><br><strong>Instagram:</strong> @atelie.software<br><strong>Twitter:</strong> @atelie_software<br><strong>E-mail:</strong> contato@atelie.software<br><strong>Site:</strong><a href="http://atelie.software/"> ateliedesoftware.com.br</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=984e05f096d1" width="1" height="1" alt=""><hr><p><a href="https://medium.com/guilda-do-c%C3%B3digo/mitos-da-integra%C3%A7%C3%A3o-cont%C3%ADnua-984e05f096d1">Mitos da Integração Contínua</a> was originally published in <a href="https://medium.com/guilda-do-c%C3%B3digo">Guilda do Código</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Bugs, não acredite nos insetos infiltrados]]></title>
            <link>https://medium.com/guilda-do-c%C3%B3digo/bugs-n%C3%A3o-acredite-nos-insetos-infiltrados-a451f3b4beb3?source=rss-1b1d1eb7b27e------2</link>
            <guid isPermaLink="false">https://medium.com/p/a451f3b4beb3</guid>
            <category><![CDATA[software-engineering]]></category>
            <category><![CDATA[development]]></category>
            <category><![CDATA[software]]></category>
            <dc:creator><![CDATA[Altieres Ribeiro Lopes]]></dc:creator>
            <pubDate>Thu, 26 May 2016 19:03:49 GMT</pubDate>
            <atom:updated>2016-05-26T20:02:19.882Z</atom:updated>
            <content:encoded><![CDATA[<p>Em uma das muitas cartas que escreveu durante sua vida, a <a href="https://www.cs.utexas.edu/~EWD/transcriptions/EWD10xx/EWD1036.html">EWD 1036</a>, Edsger Dijkstra fala sobre o quão <em>cruel é ensinar Ciência da Computação</em>. Entre as diversas observações e conselhos contidos nessa carta, um deles me chamou a atenção:</p><blockquote>Nós podemos, por exemplo, começar por melhorar nossa linguagem não chamando mais <strong>um bug</strong> de <strong>bug</strong>, mas chamando-o de <strong>um erro</strong>. Isto é muito mais justo porque dá a culpa a quem realmente ela pertence, a saber, ao programador que cometeu o erro. A metáfora animista do inseto que se infiltrou maliciosamente enquanto o programador não estava olhando é intelectualmente desonesta, uma vez que ela encobre que o erro é uma criação do próprio programador. O bom desta simples troca de vocabulário é que ela tem um efeito profundo: enquanto, antes, um programa com apenas um <strong>bug</strong> costumava estar &quot;quase certo&quot;, depois, um programa com <strong>um erro</strong> está apenas &quot;errado&quot; (porque contém um erro).</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*FTeJXjRVbo1w_ScQQct7Cw.jpeg" /></figure><p>Muita gente acredita que o termo surgiu por conta dos insetos que queimavam as válvulas do ENIAC (<em>Electronic Numerical Integrator and Computer</em>), o primeiro computador digital criado. Raramente utilizadas hoje, substituídas pelos semicondutores, as válvulas emitiam luz que atraíam os insetos os quais, por sua vez, provocavam curtos-circuitos nas placas do ENIAC. No entanto, sabe-se que o termo <strong>bug</strong> foi usado como jargão na engenharia mecânica, décadas antes da criação da Ciência da Computação.</p><p>Hoje nossas aplicações rodam na Nuvem, abstraídas em <a href="https://medium.com/guilda-do-c%C3%B3digo/como-organizar-sua-aplica%C3%A7%C3%A3o-para-aproveitar-os-benef%C3%ADcios-do-docker-fd6fbd1e66f5#.6ibsim5o6"><em>containeres</em></a>. Utilizamos tecnologias que <a href="https://medium.com/guilda-do-c%C3%B3digo/criando-apps-nativos-para-ios-e-android-em-um-%C3%BAnico-projeto-3c8456e9642d#.heg1f16il"><em>reagem</em></a> às interações dos usuários e às mudanças do estado da aplicação de uma maneira que não imaginávamos alguns anos atrás. Utilizamos <em>frameworks</em> para a gestão do projeto e práticas de engenharia que minimizam nossa incrível capacidade humana de cometer erros. É por essas e outras razões que quando cometemos um erro, ao invés de acreditar que foi alguma coisa mística, simplesmente corrigimos. Sem desculpas.</p><p>Autor do algoritmo do caminho mínimo, Dijkstra era professor da Universidade do Texas. Ele escrevia e enviava para diversos professores de instituições de diversos países cartas chamadas de EWD. <a href="http://www.cs.utexas.edu/users/EWD/welcome.html">Há mais de 1300 EWDs disponíveis em sua página.</a></p><p>A <a href="https://www.cs.utexas.edu/~EWD/transcriptions/EWD10xx/EWD1036.html">EWD 1036</a>, datada de 2 de dezembro de 1988, gira em torno da ideia de que a computação é uma coisa radicalmente nova. Enquanto metáforas e outras técnicas de ensino funcionam bem quando há uma evolução em algo conhecido, o ensino de algo totalmente novo como a computação necessita de abordagens diferenciadas. Seguindo esta linha de raciocínio ele dá diversas dicas do que deveria ser mudado no ensino da computação, como voltar às raízes e ensinar computação de verdade.</p><p>Se em 1988 Dijkstra estava bastante desapontado com a forma com que se estava ensinando Ciência da Computação, qual seria sua opinião a respeito do ensino nas faculdades de hoje? E nós, o que podemos fazer para melhorar essa realidade?</p><p>Quer saber mais sobre este assunto? Tem alguma sugestão? Entre em contato comigo!</p><p>Site: <a href="http://atelie.software/">ateliedesoftware.com.br</a><br>Facebook: <a href="https://www.facebook.com/atelie.software/?fref=ts">https://www.facebook.com/atelie.software/?fref=ts</a><br>Instagram: @atelie.software<br>Twitter: @atelie_software<br>E-mail: contato@atelie.software</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a451f3b4beb3" width="1" height="1" alt=""><hr><p><a href="https://medium.com/guilda-do-c%C3%B3digo/bugs-n%C3%A3o-acredite-nos-insetos-infiltrados-a451f3b4beb3">Bugs, não acredite nos insetos infiltrados</a> was originally published in <a href="https://medium.com/guilda-do-c%C3%B3digo">Guilda do Código</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>