<?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: Milena Emmert</title>
    <description>The latest articles on DEV Community by Milena Emmert (@milenaemmert).</description>
    <link>https://dev.to/milenaemmert</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%2F895237%2F02653e87-2b02-4ecf-9324-c7197c535af4.jpeg</url>
      <title>DEV Community: Milena Emmert</title>
      <link>https://dev.to/milenaemmert</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/milenaemmert"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>Milena Emmert</dc:creator>
      <pubDate>Wed, 18 Dec 2024 12:14:37 +0000</pubDate>
      <link>https://dev.to/milenaemmert/-34n8</link>
      <guid>https://dev.to/milenaemmert/-34n8</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/milenaemmert" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F895237%2F02653e87-2b02-4ecf-9324-c7197c535af4.jpeg" alt="milenaemmert"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/milenaemmert/extracting-data-from-the-pipefy-api-into-power-bi-with-m-language-l3a" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Extracting Pipefy API data into Power BI with M language&lt;/h2&gt;
      &lt;h3&gt;Milena Emmert ・ Dec 18 '24&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#api&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#pipefy&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#mlanguage&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#datascience&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>api</category>
      <category>powerbi</category>
      <category>howto</category>
    </item>
    <item>
      <title>Extracting Pipefy API data into Power BI with M language</title>
      <dc:creator>Milena Emmert</dc:creator>
      <pubDate>Wed, 18 Dec 2024 02:40:11 +0000</pubDate>
      <link>https://dev.to/milenaemmert/extracting-data-from-the-pipefy-api-into-power-bi-with-m-language-l3a</link>
      <guid>https://dev.to/milenaemmert/extracting-data-from-the-pipefy-api-into-power-bi-with-m-language-l3a</guid>
      <description>&lt;p&gt;Have you ever tried making a web request to &lt;a href="https://api.pipefy.com/graphql" rel="noopener noreferrer"&gt;https://api.pipefy.com/graphql&lt;/a&gt; in Power BI and it didn’t work?&lt;/p&gt;

&lt;p&gt;Pipefy uses a GraphQL API that requires a &lt;strong&gt;Bearer token&lt;/strong&gt; in the &lt;strong&gt;Authorization&lt;/strong&gt; header to access the data (you can generate one inside your Pipefy account under &lt;strong&gt;Account preferences &amp;gt; Personal access token&lt;/strong&gt;).&lt;/p&gt;

&lt;p&gt;After several failed attempts, I realized that Power Query wasn’t handling the &lt;strong&gt;Authorization&lt;/strong&gt; header very well, requiring anonymous authentication. I made a few adjustments, and more errors appeared:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Error 404 (which I didn’t understand why)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Authorization header is only supported during anonymous connection&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;And then, the anonymous connection:&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&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%2F4obc1sxphgfmbj2v9sjy.png" 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%2F4obc1sxphgfmbj2v9sjy.png" alt="Image description" width="702" height="322"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;I had a short deadline, and the solution I found was using &lt;strong&gt;M Language&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In Power Query:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open a Blank query &amp;gt; right click &amp;gt; Advanced editor.&lt;/p&gt;

&lt;p&gt;Try the script below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let
    url = "https://api.pipefy.com/graphql",
    token = "Bearer YOUR_TOKEN_HERE",

    // Function to make the GraphQL request
    FetchPage = (cursor as nullable text) as record =&amp;gt;
        let
            queryBody = if cursor = null then
                "{ ""query"": ""query { allCards(pipeId: \""PIPE_ID_HERE\"", first: 40) { nodes { title updated_at due_date current_phase { name } fields { name value } } pageInfo { hasNextPage endCursor } } }"" }"
            else
                "{ ""query"": ""query { allCards(pipeId: \""PIPE_ID_HERE\"", first: 40, after: \""" &amp;amp; cursor &amp;amp; "\"") { nodes { title updated_at due_date current_phase { name } fields { name value } } pageInfo { hasNextPage endCursor } } }"" }",

            response = Web.Contents(
                url,
                [
                    Headers = [
                        #"Authorization" = token,
                        #"Content-Type" = "application/json"
                    ],
                    Content = Text.ToBinary(queryBody)
                ]
            ),

            jsonResponse = Json.Document(response),
            data = jsonResponse[data][allCards]
        in
            data,

    // Recursive function to iterate through all pages
    GetAllPages = (cursor as nullable text, accumulatedCards as list) as list =&amp;gt;
        let
            currentPage = FetchPage(cursor),
            currentCards = List.Transform(currentPage[nodes], each 
                [
                    title = _[title],
                    updated_at = _[updated_at],
                    due_date = _[due_date],
                    current_phase = _[current_phase][name],
                    fields = _[fields] 
                ]
            ),
            newCards = List.Combine({accumulatedCards, currentCards}),
            hasNext = currentPage[pageInfo][hasNextPage],
            nextCursor = currentPage[pageInfo][endCursor]
        in
            if hasNext then
                @GetAllPages(nextCursor, newCards)
            else
                newCards,

    // Calling GetAllPages function to retrieve all pages
    allCards = GetAllPages(null, {}),

    // Converting the list of records into a table
    resultTable = Table.FromRecords(allCards),

    // Extracting unique custom field names
    allFieldNames = List.Distinct(List.Combine(List.Transform(resultTable[fields], each List.Transform(_, each _[name])))),

    // Adding columns for each custom field
    resultWithFields = Table.TransformColumns(resultTable, {"fields", each 
    let
        // Create a record for each field
        fieldRecord = Record.FromList(
            List.Transform(allFieldNames, (fieldName) =&amp;gt; 
                let
                    // Attempt to find the field value
                    selectedField = List.First(List.Select(_, (field) =&amp;gt; field[name] = fieldName), null)
                in
                    if selectedField &amp;lt;&amp;gt; null then selectedField[value] else null  // Retorna o valor ou null
            ),
            allFieldNames
        )
    in
        fieldRecord
}),

    // Expanding custom fields into separate columns
    finalTable = Table.ExpandRecordColumn(resultWithFields, "fields", allFieldNames)
in
    finalTable
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Considerations:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;FetchPage&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Makes the HTTP request to the API; uses pagination with the cursor to fetch data in parts (40 records per page).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;cursor as nullable text&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Used to handle pagination, indicating the position of the next page to be fetched.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;first: 40&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Defines the number of records retrieved per request (you can adjust this value as needed). &lt;/p&gt;

&lt;p&gt;&lt;em&gt;→ I chose 40 because it worked best for my request size and Pipe structure. Check out &lt;a href="https://developers.pipefy.com/reference/limits-and-best-practices#avoiding-large-numbers-in-first-and-last-arguments" rel="noopener noreferrer"&gt;Limits and Best Practices&lt;/a&gt; in the documentation to decide what works best for you.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;GetAllPages&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Recursively calls FetchPage to fetch all pages until hasNextPage is false.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;title, updated_at, due_date, current_phase&lt;/code&gt;...&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;These are some of the fields you can select and retrieve with the help of the &lt;a href="https://developers.pipefy.com/graphql" rel="noopener noreferrer"&gt;Pipefy API documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;→ The documentation allows you to build your GraphQL queries by selecting the exact information you need. Once you have your query ready, you can ask gepeto to convert it to JSON format for you.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Result&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The script converts all the data into a neat table in Power BI (you can expand it as needed, and the code will dynamically adjust).&lt;/p&gt;

&lt;p&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%2F5fch71if590og3z4h8oi.png" 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%2F5fch71if590og3z4h8oi.png" alt="Image description" width="800" height="833"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;If you have another solution, feel free to share it with me! &lt;/p&gt;

&lt;p&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%2Ff1e17klh4026z2gsdvwa.gif" 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%2Ff1e17klh4026z2gsdvwa.gif" alt="Image description" width="168" height="168"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>api</category>
      <category>pipefy</category>
      <category>mlanguage</category>
      <category>datascience</category>
    </item>
    <item>
      <title>Até os ventos te sopram experiências 🍃</title>
      <dc:creator>Milena Emmert</dc:creator>
      <pubDate>Mon, 03 Jun 2024 04:59:12 +0000</pubDate>
      <link>https://dev.to/milenaemmert/ate-os-ventos-te-sopram-experiencias-c9l</link>
      <guid>https://dev.to/milenaemmert/ate-os-ventos-te-sopram-experiencias-c9l</guid>
      <description>&lt;p&gt;Logo pela manhã você já está navegando pela tela do seu whatsapp procurando a mensagem de bom dia da sua mãe (a única que você quer responder logo em meio a tantas outras), ao tempo que está mexendo no layout do seu micro-ondas para aquecer por 15 segundos aquele café que sobrou de ontem, e pedindo para a Alexa falar quais são os seus compromissos do dia. Veja bem, você realizou diversas interações com &lt;strong&gt;produtos&lt;/strong&gt;, &lt;strong&gt;dispositivos&lt;/strong&gt; e &lt;strong&gt;serviços&lt;/strong&gt; e nem se deu conta disso.&lt;/p&gt;

&lt;p&gt;— Com quantos produtos ou coisas você interagiu?&lt;br&gt;
— Três! O zap, o micro, e a Alexa! &lt;/p&gt;

&lt;p&gt;Pois é...&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;E o sistema operacional do seu celular? &lt;/li&gt;
&lt;li&gt;E a notificação do aplicativo de clima que você limpou da tela em meio a esse caos todo e nem percebeu?&lt;/li&gt;
&lt;li&gt;E o botão de ligar do micro-ondas que você tem que apertar com mais força que os outros porque ele já está mais gasto? &lt;/li&gt;
&lt;li&gt;Ah, e a porta do micro-ondas que você abriu, foi fácil de abrir ou respingou um café por aí?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Aliás, por que será que a porta do micro-ondas abre para o lado e não como a de um forno de fogão? &lt;/p&gt;

&lt;p&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%2Fmmdyelen4g5wrc5npk5t.gif" 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%2Fmmdyelen4g5wrc5npk5t.gif" alt="Gif de um cérebro. Representação de uma explosão de pensamentos. Fonte: Unifesp." width="200" height="150"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Todas as coisas que você usou, a tela, o aplicativo, os botões, são interfaces projetadas para gerar a interação entre você e o produto, ou seja, estão no contexto de interface do usuário (&lt;em&gt;user interface, UI&lt;/em&gt;). Cada toque na tela, cada botão pressionado, cada comando de voz, cada momento de raiva que você passou, contribuem para a sua experiência num geral, e é isso que chamamos de experiência do usuário (&lt;em&gt;user experience, UX&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;A UX vai além da funcionalidade básica do produto. É necessário que os conceitos de facilidade de uso (usabilidade), intuitividade e eficiência sejam explorados nesse universo. Necessitamos de uma tela bonita? Na maioria das vezes sim! A estética sempre nos atraiu e não é diferente agora, mas uma tela bonita que não consegue fazer com que o usuário atinja o objetivo final de uso não serve para nada. Uma UI bonita não é garantia de nada e agora me pego procurando um porquê para estar lembrando da Amazon...&lt;/p&gt;




&lt;p&gt;Quantas vezes você, usuário de Android, já abriu a Play Store quando na verdade queria abrir o Google Maps? É a nossa &lt;strong&gt;intuitividade&lt;/strong&gt; nos pregando uma peça. Mas o fato de deixarmos esses apps distantes um dos outros ou categorizá-los de forma diferente já ajuda, e isso está incluso na &lt;strong&gt;arquitetura da informação&lt;/strong&gt;, algo que também é muito importante para uma boa UX.&lt;/p&gt;

&lt;p&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%2Fc1imr1r2vto45lzmnns4.png" 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%2Fc1imr1r2vto45lzmnns4.png" alt="Ícones representando a Play Store e o Google Maps, respectivamente." width="372" height="200"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Apesar de eu trabalhar com tecnologia e estar imersa nesse contexto praticamente o tempo inteiro, o que me motivou a escrever esse texto foi a disposição de objetos num laboratório de exames e vacinação.&lt;/p&gt;

&lt;p&gt;→ A maioria dos exames de sangue exigem um tempo em jejum (e se você for esfomeado igual a mim, já sai quase desmaiando de fome). Muitos laboratórios têm colocado uma máquina de café com bolachinhas e frutas na saída, onde você pode desfrutar um cafezinho e um lanchinho.&lt;/p&gt;

&lt;p&gt;É claro que um cafezinho "de graça" não se nega, e eu fui lá na salinha. Apesar do dia frio, a sala estava um forno, e quando vi a situação das pessoas tomando um café atrás do outro e fazendo um rancho de bolacha eu logo entendi o motivo de tornar a sala uma experiência de sauna.&lt;/p&gt;

&lt;p&gt;Mas outra coisa me chamou mais atenção: a máquina tinha letras miúdas dizendo &lt;em&gt;"Não é necessário colocar copos. A máquina já contém."&lt;/em&gt;. E ao lado da máquina estava um porta-copos gigante (que era pra ser utilizado no bebedouro de água) e todos que chegavam lá automaticamente tiravam um copo do porta-copos e enfiavam na máquina no lugar de onde saía o café, a máquina lançava outro copo entortando o copo que estava embaixo, derrubava o café, atrasava a fila... 🙃&lt;/p&gt;

&lt;p&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%2F8t4sby2j51hxnv6q4fhe.gif" 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%2F8t4sby2j51hxnv6q4fhe.gif" alt="Dwight Schrute ensinando como ter uma boa experiência de usuário de café." width="320" height="180"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Experiências mundanas um tanto divertidas e nada sustentáveis.&lt;/p&gt;

&lt;p&gt;Como sou uma pessoa empática e um tanto metida, avisei uma pessoa responsável sobre a questão dos copos. Ah, sei lá, vai que eles nunca perceberam a situação. &lt;/p&gt;

&lt;p&gt;Se vão tomar alguma providência, eu não sei. &lt;/p&gt;

&lt;p&gt;Se de fato acontece aquilo todos os dias, também não sei. E aí entra a importância da coleta e análise de dados para direcionar nossas ações e soluções com o foco em problemas reais, e não desperdiçar nosso tempo porque uma garota com fome viu coisas que talvez foram só coincidências que acontecerem num sábado aleatório de uma manhã fria e cinzenta na capital do Paraná.&lt;/p&gt;




&lt;p&gt;Agora eu deixo um questionamento: será que deixar a sala numa temperatura de sauna é um &lt;strong&gt;dark pattern&lt;/strong&gt; que o laboratório utiliza para as pessoas tomarem menos café? &lt;/p&gt;

&lt;p&gt;Afinal é um laboratório bem conceituado que pertence a uma rede de diagnósticos gigante, e que com certeza entende muito bem de UX. 😊&lt;/p&gt;

&lt;p&gt;Será que deixar um aviso para as pessoas tomarem apenas um café e pegar apenas uma bolachinha não resolveria o problema? Ok, sempre tem aqueles que adoram bancar os espertinhos, mas eu ainda quero acreditar que a maioria das pessoas são boas e honestas e respeitariam o pedido.&lt;/p&gt;

&lt;p&gt;E deixar o porta-copos onde estava, poderia ser relacionado com um site enfrentando problemas de arquitetura da informação?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Ou talvez seja só eu matutando coisas sem sentido, mas que quando vou observando a vida em diversos lugares, aparecem coisas tão sem sentido que eu só quero acreditar que devem ser propositais. 😬&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Falando em dark patterns, estou com um alerta de uma configuração desnecessária no onedrive, porque por &lt;em&gt;algum motivo&lt;/em&gt; a Microsoft quer que eu configure do jeito deles.&lt;/p&gt;

&lt;p&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%2Fszartmcm2twqy4e3euhn.png" 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%2Fszartmcm2twqy4e3euhn.png" alt="Ícone de alerta para configuração do onedrive" width="136" height="48"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Bom, quis deixar esse registro por aqui apenas para lembrar que UX e UI não estão apenas em dispositivos virtuais. É legal observar a vida como ela é para podermos levar essas vivências para dentro do mundo virtual e aprimorar a experiência do usuário. &lt;/p&gt;

&lt;p&gt;Inclusive, nessa situação entra em jogo várias &lt;strong&gt;heurísticas de Nielsen&lt;/strong&gt;, como a &lt;em&gt;Compatibilidade entre o sistema e o mundo real&lt;/em&gt;, quando nos tornamos mais empáticos ao realizar observações e conseguimos trazer boas perspectivas para dentro do virtual, e uma análise criteriosa para a &lt;em&gt;Prevenção de erros&lt;/em&gt;, afinal enfiar um copo em uma máquina que não precisa copo parte do erro de alguém, pois a primeira informação que notei na máquina foi o contato para conserto, ou seja, observo o &lt;strong&gt;princípio da hierarquia&lt;/strong&gt; do design visual sendo mal utilizado.&lt;/p&gt;




&lt;p&gt;Experiência, experiência. Não sei se tu que leu essa viagem até aqui é mais rico em paciência ou se te falta consciência. (&lt;del&gt;inspirado&lt;/del&gt; roubado do Eduardo Bueno)&lt;/p&gt;

&lt;p&gt;Até um dia, quem sabe, talvez! ⋆.˚🦋༘⋆ &lt;/p&gt;

</description>
      <category>ux</category>
      <category>uxdesign</category>
      <category>webdev</category>
    </item>
    <item>
      <title>PNG, JPEG, SVG e GIF: quando usar cada uma delas + ferramentas</title>
      <dc:creator>Milena Emmert</dc:creator>
      <pubDate>Fri, 17 Feb 2023 19:26:15 +0000</pubDate>
      <link>https://dev.to/milenaemmert/png-jpeg-svg-e-gif-quando-usar-cada-uma-delas-ferramentas-5c99</link>
      <guid>https://dev.to/milenaemmert/png-jpeg-svg-e-gif-quando-usar-cada-uma-delas-ferramentas-5c99</guid>
      <description>&lt;p&gt;Quando estamos lidando com imagens, pode nos ocorrer a seguinte dúvida: “&lt;em&gt;qual formato é o ideal?&lt;/em&gt;”, e a resposta é: “&lt;em&gt;depende&lt;/em&gt;”! Depende do propósito do uso dessa imagem, do quanto de detalhe ela possui, se ela tem alguma transparência etc.&lt;/p&gt;



&lt;h3&gt;
  
  
  Vamos começar com o &lt;strong&gt;GIF&lt;/strong&gt;, que é o mais fácil de ser diferenciado dentre essas quatro opções
&lt;/h3&gt;

&lt;p&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%2Fziwi3wrgyv18ezquhw6v.gif" 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%2Fziwi3wrgyv18ezquhw6v.gif" alt="Exemplo de GIF - Nazaré confusa" width="504" height="322"&gt;&lt;/a&gt;&lt;br&gt;
O GIF (Graphics Interchange Format) é uma imagem animada, criada a partir de um trecho de um vídeo, ou pela união de imagens estáticas, ou uma animação produzida em um software como o &lt;a href="https://www.toonboom.com/products/harmony" rel="noopener noreferrer"&gt;Toon Boom Harmony&lt;/a&gt; ou o &lt;a href="https://www.adobe.com/br/products/animate.html" rel="noopener noreferrer"&gt;Adobe Animate&lt;/a&gt;. É claro que essas ferramentas vão exigir conhecimento para usá-las, mas deve ser divertido!&lt;/p&gt;

&lt;p&gt;Já nós, reles pessoas sem aptidão para criar animações, utilizamos GIFs prontos disponíveis em sites como o &lt;a href="https://giphy.com/" rel="noopener noreferrer"&gt;GIPHY&lt;/a&gt; ou o &lt;a href="https://tenor.com/pt-BR/" rel="noopener noreferrer"&gt;TENOR&lt;/a&gt;. Até podemos criar nossos GIFs através de vídeos prontos nessas ferramentas, basta ir em &lt;em&gt;GIF Maker&lt;/em&gt; no GIPHY ou em &lt;em&gt;Criar&lt;/em&gt;, no Tenor.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Podemos arredondar as bordas de um GIF no &lt;a href="https://pt.imgtools.co/round-corners-image/gif" rel="noopener noreferrer"&gt;imgtools.co&lt;/a&gt;:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&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%2Fcpgyv6arft4yaa5i9cku.gif" 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%2Fcpgyv6arft4yaa5i9cku.gif" alt="Exemplo de GIF com bordas arredondadas" width="334" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Devemos ter em mente que a qualidade da imagem de um GIF acaba sendo prejudicada, pois o arquivo é bastante comprimido para que não demore a ser carregado.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;No Whatsapp temos a opção de "converter" um vídeo para GIF, porém, não é bem o que o zap faz. Ele apenas reduz muito o tamanho e a qualidade do vídeo (perceba como a imagem da direita está bem mais pixelada). O "GIF convertido sqn" continua sendo um arquivo de vídeo mp4:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&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%2Fzfnxjchztpwjj8fre628.png" 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%2Fzfnxjchztpwjj8fre628.png" alt="Vídeo versus vídeo gif do zap" width="800" height="655"&gt;&lt;/a&gt;&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%2F48naha88673vnltsbvfk.png" 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%2F48naha88673vnltsbvfk.png" alt="Redução do tamanho do vídeo" width="800" height="272"&gt;&lt;/a&gt;&lt;/p&gt;
O arquivo original está com 1.66 MB e é um MP4, o arquivo &lt;b&gt;gif-zap&lt;/b&gt; foi reduzido para 392 KB, mas continua sendo um MP4



&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Para converter de fato um vídeo para GIF, utilize ferramentas apropriadas como o &lt;a href="https://convertio.co/pt/mp4-gif/" rel="noopener noreferrer"&gt;Convertio&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;



&lt;h3&gt;
  
  
  Agora vamos falar sobre PNG e JPEG
&lt;/h3&gt;

&lt;p&gt;Com o formato PNG (Portable Network Graphics), é possível comprimir a imagem sem que exista perda de qualidade. Também podemos colocar transparências:&lt;/p&gt;

&lt;p&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%2Fykijshwtl3qwqru60c40.png" 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%2Fykijshwtl3qwqru60c40.png" alt="Imagem com fundo versus imagem com fundo removido" width="800" height="424"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Para remover o fundo de uma imagem, gosto muito de utilizar uma ferramenta chamada Remove BG, você pode instalar ele como plugin no Figma (é necessário setar uma API key, mas no site você consegue ela gratuitamente) ou utilizar o &lt;a href="https://www.remove.bg/?utm_source=referral" rel="noopener noreferrer"&gt;site&lt;/a&gt; diretamente.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;O Remove BG acaba deixando a imagem um pouco pixelada, então você pode utilizar uma ferramenta de aprimorar a imagem, em muitos casos funciona:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&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%2F9p9y37vbisqfwwfwq570.png" 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%2F9p9y37vbisqfwwfwq570.png" alt="Imagem apenas com o Remove BG versus imagem com Remove BG + IA" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;
A imagem da direita claramente está menos pixelada com uso de um melhorador de imagem



&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Algumas ferramentas: &lt;a href="https://www.upscale.media/pt" rel="noopener noreferrer"&gt;Upscale.media&lt;/a&gt;, &lt;a href="https://picwish.com/pt/photo-enhancer" rel="noopener noreferrer"&gt;PicWish&lt;/a&gt;, &lt;a href="https://zyro.com/br/ferramentas/upscaler-de-imagem" rel="noopener noreferrer"&gt;Zyro&lt;/a&gt; e &lt;a href="https://remini.ai/" rel="noopener noreferrer"&gt;Remini&lt;/a&gt; (que possui um app excelente para Android e IOS)&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Em alguns casos a imagem pode ser bastante danificada por uma IA:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&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%2Fni744sw0c2w27un4rpy2.png" 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%2Fni744sw0c2w27un4rpy2.png" alt="Imagem sem IA versus imagem com IA" width="800" height="149"&gt;&lt;/a&gt;&lt;/p&gt;
Aqui a imagem já estava com a qualidade bem ruim, a IA até conseguiu remover bastante a pixelagem, mas como ela tinha pouca informação devido a qualidade da imagem, meteu um olho com óculos e até brincos na orelha do meu irmão kkkk e o 1berto parece que ficou com um feijão no dente, quando na verdade é um dente de ouro 😂



&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Se você perceber que ao remover o fundo de uma imagem, a qualidade da imagem ficou ruim, e a IA não deu conta de melhorar ela, o ideal é remover o fundo manualmente. No Figma mesmo você pode fazer isso, é um tanto trabalhoso mas a qualidade fica melhor.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Veja nesse vídeo como remover o fundo utilizando o plugin e manualmente:&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/Cp72inDiJfo"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h4&gt;
  
  
  Tá, mas e qual a diferença entre o PNG e o JPEG?
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;


&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;O PNG você pode usar para imagens que possuem transparências e imagens que você deseja comprimir muito mas manter a qualidade (logos e ícones, por exemplo).&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;


&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;O JPEG (ou JPG, que significa Joint Photographic Experts Group), é o formato ideal para imagens fotográficas, sem textos ou transparências. Quando é comprimido, sofrerá danos na qualidade.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Meu site possui muitas imagens e está demorando para carregar, e agora?
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;


&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Algumas ferramentas podem te ajudar comprimindo o tamanho das imagens: o pandinha &lt;a href="https://tinypng.com/" rel="noopener noreferrer"&gt;TinyPNG&lt;/a&gt; e &lt;a href="https://tinyjpg.com/" rel="noopener noreferrer"&gt;TinyJPG&lt;/a&gt;, &lt;a href="https://compressjpeg.com/pt/" rel="noopener noreferrer"&gt;Compress JPEG&lt;/a&gt;, entre outras. É sempre legal, para a mesma imagem, tentar em ferramentas diferentes, porque a qualidade pode ser superior numa em relação a outra, dependendo da imagem original.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;


&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Redimensione a sua imagem, você pode estar utilizando imagens que são bem maiores do que você realmente precisa. Lembre-se que redimensionar é diferente de comprimir. A compressão faz com que algumas informações sejam eliminadas, podendo causar perda de qualidade, enquanto que redimensionar significa diminuir a altura e largura (redução de pixels), e dessa forma ela mantém a qualidade.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;


&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Caso você tenha interesse, pode estudar a técnica de lazy loading (em breve pretendo trazer um artigo aqui sobre isso). O lazy loading faz com que as imagens que ainda não apareceram para o usuário não sejam carregadas, mas já existe um espaço reservado para elas. O iFood é um exemplo de aplicação que utiliza essa técnica, em alguns casos é tão rápido que quase não dá tempo de tirar print:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&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%2Fuqfz4ricsm5tefmqdlgb.png" 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%2Fuqfz4ricsm5tefmqdlgb.png" alt="Imagem lazy loading" width="800" height="778"&gt;&lt;/a&gt;&lt;/p&gt;
A primeira print foi tirada logo que a página foi aberta. Ao scrollar a página, é possível ver outros quadradinhos cinzas aparecendo, até que as imagens se carreguem por completo, pois a ideia é que as imagens só carreguem quando estiver dentro da área em que o usuário estiver vendo.





&lt;h3&gt;
  
  
  E afinal, o que são os SVGs?
&lt;/h3&gt;

&lt;p&gt;Os SVGs (Scalable Vector Graphics) são gráficos vetoriais escaláveis. Por serem escaláveis, podem ser redimensionados sem perder a qualidade. Então qual o motivo de não utilizarmos sempre o SVG? &lt;/p&gt;

&lt;p&gt;Em imagens com muitos detalhes, o formato SVG faz com que muitas coisas percam a textura, e com a riqueza de detalhes, o SVG que era pra ser um formato mais leve, acaba se tornando muito pesado.&lt;/p&gt;

&lt;p&gt;Os SVG são ideais para gráficos, ícones e logotipos que precisam ser redimensionados em diferentes tamanhos sem perder a qualidade. Além disso, o formato SVG permite animações e interatividade. Abra um SVG no VS Code, ou no bloco de notas mesmo, tenho certeza que se você nunca viu, você vai se encantar! ^^&lt;/p&gt;

&lt;p&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%2Fj1nnorargtw17gqxiyxg.png" 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%2Fj1nnorargtw17gqxiyxg.png" alt="PNG versus SVG" width="800" height="267"&gt;&lt;/a&gt;&lt;/p&gt;
Veja como a textura dos pelos do coelhinho é afetada no SVG (abra a imagem em nova guia e dê um zoom, se precisar)



&lt;p&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%2Fkjiqgtghm586or3jpy4j.png" 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%2Fkjiqgtghm586or3jpy4j.png" alt="Tamanho de PNG versus SVG" width="800" height="321"&gt;&lt;/a&gt;&lt;/p&gt;
Aqui, por ter muitos detalhes, o SVG ficou muito mais pesado que o PNG



&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;


&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Você pode encontrar SVGs bem "limpinhos" no &lt;a href="https://fonts.google.com/icons" rel="noopener noreferrer"&gt;Google Fonts&lt;/a&gt;, no &lt;a href="https://heroicons.com/" rel="noopener noreferrer"&gt;Hero Icons&lt;/a&gt; e no &lt;a href="https://tablericons.com/" rel="noopener noreferrer"&gt;Tabler Icons&lt;/a&gt;. Também é válido dar uma olhadinha na aba community do Figma, lá você pode encontrar arquivos como &lt;a href="https://www.figma.com/community/file/1208013585957300648" rel="noopener noreferrer"&gt;esse&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;





&lt;h4&gt;
  
  
  Dicas extras:
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;


&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Sempre esteja por dentro da licença das imagens que você pega por aí. Muitos sites como o &lt;a href="https://www.pexels.com/pt-br/" rel="noopener noreferrer"&gt;Pexels&lt;/a&gt;, &lt;a href="https://br.freepik.com/" rel="noopener noreferrer"&gt;Freepik&lt;/a&gt; e &lt;a href="https://unsplash.com/pt-br" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt; oferecem imagens gratuitas, mas mesmo assim muitas vezes é necessário dar créditos a pessoa proprietária. Imagens que você vai utilizar para fins pessoais podem ter licença de uso diferente se você quiser utilizar no seu trabalho (fins comerciais), por exemplo.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;


&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Para converter uma imagem, por exemplo, de JPEG para PNG, não basta renomear o arquivo com a extensão diferente. O seu sistema pode até tratar essa imagem como um PNG agora, mas a estrutura interna, ou seja, o conteúdo binário do arquivo não mudou, e ele continua sendo um JPEG. Utilize ferramentas como algumas citadas acima para realizar essa conversão.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;


&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Se você converter um PNG com transparência para JPEG, provavelmente a transparência no JPEG será substituída pela cor branca, isso porque o JPEG não suporta transparência.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>welcome</category>
      <category>community</category>
    </item>
    <item>
      <title>Como estudar e aprender programação de forma mais eficaz?</title>
      <dc:creator>Milena Emmert</dc:creator>
      <pubDate>Thu, 21 Jul 2022 13:42:00 +0000</pubDate>
      <link>https://dev.to/milenaemmert/como-estudar-e-aprender-programacao-de-forma-mais-eficaz-4p6b</link>
      <guid>https://dev.to/milenaemmert/como-estudar-e-aprender-programacao-de-forma-mais-eficaz-4p6b</guid>
      <description>&lt;h3&gt;
  
  
  Primeiro: Calma!
&lt;/h3&gt;

&lt;p&gt;Quando estamos começando, aqueles montes de códigos confusos, um milhão de linguagens, mais um monte de termos técnicos (front-end, back-end, API, git, framework etc.), nos deixam assustados e perdidos! Isso é normal, e é muito comum em qualquer área em que decidimos nos aprofundar.&lt;/p&gt;

&lt;p&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%2Fxgu6eoyumysjoanhr1d6.gif" 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%2Fxgu6eoyumysjoanhr1d6.gif" alt="Gif: dev iniciante" width="250" height="250"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  ✅ Vá com calma, não se apegue a isso, pois aos poucos você vai entender o que cada termo desse significa, e tudo vai ficando mais claro!
&lt;/h4&gt;




&lt;h3&gt;
  
  
  A prática é muito importante!
&lt;/h3&gt;

&lt;p&gt;Teoria é importante? Sim! Mas você precisa colocar ela em prática. Não tem jeito, praticar é a melhor forma de aprender a programar. Você precisa descobrir de qual forma você aprende melhor: se é ir fazendo a sua prática junto com a professora ou professor do curso, ou se é assistir a aula e depois tentar fazer sozinha ou sozinho.&lt;/p&gt;

&lt;p&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%2Fkwmkwy01atomblvqqwbm.gif" 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%2Fkwmkwy01atomblvqqwbm.gif" alt="Dog codando" width="250" height="250"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  ✅ Para praticar ainda mais, você pode fazer o mesmo projeto do curso mas com algo que você gosta, do seu jeito! Por exemplo, se no curso foi ensinado a fazer a página da barbearia Alura, tente agora fazer uma página parecida, mas com algo que você gosta, um pet shop, uma loja de games, de filmes etc.
&lt;/h4&gt;




&lt;h3&gt;
  
  
  Não desista!
&lt;/h3&gt;

&lt;p&gt;Entender que dificuldades são encontradas em qualquer profissão faz parte de nosso amadurecimento. Programar não é fácil, mas se torna menos difícil a cada dia que a gente se dedica um pouco mais. Tenha consistência nos estudos, crie uma rotina e estabeleça metas. Mas não se esqueça de descansar também!&lt;/p&gt;

&lt;p&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%2Fg2n4fx8kuy5p9d4tzh9r.gif" 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%2Fg2n4fx8kuy5p9d4tzh9r.gif" alt="Gato gif" width="250" height="250"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  ✅ Quando estiver surtando que nem o gatinho por causa de um problema que não está conseguindo resolver, não diga que vai desistir. Vá fazer outra tarefa, dormir, lanchar, passear. Depois de um tempo você vai conseguir resolver o problema, e se não conseguir, procure alguém que possa te ajudar, a comunidade tech sabe bem como é passar por isso e está aí para te abraçar!
&lt;/h4&gt;




&lt;h3&gt;
  
  
  Dicas extras ✨
&lt;/h3&gt;

&lt;p&gt;✅ monte um cronograma de estudos que se encaixe na sua realidade&lt;/p&gt;

&lt;p&gt;✅ não pule etapas, se não entendeu um conteúdo, busque ajuda, pratique um pouco mais&lt;/p&gt;

&lt;p&gt;✅ crie um networking, pessoas passam pelas mesmas dificuldades e aprender juntos facilita muito&lt;/p&gt;

&lt;p&gt;✅ ensinar alguém, ou explicar em voz alta, ajuda a fixar o que aprendeu e até a entender algumas coisas que estavam complicadas antes&lt;/p&gt;

&lt;p&gt;✅ comece uma tarefa e termine, e não fique migrando de linguagens sem antes ter aprendido nenhuma direito, você verá que depois que aprender uma, a segunda ficará bem mais fácil&lt;/p&gt;

&lt;p&gt;✅ devore exercícios de lógica, tente solucioná-los de formas diferentes, eles irão te ajudar a ter a base muito melhor estruturada&lt;/p&gt;

&lt;p&gt;✅está com dificuldades de começar a escrever um código? comece escrevendo um algoritmo em português mesmo!&lt;/p&gt;




&lt;h3&gt;
  
  
  Conteúdos extras ✨
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=D8rGA6XmJYI" rel="noopener noreferrer"&gt;Como estudar? - Alura Live&lt;/a&gt;&lt;br&gt;
&lt;a href="https://dev.toProdutividade%20para%20estudar"&gt;Produtividade para estudar&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.alura.com.br/artigos/5-passos-para-aprender-a-programar" rel="noopener noreferrer"&gt;5 passos para aprender a programar&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.alura.com.br/artigos/algoritmos-e-logica-de-programacao" rel="noopener noreferrer"&gt;Algoritmos e Lógica de programação: O que são e qual a importância?&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;Quer fazer o download do conteúdo em .png? Clica &lt;a href="https://drive.google.com/file/d/1dFxO4ekorp6Aqqxcda40_ZyTJf9NTULx/view?usp=sharing" rel="noopener noreferrer"&gt;aqui&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
