<?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: João Victor Santos</title>
    <description>The latest articles on DEV Community by João Victor Santos (@viquitor).</description>
    <link>https://dev.to/viquitor</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%2F1198604%2F267e6afd-5f6d-4085-9ae4-488091e83fce.jpeg</url>
      <title>DEV Community: João Victor Santos</title>
      <link>https://dev.to/viquitor</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/viquitor"/>
    <language>en</language>
    <item>
      <title>E Se... As Condicionais Fossem Mais Simples? Transformando Código com Boas Práticas</title>
      <dc:creator>João Victor Santos</dc:creator>
      <pubDate>Fri, 16 Aug 2024 14:46:20 +0000</pubDate>
      <link>https://dev.to/viquitor/e-se-as-condicionais-fossem-mais-simples-transformando-codigo-com-boas-praticas-54a2</link>
      <guid>https://dev.to/viquitor/e-se-as-condicionais-fossem-mais-simples-transformando-codigo-com-boas-praticas-54a2</guid>
      <description>&lt;p&gt;Escrever código não é apenas fazê-lo funcionar; é sobre entender como nossas escolhas de estrutura afetam a legibilidade, manutenção e eficiência do código. O uso adequado de condicionais como &lt;code&gt;if-else&lt;/code&gt; desempenha um papel crucial nesse processo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Importância da escolha correta
&lt;/h2&gt;

&lt;p&gt;Cada &lt;code&gt;if&lt;/code&gt; e &lt;code&gt;else&lt;/code&gt; representa um caminho que pode levar a diferentes resultados. Embora a solução mais rápida seja tentadora, ela pode se tornar insustentável ao longo do tempo.&lt;/p&gt;

&lt;p&gt;Um código claro e conciso melhora a legibilidade, facilita futuras modificações e promove a colaboração entre desenvolvedores. Essa clareza começa com a escolha adequada das estruturas condicionais.&lt;/p&gt;

&lt;h2&gt;
  
  
  A simplicidade como abordagem
&lt;/h2&gt;

&lt;p&gt;Aninhar condicionais pode criar uma cascata de &lt;code&gt;if-else&lt;/code&gt; que, embora funcione, torna-se difícil de entender. Simplificar essas estruturas com &lt;em&gt;early return&lt;/em&gt; pode ser a melhor abordagem:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Early return&lt;/em&gt; é o retorno imediato de uma função quando a condição é atendida, evitando o uso de &lt;code&gt;else&lt;/code&gt; e reduzindo a complexidade.&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="nf"&gt;determinePermission&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;accessLevel&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;accessLevel&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;equals&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Administrator"&lt;/span&gt;&lt;span class="o"&gt;))&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s"&gt;"Full access granted"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s"&gt;"Limited access granted"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Este exemplo demonstra como um retorno antecipado elimina a necessidade de &lt;code&gt;else&lt;/code&gt;, tornando a intenção do código mais clara e fácil de compreender. Ao eliminar aninhamentos desnecessários, criamos um fluxo mais linear e menos propenso a erros.&lt;/p&gt;

&lt;h2&gt;
  
  
  Simplificando decisões
&lt;/h2&gt;

&lt;p&gt;Em vez de utilizar uma série de &lt;code&gt;if-else&lt;/code&gt;, mapear condições com &lt;em&gt;lookup tables&lt;/em&gt; é uma maneira mais eficiente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="n"&gt;vehicleTypes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;map&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="s"&gt;"car"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;      &lt;span class="s"&gt;"land"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"boat"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;     &lt;span class="s"&gt;"water"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"airplane"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"air"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;getTransportMedium&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;vehicle&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;medium&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;exists&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;vehicleTypes&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;vehicle&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt; &lt;span class="n"&gt;exists&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;medium&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s"&gt;"unknown medium"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Aqui, utilizamos um mapa para relacionar tipos de veículos com seus meios de transporte, melhorando a clareza e facilitando a manutenção e escalabilidade do código.&lt;/p&gt;

&lt;h2&gt;
  
  
  Organizando a complexidade
&lt;/h2&gt;

&lt;p&gt;Quando as condições são numerosas, o &lt;code&gt;switch-case&lt;/code&gt; é uma solução ideal para organizar múltiplas condições de forma clara:&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="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;getInstrumentSound&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;instrument&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;switch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;instrument&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;guitar&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;strum&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;drum&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;beat&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;flute&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;whistle&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;default&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;unknown sound&lt;/span&gt;&lt;span class="dl"&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;p&gt;O &lt;code&gt;switch-case&lt;/code&gt; lida com múltiplas condições de maneira elegante, tornando o código mais fácil de seguir e menos propenso a erros.&lt;/p&gt;

&lt;h2&gt;
  
  
  Usando estratégias a seu favor
&lt;/h2&gt;

&lt;p&gt;Outro conceito importante é o &lt;em&gt;short-circuit evaluation&lt;/em&gt;, onde as condições em uma expressão lógica são avaliadas até que o resultado seja conhecido. Isso significa priorizar condições mais prováveis, economizando tempo de execução.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Comece com a condição mais provável no &lt;code&gt;OR ('||')&lt;/code&gt;:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;conditionLikelyTrue&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;otherCondition&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// código executado se qualquer uma das condições for verdadeira&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Ou com a menos provável no &lt;code&gt;AND ('&amp;amp;&amp;amp;')&lt;/code&gt;:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;unlikelyCondition&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;otherCondition&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// código executado somente se ambas as condições forem verdadeiras&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Exemplo prático
&lt;/h2&gt;

&lt;p&gt;Um exemplo em Kotlin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight kotlin"&gt;&lt;code&gt;&lt;span class="kd"&gt;val&lt;/span&gt; &lt;span class="py"&gt;containerView&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;container&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;itemView&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="nc"&gt;ViewGroup&lt;/span&gt; &lt;span class="o"&gt;?:&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;containerView&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;isEmpty&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Aqui, o operador &lt;em&gt;Elvis&lt;/em&gt; (&lt;code&gt;?:&lt;/code&gt;) permite um retorno imediato caso &lt;code&gt;container.itemView&lt;/code&gt; não seja um &lt;code&gt;ViewGroup&lt;/code&gt;, evitando uma verificação explícita de nulidade. A verificação &lt;code&gt;containerView.isEmpty()&lt;/code&gt; utiliza &lt;em&gt;early return&lt;/em&gt;, mantendo o código mais linear.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;O operador &lt;em&gt;Elvis&lt;/em&gt; em Kotlin permite que você forneça um valor padrão se a expressão for &lt;code&gt;null&lt;/code&gt;, tornando o código mais conciso.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Boas práticas
&lt;/h2&gt;

&lt;p&gt;O uso de constantes e variáveis semânticas simplifica e clarifica o código:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Utilizar constantes para operações booleanas melhora a legibilidade:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="kt"&gt;boolean&lt;/span&gt; &lt;span class="n"&gt;isAdult&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="kt"&gt;boolean&lt;/span&gt; &lt;span class="n"&gt;hasPermission&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;permissionGranted&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;isAdult&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;hasPermission&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// código executado se a pessoa for adulta e tiver permissão&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Crie constantes semânticas para cadeias de operações booleanas complexas:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="kt"&gt;boolean&lt;/span&gt; &lt;span class="n"&gt;isEligible&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;isAdult&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;hasPermission&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="kt"&gt;boolean&lt;/span&gt; &lt;span class="n"&gt;canProceed&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;isEligible&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;hasPaidFee&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;canProceed&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// código executado se a pessoa for elegível e tiver pago a taxa&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;O operador ternário deve ser utilizado com parcimônia, apenas quando a expressão é simples e clara, pois pode comprometer a legibilidade do código:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;isEligible&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="s"&gt;"Approved"&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"Denied"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Utilize &lt;em&gt;Guard Clauses&lt;/em&gt; no início da função para verificar condições e interromper a função, protegendo a execução indesejada:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(!&lt;/span&gt;&lt;span class="n"&gt;isValid&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="c1"&gt;// Restante do código&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Guard Clauses&lt;/em&gt; são verificações no início de uma função que permitem sair da função caso uma condição específica não seja atendida, simplificando o fluxo de controle.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;Cada &lt;code&gt;if&lt;/code&gt;, &lt;code&gt;else&lt;/code&gt; ou &lt;code&gt;switch&lt;/code&gt; que escrevemos contribui para o resultado final. Investir tempo para entender e aplicar as melhores práticas no uso de condicionais não só cria um código mais eficiente, mas também nos prepara para desafios mais complexos no futuro. A capacidade de escolher e aplicar a estrutura condicional adequada define a qualidade e sustentabilidade do nosso trabalho. Enfrentar essas escolhas com atenção e cuidado é essencial para evoluirmos como desenvolvedores.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>programming</category>
      <category>learning</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>A Arte de identificar o Problema Antes de Buscar Soluções</title>
      <dc:creator>João Victor Santos</dc:creator>
      <pubDate>Sat, 20 Jul 2024 22:39:00 +0000</pubDate>
      <link>https://dev.to/viquitor/a-arte-de-focar-no-problema-antes-de-buscar-solucoes-dlh</link>
      <guid>https://dev.to/viquitor/a-arte-de-focar-no-problema-antes-de-buscar-solucoes-dlh</guid>
      <description>&lt;p&gt;A minha jornada sempre foi desafiadora quando se trata de socialização, mas a resolução de problemas nunca foi um obstáculo pra mim. No entanto, essa dificuldade me trouxe uma experiência valiosa: a importância de enfrentar um problema diretamente antes de buscar ajuda.&lt;/p&gt;

&lt;p&gt;Observei que, em ambientes que já estive de trabalho e aprendizado, a busca por soluções rápidas frequentemente reflete a falta de compreensão profunda do problema.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Importância da Iniciativa
&lt;/h2&gt;

&lt;p&gt;No meu estágio, uma das frustrações era ver a falta de iniciativa em buscar soluções antes de pedir ajuda. Embora pedir ajuda não seja um problema, eu percebia que muitos não faziam um esforço inicial para resolver por conta própria. Essa falta de tentativa própria pode ser um obstáculo para o aprendizado profundo e a compreensão real do problema.&lt;/p&gt;

&lt;p&gt;Enfrentar o desafio diretamente ajuda a entender melhor o assunto, além de &lt;br&gt;
promover um aprendizado mais sólido. E quando isso é feito por conta &lt;br&gt;
própria, pode ensinar muito mais do que apenas buscar uma solução pronta.&lt;/p&gt;

&lt;h2&gt;
  
  
  O grande Jogo
&lt;/h2&gt;

&lt;p&gt;A vida é um constante jogo entre escolhas e respostas. E a nossa trajetória é moldada atráves das respostas que temos ao tomar nossas decisões todos os dias. Não se trata apenas de responder, mas sim, de entender o que perguntar e de como ela é refletida no que precisamos resolver. Cada escolha cria um caminho, e a capacidade de buscar e interpretar respostas define o impacto dessas escolhas.&lt;/p&gt;

&lt;p&gt;Escolher é um ato decisivo, mas o verdadeiro desafio está em obter boas respostas. Devemos fazer nossas escolhas, inicialmente, e isso vai definir a a qualidade das repostas, que virá da reflexão de nossas perguntas.&lt;/p&gt;

&lt;h2&gt;
  
  
  A minha perspectiva
&lt;/h2&gt;

&lt;p&gt;Pular para a solução sem entender o problema, pode levar a resultados insatisfatórios e soluções que não tem as reais expectativas. Quando começamos a ter uma compreensão clara do problema, nossas soluções tendem a ser mais eficazes e direcionadas.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;Por fim, embora o nosso dia a dia seja cheio de desafios e escolhas, o que &lt;br&gt;
vai realmente nos direcionar e evoluir é a compreensão das respostas. E para criar caminhos mais significativos, devemos enfrentar os problemas, &lt;br&gt;
investindo tempo e esforço para entender e resolver nossos próprios problemas. Esse processo não irá melhorar apenas suas habilidades, mas também irá definir a sua trajetória.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Desvendando Mistérios: Como Tentar Resolver Problemas Sem Pedir Ajuda</title>
      <dc:creator>João Victor Santos</dc:creator>
      <pubDate>Fri, 19 Jul 2024 15:59:41 +0000</pubDate>
      <link>https://dev.to/viquitor/desvendando-misterios-como-tentar-resolver-problemas-sem-pedir-ajuda-38l4</link>
      <guid>https://dev.to/viquitor/desvendando-misterios-como-tentar-resolver-problemas-sem-pedir-ajuda-38l4</guid>
      <description>&lt;p&gt;Sempre tive dificuldade em pedir ajuda, seja por achar que estou incomodando ou por pensar que o problema é simples e óbvio, e deve haver uma maneira rápida de resolvê-lo. No entanto, no desenvolvimento de software, nem sempre os problemas são simples, e os desafios fazem parte do processo de crescimento.&lt;/p&gt;

&lt;p&gt;Saber como abordar esses problemas de forma independente antes de pedir ajuda pode melhorar suas habilidades e torná-lo um desenvolvedor mais autossuficiente. Ao longo da minha jornada de aprendizado, desenvolvi alguns passos simples para tentar resolver um problema por conta própria:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Verificar os Imports e Dependências&lt;/strong&gt;&lt;br&gt;
Um erro pode ser causado por uma dependência ausente ou import incorreto. Confirme se todos os imports e dependências estão corretamente configurados.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Limpar o Cache&lt;/strong&gt;&lt;br&gt;
Limpar o cache pode resolver problemas causados por dados armazenados. Execute os comandos apropriados para fazer a limpeza correta do seu projeto.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Verificar os Logs&lt;/strong&gt;&lt;br&gt;
Logs são uma fonte valiosa de informação. Examine os logs do sistema e da aplicação para identificar possíveis mensagens de erro.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reiniciar a Máquina e o Servidor&lt;/strong&gt;&lt;br&gt;
Problemas temporários podem ser resolvidos reiniciando a máquina e o servidor, eliminando falhas que não são aparentes imediatamente.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Atualizar o Repositório&lt;/strong&gt;&lt;br&gt;
Garanta que você está trabalhando com a versão mais recente do código. Executar o comando &lt;code&gt;git pull origin main&lt;/code&gt; pode trazer uma versão atualizada em que o problema já foi resolvido.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Procurar o Erro no Google e no ChatGPT&lt;/strong&gt;&lt;br&gt;
O Google é uma ferramenta poderosa para resolver problemas, e muitas vezes outros desenvolvedores já enfrentaram o mesmo problema e compartilharam suas soluções online. Ferramentas como o ChatGPT também podem trazer insights interessantes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Buscar Implementações Similares&lt;/strong&gt;&lt;br&gt;
Analisar como outros desenvolvedores abordaram problemas semelhantes pode trazer ideias valiosas para o que você está tentando fazer.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Ler a Documentação&lt;/strong&gt;&lt;br&gt;
A documentação oficial frequentemente contém a solução para problemas comuns. Reler a documentação com atenção pode garantir que nenhuma informação importante seja perdida.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Quando Pedir Ajuda
&lt;/h2&gt;

&lt;p&gt;Pedir ajuda é essencial em várias situações no desenvolvimento de software. Quando você está completamente perdido, sobrecarregado de tarefas, ou cometeu um erro sem saber como corrigi-lo, buscar orientação pode ser crucial. Além disso, se o problema exige conhecimentos que você não possui, está impactando uma entrega crítica, ou envolve múltiplas áreas de expertise, uma segunda opinião pode acelerar a resolução e minimizar riscos.&lt;/p&gt;

&lt;p&gt;Se você está preso em um problema por muito tempo, uma nova perspectiva pode ser a chave para avançar. Pedir ajuda também é uma oportunidade de aprender com colegas mais experientes, garantindo que suas soluções sejam seguras e eficazes, especialmente quando envolvem riscos significativos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Como Pedir Ajuda
&lt;/h2&gt;

&lt;p&gt;Ao pedir ajuda, seja claro e específico ao descrever o problema, incluindo mensagens de erro, contexto e as tentativas de resolução já realizadas. Forneça o contexto necessário explicando seu objetivo final e onde está enfrentando dificuldades, e compartilhe um trecho de código ou um exemplo mínimo reproduzível para facilitar a identificação do problema.&lt;/p&gt;

&lt;p&gt;Mostre que você tentou resolver o problema por conta própria e seja breve e direto em suas explicações, destacando as informações mais relevantes. Inclua detalhes do ambiente de desenvolvimento, como linguagem de programação e framework. Após receber ajuda, dê feedback sobre a eficácia da solução e agradeça, lembrando que a pessoa pode precisar de tempo para responder.&lt;/p&gt;

&lt;h2&gt;
  
  
  Por fim...
&lt;/h2&gt;

&lt;p&gt;Não deixe de pedir ajuda. Essa é a minha forma de tentar resolver problemas, e, pela minha jornada ser solitária, acabei me obrigando a me tornar autossuficiente. No entanto, não sinta vergonha de pedir ajuda. Apenas se esforce, pois isso demonstra interesse e comprometimento.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Monotonia das Cores: A Revolução Silenciosa</title>
      <dc:creator>João Victor Santos</dc:creator>
      <pubDate>Fri, 19 Jul 2024 02:02:40 +0000</pubDate>
      <link>https://dev.to/viquitor/monotonia-das-cores-a-revolucao-silenciosa-36lk</link>
      <guid>https://dev.to/viquitor/monotonia-das-cores-a-revolucao-silenciosa-36lk</guid>
      <description>&lt;p&gt;Você já parou para pensar em como o nosso mundo está ficando mais cinza?&lt;/p&gt;

&lt;p&gt;Recentemente, assisti a um vídeo fascinante no YouTube do Pedro Loos intitulado &lt;a href="https://www.youtube.com/watch?v=ZBWKse-_c8k&amp;amp;t=1s" rel="noopener noreferrer"&gt;Por que o MUNDO está ficando menos COLORIDO&lt;/a&gt;, onde ele explora as mudanças nos padrões de cores ao longo do tempo e como a diminuição da diversidade de cores está afetando nossas vidas. Essa preferência crescente por tons mais suaves sempre me incomodou, por isso decidi investigar como essas tendências influenciam o desenvolvimento de software.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Evolução das Cores no Mundo
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Menos Cores ao Redor
&lt;/h3&gt;

&lt;p&gt;No vídeo, Pedro Loos mostra que o mundo está, de fato, ficando menos colorido. Desde os anos 80, há uma tendência crescente de usar paletas de cores mais neutras e monótonas em objetos e espaços. Isso se deve a vários fatores, incluindo mudanças nas preferências estéticas e influências culturais. Essa mudança não apenas transforma a maneira como percebemos o mundo ao nosso redor, mas também impacta diversas indústrias, incluindo o desenvolvimento de software.&lt;/p&gt;

&lt;h3&gt;
  
  
  Impacto no Desenvolvimento de Software
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. &lt;strong&gt;Consistência e Simplicidade&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Com a crescente preferência por paletas de cores mais neutras, os desenvolvedores de software estão adotando interfaces de usuário mais simples e consistentes. Isso pode ser observado em muitas aplicações modernas que utilizam esquemas de cores minimalistas. A acessibilidade é um fator importante aqui, pois cores neutras tendem a ser mais acessíveis para indivíduos com deficiências visuais, como daltonismo.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. &lt;strong&gt;Redução de Sobrecarga Cognitiva&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Paletas de cores simples podem ajudar a reduzir a sobrecarga cognitiva dos usuários. Quando as interfaces são menos saturadas e mais homogêneas, é mais fácil para os usuários se concentrarem nas tarefas principais sem serem distraídos por elementos visuais excessivos. Isso pode aumentar a produtividade e melhorar a experiência do usuário.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. &lt;strong&gt;Desafios Criativos&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Por outro lado, a tendência para menos cores pode representar um desafio para designers e desenvolvedores que buscam criar interfaces visualmente atraentes. A criatividade pode ser limitada quando as opções de cores são reduzidas, exigindo soluções inovadoras para manter a interface interessante e envolvente.&lt;/p&gt;

&lt;h4&gt;
  
  
  4. &lt;strong&gt;Padronização e Design System&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;O uso de paletas de cores neutras também facilita a padronização em sistemas de design. Como mencionei no meu artigo sobre &lt;a href="https://dev.to/viquitor/todo-mundo-precisa-de-um-design-system-mas-ninguem-quer-mante-lo-2bfo"&gt;Design Systems&lt;/a&gt;, a padronização é crucial para a consistência e escalabilidade das aplicações. Paletas de cores neutras simplificam a criação de guias de estilo e bibliotecas de componentes, tornando mais fácil manter a coesão visual.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;A tendência de um mundo menos colorido tem impactos significativos no desenvolvimento de software. Enquanto simplifica a criação de interfaces consistentes e acessíveis, também desafia os desenvolvedores a encontrar maneiras criativas de manter o interesse visual. Adaptar-se a essas mudanças é essencial para continuar criando experiências de usuário eficientes e envolventes em um mundo que está, cada vez mais, adotando uma paleta de cores neutras.&lt;/p&gt;

&lt;p&gt;Eu particularmente gosto do estilo minimalista, mas não há como negar o quanto isso afeta a beleza das coisas e a criatividade. Evitamos explorar o desconhecido mesmo quando a inovação é necessária, pois isso nos influencia a continuar sempre evoluindo.&lt;/p&gt;

&lt;p&gt;"Pois a realidade sem sonho e fantasia não tem nenhum sentido..."&lt;/p&gt;

</description>
      <category>frontend</category>
      <category>design</category>
      <category>developer</category>
      <category>devjournal</category>
    </item>
    <item>
      <title>Todo Mundo Precisa de um Design System... Mas Ninguém Quer Mantê-lo!</title>
      <dc:creator>João Victor Santos</dc:creator>
      <pubDate>Wed, 17 Jul 2024 17:57:13 +0000</pubDate>
      <link>https://dev.to/viquitor/todo-mundo-precisa-de-um-design-system-mas-ninguem-quer-mante-lo-2bfo</link>
      <guid>https://dev.to/viquitor/todo-mundo-precisa-de-um-design-system-mas-ninguem-quer-mante-lo-2bfo</guid>
      <description>&lt;p&gt;Comecei a estudar sobre Design System para ajudar na documentação do projeto do estágio. E por se tratar de algo muito mais complexo do que apenas uma coleção de componentes visuais, percebi o quanto isso é escalável e pode se tornar inviável de manter.&lt;/p&gt;

&lt;p&gt;Por ser uma documentação viva, que deve manter todas as regras, princípios e melhores práticas do design, ela sempre deve te guiar para se manter no caminho mais seguro. No entanto, apesar dos diversos benefícios, a manutenção pode ser uma tarefa árdua.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mas Afinal, o Que é um Design System?
&lt;/h2&gt;

&lt;p&gt;Na verdade, isso é bem simples. O Design System é um conjunto de convenções que devem ser utilizadas para manter uma aplicação ou marca, criando assim uma experiência coesa. Os principais elementos de um Design System são:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Guia de Estilo&lt;/strong&gt;: Nela é mantida a paleta de cores, tipografia, espaçamentos e as principais regras visuais.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No caso de um software, ele deve manter também:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Biblioteca de Componentes&lt;/strong&gt;: Todos os elementos de interface, como botões, ícones, formulários, etc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Princípios de Design&lt;/strong&gt;: Diretrizes dos elementos da marca para que a consistência seja respeitada.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  E Por Que Todo Mundo Precisa de Um?
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Consistência&lt;/strong&gt;:
Com um Design System, tudo segue um padrão pré-estabelecido, garantindo uma experiência unificada.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Eficiência&lt;/strong&gt;:
Com tudo definido e padronizado, não é necessário recriar elementos, acelerando o processo de desenvolvimento e reduzindo a possibilidade de erros.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Escalabilidade&lt;/strong&gt;:
À medida que o produto cresce, um design system bem mantido facilita a introdução de novos recursos e funcionalidades sem comprometer a consistência da experiência do usuário.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  O Dilema da Manutenção
&lt;/h2&gt;

&lt;p&gt;Manter um Design System é um desafio constante, e isso se deve a diversos motivos:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Esforço e Evolução Contínua&lt;/strong&gt;:
Para que a manutenção seja efetiva, é necessário um esforço que pode se tornar exaustivo, incluindo documentar, revisar e atualizar continuamente.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mudanças Repentinas&lt;/strong&gt;:
Com o avanço das tendências e tecnologias, é necessário acompanhar as mudanças que se tornam cada vez mais constantes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recursos Limitados&lt;/strong&gt;:
A falta de recursos muitas vezes sobrecarrega designers e desenvolvedores já ocupados com outras tarefas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resistência Interna&lt;/strong&gt;:
Mudanças em componentes amplamente utilizados podem causar resistência devido à complexidade das modificações e ao apego dos envolvidos ao que foi criado.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Subestimação da Manutenção&lt;/strong&gt;:
Devido à complexidade, muitas vezes a equipe acaba abandonando o sistema ao longo do tempo.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Como Superar Isso?
&lt;/h2&gt;

&lt;p&gt;Embora a manutenção seja um desafio a longo prazo, algumas estratégias podem tornar o processo mais gerenciável:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Responsabilidade Compartilhada&lt;/strong&gt;:
Toda a equipe deve ser responsável pela manutenção, garantindo que o Design System receba a atenção necessária. Em projetos maiores, pode ser necessária a criação de uma equipe dedicada apenas à criação e manutenção do Design System.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automação&lt;/strong&gt;:
Utilizar ferramentas ou plugins que atualizem e documentem um Design System pode reduzir o tempo e o esforço da equipe.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Documentação Clara e Objetiva&lt;/strong&gt;:
Manter a documentação clara e acessível a todos os membros facilita a atualização e adoção do Design System.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Feedback Contínuo&lt;/strong&gt;:
Estabelecer um ciclo de feedback contínuo com a equipe de design, desenvolvimento e também com os usuários garante que o Design System evolua de acordo com as reais necessidades do produto.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Apoio da Liderança&lt;/strong&gt;:
O apoio da liderança é essencial. É necessário que eles entendam a importância da manutenção a longo prazo.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Sendo Assim, Concluímos Que
&lt;/h2&gt;

&lt;p&gt;Sendo ferramentas essenciais para o desenvolvimento de marcas e criação de produtos consistentes, eficientes e escaláveis, o Design System tem se tornado cada vez mais importante. Contudo, a manutenção desse sistema é uma responsabilidade que muitos evitam devido ao esforço contínuo e aos obstáculos e desafios envolvidos. Mas, com as estratégias corretas e o apoio necessário, é possível superar e aproveitar ao máximo os benefícios que um Design System oferece.&lt;/p&gt;

&lt;p&gt;De todo modo, manter um Design System não é uma tarefa fácil, mas vale a &lt;br&gt;
pena para garantir a qualidade e consistência do produto. Afinal, o design &lt;br&gt;
não é apenas uma tela bonita e responsiva, mas algo que vai além de resolver &lt;br&gt;
um problema, é tornar em realidade, o que antes era apenas imaginação!&lt;/p&gt;

</description>
      <category>design</category>
      <category>designsystem</category>
      <category>frontend</category>
    </item>
    <item>
      <title>1st of 100 days?</title>
      <dc:creator>João Victor Santos</dc:creator>
      <pubDate>Fri, 12 Jul 2024 04:24:55 +0000</pubDate>
      <link>https://dev.to/viquitor/1st-of-100-days-fgd</link>
      <guid>https://dev.to/viquitor/1st-of-100-days-fgd</guid>
      <description>&lt;p&gt;I was bored, so I decided to start documenting my studies from here.&lt;/p&gt;

&lt;p&gt;I began studying React, which still seems quite confusing to me. That's when I discovered Frontend Mentor, a platform with various challenges.&lt;/p&gt;

&lt;p&gt;I admit I took on a simple yet very useful challenge. I managed to develop many functionalities and personalized it according to my preferences. I can't deny it's not perfect, but for a first project, I believe it's sufficient, isn't it?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"It's a small step for a developer, but a big dream for me."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here was the challenge: &lt;a href="https://www.frontendmentor.io/solutions/social-link-profile-using-react-and-tailwindcss-CYMKFp3im1" rel="noopener noreferrer"&gt;Frontend Mentor Challenge&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And here's the result: &lt;a href="https://viquitor-me.vercel.app" rel="noopener noreferrer"&gt;Social Link Profile&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are still a few things I'd like to adjust, such as adding a light and dark mode. So, I'm open to suggestions.&lt;/p&gt;

&lt;p&gt;Why do I do what I do? I'm still not sure...&lt;/p&gt;

</description>
      <category>frontend</category>
      <category>frontendchallenge</category>
      <category>learning</category>
    </item>
    <item>
      <title>This is not a presentation..."</title>
      <dc:creator>João Victor Santos</dc:creator>
      <pubDate>Fri, 12 Jul 2024 04:10:59 +0000</pubDate>
      <link>https://dev.to/viquitor/isso-nao-e-uma-apresentacao-eme</link>
      <guid>https://dev.to/viquitor/isso-nao-e-uma-apresentacao-eme</guid>
      <description>&lt;p&gt;Hello, my name is João Victor! How come you've never heard of me?&lt;/p&gt;

&lt;p&gt;I'm 25 years old and currently studying Software Engineering. I'm interning as an Android Developer, Tech Lead for the Frontend team, and Scrum Master for other teams. To be honest, the internship hasn't been fulfilling lately.&lt;/p&gt;

&lt;p&gt;I've always been a dreamer.&lt;br&gt;
Going beyond standards and rules, allowing my imagination to transcend lines and colors. I've always wanted to turn my dreams into reality, paying attention to the details that make an idea unique and special.&lt;/p&gt;

&lt;p&gt;I enjoy writing and creating my own universe, where things flow seamlessly even when endings aren't happy. What matters is the journey. Writing reveals who I am.&lt;/p&gt;

&lt;p&gt;It's almost impossible to destroy an idea. Once created, it gains strength, grows, and becomes a part of us. The more we understand it, the more immortal and demanding it becomes. Creating an idea is hard, but making it real is even more challenging.&lt;/p&gt;

&lt;p&gt;I do this for myself, and I write for myself, more than anything else, because fear and loneliness have been paralyzing.&lt;/p&gt;

&lt;p&gt;Could dreaming be just another step in this journey?&lt;/p&gt;

</description>
      <category>design</category>
      <category>frontend</category>
      <category>learning</category>
    </item>
  </channel>
</rss>
