<?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: Ewerson Benigno</title>
    <description>The latest articles on DEV Community by Ewerson Benigno (@ewbenigno).</description>
    <link>https://dev.to/ewbenigno</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3955387%2Fbd3e747b-c31e-4ceb-aa4e-57d68e19c5d2.jpg</url>
      <title>DEV Community: Ewerson Benigno</title>
      <link>https://dev.to/ewbenigno</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ewbenigno"/>
    <language>en</language>
    <item>
      <title>O que aprendi sobre segurança implementando hardening em um projeto que não lida com dinheiro</title>
      <dc:creator>Ewerson Benigno</dc:creator>
      <pubDate>Fri, 10 Jul 2026 12:04:11 +0000</pubDate>
      <link>https://dev.to/ewbenigno/o-que-aprendi-sobre-seguranca-implementando-hardening-em-um-projeto-que-nao-lida-com-dinheiro-433b</link>
      <guid>https://dev.to/ewbenigno/o-que-aprendi-sobre-seguranca-implementando-hardening-em-um-projeto-que-nao-lida-com-dinheiro-433b</guid>
      <description>&lt;p&gt;Durante o desenvolvimento do Templo Digital, meu projeto de hackathon (uma vitrine 3D de cursos construída com React, Vite e Three.js), passei por uma fase de hardening de segurança que não era estritamente necessária para o escopo do projeto. Afinal, não existem dados sensíveis ali, não há login, não há cartão de crédito, não há CPF. Só uma experiência imersiva e algumas chamadas simples de API.&lt;/p&gt;

&lt;p&gt;Ainda assim, decidi tratar o projeto como se ele fosse crítico. Configurei headers de CSP no &lt;code&gt;vercel.json&lt;/code&gt;, corrigi uma CVE conhecida do Vite e documentei cada decisão. O motivo é simples. Quem pretende atuar com fintech não pode aprender segurança só quando o problema aparece em produção com dinheiro real envolvido.&lt;/p&gt;

&lt;h2&gt;
  
  
  Por que praticar segurança mesmo sem dados sensíveis
&lt;/h2&gt;

&lt;p&gt;Aplicações financeiras têm uma característica que as diferencia de qualquer outro tipo de sistema. Um bug em uma vitrine de cursos gera um print de erro constrangedor. Um bug equivalente em um sistema de pagamentos gera prejuízo real, exposição de dados e, dependendo da gravidade, consequências legais.&lt;/p&gt;

&lt;p&gt;O problema é que a maioria dos devs só aprende essas práticas na hora em que o projeto exige. Isso significa aprender sob pressão, muitas vezes depois de um incidente. Praticar hardening em projetos pessoais, mesmo que "de brincadeira", cria o hábito antes que ele seja cobrado a sério.&lt;/p&gt;

&lt;h2&gt;
  
  
  As práticas que apliquei (e que valem para qualquer stack)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Content Security Policy (CSP)&lt;/strong&gt;&lt;br&gt;
Defini quais origens podem carregar scripts, estilos e conexões dentro da aplicação. Isso reduz o risco de ataques de XSS, já que scripts injetados por terceiros não têm permissão para rodar fora do que foi declarado. No &lt;code&gt;vercel.json&lt;/code&gt; do projeto, a política ficou assim.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="s2"&gt;"Content-Security-Policy"&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nl"&gt;"value"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' data:; object-src 'none'; frame-ancestors 'none'"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Junto com o CSP, adicionei outros headers de proteção padrão, como &lt;code&gt;X-Frame-Options&lt;/code&gt;, &lt;code&gt;X-Content-Type-Options&lt;/code&gt; e &lt;code&gt;Referrer-Policy&lt;/code&gt;, cobrindo clickjacking e vazamento de informação em requisições cross-origin.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Atualização de dependências e CVEs&lt;/strong&gt;&lt;br&gt;
O Vite teve uma vulnerabilidade conhecida em uma das versões que eu usava. Corrigir isso não foi opcional. No &lt;code&gt;package.json&lt;/code&gt;, a versão fixada hoje é a seguinte.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"devDependencies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"vite"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"5.4.20"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Essa versão corrige a CVE-2025-58752, relacionada ao servidor de preview do Vite, que podia servir arquivos HTML fora do diretório de build quando exposto à rede. Manter dependências atualizadas é uma das formas mais simples e mais negligenciadas de reduzir superfície de ataque.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Interação mínima, superfície mínima&lt;/strong&gt;&lt;br&gt;
O Templo Digital não tem formulários nem input de texto. A única interação do usuário é um botão que desce a tela para a próxima seção. Isso não é uma prática de segurança em si, mas é um lembrete útil. Quanto menos pontos de entrada uma aplicação expõe, menor a superfície de ataque desde o início, antes mesmo de pensar em qualquer tratamento de dado.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Documentação das decisões de segurança&lt;/strong&gt;&lt;br&gt;
Registrei no &lt;code&gt;docs/&lt;/code&gt; do projeto o motivo de cada configuração. Isso ajuda outro dev (ou eu mesmo, meses depois) a entender por que aquela regra existe, em vez de simplesmente removê-la achando que é redundante.&lt;/p&gt;

&lt;h2&gt;
  
  
  O que isso tem a ver com fintech
&lt;/h2&gt;

&lt;p&gt;Sistemas financeiros levam esses princípios a um nível bem mais rigoroso. Autenticação forte, criptografia de dados em repouso e em trânsito, logs de auditoria, controles de acesso granulares e conformidade com normas como PCI DSS e LGPD.&lt;/p&gt;

&lt;p&gt;A boa notícia é que o raciocínio de base é o mesmo que apliquei em um projeto de vitrine 3D. A diferença está na intensidade e no nível de exigência regulatória, não no conceito. Quem já pratica esse tipo de cuidado em projetos pequenos chega mais preparado quando o projeto de verdade envolve dinheiro de alguém.&lt;/p&gt;

&lt;h2&gt;
  
  
  Próximo passo
&lt;/h2&gt;

&lt;p&gt;Meu plano agora é aprofundar esse tipo de prática do lado do backend, estudando como o ecossistema Spring trata autenticação, criptografia e controle de acesso em aplicações que realmente processam transações. Fica o convite para quem também está migrando de outra área para tech. No fim, o que eu quis testar foi o hábito, não o projeto. Se eu só configurar CSP quando alguém me obrigar, já é tarde.&lt;/p&gt;

</description>
      <category>career</category>
      <category>learning</category>
      <category>security</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Pipes e Redirecionamento no Linux: o que eu aprendi estudando o terminal no celular</title>
      <dc:creator>Ewerson Benigno</dc:creator>
      <pubDate>Fri, 26 Jun 2026 23:37:57 +0000</pubDate>
      <link>https://dev.to/ewbenigno/pipes-e-redirecionamento-no-linux-o-que-eu-aprendi-estudando-o-terminal-no-celular-19oo</link>
      <guid>https://dev.to/ewbenigno/pipes-e-redirecionamento-no-linux-o-que-eu-aprendi-estudando-o-terminal-no-celular-19oo</guid>
      <description>&lt;p&gt;Eu estava no Termux, um emulador de terminal para Android, rodando uns comandos básicos de estudo, quando digitei algo simples:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; arquivos.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Não aconteceu nada. O terminal ficou em silêncio.&lt;br&gt;
Meu primeiro instinto foi achar que o comando tinha falhado. Mas quando rodei cat arquivos.txt, o conteúdo estava lá, o ls tinha funcionado, só que a saída não foi para a tela. Foi para dentro do arquivo.&lt;br&gt;
Esse momento me fez querer entender o que estava acontecendo por baixo. Este artigo é o resultado disso.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Os três canais de todo comando Linux&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Antes de falar em pipes e redirecionamento, preciso falar sobre como o Linux enxerga a comunicação de um programa.&lt;br&gt;
Todo processo no Linux tem três canais abertos por padrão:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Canal&lt;/th&gt;
&lt;th&gt;Número&lt;/th&gt;
&lt;th&gt;O que é&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;stdin&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;Entrada de dados&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;stdout&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Saída normal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;stderr&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Saída de erros&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Por padrão, stdout e stderr aparecem na tela, e stdin vem do teclado. Mas você pode mudar isso e é aí que a mágica acontece.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Redirecionamento de saída com &amp;gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O operador &amp;gt; redireciona o stdout de um comando para um arquivo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; arquivos.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O que acontece aqui:&lt;br&gt;
• ls gera a listagem de arquivos (stdout)&lt;br&gt;
• &amp;gt; intercepta essa saída antes de chegar na tela&lt;br&gt;
• O conteúdo vai para dentro de arquivos.txt&lt;br&gt;
• Se o arquivo não existir, ele é criado&lt;br&gt;
• Se já existir, o conteúdo anterior é sobrescrito&lt;br&gt;
Para adicionar ao invés de sobrescrever, use &amp;gt;&amp;gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; arquivos.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Redirecionando erros com 2&amp;gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O canal de erros é separado do canal de saída. Para capturá-lo, você usa 2&amp;gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cat &lt;/span&gt;arquivo_que_nao_existe.txt 2&amp;gt; erro.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tente rodar os dois e compare:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Isso imprime o erro na tela&lt;/span&gt;
&lt;span class="nb"&gt;cat &lt;/span&gt;arquivo_que_nao_existe.txt

&lt;span class="c"&gt;# Isso salva o erro em um arquivo (nada aparece na tela)&lt;/span&gt;
&lt;span class="nb"&gt;cat &lt;/span&gt;arquivo_que_nao_existe.txt 2&amp;gt; erro.txt

&lt;span class="c"&gt;# Confirme que o erro foi salvo&lt;/span&gt;
&lt;span class="nb"&gt;cat &lt;/span&gt;erro.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Isso é útil quando você roda um script longo e quer guardar os erros para analisar depois, sem poluir a saída normal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Juntando stdout e stderr no mesmo arquivo&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Às vezes você quer capturar tudo, saída e erro, no mesmo lugar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;comando &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; tudo.txt 2&amp;gt;&amp;amp;1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O 2&amp;gt;&amp;amp;1 significa: "redirecione o canal 2 (stderr) para onde o canal 1 (stdout) estiver indo."&lt;br&gt;
A ordem importa. Isso aqui não funciona como esperado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Ordem errada — resultado não é o que você espera&lt;/span&gt;
comando 2&amp;gt;&amp;amp;1 &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; tudo.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nessa ordem, o 2&amp;gt;&amp;amp;1 é avaliado primeiro — quando ainda não há redirecionamento de stdout, então o stderr é vinculado à tela. Depois o &amp;gt; tudo.txt redireciona só o stdout para o arquivo. Resultado: o arquivo recebe apenas o stdout, e o stderr continua aparecendo na tela. O inverso do que você queria.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pipes com |: compondo&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O pipe | conecta a saída de um comando à entrada do próximo. É como criar uma linha de montagem.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt; | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s2"&gt;".txt"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O que acontece:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;ls -l lista todos os arquivos com detalhes&lt;/li&gt;
&lt;li&gt;| passa essa saída como entrada para o grep&lt;/li&gt;
&lt;li&gt;grep ".txt" filtra e mostra só as linhas que contêm .txt
Outro exemplo prático, procurar um processo em execução:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ps aux | &lt;span class="nb"&gt;grep &lt;/span&gt;java
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Você pode encadear quantos pipes quiser:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cat &lt;/span&gt;arquivo.txt | &lt;span class="nb"&gt;sort&lt;/span&gt; | &lt;span class="nb"&gt;uniq&lt;/span&gt; | &lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Isso lê um arquivo, ordena as linhas, remove duplicatas e conta quantas restaram, tudo em um único comando.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;tee: saída na tela e no arquivo ao mesmo tempo&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O &amp;gt; escolhe entre tela ou arquivo. O tee faz os dois:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;ls&lt;/span&gt; | &lt;span class="nb"&gt;tee &lt;/span&gt;listagem.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A saída aparece na tela e é salva no arquivo simultaneamente. Útil quando você quer acompanhar o que está acontecendo em tempo real e ainda guardar o resultado.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Resumo visual&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;comando             → stdout → tela (padrão)
comando &amp;gt; arquivo   → stdout → arquivo
comando &amp;gt;&amp;gt; arquivo  → stdout → arquivo (acumula)
comando 2&amp;gt; erros    → stderr → arquivo
comando 2&amp;gt;&amp;amp;1        → stderr → mesmo lugar que stdout
cmd1 | cmd2         → stdout do cmd1 → stdin do cmd2
cmd | tee arquivo   → stdout → tela e arquivo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Por que isso importa&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Esses conceitos parecem simples, mas são a base de como scripts shell funcionam, como logs são gerados, como pipelines de dados são construídos, e como você compõe ferramentas pequenas para resolver problemas grandes.&lt;br&gt;
No Linux, cada ferramenta faz uma coisa bem feita. Pipes e redirecionamento são o que permite combiná-las.&lt;br&gt;
Comecei a entender isso rodando um ls no Termux às 19h num sábado. Às vezes o aprendizado começa em lugares assim.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>cli</category>
      <category>linux</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Como pensar em UX mesmo sendo desenvolvedor front-end iniciante</title>
      <dc:creator>Ewerson Benigno</dc:creator>
      <pubDate>Sat, 30 May 2026 23:58:17 +0000</pubDate>
      <link>https://dev.to/ewbenigno/como-pensar-em-ux-mesmo-sendo-desenvolvedor-front-end-iniciante-5fpn</link>
      <guid>https://dev.to/ewbenigno/como-pensar-em-ux-mesmo-sendo-desenvolvedor-front-end-iniciante-5fpn</guid>
      <description>&lt;p&gt;Quando iniciei minha primeira Landing page não sabia nada sobre UX.&lt;br&gt;
Sabia estruturar um HTML, sabia usar o CSS e eu tinha um objetivo claro: desenvolver uma Landing page para uma amiga maquiadora. Era meu primeiro projeto, tentei "caprichar" ao máximo, foco nos detalhes. Então percebi que estava fazendo mais do que apenas criar um código, analisava o tempo todo sobre como seria a interação dos clientes dela com a página e como isso se converteria em lucro para o seu negócio.&lt;br&gt;
Somente depois de estudar mais a fundo sobre front-end que entendi como esse "olhar aos detalhes" se chamava: UX - User Experience, a Experiência do Usuário.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;O que é UX&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi19vcqyhv87ahndfruvx.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi19vcqyhv87ahndfruvx.jpg" alt=" " width="800" height="600"&gt;&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
Na prática, UX é uma pergunta que você faz antes de escrever qualquer linha de código: “Quem vai usar isso e o que essa pessoa precisa encontrar?”&lt;br&gt;
É isso, parece algo básico, mas muda completamente a forma como você constrói o seu projeto. Um desenvolvedor que não pensa em UX olha apenas a estética, ele fica naquilo que é atrativo aos olhos do usuário. Um desenvolvedor que pensa em UX desenvolve  pensando na necessidade do cliente.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Decisões de UX que você toma sem perceber&lt;/strong&gt;&lt;br&gt;
Muitas pessoas não percebem mas já praticam UX sem nem perceber.&lt;br&gt;
Toda vez que você decide onde colocar um botão, um texto, um link ou como quer organizar as seções da sua página, você está tomando uma decisão de UX.&lt;br&gt;
No meu projeto da landing page, tomei várias dessas decisões intuitivamente:&lt;br&gt;
Coloquei o WhatsApp no footer com link direto. O visitante que chega até o final da página já leu tudo e quer entrar em contato, facilitar esse clique é UX.&lt;br&gt;
Posicionei os depoimentos antes do footer. Não foi por acaso, depoimentos constroem confiança. Faz sentido mostrá-los antes de pedir que o visitante entre em contato.&lt;br&gt;
Adicionei um botão de call-to-action no Hero. A primeira seção da página precisa deixar claro o que o visitante deve fazer. Um botão “Saiba mais” ou “Entre em contato” elimina a dúvida.&lt;br&gt;
Todas essas ações têm um princípio em comum, elas pensam no usuário antes de pensar no código.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A diferença entre UI e UX&lt;/strong&gt;&lt;br&gt;
Antes eu confundia bastante os termos, agora entendo claramente.&lt;br&gt;
UI é o que o usuário vê. É o botão rosa com bordas arredondadas, é a fonte elegante, é a paleta de cores coerente. UI é sobre estética.&lt;br&gt;
UX é o que o usuário sente e faz. É o botão estar no lugar certo, é o texto do botão ser claro o suficiente para o usuário saber o que vai ler ao clicar, é a página carregar rápido o suficiente para ele não desistir. UX é sobre comportamento.&lt;br&gt;
Você pode ter um site com UI perfeita e UX terrível. Um site lindo onde ninguém encontra o que precisa é um site com problema de UX.&lt;br&gt;
O contrário também existe: sites simples visualmente, mas com navegação tão intuitiva que o usuário encontra tudo em segundos. Boa UX, UI modesta.&lt;br&gt;
O ideal, claro, é ter os dois.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Como aplicar UX sem ser especialista&lt;/strong&gt;&lt;br&gt;
Você não precisa de certificação para começar a pensar em UX. Você pode se fazer algumas perguntas simples na hora de desenvolver:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;“Em 3 segundos, o usuário entende o que esse site oferece?”&lt;br&gt;
Se a resposta for não, o Hero da sua página precisa ser refeito. O visitante decide em poucos segundos se vai ficar ou sair.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;“Qual é a ação que quero que o usuário tome?”&lt;br&gt;
Entrar em contato, comprar, ou se inscrever, essa ação precisa estar visível, clara e fácil de executar.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;“Como isso fica no celular?”&lt;br&gt;
A maioria dos acessos hoje são feitos no mobile. Se você só testa no computador, está ignorando boa parte dos seus usuários.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;“Estou facilitando ou complicando?”&lt;br&gt;
Cada clique a mais, cada informação desnecessária, cada campo de formulário que não precisa estar lá, tudo isso é fricção. UX é sobre remover fricção.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusão&lt;/strong&gt; &lt;br&gt;
Se você está começando no front-end e acha que UX  é assunto para depois, é melhor repensar isso.&lt;br&gt;
Você não precisa dominar ferramentas complexas ou ter anos de experiência. Precisa desenvolver o hábito de perguntar: “quem vai usar isso, e o que essa pessoa precisa?”&lt;br&gt;
Essa pergunta, feita com consistência, vai separar o código que você escreve do código que outros escrevem.&lt;br&gt;
E o melhor: você provavelmente já está praticando UX sem perceber. Agora é só dar nome ao que você faz.&lt;/p&gt;

</description>
      <category>ux</category>
      <category>frontend</category>
      <category>beginners</category>
      <category>braziliandevs</category>
    </item>
  </channel>
</rss>
