<?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: Ð̸aniel ₿elintani</title>
    <description>The latest articles on DEV Community by Ð̸aniel ₿elintani (@belintani).</description>
    <link>https://dev.to/belintani</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%2F493060%2F2d3bbf3a-4bcd-4cac-80e6-6d73b46a320c.jpeg</url>
      <title>DEV Community: Ð̸aniel ₿elintani</title>
      <link>https://dev.to/belintani</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/belintani"/>
    <language>en</language>
    <item>
      <title>Confie mais no seu instinto</title>
      <dc:creator>Ð̸aniel ₿elintani</dc:creator>
      <pubDate>Sun, 29 May 2022 20:05:21 +0000</pubDate>
      <link>https://dev.to/belintani/confie-mais-no-seu-instinto-13n5</link>
      <guid>https://dev.to/belintani/confie-mais-no-seu-instinto-13n5</guid>
      <description>&lt;p&gt;O ‘sentido-aranha’ adquirido por Peter Parker funciona quase como um sexto sentido, uma espécie de habilidade premonitória, tal como as aranhas, que possuem um dos sistemas sensoriais mais impressionantes da natureza.&lt;/p&gt;

&lt;p&gt;Diferentemente do sr. Parker, aqueles sem poderes podem no máximo explorar melhor sua intuição, que é o resultado de vários processamentos que ocorrem no cérebro. Pesquisas sugerem que o cérebro é uma grande máquina de previsões, constantemente comparando a informação sensorial e as experiências atuais com o conhecimento depositado e as memórias de experiências passadas. Cientistas chamam isso de “estrutura de processamento preditivo”.&lt;/p&gt;

&lt;p&gt;Já é fato que, organizações que tomam decisões baseadas em dados estão melhores, comparado às empresas cujas decisões são orientadas apenas por instinto.&lt;/p&gt;

&lt;p&gt;Mas como citei &lt;a href="https://dev.to/belintani/o-caminho-do-sucesso-e-ser-incrivel-12em"&gt;neste texto&lt;/a&gt;, “dados são o novo petróleo”, porém, nada ultrapassará o bem mais valioso, o TEMPO. Isso quer dizer que, trabalhar “data driven” é incrível, desde que, isso esteja trazendo ganho de eficiência, e que estamos economizando tempo.&lt;/p&gt;

&lt;p&gt;Enquanto os dados não trazem conclusões para todas as decisões, é possível explorar o máximo da intuição das pessoas mais experientes. Se é pra errar, que seja em algo inédito!&lt;/p&gt;

&lt;p&gt;Por muitas vezes a solução é óbvia, mas não estamos neurologicamente condicionados a recomeçar, limpar o campo de visão, e procurar o que pode ser removido, nós insistimos apenas em adicionar mais e mais conteúdo. No &lt;a href="https://www.nature.com/articles/s41586-021-03380-y"&gt;artigo apresentado na capa da revista Nature&lt;/a&gt; em abril de 2021, pesquisadores da Universidade da Virgínia explicam por que as pessoas raramente olham para uma situação — em todos os tipos de contextos — e pensam em remover algo como solução. Em vez disso, quase sempre adicionamos algum elemento, ajudando ou não.&lt;/p&gt;

&lt;p&gt;O simples ato de se comunicar verbalmente, por exemplo, é algo que consideramos “automático”. Porém, comunicar-se fluentemente não é simples, o excesso de domínio que temos em falar, faz parecer fácil. Isso ocorre em mais campos de estudo. Aquilo que mais temos certeza não requer grande esforço para tomada de decisão.&lt;/p&gt;

&lt;p&gt;Analisar este comportamento é inclusive um dos fundamentos que classificam o polígrafo como uma “ultrapassada pseudociência”. Um bom mentiroso pode ter muito domínio em mentir, assim como um inocente pode ter pouco domínio em narrar numa situação de interrogatório.&lt;/p&gt;

&lt;p&gt;No ambiente corporativo, se você tem afinidade em determinado tema, confiar naquilo que parece “óbvio” pode lhe trazer muito ganho de velocidade. Questionar-se todas a cada passo, e sempre procurar por referência em dados — por mais que traga uma resposta final mais fundamentada e assertiva — pode fazê-lo deixar de economizar tempo, que ainda é o verdadeiro valor almejado.&lt;/p&gt;

&lt;p&gt;Por isso o mais sábio, na minha visão, é uma mescla, atuando empiricamente para itens de alto conhecimento, e deixando o campo de pesquisa para itens de baixo domínio.&lt;/p&gt;

&lt;p&gt;--&lt;/p&gt;

&lt;p&gt;Originally published at &lt;a href="https://belintani.com"&gt;https://belintani.com&lt;/a&gt; on May 29, 2022.&lt;/p&gt;

</description>
      <category>sucess</category>
      <category>career</category>
    </item>
    <item>
      <title>CQRS, direto ao ponto</title>
      <dc:creator>Ð̸aniel ₿elintani</dc:creator>
      <pubDate>Mon, 03 Jan 2022 11:48:38 +0000</pubDate>
      <link>https://dev.to/belintani/cqrs-direto-ao-ponto-166l</link>
      <guid>https://dev.to/belintani/cqrs-direto-ao-ponto-166l</guid>
      <description>&lt;p&gt;Com todo o seu charme, essa é daquelas expressões em inglês que arrepia a espinha de qualquer iniciante, e que todo profissional quando compreende o conceito, repete com orgulhos nos olhos.(&lt;a href="https://belintani.com/assets/audio/posts/2022-01-02-cqrs-direto-ao-ponto/CQRS.mp3"&gt;veja como é a pronúncia&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;CQRS é a abreviação de &lt;em&gt;Command and Query Responsibility Segregation&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;O que isso quer dizer?&lt;/p&gt;

&lt;blockquote&gt;
&lt;h4&gt;
  
  
  Não misture "leitura dos dados" com "gravação dos dados"!
&lt;/h4&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Quando usar
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Sempre que possível&lt;/strong&gt;. O "papo" de &lt;em&gt;over-engineering&lt;/em&gt; não se encaixa tão bem aqui, uma vez que não é tão complexo assim.&lt;br&gt;
Claro, sem hipocrisia, numa distribuição orientada à &lt;em&gt;microservices&lt;/em&gt;, existe chance de ser um trabalho chato e menos justificável.&lt;/p&gt;
&lt;h3&gt;
  
  
  Como implementar
&lt;/h3&gt;

&lt;p&gt;Existem duas técnicas, no qual vi ser as mais comuns:&lt;/p&gt;

&lt;p&gt;1 - Criando classes distintas, separando propriedades editáveis de dados disponíveis para consulta.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;CreatePlayer&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;Name&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;Alias&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;DefaultPassword&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;UpdatePlayer&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;Name&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;Alias&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;Password&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;FindPlayer&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="n"&gt;Guid&lt;/span&gt; &lt;span class="n"&gt;ID&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;Name&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;Alias&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="n"&gt;DateTime&lt;/span&gt; &lt;span class="n"&gt;CreatedTime&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2 -  Separando acessos distintos de leitura e escrita, de preferência com credenciais diferentes para acesso à base de dados.&lt;/p&gt;

&lt;p&gt;Um método deve ser &lt;em&gt;Command&lt;/em&gt; ou &lt;em&gt;Query&lt;/em&gt;, nunca ambos.&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Command&lt;/em&gt;&lt;/strong&gt; se refere às funções de criação, alteração ou exclusão.&lt;br&gt;
E por eliminação, &lt;strong&gt;&lt;em&gt;Query&lt;/em&gt;&lt;/strong&gt; são as consultas.&lt;/p&gt;

&lt;h3&gt;
  
  
  Benefícios
&lt;/h3&gt;

&lt;h4&gt;
  
  
  - &lt;strong&gt;Princípio da responsabilidade única&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Ao separar os métodos, já encontrará o código quebrado para uma única responsabilidade, o que facilitará na implementação de cobertura de testes, e também na própria manutenção.&lt;/p&gt;

&lt;h4&gt;
  
  
  - &lt;strong&gt;Dimensionamento Independente&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Caso tenha um &lt;em&gt;software&lt;/em&gt; com mais requisições de leituras do que gravação, é ideal usar dois bancos de dados separados, podendo dimensionar os seus modelos de forma independente.&lt;/p&gt;

&lt;p&gt;Além disso, podemos desnormalizar o banco de dados de leitura, o que resultará em consultas simples, junções menos complexas, e tempo de resposta rápido.&lt;/p&gt;

&lt;h4&gt;
  
  
  - &lt;strong&gt;Separação de preocupação&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;As regras de persistência e atualização dos dados não irão influenciar nas consultas, e entregar credenciais distintas trará menores preocupações no acesso aos dados.&lt;br&gt;
Não basta estar blindado ao "&lt;em&gt;sql-injection&lt;/em&gt;", mas também a atenção para erros humanos, o que acontece com frequência em projetos de objetos dinamicamente mapeados por um ORM.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CQRS&lt;/strong&gt; é simples, mas que traz preocupações reais do mundo corporativo, e este conceito será referenciado em outros textos futuros, principalmente sobre tópicos relacionados à segurança da informação.&lt;/p&gt;




&lt;p&gt;Originally published at &lt;a href="https://belintani.com/posts/cqrs-direto-ao-ponto/"&gt;https://belintani.com&lt;/a&gt; on January 2, 2022.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>cqrs</category>
    </item>
    <item>
      <title>O plano é seu, assuma os riscos e colha os frutos</title>
      <dc:creator>Ð̸aniel ₿elintani</dc:creator>
      <pubDate>Sun, 12 Dec 2021 23:44:23 +0000</pubDate>
      <link>https://dev.to/belintani/o-plano-e-seu-assuma-os-riscos-e-colha-os-frutos-ojj</link>
      <guid>https://dev.to/belintani/o-plano-e-seu-assuma-os-riscos-e-colha-os-frutos-ojj</guid>
      <description>&lt;p&gt;A prática de trabalhar o solo para obter uma colheita é quase tão antiga quanto a própria humanidade. E independente de crença, nada me passa a mente como mais histórico do que os Provérbios das Escrituras Hebraicas, com ~1600 anos.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“O que semeia a injustiça segará males; e a vara da sua indignação falhará” (Provérbios 22:8).&lt;/p&gt;

&lt;p&gt;“Portanto, comerão do fruto do seu procedimento e dos seus próprios conselhos se fartarão” (Provérbios 1:31)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A analogia aos provérbios vem do pressuposto de que um Plano de Desenvolvimento Individual (PDI) sempre será da própria pessoa, e de mais ninguém. Assim, inevitavelmente, colhemos aquilo que plantamos, e só irá evoluir na carreira aquele que efetivamente planejar (semear), e posteriormente se doar na execução.&lt;/p&gt;

&lt;p&gt;Como vai o seu PDI?&lt;br&gt;
Materializa-se um PDI pelo processo de organizar as ações que irão levar o indivíduo a atingir um objetivo e desenvolver-se. No ambiente corporativo, procuramos principalmente, mas não exclusivamente, focar na evolução profissional.&lt;/p&gt;

&lt;p&gt;A partir de algumas pesquisas, descobri que comumente empresas tratam o PDI como um guia prático para desenvolver competências e habilidades, e acompanham tais evoluções para condicionar o crescimento na carreira do profissional em questão. Outros ainda, acreditam que apoiar o PDI significa reservar parte da verba da área em cursos, livros e certificações.&lt;/p&gt;

&lt;p&gt;Discordo destas definições. Contrariando a maioria, em PDIs nos quais oriento, procuro dar ênfase aos pontos fortes e em como explorá-los em prol do destaque, ao invés de dar foco nas fragilidades e incompetências.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fcy1hGkZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j3ak7x768s2sgjkti6ts.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fcy1hGkZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j3ak7x768s2sgjkti6ts.png" alt="Onde você se encontra" width="880" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Não escolhemos quais são as pessoas ao nosso redor, mas influenciamos aqueles que estão próximos a nós. Tendencialmente, se trabalharmos nos pontos fracos das pessoas, criamos uma linha da mediocridade, e igualamos todos a ela, e deixamos de explorar a aptidão de cada pessoa.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZTvPNa-p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rygqdf01ipugl6qv5dct.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZTvPNa-p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rygqdf01ipugl6qv5dct.png" alt="Média de mercado" width="880" height="160"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ao elaborar um PDI com foco na aptidão, revertemos e geramos os diferenciais no mercado, e buscamos extrapolar as possibilidades já conhecidas.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--E4qjQ-3p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jgp56zaa9wxxre88wwt9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--E4qjQ-3p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jgp56zaa9wxxre88wwt9.png" alt="Diferencial de mercado" width="668" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Desta forma, conseguimos quebrar limites e criar os grandes profissionais diferenciados, dedicando exponencialmente mais forças onde encontramos resultados. No exemplo acima, dos pontos fracos, não evoluímos nenhum ponto de “criatividade”, e investimos muito pouco em “comunicação”, apenas o suficiente para alavancar os pontos de “comprometimento” e “know-how técnico”, estes sim, dedicados e hoje considerados diferenciais desta pessoa em específico.&lt;/p&gt;

&lt;p&gt;Todavia, ter um PDI bem elaborado não é tudo. É preciso disciplina para seguir o seu plano! Neste “novo mundo corporativo”, com “internet das coisas”, “metaverso”, e uma infinidade de distrações, vemos as pessoas fazendo aquilo que gostam, e não aquilo que precisam.&lt;/p&gt;

&lt;p&gt;Uma ajuda para que se tenha disciplina, é a percepção do sucesso. O problema é que sucesso está atrelado ao que terminou, e não sobre o que se fez. Aposte nas entregas “parciais”. Esperar para ver uma evolução completa do seu PDI pode demorar muito, e consequentemente, a recompensa não virá de imediato, e este será o início do seu fracasso. Sucesso justifica o esforço. Reconheça o que se faz, trabalhe com pequenos marcos, e nunca esqueça de celebrar.&lt;/p&gt;

&lt;p&gt;O próximo passo é buscar destaque, e isso está atrelado em fazer mais do que os outros, e agregar valor no seu trabalho. Um ponto de vantagem por aqui, é que a maioria das pessoas vão optar por decisões baseadas em “não quero”, “não gosto” e “não preciso”, e quando saírem da zona de conforto, logo no primeiro final de semana, já estarão nas redes sociais, postando, “pagando de diferentes” e esperando resultados diferenciados. Siga o seu PDI, e já estará em destaque perante a maioria.&lt;/p&gt;

&lt;p&gt;--&lt;br&gt;
Originally published at &lt;a href="https://belintani.com"&gt;https://belintani.com&lt;/a&gt; on December 12, 2021.&lt;/p&gt;

</description>
      <category>career</category>
    </item>
    <item>
      <title>Estude como se não houvesse amanhã</title>
      <dc:creator>Ð̸aniel ₿elintani</dc:creator>
      <pubDate>Wed, 13 Oct 2021 01:36:00 +0000</pubDate>
      <link>https://dev.to/belintani/estude-como-se-nao-houvesse-amanha-174a</link>
      <guid>https://dev.to/belintani/estude-como-se-nao-houvesse-amanha-174a</guid>
      <description>&lt;p&gt;Para o filósofo francês &lt;a href="https://www.todamateria.com.br/michel-de-montaigne/"&gt;Montaigne&lt;/a&gt;, revolucionário no tema da educação, o ensino deveria estar atrelado com o empirismo, ou seja, através de experiências práticas. Ele também asserta na sua obra &lt;em&gt;Ensaios&lt;/em&gt; (1580), que as ações de uma pessoa dependem das circunstâncias presentes no momento da ação, mais do que da sua personalidade e do seu raciocínio.&lt;/p&gt;

&lt;p&gt;Conhecemos a frase de Gandhi, "Viva como se fosse morrer amanhã", que é reflexiva e vastamente utilizada para um defender um &lt;a href="https://www.significados.com.br/carpe-diem/"&gt;Carpe diem&lt;/a&gt; eterno. Todavia, a mensagem por completo é:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Viva como se fosse morrer amanhã. APRENDA como se fosse viver para sempre."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Inspirado nestes dois históricos nomes, digo-lhes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Estude como se não houvesse amanhã.
&lt;/h2&gt;

&lt;p&gt;Correndo o risco de parecer redundante, reforço o primeiro ponto destacado no meu outro texto, &lt;a href="https://belintani.com/posts/o-caminho-do-sucesso/"&gt;"O caminho do sucesso"&lt;/a&gt; agora com um pouco mais de profundidade sobre &lt;strong&gt;fazer dos estudos um &lt;em&gt;hobby&lt;/em&gt;&lt;/strong&gt;. Isso levará-lhe, naturalmente, a se tornar um excelente profissional na área de desenvolvimento de &lt;em&gt;software&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Fomos condicionados desde a infância à obrigatoriedade com o estudo. Frases como "estudar para a prova", ou "estudar para ser alguém na vida", geram uma pressão enorme, ainda quando crianças, em demonstrarmos capazes de decorar mais do que efetivamente aprender.&lt;/p&gt;

&lt;p&gt;O que vejo com frequência, são iniciantes da área de tecnologia confundindo praticamente TUDO. Estudando conteúdos fora de ordem, lendo os livros "clichê", e pior, por muitas vezes, desperdiçando o seu próprio tempo.&lt;/p&gt;

&lt;p&gt;Para simplificar a leitura, e garantir a absorção do conteúdo, apresento abaixo algumas "dicas de ouro" na qual adoraria que me tivessem passado.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Curta a jornada&lt;/strong&gt;. Se desenvolver &lt;em&gt;software&lt;/em&gt; não lhe dá prazer instantâneo, considere trabalhar em outra área, ou trocar de emprego, ou mudar de linguagem de programação. Digo tranquilamente que troquei várias vezes o video-game pela IDE de desenvolvimento. Codificar deve ser um prazer.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Não faça pelo dinheiro&lt;/strong&gt;. A computação em geral sempre foi, e provavelmente sempre será, uma área sem desemprego. É melhor reduzir o seu padrão de vida (dividindo as contas com alguém, não troque de carro), mas não venda o seu tempo! Ele é escasso. Se você procurar tocar projetos em paralelo, vai achar quem contrate... Não faça isso! tire o seu tempo livre para estudar! No futuro, valerá mais financeiramente, pode confiar.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Estudar, não necessariamente, é ler livros&lt;/strong&gt;. Se desafie a criar um algoritmo e medir resultados, mesmo que sozinho, isso já é estudar. Claro, grandes autores já transcreveram décadas de conhecimento no papel. Procure pelos "originais", &lt;a href="https://pt.wikipedia.org/wiki/Robert_Cecil_Martin"&gt;Uncle Bob&lt;/a&gt;, &lt;a href="https://pt.wikipedia.org/wiki/Martin_Fowler"&gt;Martin Fowler&lt;/a&gt;, &lt;a href="https://pt.wikipedia.org/wiki/Kent_Beck"&gt;Kent Beck&lt;/a&gt;, &lt;a href="https://pt.wikipedia.org/wiki/Donald_Knuth"&gt;Donald Knuth&lt;/a&gt;, e evite autores que simplificam ou distorcem algumas mensagens.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Tenha um par ou trio de estudos&lt;/strong&gt;. A maior satisfação em aprender algo, é compartilhar, e com o passar dos anos, a sintonia se tornará tão grande, que um complementará o raciocínio do outro, como um super-combo de &lt;a href="https://pt.wikipedia.org/wiki/Street_Fighter"&gt;street fighter&lt;/a&gt; em cada &lt;em&gt;brainstorming&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Não seja uma pessoa iludida&lt;/strong&gt;. Muitos profissionais juniores, começam a se desconsiderar iniciantes, uma vez que conseguiram "ir longe" com um projeto e ganhar melhores salários. O importante é ter consciência de que é possível criar algo grande, impactar a vida de milhares de pessoas, mesmo no início da sua carreira! Não importa o título que a "empresa A " atribuiu-lhe como cargo, não use isso para se iludir e deixar de estudar. Antes de investir, pelo menos 10.000 horas em algum tema, ninguém é especialista no assunto, e na engenharia de &lt;em&gt;software&lt;/em&gt; e ciência da computação não é diferente.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;O privilégio de &lt;strong&gt;ter um mentor&lt;/strong&gt;, pode acelerar, e muito, os seus aprendizados. Na vida, vários mentores auxiliarão-lhe: professores, colegas, sócios, investidores. Um bom mentor não lhe dará nenhuma resposta pronta, mas promoverá a elasticidade mental necessária para questionar-lhe na devida intensidade sobre os seus métodos, as suas fontes de estudos, e as suas tomadas de decisão.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Não deixe para amanhã, o que pode-se estudar hoje. Bons estudos.&lt;/p&gt;

&lt;p&gt;--&lt;br&gt;
Originally published at &lt;a href="https://belintani.com"&gt;https://belintani.com&lt;/a&gt; on October 12, 2021.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>O que é uma Graph API</title>
      <dc:creator>Ð̸aniel ₿elintani</dc:creator>
      <pubDate>Sun, 26 Sep 2021 01:09:31 +0000</pubDate>
      <link>https://dev.to/belintani/o-que-e-uma-graph-api-20eh</link>
      <guid>https://dev.to/belintani/o-que-e-uma-graph-api-20eh</guid>
      <description>&lt;p&gt;Uma Graph API é uma &lt;a href="https://www.openapis.org/"&gt;REST API&lt;/a&gt;, porém, seguindo uma modelagem de dados entre &lt;em&gt;nodes&lt;/em&gt; e &lt;em&gt;edges&lt;/em&gt;, permitindo executar a chamada de várias entidades de forma encadeada, com um único &lt;em&gt;request&lt;/em&gt;. Apesar de ser um pouco diferente, isso não significa que todas as especificações anotadas na &lt;a href="https://spec.openapis.org/oas/latest.html"&gt;OpenAPI&lt;/a&gt; devam ser ignoradas, pelo contrário, segue fielmente as especificações de cada verbo http, por exemplo.&lt;/p&gt;

&lt;p&gt;Não é raro a confusão entre o conceito de uma GraphAPI com o uso de &lt;a href="https://graphql.org/learn/"&gt;GraphQL&lt;/a&gt;, esta segunda sim, é bem diferente do convencional, e só disponibiliza um único acesso GET e outro POST, recebendo uma consulta na semântica da graphQL.&lt;/p&gt;

&lt;p&gt;Na composição de uma Graph API temos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;nodes&lt;/em&gt; — basicamente objetos individuais, como um Usuário, Página Conta ou Comentário&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;edges&lt;/em&gt; — conexões entre uma coleção de objetos com outros objetos&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;fields&lt;/em&gt; — dados sobre um objeto.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Object ID's
&lt;/h3&gt;

&lt;p&gt;Os &lt;em&gt;nodes&lt;/em&gt;, por representarem objetos individuais, obrigatoriamente possuem, cada um, a referência para um ID único no sistema inteiro. Assim sendo, para obter informações de um objeto, basta consultar diretamente pelo seu ID. Não precisa especificar o seu tipo na chamada.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;GET&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;HOST/{node-id}&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Fields
&lt;/h3&gt;

&lt;p&gt;Para obter outros dados do objeto além do ID, é necessário especificar explicitamente na consulta, pelo parâmetro chamado &lt;em&gt;fields&lt;/em&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;GET&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;HOST/{node-id}?fields={var1},{var2}&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Edges
&lt;/h3&gt;

&lt;p&gt;Os relacionamentos entre objetos são encontrados pelas &lt;em&gt;edges&lt;/em&gt;. Por padrão, elas retornam apenas ID's, mas assim como é para os &lt;em&gt;nodes&lt;/em&gt;, o parâmetro &lt;em&gt;fields&lt;/em&gt; pode ser utilizado para retornar propriedades específicas em cada nível.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;GET&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;HOST/{node-id}/{edge}?fields={var1},{var2}...&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Exemplo → Facebook
&lt;/h3&gt;

&lt;p&gt;Para exemplificar, apresento abaixo alguns exemplos de consultas reais do Facebook, que implementa em suas chamadas REST o conceito de Graph API.&lt;/p&gt;

&lt;p&gt;Obter as contas de anúncio do usuário corrente, com nome da conta e o limite de gastos.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;GET&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://graph.facebook.com/v11.0/me/adaccounts?fields=id,name,spend_cap&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;"me" é o &lt;strong&gt;&lt;em&gt;node&lt;/em&gt;&lt;/strong&gt;, "adaccounts" é a &lt;strong&gt;&lt;em&gt;edge&lt;/em&gt;&lt;/strong&gt; , e "id,name,spend_cap" são os &lt;strong&gt;&lt;em&gt;fields&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Para cada conta de anúncio, é possível executar outra chamada para encontrar alguns dados das campanhas que estão dentro das contas de anúncio.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;GET&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;.../v11.0/{adaccount-id}/campaigns?fields=id,name,objective,effective_status&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;"{adaccount-id}" é o &lt;strong&gt;&lt;em&gt;node&lt;/em&gt;&lt;/strong&gt;, "campaigns" é a &lt;strong&gt;&lt;em&gt;edge&lt;/em&gt;&lt;/strong&gt;, e "id,name,objective,effective_status" são os &lt;strong&gt;&lt;em&gt;fields&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;No exemplo acima, se o usuário possuir 30 contas de anúncio, a chamada para buscar as campanhas deve ser invocada 30x.&lt;/p&gt;

&lt;p&gt;Por isso, uma Graph API possui o grande trunfo: a busca encadeada.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;GET&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;.../v11.0/me/adaccounts?fields=id,name,spend_cap,campaigns{id,name,objective,effective_status}&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se você pensou "parece mágica", bem-vindo ao clube!&lt;/p&gt;

&lt;p&gt;Esta mesma explosão ocorreu-me em 2013, quando comecei a trabalhar com as &lt;a href="https://developers.facebook.com/docs/graph-api/overview"&gt;Graph API's do Facebook&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;--&lt;br&gt;
Originally published at &lt;a href="https://belintani.com"&gt;https://belintani.com&lt;/a&gt; on September 25, 2021.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>SOLID, direto ao ponto</title>
      <dc:creator>Ð̸aniel ₿elintani</dc:creator>
      <pubDate>Sun, 26 Sep 2021 01:06:52 +0000</pubDate>
      <link>https://dev.to/belintani/solid-direto-ao-ponto-11n</link>
      <guid>https://dev.to/belintani/solid-direto-ao-ponto-11n</guid>
      <description>&lt;p&gt;Ao trabalhar efetivamente com Programação Orientada a Objetos (POO), provavelmente os 5 princípios SOLID já estão presentes no dia a dia, mesmo que de forma não intencional.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;S — Single Responsiblity Principle&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;(Princípio da responsabilidade única)&lt;/p&gt;

&lt;p&gt;Ao separar a arquitetura do projeto em camadas, provavelmente as suas classes já são quebradas, mantendo-as com uma responsabilidade única.&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%2Fbelintani.com%2Fassets%2Fimg%2Fposts%2Fsolid-direto-ao-ponto%2Fstore-splitted.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%2Fbelintani.com%2Fassets%2Fimg%2Fposts%2Fsolid-direto-ao-ponto%2Fstore-splitted.png" alt="Desktop View"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;O — Open-Closed Principle&lt;/strong&gt;.
&lt;/h3&gt;

&lt;p&gt;(Princípio Aberto-Fechado)&lt;/p&gt;

&lt;p&gt;As classes devem estar abertas para extensão, mas fechadas para modificação.&lt;br&gt;
Uma forma simples de implementar, é definir as ações do sistema em &lt;em&gt;interfaces&lt;/em&gt; e referencie-as nas funções ao invés de trabalhar com as classes originais.&lt;/p&gt;

&lt;p&gt;Exemplificando, considere &lt;code&gt;Enumerable&lt;/code&gt; uma &lt;em&gt;interface&lt;/em&gt; para utilizar na função de &lt;code&gt;Count()&lt;/code&gt; que avança para a função &lt;code&gt;Next()&lt;/code&gt; até acabar a lista. Em nenhum momento um array de um objeto foi citado, e a função &lt;code&gt;Count()&lt;/code&gt; trabalha exclusivamente com a &lt;em&gt;interface&lt;/em&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;Count&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Enumerable&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;++;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;while&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Next&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;L — Liskov Substitution Principle&lt;/strong&gt;.
&lt;/h3&gt;

&lt;p&gt;(Princípio da substituição de Liskov)&lt;/p&gt;

&lt;p&gt;Quando uma classe estende outra, trabalhe a classe de mais alto nível nas funções. Assim sendo, se existir a classe &lt;code&gt;Eletronico&lt;/code&gt;, e as classes filhas &lt;code&gt;Televisão&lt;/code&gt; e &lt;code&gt;Laptop&lt;/code&gt;, sempre dê preferência por trabalhar funções que manipulam &lt;code&gt;Eletronico&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Eletronico&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Ligar&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Televisao&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Eletronico&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;bool&lt;/span&gt; &lt;span class="n"&gt;suportaHDTV&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Laptop&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Eletronico&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;byte&lt;/span&gt; &lt;span class="n"&gt;portasUSB&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;SistemaIntegrado&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;LigarSistemas&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Eletronico&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;es&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;foreach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;es&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Ligar&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;I — Interface Segregation Principle&lt;/strong&gt;.
&lt;/h3&gt;

&lt;p&gt;(Princípio da Segregação da Interface)&lt;/p&gt;

&lt;p&gt;Não obrigue uma classe importar uma &lt;em&gt;interface&lt;/em&gt;, se a mesma não for implementar todo o contrato.&lt;/p&gt;

&lt;p&gt;Considere duas classes, &lt;code&gt;ContaCorrente&lt;/code&gt; e &lt;code&gt;ContaPoupanca&lt;/code&gt;, onde ambas podem receber depósitos e recebem a implementação da &lt;em&gt;interface&lt;/em&gt; &lt;code&gt;Depositavel&lt;/code&gt;. Caso seja necessário rentabilizar o dinheiro da &lt;code&gt;ContaPoupanca&lt;/code&gt;, não adicione a função &lt;code&gt;CalcularLucro&lt;/code&gt; na mesma &lt;em&gt;interface&lt;/em&gt;, afinal, a classe &lt;code&gt;ContaCorrente&lt;/code&gt; não irá implementar tal calculo. Crie uma &lt;em&gt;interface&lt;/em&gt; &lt;code&gt;Rentavel&lt;/code&gt; e atribua apenas nos tipos de conta que terão rentabilidade.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;interface&lt;/span&gt; &lt;span class="nc"&gt;Depositavel&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="n"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Depositar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;valor&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;interface&lt;/span&gt; &lt;span class="nc"&gt;Rentavel&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;CalcularLucro&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;ContaCorrente&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Depositavel&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Depositar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;valor&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// depositar em conta corrente&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;ContaPoupanca&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Rentavel&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Depositavel&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;CalcularLucro&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// calculo base da poupanca&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Depositar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;valor&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// depositar em conta poupanca&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;D — Dependency Inversion Principle&lt;/strong&gt;.
&lt;/h3&gt;

&lt;p&gt;(Princípio da Inversão de Dependência)&lt;/p&gt;

&lt;p&gt;Encapsule qualquer classe externa dentro de uma classe própria, e passe este objeto para as classes que irão utilizar. Um injetor de dependência já garante a inversão de dependência.&lt;/p&gt;

&lt;p&gt;Por exemplo, não deixe a função &lt;code&gt;EnviarEmail&lt;/code&gt; responsável por decidir como obter o &lt;code&gt;Remente&lt;/code&gt;, e em vez disso, já receba pronto as instâncias necessárias.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;bool&lt;/span&gt; &lt;span class="nf"&gt;EnviarEmail&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Remetente&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Destinatario&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Formatador&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;EmailManager&lt;/span&gt; &lt;span class="n"&gt;em&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;em&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;All&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;All&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ToEmailEncode&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Por hoje é só pessoal!
&lt;/h3&gt;

&lt;p&gt;Continue a acompanhar as próximas publicações para abordarmos mais temas de forma descomplicada e direto ao ponto.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Verdades difíceis de engolir programação de software</title>
      <dc:creator>Ð̸aniel ₿elintani</dc:creator>
      <pubDate>Mon, 17 May 2021 01:57:55 +0000</pubDate>
      <link>https://dev.to/belintani/verdades-dificeis-de-engolir-programacao-de-software-4c0p</link>
      <guid>https://dev.to/belintani/verdades-dificeis-de-engolir-programacao-de-software-4c0p</guid>
      <description>&lt;p&gt;Sócrates sempre fez perguntas difíceis de serem respondidas: Quem é o homem? Por que existo? O que é o belo? O que é o justo?&lt;/p&gt;

&lt;p&gt;Mas convenhamos que atualmente as pessoas não gostam de         quem faz perguntas. Na verdade, elas gostam mesmo é de respostas prontas, porém quando as têm, relutam pela dificuldade de digerir certas verdades.&lt;/p&gt;

&lt;p&gt;Conto com seu bom senso em debatermos sobre algumas verdades, e saiba que, negá-las não as tornarão em inverdades.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1. É preciso estudar programação todos os dias&lt;/strong&gt;.
&lt;/h3&gt;

&lt;p&gt;Procure trabalhar com pessoas que procuram falar sobre inovação diariamente, ou encontre um par de estudos. Atuar em projetos da comunidade é um excelente meio de contribuir para o seu aprendizado de forma mais dinâmica. Leia mais sobre este tema neste meu texto: &lt;a href="https://dev.to/belintani/quem-nao-inova-morre-3leh/"&gt;Quem não inova, morre&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;2. Existe sim, uma linguagem de programação melhor do que outras&lt;/strong&gt;.
&lt;/h3&gt;

&lt;p&gt;Certamente esta é a mais polêmica, e atrai muita discussão, mas não acredite nas bobeiras do seu amigo, algumas linguagens são sim, melhores do que outras. Empresas insistem na falácia de que isto não é verdade, apenas para que haja interesse de alguém para trabalhar com uma linguagem de programação horrível e arcaica, afinal, reconstruir tudo é muito caro. &lt;/p&gt;

&lt;p&gt;Agora, dizer qual é a melhor linguagem não é uma resposta simples, até porque altera constantemente. Minha recomendação é olhar para algumas características: Contexto (o que você quer construir); Frequência de atualização; tamanho da comunidade; contribuição de seu(s) criador(es); performance computacional; e simplicidade na sintaxe.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;3. A grande maioria dos programadores não são bons programadores&lt;/strong&gt;.
&lt;/h3&gt;

&lt;p&gt;Vivemos em um mercado aquecido onde não existe desemprego para quem iniciou uma faculdade na área, e a maioria esmagadora (uns 95%?) parecem não ter aptidão para tal carreira. As empresas sabem disso, mas ficam acuadas: o recrutador tem meta de contratação, o gestor tem meta de crescimento do time, e a diretoria prefere fazer vista grossa e fingir que possuem um time forte. &lt;/p&gt;

&lt;p&gt;Os poucos destaques são os profissionais incríveis, e recomendo a leitura do meu texto: &lt;a href="https://dev.to/belintani/o-caminho-do-sucesso-e-ser-incrivel-12em/"&gt;O caminho do sucesso é ser incrível&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;4. Não é necessário um PC gamer para trabalhar&lt;/strong&gt;.
&lt;/h3&gt;

&lt;p&gt;Nos anos 90, programação de software já era um trabalho reconhecido, e nada impediu que grandes programadores se desenvolvessem e criassem algoritmos incríveis e software que mudaram a humanidade. Um computador gamer só serve pra uma coisa: &lt;strong&gt;Jogar&lt;/strong&gt;. Mas todo programador usa o trabalho como desculpa para montar um “setup” cheio de led RGB e placa de vídeo de 8GB. Mas, apesar de desnecessário, recomendo jogos como um excelente passatempo.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;5. O seu código um dia será apagado&lt;/strong&gt;.
&lt;/h3&gt;

&lt;p&gt;Infelizmente existe ciclo para substituição de todo o código criado. Se esforce em adequá-lo aos padrões de longevidade, mas saiba que o fracasso é iminente. Leia mais sobre este tema neste meu texto: &lt;a href="https://dev.to/belintani/o-seu-codigo-vai-virar-lixo-1f7f/"&gt;O seu código vai virar lixo&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;6. Performance é melhor que elegibilidade&lt;/strong&gt;.
&lt;/h3&gt;

&lt;p&gt;Recentemente vi programadores medíocres defendendo ser uma boa estratégia alterar um código de 50ms de resposta para 250ms em prol de uma leitura “mais fácil”. Sinto muito ser o porta voz, mas isso não deve ser feito. Não deixe que as &lt;strong&gt;suas limitações&lt;/strong&gt; no entendimento do código lhe permitam cometer tal crime. Se o código anterior entregava 5x mais rápido, com certeza absoluta ele é um código melhor, e deve utilizar corretamente as características da linguagem adotada. Aprenda com o código, melhore-o se puder, mas nunca, jamais, piore o desempenho do mesmo se não for &lt;strong&gt;realmente necessário&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;7. Um verdadeiro bom programador só nasce depois de 10.000 horas programando&lt;/strong&gt;.
&lt;/h3&gt;

&lt;p&gt;O conceito é bem conhecido, onde diz que para se tornar expert em qualquer assunto, é necessário contato por dez mil horas. Como programador de carreira, impossível eu não concordar com isso. Programar não é LER sobre. É experimentar, codificar front-end, back-end, mobile. Ter habilidade em codificar requer lógica, algoritmo, metodologia de estudo, e claro, desenvolvimento de um software por completo. Sou a favor das especialidades, mas defendo que, um verdadeiro programador precisa ser capaz de criar um software inteiro, mesmo que o seu forte seja só em uma vertical, o básico das outras é obrigatório.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;8. Trocar de emprego o tempo todo mancha sim o seu currículo&lt;/strong&gt;.
&lt;/h3&gt;

&lt;p&gt;O tempo médio de programadores em startups de tecnologia é de 18 meses. Hoje, com a alta demanda, é possível sim fazer “pula pula” a cada 6 meses no inicio da sua carreira. Mas saiba que, quando você tiver 10 anos de experiência, essa falta de foco em construir algo poderá diferenciar entre conseguir um salário baixo, ou o salário maior do que o diretor da empresa. Quando encontrar uma empresa que você goste do projeto e da equipe, abrace-a e não troque por 20% de aumento, tenha um foco a longo prazo.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;9. O quanto antes você falar inglês, melhor&lt;/strong&gt;.
&lt;/h3&gt;

&lt;p&gt;Existe uma grande mentira, de que é possível codificar apenas sabendo o básico do básico de inglês. Porém, nomear variáveis, métodos, e qualquer anotação requer o uso de termos claros, e escrever nomes ruins/errados em inglês é pior do que escrevê-los em português. &lt;/p&gt;

&lt;p&gt;Mas não se precipite, não escreva códigos em português, ou todos vão lhe odiar. Não queremos códigos limitados a brasileiros, e por este motivo, o seu código deve ser escrito em inglês. O que fazer então? Corra e aprenda logo, está perdendo tempo.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;10. Bug é erro de desenvolvimento&lt;/strong&gt;.
&lt;/h3&gt;

&lt;p&gt;Tal como um cozinheiro errando no tempero, ou um escritor se perdendo na história de um personagem, &lt;strong&gt;bugs&lt;/strong&gt; nos software é um reflexo direto de um erro no trabalho de construção do código fonte. Então sim, criar muitos bugs significa que algo está errado com o desenvolvedor, seja correria, falta de foco, ou simplesmente, desânimo com a tarefa assumida. Assim como a uma década atrás era inevitável o fim dos "analistas de sistemas" (criadores de diagramas que não sabiam programar), profissionais que apenas fazem "Quality Assurance (QA)" já estão desaparecendo, dando espaço, finalmente (e como antigamente), para programadores garantindo os seus entregáveis de forma estável.  &lt;/p&gt;

&lt;h2&gt;
  
  
  Sei que não é fácil ler tais verdades, são difíceis de engolir mesmo.
&lt;/h2&gt;

</description>
      <category>career</category>
      <category>programming</category>
    </item>
    <item>
      <title>O caminho do Sucesso é ser Incrível</title>
      <dc:creator>Ð̸aniel ₿elintani</dc:creator>
      <pubDate>Sat, 21 Nov 2020 18:03:45 +0000</pubDate>
      <link>https://dev.to/belintani/o-caminho-do-sucesso-e-ser-incrivel-12em</link>
      <guid>https://dev.to/belintani/o-caminho-do-sucesso-e-ser-incrivel-12em</guid>
      <description>&lt;h3&gt;
  
  
  "Se você não sabe aonde ir, qualquer caminho serve."
&lt;/h3&gt;

&lt;p&gt;Já disse o Gato de Cheshire, um animal fictício famoso através do livro Alice no País das Maravilhas de &lt;a href="https://www.amazon.com.br/Lewis-Carroll/e/B000AQ3N2Q"&gt;Lewis Carroll&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sou apaixonado por tecnologia, e trabalhar com desenvolvimento de &lt;em&gt;software&lt;/em&gt; foi justamente um dos caminhos que escolhi para me aproximar ao máximo dos avanços computacionais. &lt;/p&gt;

&lt;p&gt;A trajetória em desenvolvimento de &lt;em&gt;software&lt;/em&gt; não é curta, e diria até, sem fim. Ao iniciar tal jornada, vários caminhos são ofertados como especialidade: frontend, backend, devops, dados, automação, robótica, mobile, &lt;em&gt;web&lt;/em&gt;, segurança, entre incontáveis opções que surgem e morrem com o tempo.  &lt;/p&gt;

&lt;p&gt;A escolha da especialidade não garante ascensão na carreira. O sucesso é reservado para os que conseguem se destacar, e são estes os &lt;strong&gt;Visionários&lt;/strong&gt; e os &lt;strong&gt;Incríveis&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pessoas visionárias.&lt;/strong&gt; O maior desafio de um visionário, é empreender com um time de pessoas incríveis. Gosto da frase que Joel Beasley escreveu logo no início de &lt;a href="https://www.amazon.com/dp/B07BGGXQ7T"&gt;seu livro&lt;/a&gt;: "Não tem mágica para ser um visionário. Está mais para uma persistência ímpia. É uma habilidade aprendida por necessidade."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pessoas incrivelmente esforçadas&lt;/strong&gt; (ou podemos chamar apenas de '&lt;strong&gt;incríveis&lt;/strong&gt;'). O que define, para mim, um(a) profissional incrível na área da computação:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Muitos dizem que dados são o novo petróleo. Porém, nada ultrapassará o bem mais valioso, desde sempre, que é o TEMPO. Uma pessoa incrível &lt;strong&gt;estuda como um &lt;em&gt;hobby&lt;/em&gt;&lt;/strong&gt;, usando o seu tempo livre com estudos na área de computação, simplesmente porque ama o que está a aprender. Pessoas "não incríveis" vão reclamar e esperar que alguém lhes pague para sentar e aprender, e se a empresa não o fizer, se acomodam e não estudarão. É muito legal quando temos apoio corporativo para evoluções e estudos, mas depender disso não passa de desculpa esfarrapada para si mesmo.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Um pré-requisito para se tornar incrível é &lt;strong&gt;fluência em alguma linguagem de programação&lt;/strong&gt;. Esta capacidade é atribuída quando o profissional consegue traduzir qualquer código com a mesma facilidade de ler um texto na sua língua materna.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Alguém de destaque não terá dois ou três empregos simultâneos. &lt;strong&gt;Foco&lt;/strong&gt; é uma palavra-chave, e só há destaque ao dedicar-se 100% num objetivo. Pessoas incríveis vão ocupar o seu tempo livre com a família (ou outro lazer) e estudos. Pegar &lt;em&gt;freelancer&lt;/em&gt; ou "rodar um projeto paralelo" é sempre um tiro no pé de quem quer se destacar. Procure manter-se dedicado integralmente até o término do caminho principal já escolhido.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ao &lt;strong&gt;buscar debates na área&lt;/strong&gt; é possível receber &lt;em&gt;feedbacks&lt;/em&gt; dos seus estudos e trabalhos, além de sempre sair com algo novo para estudar. A única atenção é não cair na armadilha de acreditar que basta ir em eventos (seja pago ou "boca livre"), liderados por &lt;del&gt;papagaios&lt;/del&gt; pessoas que apenas repetem algo, e encher o seu &lt;em&gt;laptop&lt;/em&gt; de adesivos. Procure conversar com especialistas num assunto. O ideal é ter um ou dois mentores.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Uma pessoa arrogante nunca será incrível, no máximo, será iludida. &lt;strong&gt;Ambição e humildade precisam caminhar juntos&lt;/strong&gt;. Como diz o ditado: "A gente aprende, aprende, aprende e morre burro". Eu já escrevi &lt;a href="https://dev.to/belintani/o-seu-codigo-vai-virar-lixo-1f7f"&gt;neste texto&lt;/a&gt; sobre o seu código não ser eterno. Assumir que outra pessoa pode ter pensado em algo antes/melhor que você, é um excelente caminho para aprender. Por outro lado, a arrogância afastará bons profissionais de perto de você.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Os incríveis irão longe, &lt;strong&gt;mesmo que não saibam aonde querem chegar&lt;/strong&gt;. As suas características o guiarão ao sucesso, inevitavelmente. Já as pessoas "não incríveis" podem até saber onde querem chegar, mas sem os comportamentos adequados, o 'atalho' levará apenas até a metade do caminho e ali permanecerão, iludidas, reclamando da empresa, dos colegas, e da vida.&lt;/p&gt;

</description>
      <category>career</category>
      <category>programming</category>
      <category>success</category>
    </item>
    <item>
      <title>Metaforando, uma análise não-funcional</title>
      <dc:creator>Ð̸aniel ₿elintani</dc:creator>
      <pubDate>Mon, 02 Nov 2020 12:51:17 +0000</pubDate>
      <link>https://dev.to/belintani/metaforando-uma-analise-nao-funcional-6kk</link>
      <guid>https://dev.to/belintani/metaforando-uma-analise-nao-funcional-6kk</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uS1GA10---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/99mzyqtqxtqbz062jjsw.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uS1GA10---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/99mzyqtqxtqbz062jjsw.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
Atenção: Todas as piadas são referências ao &lt;a href="https://www.youtube.com/channel/UCh7TUTXojlE8vRtb-EnuDzw"&gt;canal metaforando, do Vitor Santos&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Eu sou &lt;a href="https://dev.to/belintani"&gt;&lt;strong&gt;Daniel Belintani&lt;/strong&gt;&lt;/a&gt;, perito não-profissional de micro expressões regulares.&lt;/p&gt;

&lt;h3&gt;
  
  
  “Código nunca mente. Já os comentários as vezes o fazem.”
&lt;/h3&gt;

&lt;p&gt;Acredito que a primeira vez que eu vi esta frase foi em 2009, e naquele momento a minha cabeça explodiu! Desde então, nunca mais documentei um código "só por documentar". Ao procurar o texto original e &lt;a href="https://ciberduvidas.iscte-iul.pt/consultorio/perguntas/a-expressao-ficar-com-os-louros/28930"&gt;atribuir corretamente os louros&lt;/a&gt; ao seu criado(a), só encontrei o famoso &lt;a href="https://en.wikipedia.org/wiki/Ron_Jeffries"&gt;Ron Jeffries&lt;/a&gt;, quando divulgou a frase ao &lt;a href="https://twitter.com/ronjeffries/status/949400218092687361"&gt;tweetar&lt;/a&gt;, em 2018.&lt;/p&gt;

&lt;p&gt;Diagnosticando um cenário, na prática, sobre uma função que irá finalizar um carrinho de compras.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zoCH6kYo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/9lteuuvhkip7mlwof337.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zoCH6kYo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/9lteuuvhkip7mlwof337.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
Até o momento, a análise realmente prova de que os comentários mostram descritivos &lt;strong&gt;congruentes&lt;/strong&gt;. Apesar destes comentários serem completamente inúteis dado a sua redundância.&lt;/p&gt;

&lt;p&gt;Seria aceitável que este código na sequência precise começar a verificar se o carrinho não está vazio:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WyRkG2WR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/v47x42gelly9wkhc5av2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WyRkG2WR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/v47x42gelly9wkhc5av2.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Conforme o protocolo SPAMS, podemos observar que o descritivo da função "finaliza um carrinho, ou mostra mensagem de erro" já apresenta o seu primeiro comportamento &lt;strong&gt;incongruente&lt;/strong&gt;. Fica evidente a inexistência de um comentário direto, onde  função evita dizer: "eu retorno warning". Isso poder ser justificado por um simples esquecimento dos fatos pelo(a) programador(a).&lt;br&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sKpElRhH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ksblym52cts5yvhn03sw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sKpElRhH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ksblym52cts5yvhn03sw.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Esta alteração no código também apresentou uma expressão de IDH (início de um histórico) na L9 seguido de um FDH (fim de histórico) na L14. O que de fato, não é um comentário bem-visto pela comunidade, sendo que há controladores de versão (ex: git) para exercer tal função.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sb874pcZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/g771xalk5iwn1x0d4cqz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sb874pcZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/g771xalk5iwn1x0d4cqz.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Os comentários são então removidos no PR (pull request), mas alguns meses depois, um BUG traz uma nova pessoa para este código, e sem nenhum apego emocional, temos a alteração abaixo:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZBfy5wkW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/34ellh6k8zfw3dp0ua8t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZBfy5wkW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/34ellh6k8zfw3dp0ua8t.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vemos então um comentário desesperado, guiado pelo sentimento de vergonha ao fazer uma gambiarra desnecessária. É comum que pessoas culpadas deixem comentários como rastro dos seus crimes, na crença de que ganhou um "passe-livre da prisão" ao justificar-se com um comentário.&lt;/p&gt;

&lt;p&gt;Outro comportamento de um comentário que tende a ser mentiroso, é o excesso de &lt;del&gt;tensão&lt;/del&gt; textão, onde é adicionado um comentário longo para que ninguém leia. Este comentário, muito provavelmente não sofrerá a devida alteração quando algo mudar na regra de negócio.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_QynvtBH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/37w5lzq3xreq3r5awmys.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_QynvtBH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/37w5lzq3xreq3r5awmys.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Desconfie também de comentários que forçam a sua &lt;a href="https://www.redhat.com/pt-br/topics/middleware/what-is-ide"&gt;IDE&lt;/a&gt; (ferramenta de escrever código) a minimizar parte de códigos, isso pode ser considerado "afastamento e quebra de contato visual", muito utilizado por truques de mágicas.&lt;/p&gt;

&lt;p&gt;Comentários podem ser mentirosos. Cuidado. Porém, existem comentários úteis:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Comentários em acessos públicos. Se o código for "fechado", seja num servidor, ou em uma SDK, quem desenvolveu tem o dever de documentar e manter atualizado a explicação de como utilizar e qual a sua função. Para APIs a solução mais comum é o &lt;a href="https://swagger.io/"&gt;swagger&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Comentários de TODO. Nunca deixe de anotar parte do código que ficou faltando algo ou que pode ser refatorado. Basta adicionar "TODO: o que fazer" nas linhas de referência.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Lembrando também que esse texto é um estudo, no qual venho na condição de perito dar uma visão, mas essa não é uma cartada final muito menos a verdade absoluta, é apenas uma análise.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>O seu código vai virar lixo</title>
      <dc:creator>Ð̸aniel ₿elintani</dc:creator>
      <pubDate>Wed, 28 Oct 2020 11:18:32 +0000</pubDate>
      <link>https://dev.to/belintani/o-seu-codigo-vai-virar-lixo-1f7f</link>
      <guid>https://dev.to/belintani/o-seu-codigo-vai-virar-lixo-1f7f</guid>
      <description>&lt;p&gt;Este título não se trata apenas de um &lt;a href="https://pt.wikipedia.org/wiki/Clickbait"&gt;clickbait&lt;/a&gt;, mas sim um tema sensível, uma vez que pode atacar diretamente o ego de quem vem a construir &lt;em&gt;software&lt;/em&gt; ao deparar com o fim trágico e eminente do seu trabalho.&lt;/p&gt;

&lt;p&gt;Participei ativamente de pelo menos 250 contratações de devs nos últimos anos, e considerando uma média de 30 entrevistas presenciais para cada posição, estamos a falar de algo em torno de 7.500 reuniões de recrutamento. Acredite ou não, uma das frases que mais escuto dos participantes é: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Eu não faço código para ir parar no lixo".&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Algo interessante é que esta frase sempre traz o gatilho que preciso para compartilhar um pensamento que propago há alguns anos: "Todo o seu código, ou boa parte dele, vai virar lixo". A reação de espanto ou choque de realidade é instantânea para quem escuta pela primeira vez, e claro, ao mesmo tempo, já utilizo para avaliar comportamento ao ser confrontado(a) em algo que sempre repetiu a carreira toda.&lt;/p&gt;

&lt;p&gt;A explicação é relativamente simples. Quem acompanhou o meu outro texto "&lt;a href="https://dev.to/belintani/quem-nao-inova-morre-3leh"&gt;quem não inova, morre&lt;/a&gt;" já sabe que trabalhei utilizando &lt;a href="https://www.adobe.com/br/products/flex.html"&gt;Adobe Flex Builder&lt;/a&gt;, para gerar websites em flash, e que sofri um pouco criando widgets &lt;a href="https://www.java.com/pt-BR/download/help/whatis_j2me.html"&gt;J2ME (java micro edition&lt;/a&gt;). Também criei soluções web com &lt;a href="https://docs.oracle.com/javase/tutorial/deployment/applet/security.html"&gt;applets&lt;/a&gt; (java), trabalhei em sistemas criando &lt;em&gt;interfaces&lt;/em&gt; no Microsoft Access 95, e até em um ERP inteiro desenvolvido em Visual Basic 6.0, tudo isso há mais de 10 anos atrás. E se alguém julga que não poderia ser pior, desenvolvi um sistema inteiro em Microsoft Silverlight (competidor do flash), e até já utilizei uma "linguagem de programação própria" de uma empresa privada.&lt;/p&gt;

&lt;p&gt;Isso quer dizer que, apenas do meu trabalho, milhares de horas de programação, e incontáveis linhas de código, foram parar no lixo.&lt;/p&gt;

&lt;p&gt;Alguns fatores responsáveis por direcionar códigos para a lixeira:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Qualidade:&lt;/strong&gt; Se o código não for legível, é mais fácil apagar e escrever novamente&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Desempenho:&lt;/strong&gt; Se o código não está devidamente desacoplado (independente) e preparado para escalar, outro virá para fazer o mesmo processo mais rápido&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tecnologia:&lt;/strong&gt; O fator mais injusto de todos. Ao atualizar frameworks e linguagens, novas opções entram no mercado, até que um dia o código é depreciado por completo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Uma das missões de todo bom profissional na área é justamente &lt;strong&gt;aumentar a longevidade do código o máximo possível&lt;/strong&gt;, certo? &lt;/p&gt;

&lt;p&gt;O primeiro passo que recomendo é justamente o reconhecimento. Saber que o código um dia será apagado, o que precisa ser feito para garantir que ele atenda o seu propósito pelo maior tempo possível.&lt;/p&gt;

&lt;p&gt;Adicionar &lt;a href="https://softwaretestingfundamentals.com/unit-testing/"&gt;teste unitário&lt;/a&gt; no seu código é um excelente início. Sem ele, é quase certo que outra pessoa vai achar mais fácil apagar e reescrever a sua função. Todavia, se o código estiver com 100% de cobertura, com todos os casos mapeados, a probabilidade do código "sobreviver" a manutenção é exponencialmente maior. O ponto de atenção é que teste unitário mal elaborado/pensado, provavelmente vai parar no lixo a cada nova alteração.&lt;/p&gt;

&lt;p&gt;Utilizar tecnologia de ponta é o mais óbvio. Se um ciclo de vida de 3-5 anos já é considerado longo para um &lt;em&gt;software&lt;/em&gt;, o que acontece se for utilizado uma linguagem de programação ou framework com 2 anos já atrasado? O código vai parar no lixo 2 anos mais cedo, simples assim! Nunca inicie um projeto utilizando tecnologia antiga, por mais que "a curva de aprendizado vá tirar-lhe da zona de conforto", o compromisso em lutar contra a remoção do seu código tem que ser mais relevante. E se, o que lhe limita é a tecnologia já adotada na empresa, termine este texto, agende um compromisso de 1 hora na sua vida, PARE TUDO, e vá ler sobre &lt;a href="https://microservices.io/"&gt;microsserviços&lt;/a&gt; e virtualização com &lt;a href="https://www.docker.com/"&gt;docker&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Além disso, mantenha um código elegante. Estude MUITO a tecnologia do momento, pois, sempre estará em aprimoramento, uma vez que concordou com tudo que escrevi até aqui, e logo, estará anualmente se atualizando com novas tecnologias. O trabalho árduo não trará uma visibilidade tão imediata da sua maturidade, mas posso afirmar-lhe que após 10 anos seus códigos serão naturalmente elegantes. Alguns materiais mais antigos podem ajudar no pontapé para quem está a iniciar, como o &lt;a href="https://books.google.com.br/books/about/C%C3%B3digo_Limpo.html?id=GXWkDwAAQBAJ"&gt;Clean Code&lt;/a&gt;, e o &lt;a href="https://books.google.com.br/books?id=8ngAkAEACAAJ"&gt;Clean Architecture&lt;/a&gt;, mas realmente o que mais recomendo, é a participação ativa na comunidade. Abrace um ou dois projetos &lt;em&gt;open source&lt;/em&gt; grandes, tenho certeza que aprenderá muito só de observar outros códigos.&lt;/p&gt;

&lt;p&gt;Para quem aguardou até aqui para discordar, sim, existem vários códigos que se mantém vivos por décadas, estes normalmente associados a código de baixo nível (alta &lt;em&gt;performance&lt;/em&gt;), extremamente objetivos (elegante), e testáveis. Confie em mim, eles só estão preparados para longevidade, mas eles vão para a lixeira algum dia, é questão de tempo, nem que seja numa era da computação quântica.&lt;/p&gt;

&lt;p&gt;Afinal, qual a longevidade buscar? A fórmula é bem simples. &lt;strong&gt;Custo x Benefício&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Reconhecendo o fracasso iminente do seu código, e o esforço em adequá-lo aos padrões da longevidade, coloque na balança. &lt;br&gt;
Se em três horas for possível produzir um código que irá durar seis meses, logo, em doze horas deveria ser criado algo para permanecer por mais de dois anos. Caso contrário, não é tão vantajoso assim.&lt;/p&gt;

&lt;p&gt;Contudo, isso depende. Em &lt;em&gt;startups&lt;/em&gt;, a grande armadilha mora no &lt;a href="https://www.codesimplicity.com/post/what-is-overengineering/"&gt;&lt;em&gt;over engineering&lt;/em&gt;&lt;/a&gt;. Muitas vezes devs com muita experiência de mercado insistem em dedicar &lt;strong&gt;200 horas&lt;/strong&gt; em criar uma funcionalidade que poderia ser desenvolvida em &lt;strong&gt;40 horas&lt;/strong&gt; (e durar apenas um ano). Para tirarmos vantagem (CxB), o código precisa durar cinco anos. E o mais bizarro é que normalmente são códigos preparados para tal longevidade. Mas nem tudo são flores e tão simples.&lt;/p&gt;

&lt;p&gt;O que &lt;strong&gt;erroneamente&lt;/strong&gt; acaba a ficar de fora da equação é o &lt;a href="https://en.wikipedia.org/wiki/Time_to_market"&gt;&lt;em&gt;time to market&lt;/em&gt;&lt;/a&gt;. Uma &lt;em&gt;startup&lt;/em&gt; precisa sempre estar de olho em aproveitar o momento. Não adianta negar, todos queremos o famoso &lt;a href="https://www.inacademy.eu/blog/whats-a-unicorn-startup-company/"&gt;unicórnio&lt;/a&gt;, e quando buscamos crescimento exponencial, é mais vantajoso ter um código que irá durar um ano, mas que é desenvolvido em uma semana, do que uma funcionalidade que vai permanecer imutável por cinco anos levando mais de um mês para ser construída. Afinal, é &lt;em&gt;startup&lt;/em&gt;, a cada trimestre o foco ainda pode mudar, e uma funcionalidade nova poderá trazer "aquele cliente" que salvará as contas do mês.&lt;/p&gt;

&lt;p&gt;Isso não é um passe livre para criar um monte de código lixo! Afinal, queremos um código que vai parar na lixeira, e não que já nasce lá. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Esteja preparado(a) para criar um código que irá durar muito, será útil algumas vezes.&lt;/li&gt;
&lt;li&gt;Entenda a solução que está a construir e o momento de mercado. Não seja apenas um peão neste jogo de xadrez, entenda o projeto na totalidade.&lt;/li&gt;
&lt;li&gt;Por fim, comunique a sua estratégia para os colegas, não faça um código rápido, e nem extenso, sem antes compartilhar a sua visão com os demais membros do projeto, e tomando a decisão no coletivo.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>programming</category>
    </item>
    <item>
      <title>Quem não inova, morre</title>
      <dc:creator>Ð̸aniel ₿elintani</dc:creator>
      <pubDate>Wed, 28 Oct 2020 11:16:49 +0000</pubDate>
      <link>https://dev.to/belintani/quem-nao-inova-morre-3leh</link>
      <guid>https://dev.to/belintani/quem-nao-inova-morre-3leh</guid>
      <description>&lt;p&gt;Esta verdade inquestionável já deve ter passado por seus ouvidos em algum momento. Talvez a primeira vez em um &lt;a href="https://www.forbes.com/sites/briansolomon/2016/07/25/yahoo-sells-to-verizon-for-5-billion-marissa-mayer/#32d70cd8450f"&gt;caso de estudo da Yahoo, vendida a Verizon&lt;/a&gt; por 4% da sua maior valorização histórica; ou quem sabe em algum podcast falando da &lt;a href="http://vrworld.com/2011/01/31/analysis-the-fall-of-nokia/"&gt;Nokia, quando insistiu em seu teclado qwerty&lt;/a&gt; até ser esmagado pelo atraso na adesão ao android após a &lt;a href="https://time.com/4628515/steve-jobs-iphone-launch-keynote-2007"&gt;revolução do touchscreen liderado por Steve jobs no iPhone&lt;/a&gt;;&lt;/p&gt;

&lt;p&gt;Aproximando mais a nossa realidade, em inovação tecnológica, grandes nomes reforçam a importância da inovação, como &lt;a href="https://www.ebiografia.com/elon_musk"&gt;Elon Musk&lt;/a&gt;, ao citar:  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"O fracasso é uma opção. Se as coisas não estão a falhar, não está a inovar o suficiente." &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;ou &lt;a href="https://www.ebiografia.com/steve_jobs/"&gt;Steve Jobs&lt;/a&gt;, quando defende que:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Inovação é o que distingue um líder de um seguidor. As pessoas loucas o suficiente de pensar que podem mudar o mundo, são aquelas que o fazem."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Em analogia com o instinto de sobrevivência, seria natural a reflexão sobre "o que é inovação". Vejamos algumas definições.   &lt;/p&gt;

&lt;p&gt;Segundo &lt;a href="https://www.biography.com/us-president/barack-obama"&gt;Barack Obama&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Inovação é a criação de algo que melhora a maneira como vivemos as nossas vidas". &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Já para &lt;a href="https://www.ebiografia.com/peter_drucker/"&gt;Peter Drucker&lt;/a&gt;, considerado como o pai da administração ou gestão moderna, e influenciador de um grande número de líderes e de organizações em todos os setores da sociedade:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Inovação é a mudança que cria uma nova dimensão de desempenho". &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Em termos práticos, de acordo com &lt;a href="https://pt.wikipedia.org/wiki/Joseph_Schumpeter"&gt;Schumpeter&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Inovação refere-se a qualquer nova política para reduzir o custo total de produção ou aumentar a demanda por seus produtos".&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Saindo da teoria e observando parte da minha vivência pessoal no mercado de tecnologia nacional, posso citar alguns exemplos que comprovam o quanto, cada dia a inovação é necessária para manter um produto ou empresa no mercado.&lt;/p&gt;

&lt;p&gt;Dentre os mais marcantes, impossível não questionar as inovações no universo dos dispositivos móveis. Há apenas uma década (meados de 2010), ainda nos primórdios da &lt;a href="https://www.oracle.com/internet-of-things/what-is-iot.html"&gt;IoT&lt;/a&gt; (internet das coisas), criar uma simples funcionalidade para rodar em celular não era fácil, tínhamos inúmeras limitações de memória, processamento, e bateria. Requeríamos no mínimo um estudo em &lt;a href="https://www.java.com/pt-BR/download/help/whatis_j2me.html"&gt;J2ME (java micro edition)&lt;/a&gt;. Já nos dias de hoje, após muita inovação na área, felizmente, temos a facilidade em certo nível de que até &lt;a href="https://www.hongkiat.com/blog/young-talented-app-developers/"&gt;jovens já estão criando seus próprios aplicativos&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Outro exemplo bem ilustrativo é o universo dos bancos. Quando iniciei na área, estava claro que bancos "já faziam tudo que precisava", e empresas insistiam que aprender Cobol era uma grande oportunidade de se manter no mercado até a aposentaria, uma vez que era "impossível" os bancos desistirem dos seus mainframes. Porém, nos últimos anos vimos nascer Bancos 100% digitais, acompanhamos os bancos "tradicionais se reinventando / inovando, e temos pela frente o lançamento do PIX, novo ecossistema de pagamentos instantâneos (quase uma criptomoeda estatal, mas vamos guardar o tópico para outro papo).&lt;/p&gt;

&lt;p&gt;Existem empresas fortes que se mantém em atualização, mas a grande parte de inovação hoje está descentralizado em milhares de startups pelo mundo. Os novos unicórnios somados trazem uma representatividade alta perante investimentos nas grandes companhias, o que torna a famosa "acqui-hiring" (processo de aquisição de uma empresa principalmente para recrutar os seus funcionários) cada vez mais valiosa. Confie em mim, se não estiver a inovar, não receberá uma proposta.&lt;/p&gt;

&lt;p&gt;Na área de desenvolvimento de software, buscar inovação é algo corriqueiro, e fugir não é uma opção inteligente. Certamente você deve trabalhar com as linguagens de programação mais atualizadas, usar as últimas versões de software, e estar antenado(a) nas tecnologias emergentes.&lt;/p&gt;

&lt;p&gt;Alguns colegas que não me escutaram em 2010 quando os alertei, seguiram teimosamente até a ruína de tecnologias como a &lt;a href="https://www.adobe.com/br/products/flex.html"&gt;Adobe Flex Builder&lt;/a&gt; , que utilizava Java para criar apps em flash.&lt;/p&gt;

&lt;p&gt;Temos sim muito código legado e sistemas que funcionam bem com tecnologias arcaicas atualmente. Não caia na conversa fiada de que "é um sistema velho, mas nunca vai morrer". Tudo terá um fim, assim como o próprio código que acabou de escrever também terá um destino trágico (lixeira), seja por problemas de escalabilidade, desempenho ou limitações de integração.&lt;/p&gt;

&lt;p&gt;A minha sugestão é que busque o conhecimento básico, e entenda como tecnologias anteriores contribuíram para o cenário atual, mas que principalmente, procure trabalhar em empresas que estão a procurar inovação.&lt;/p&gt;

&lt;p&gt;Se por acaso inovação não faz parte do seu dia a dia corporativo, mude de emprego! Caso contrário estará limitado(a) e não poderá usar recursos computacionais mais atualizados, terá uma comunidade fraca para se relacionar, e ao longo prazo, perderá currículo e ganhará menos dinheiro. Um caminho conhecido é esquivar-se das propostas das grandes corporações engessadas e apostar nas startups, e tenha certeza que a experiência de 1 ano vale por 3 anos numa empresa que tem inovação como o seu diferencial.&lt;/p&gt;

</description>
      <category>career</category>
    </item>
  </channel>
</rss>
