<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Anderson Casimiro</title>
    <description>The latest articles on DEV Community by Anderson Casimiro (@casimiroarruda).</description>
    <link>https://dev.to/casimiroarruda</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F371681%2Ff44f48d9-c0ef-4774-99dd-5c39b898e498.png</url>
      <title>DEV Community: Anderson Casimiro</title>
      <link>https://dev.to/casimiroarruda</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/casimiroarruda"/>
    <language>en</language>
    <item>
      <title>O dia-a-dia da engenharia na Convenia</title>
      <dc:creator>Anderson Casimiro</dc:creator>
      <pubDate>Fri, 30 Apr 2021 17:32:41 +0000</pubDate>
      <link>https://dev.to/convenia/o-dia-a-dia-da-engenharia-na-convenia-57g4</link>
      <guid>https://dev.to/convenia/o-dia-a-dia-da-engenharia-na-convenia-57g4</guid>
      <description>&lt;p&gt;Salve pessoal! Toda área de desenvolvimento tem suas particularidades. Aqui na Convenia não é diferente. A seguir vou comentar algumas coisas do nosso dia a dia. Como e com o quê trabalhamos, quais processos utilizamos, entre outras coisas. &lt;/p&gt;




&lt;h2&gt;
  
  
  Tecnologia
&lt;/h2&gt;

&lt;p&gt;Direto ao ponto: O nosso produto é dividido em vários serviços, cada um responsável por um domínio de negócio. São diversos backends, cada um servindo sua API REST em PHP usando o framework &lt;a href="https://laravel.com"&gt;Laravel&lt;/a&gt;, usando MySQL para persistência.&lt;/p&gt;

&lt;p&gt;Nossas interfaces para os clientes são disponibilizadas como SPAs, desenvolvidas com &lt;a href="https://vuejs.org"&gt;Vue.JS&lt;/a&gt; e WebComponents confeccionados por nós. Usamos &lt;a href="https://rscss.io"&gt;RSCSS&lt;/a&gt; como metodologia de estilo. Estes SPAs comunicam-se via GraphQL com um &lt;a href="https://samnewman.io/patterns/architectural/bff/"&gt;Backend For Frontend&lt;/a&gt; em Node.JS, que comunica-se com o MongoDB para queries e com as APIs REST para as mutations. Sim, os dados são sincronizados entre os bancos das aplicações com este NoSQL, na direção de uma arquitetura baseada em &lt;a href="https://martinfowler.com/bliki/CQRS.html"&gt;CQRS&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Como toda empresa que já colocou algum projeto de software no mercado, temos uma aplicação legada. Estamos trabalhando para a desativarmos ainda este ano, seguindo uma evolução sustentável nesse processo de refatoração.&lt;/p&gt;

&lt;p&gt;Estruturalmente organizamos tudo isso com Docker e Docker-Compose, desde o desenvolvimento local, passando por nossos pipelines Jenkins em todos os ambientes até produção.&lt;/p&gt;

&lt;h2&gt;
  
  
  Agilidade
&lt;/h2&gt;

&lt;p&gt;Metodologias ágeis têm como objetivos priorizar as interações, ter mais coisas prontas antes e responder rápido a mudanças. Aqui na Convenia não é diferente e usamos a mentalidade ágil para organizar nossos processos.&lt;/p&gt;

&lt;p&gt;Nossos times realizam entregas em ciclos. No último ano adotamos o Scrum para a entrega de valor nos times de produto. Evoluímos o modelo ao longo do tempo e estamos entrando em um processo mais próximo ao &lt;a href="https://pt.wikipedia.org/wiki/Feature_Driven_Development"&gt;FDD&lt;/a&gt; (Feature Driven Development). &lt;/p&gt;

&lt;p&gt;Também usamos o Kanban para o time de &lt;a href="https://pt.wikipedia.org/wiki/Site_Reliability_Engineering"&gt;SRE&lt;/a&gt; (Site Reliability Engineering) seja nas demandas de correções ou mesmo no desenvolvimento de sistemas para nossa estrutura de experiência de desenvolvimento.&lt;/p&gt;

&lt;p&gt;Também trouxemos do ágil a prática de Code Review, o Pair Programming, a reunião diária com todo o time (ainda mais útil em tempos de trabalho remoto) além da transparência com relação ao progresso do trabalho entre os times. Também estamos adotando o &lt;a href="https://12factor.net/pt_br/"&gt;12 factor apps&lt;/a&gt; em nossos sistemas.&lt;/p&gt;

&lt;h2&gt;
  
  
  Qualidade
&lt;/h2&gt;

&lt;p&gt;Nós prezamos pela qualidade de nossas entregas. Seguimos a premissa de "Qualidade não é discutível". Estabelecemos nosso processo de maneira a não ser engessado para quem desenvolve e garantir que novas versões serão, no mínimo, tão boas quanto as anteriores.&lt;/p&gt;

&lt;p&gt;Nossos serviços de backend passam por vários passos de análise estática (Padrão de código, adequação a boas práticas, code smell e controle de vulnerabilidades) ao longo do ciclo de desenvolvimento. Nossa cobertura de testes está acima de 95% em todos os nossos serviços. Só a cobertura não garante muita coisa, por isso nosso time explora quantos cenários forem conhecidos para cada parte do nosso software e os atualiza conforme evoluímos.&lt;/p&gt;

&lt;p&gt;Do lado do frontend temos uma organização bem flexível para nossos layouts e componentes, desenvolvendo com regras do ESLint além de somente a formatação. Também adotamos a metodologia &lt;strong&gt;RSCSS&lt;/strong&gt; para padronização de estilos e temos uma validação forte quanto a fidelidade visual junto ao time de Design e Usabilidade.&lt;/p&gt;

&lt;h2&gt;
  
  
  Autonomia
&lt;/h2&gt;

&lt;p&gt;A Convenia tem como base de sua cultura a Autonomia, abordada sob diversos aspectos. É uma empresa que preza pela Transparência e Colaboração por toda a organização. O foco de nossas ações é o cliente e isso significa muito olhar para nós mesmos.&lt;/p&gt;

&lt;p&gt;Quando falamos de Autonomia Intelectual, respeitamos o conhecimento de todos, seja alguém que está começando na área ou com décadas de experiência. Todas as pessoas envolvidas têm voz ativa. Promovemos também que todos saibam escutar e compreender as ideias dos outros. Quanto mais conhecimento investido em algo, menores as chances de avançarmos por um caminho ruim.&lt;/p&gt;

&lt;p&gt;Valorizamos tanto a diversidade de conhecimento que a incorporamos ao nosso processo. Temos um canal aberto a todos na empresa para a sugestão de mudanças para o nosso produto. Falando da engenharia todos são encorajados a sugerir novas e melhores maneiras de trabalhar e desenvolver. E fazemos isso como a própria internet evolui: com um sistema de &lt;a href="https://pt.wikipedia.org/wiki/Request_for_Comments"&gt;RFC&lt;/a&gt; (Request for Comments)&lt;/p&gt;

&lt;h2&gt;
  
  
  Identidade
&lt;/h2&gt;

&lt;p&gt;Cada pessoa é muito importante no nosso time. E valorizamos as características individuais e trabalhamos na organização do time para que cada pessoa tenha a melhor experiência de codar e se desenvolver.&lt;/p&gt;

&lt;p&gt;Realizamos mensalmente reuniões 1:1 (um a um) com todos os membros do time. Essas cerimônias têm o objetivo de deixar cada pessoa a par sobre o que aconteceu (ou não) de um mês para o outro, além de cuidar da sua evolução profissional. &lt;/p&gt;

&lt;p&gt;Falando em evolução profissional: temos a premissa de dar as mesmas oportunidades e preparação a todos para que cresçam no nosso time. E as regras estão claras para todo mundo. E cada um sabe como está com relação a sua carreira por um sistema baseado em dados, com forte influência da nossa cultura e do que esperamos individualmente de cada um, muito além do código. Isso eu conto em outro artigo com mais detalhes ;).&lt;/p&gt;




&lt;p&gt;Somos a Engenharia da Convenia. Não somos uma empresa que está na bolsa, não somos o próximo unicórnio, não somos uma empresa que acredita que o lucro vem antes das relações humanas. Estamos aqui para fazer a melhor solução de RH, desenvolvida da melhor maneira, pelas melhores pessoas. &lt;/p&gt;

&lt;p&gt;Bora fazer parte?&lt;/p&gt;

</description>
      <category>culture</category>
      <category>php</category>
      <category>javascript</category>
      <category>remotework</category>
    </item>
    <item>
      <title>O PHP 8 chegou, e daí?</title>
      <dc:creator>Anderson Casimiro</dc:creator>
      <pubDate>Mon, 21 Dec 2020 13:55:45 +0000</pubDate>
      <link>https://dev.to/convenia/o-php-8-chegou-e-dai-1gme</link>
      <guid>https://dev.to/convenia/o-php-8-chegou-e-dai-1gme</guid>
      <description>&lt;p&gt;Salve! Uma merecida atualização acaba de sair do forno para a linguagem mais amada e mais odiada da web. Entre as diversas melhorias, para quem desenvolve e para os servidores, é uma aguardada evolução. Mas o que muda de fato?&lt;/p&gt;




&lt;p&gt;No dia 26 de novembro de 2020 foi liberada a versão 8.0 do PHP. Nesta versão a comunidade trouxe diversas melhorias para quem desenvolve com a linguagem. A &lt;a href="https://www.php.net/releases/8.0/en.php" rel="noopener noreferrer"&gt;página oficial do lançamento&lt;/a&gt; descreve as principais mudanças.&lt;/p&gt;

&lt;p&gt;Caso queira se inteirar de verdade nas principais novidades, sugiro fortemente o &lt;a href="https://thephp.website/br/edicao/php-8-features/" rel="noopener noreferrer"&gt;artigo do Nickolas Silva&lt;/a&gt;, que explica melhor cada uma. Caso você seja uma pessoa mais dos vídeos, há uma &lt;a href="https://www.youtube.com/playlist?list=PL3j2sfzg3FPuQXklYI2LumuG7jgZsj7cK" rel="noopener noreferrer"&gt;playlist do Vinicius Dias&lt;/a&gt; sobre cada uma das novas funcionalidades. Eles com certeza apresentarão os novos recursos muito melhor do que eu faria.&lt;/p&gt;

&lt;p&gt;Acho que você já entendeu que eu não vou falar da perspectiva de desenvolvimento. Deixo isso para as pessoas mais competentes que eu nisso. Quero abordar com você o que muda na prática para administradores de infraestrutura, líderes de times de desenvolvimento e tomadores de decisão em produtos de tecnologia. Caso você seja quem desenvolve, sugiro que siga a leitura e tenha uma perspectiva mais abrangente sobre esse lançamento.&lt;/p&gt;

&lt;p&gt;Se você lidera um time que usa PHP mais cedo ou mais tarde vai receber o pedido de atualização - se já não o tiver recebido. Obviamente os desenvolvedores querem utilizar quão antes a nova versão. Mas, pelas vantagens ou meramente pela novidade? Isso acontece com quase todas as linguagens, acredite. Mas, assim como não colocamos nosso sistema em produção sem a avaliação adequada, devemos fazer o mesmo com a atualização de tecnologia.&lt;/p&gt;

&lt;p&gt;Uma mudança de tecnologia, como é a do PHP 8, traz também um “checklist” para atualizarmos nossas aplicações. O PHP tem um &lt;a href="https://www.php.net/manual/pt_BR/migration80.php" rel="noopener noreferrer"&gt;guia de migração&lt;/a&gt; muito completo (ainda não traduzido). As grandes linguagens têm uma preocupação muito grande com retro compatibilidade, então não deveria ser um problema migrar, certo? Se o código do seu produto é bem escrito, sim. Na &lt;a href="https://www.php.net/manual/pt_BR/migration80.incompatible.php" rel="noopener noreferrer"&gt;página sobre incompatibilidade com versões anteriores&lt;/a&gt; há uma mudança drástica na comparação de tipos, uma correção, que pode facilmente quebrar uma aplicação “não tão bem desenvolvida”. E é só o primeiro item da lista. Ainda devem ser verificadas as &lt;a href="https://www.php.net/manual/pt_BR/migration80.deprecated.php" rel="noopener noreferrer"&gt;notas de obsolescência&lt;/a&gt; e &lt;a href="https://www.php.net/manual/pt_BR/migration80.other-changes.php" rel="noopener noreferrer"&gt;outras mudanças&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Claro, estes são cuidados básicos que qualquer pessoa tomaria certo? (sarcasmo) Falei sobre um aspecto trabalhoso de uma migração. Mas uma atualização de tecnologia sempre traz muitas vantagens também. Performance, estabilidade, melhorias para as pessoas que desenvolvem, APIs que abrem novas possibilidades. Correções de problemas. Melhorias de segurança. Estes últimos normalmente acabam ofuscados pelas outras novidades e deveriam ser os principais motivos para uma atualização.&lt;/p&gt;

&lt;h3&gt;
  
  
  Certo, e o PHP?
&lt;/h3&gt;

&lt;p&gt;Creio que você ainda tenha certa ansiedade para que eu fale sobre o que de fato o PHP 8 traz de novidade. Para isso preciso contextualizar a atual situação do PHP. Segundo as pessoas que não leem muito além do título dos artigos, o PHP está morrendo. Estamos em 2020 e ainda tem gente que acha que o PHP é uma linguagem pobre e um queijo suíço quanto a segurança, como talvez já tenha sido há… 20 anos (provavelmente todas as linguagens naquela época eram). Já adiantando o papo: o PHP é bem diferente daquela época, assim como você também é (espero).&lt;/p&gt;

&lt;p&gt;Segundo o &lt;a href="https://w3techs.com/technologies/details/pl-php" rel="noopener noreferrer"&gt;W3Techs&lt;/a&gt;, o PHP é usado em 79% dos sites monitorados por eles - seguido do ASP.NET com 9%. “PHP não escala” - pergunte ao Facebook, Wikipedia ou Washington Post. “Não é orientado a objetos”: nunca foi a proposta principal do PHP que, apesar disso, suporta muito bem o paradigma. O PHP é uma solução robusta para aplicações web há muito tempo. Robusta e segura, com correções de segurança tão logo qualquer vulnerabilidade apareça. Com agenda confiável de atualizações.&lt;/p&gt;

&lt;p&gt;Embora a versão 7 do PHP tenha tido um salto impressionante de performance no lançamento, comparado com a versão 5, houve também muitas melhorias na linguagem. Principalmente para projetos que tiram proveito de boas práticas de design. A declaração de tipos foi um grande avanço na linguagem que permitiu que desenvolvedores tirassem proveito de contratos mais precisos - e foi ficando cada vez melhor a cada nova versão anual (7.0, 7.1 … 7.4).&lt;/p&gt;

&lt;p&gt;Acho que o lançamento do PHP 7 foi ofuscado por algumas coisas. A polêmica da versão 6 e a não implementação de uma funcionalidade que veio somente agora podem ter lá sua culpa. Mas acredito que o lançamento aconteceu em meio a uma explosão de novas linguagens no mercado. Go, Clojure, Elixir, que são ótimas aliás, ganharam a atenção rapidamente e as pessoas mais ligadas as novidades, e novas oportunidades de trabalho surgindo foram conquistadas rapidamente.&lt;/p&gt;

&lt;p&gt;O problema aqui é que os projetos usando PHP não se prepararam ou demoraram para atualizar e podem ter perdido para o apelo da novidade. Já ouvi muitos relatos semelhantes nos últimos anos. Há inúmeros sites e sistemas rodando em PHP 5, que já não recebe atualizações há quase 2 anos. Precisamos atualizar tudo no dia do lançamento? Não. Mas podemos nos preparar.&lt;/p&gt;

&lt;h3&gt;
  
  
  E daí? E o PHP 8?
&lt;/h3&gt;

&lt;p&gt;O PHP 8 não traz melhorias significativas de performance com somente a instalação. Esta versão foi focada em entregar melhorias para o desenvolvimento e possibilidades antes inexistentes. Essa versão, somada ao mercado de desenvolvimento ter esfriado quanto as novidades (e hypes) e ao momento mundial podem dar ao PHP uma nova cara para quem não conhece a linguagem ou mesmo tinha o errôneo conceito que citei anteriormente.&lt;/p&gt;

&lt;p&gt;As novidades de código, como annotations attributes, promoção de propriedades, argumentos nomeados, tipos union e mixed, operador nullsafe, junto a tudo o que mudou no PHP desde a versão 5 (2004), dão a linguagem a robustez para não dever em possibilidades de implementação a nenhuma outra. O time de desenvolvimento tem, mais do que nunca, o poder de criar soluções com contratos fortes, com gerenciamento de erros e exceções mais eficiente e facilidades de sintaxe para acelerar o desenvolvimento.&lt;/p&gt;

&lt;p&gt;Os times que puderem contar com as versões mais recentes do PHP terão, sem uso qualquer framework, um ferramental impressionante. Usando frameworks isso exponencia. Na prática estas novidades resultam em menos código para a mesma solução. Com menos código, a possibilidade de problemas reduz drasticamente. Com menos problemas, reduzimos o custo de manutenção e o impacto desses, agora não tão possíveis, problemas para os nossos clientes.&lt;/p&gt;

&lt;p&gt;Outro ganho indireto é na produtividade. Sabendo usar o novo ferramental os nossos times podem tirar proveito de implementações mais simples, melhor testáveis e mais estáveis. O código torna-se mais estável e robusto com menos esforço. O preço dessa melhora é o desenvolvimento e adequação do time. Mas isso você já está fazendo, não?&lt;/p&gt;

&lt;p&gt;A outra grande novidade do PHP 8 é o JIT (Just-In-Time) - ou melhor: os motores de compilação JIT. Resumidamente, agora o PHP é capaz de otimizar o processo de execução, rodando o programa mais próximo a CPU, sem intermediá-lo na ZendVM (como acontecia desde o PHP 4, 2000). O Nickolas entra nos &lt;a href="https://thephp.website/br/edicao/php-8-jit/" rel="noopener noreferrer"&gt;detalhes dessa implementação em outro (ótimo) artigo&lt;/a&gt; - recomendo a leitura. Junto a outras medidas adotadas ao longo das grandes versões do PHP, como opcache e preloading, o JIT promete grandes ganhos para o PHP, mas não são exatamente de performance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftar2h8w5vwbop6r836hp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftar2h8w5vwbop6r836hp.png" alt="Diagrama do plano de execução do PHP 8"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O diagrama acima, (in)devidamente copiado e traduzido do artigo do Nickolas, mostra como é a estratégia de execução do PHP. Com o JIT habilitado, a execução basicamente segue o fluxo Sim e Sim após a primeira execução. Como neste caso estamos “ignorando” a ZendVM na execução, o processamento é bem mais ágil, no nível da CPU. Com isso temos ganhos significativos em processamento do PHP. Mas não se aplica a operações externas ao PHP, como manipulação de arquivos, conexões com bancos de dados, consumo de API etc. Aplicações complexas, que demandam de alto nível de processamento, serão as mais beneficiadas com a novidade.&lt;/p&gt;

&lt;p&gt;Mas vou além. Conforme mencionado na própria RFC do JIT, há muito mais. A implementação do JIT abre mais possibilidades para o uso do PHP além da web. Normalmente em cenários de uso intensivo de processamento a linguagem é pouco ou não considerada. Um caso de uso poderia ser o de aprendizado de máquina - onde ainda há raras tentativas. Outra possibilidade fica em processamento de som (desde que não haja interação com o armazenamento). Há um mundo de novas possibilidades!&lt;/p&gt;

&lt;p&gt;Outro ponto crucial da introdução do JIT é a possibilidade de desenvolver funções nativas do PHP em código PHP. Explico: será possível que mais pessoas da comunidade, que hoje têm a barreira da linguagem C, possam contribuir com o código fonte da linguagem. Além disso as implementações com essa abordagem serão mais seguras, visto que não haveria todo o código de controle necessário no desenvolvimento em C. Nas palavras dos autores, isso abre portas para inovação mais ágil.&lt;/p&gt;




&lt;p&gt;O que podemos esperar agora? No curto prazo, nada. As bibliotecas já estão atualizando seu código fonte para tirar proveito das novidades. A grande parte das aplicações existentes rodam sobre frameworks que ainda serão atualizados. Ainda haverá um trabalho de otimização e correção das aplicações para que funcionem bem na nova versão. A partir deste ponto veremos as atualizações tornarem-se mais robustas e novos tipos de soluções.&lt;/p&gt;

&lt;p&gt;Os profissionais dentro e fora da bolha dos que palestram e escrevem terão mais possibilidades no dia a dia e têm hoje no PHP uma suíte completa para produzir as soluções que precisarem. Necessito de mais informação e tempo para afirmar com mais precisão, mas acredito que os custos com servidores podem cair significativamente com o JIT, o que pode resultar em melhorias para os times.&lt;/p&gt;

&lt;p&gt;Bem-vindo PHP 8!&lt;/p&gt;




&lt;p&gt;(originalmente publicado em &lt;a href="https://casimiro.page/post/o-php-8-chegou.e-dai/" rel="noopener noreferrer"&gt;https://casimiro.page/post/o-php-8-chegou.e-dai/&lt;/a&gt; )&lt;/p&gt;

</description>
      <category>php</category>
      <category>community</category>
      <category>analysis</category>
      <category>jit</category>
    </item>
  </channel>
</rss>
