<?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>Forem: Assis Zang</title>
    <description>The latest articles on Forem by Assis Zang (@zangassis).</description>
    <link>https://forem.com/zangassis</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%2F600852%2Faa2627ba-5c02-4ab6-83c9-aa1cbf8a2c9b.png</url>
      <title>Forem: Assis Zang</title>
      <link>https://forem.com/zangassis</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/zangassis"/>
    <language>en</language>
    <item>
      <title>Here's what I do to perform well under pressure 🤦‍♀️➡💁‍♀️</title>
      <dc:creator>Assis Zang</dc:creator>
      <pubDate>Fri, 21 Feb 2025 21:12:19 +0000</pubDate>
      <link>https://forem.com/zangassis/heres-what-i-do-to-perform-well-under-pressure-3bfn</link>
      <guid>https://forem.com/zangassis/heres-what-i-do-to-perform-well-under-pressure-3bfn</guid>
      <description>&lt;p&gt;💡 Hey, have you ever felt overwhelmed trying to juggle multiple tasks at once? If so, welcome to the club! 😉&lt;/p&gt;

&lt;p&gt;The good news? You're not alone. 😌&lt;/p&gt;

&lt;p&gt;The best news? There are techniques that can help you deal with those moments when all you want to do is close your computer, have a cup of tea... or catch a flight to the moon. 🚀🌑&lt;/p&gt;

&lt;p&gt;I currently work as a senior software developer at a consulting firm and on a daily basis, I need to perform tasks such as bug fixes, configurations, analysis, implementations, last-minute meetings, and, of course, helping out my colleagues. In between, the priority of some of these tasks disappears out of nowhere 🤷‍♀️, while others emerge just as quickly 🤦‍♀️, and I'm constantly bombarded with messages from the &lt;del&gt;deepest pits of messenger hell&lt;/del&gt;, like Microsoft Teams 🔥😱.&lt;/p&gt;

&lt;p&gt;In these moments, what I do is follow a checklist of things I need to do to calm down, organize things and turn the game around 😨 ➡ 😎.&lt;/p&gt;

&lt;p&gt;You can use this checklist according to your needs. Don't worry about the number of items. You can start slowly and see what works best for you. So, shall we?&lt;/p&gt;

&lt;h2&gt;
  
  
  ✅ Emotional control 🕊️💆‍♀️
&lt;/h2&gt;

&lt;p&gt;It's hard to tell humans to stay calm. We're not machines, we can't just turn a switch on or off. However, we can control or reduce our anxiety. To do this, the first thing I do is keep my thoughts positive. &lt;/p&gt;

&lt;p&gt;❌ Avoid thinking negative thoughts like: Why is this person telling me to do this? I already have so much to do, why give me more tasks? &lt;/p&gt;

&lt;p&gt;✔️ Instead, imagine the rewards that this can and will probably bring, such as notoriety from management, recognition from colleagues, and a future appreciation or promotion.&lt;/p&gt;

&lt;p&gt;❌ Don't take it personally: In this sense of being positive, avoid taking demands personally.&lt;/p&gt;

&lt;p&gt;✔️ Realize that pressure is usually created due to deadlines, clients, or business demands, not something against you. You can be sure that the person who asked you for something received the same request as you.&lt;/p&gt;

&lt;h2&gt;
  
  
  ✅ Organization and Prioritization 📌📝
&lt;/h2&gt;

&lt;p&gt;Organizing and prioritizing tasks is essential to ensure that you identify what needs to be done first and don't forget anything.&lt;/p&gt;

&lt;p&gt;❌ Don't leave everything in your mind, even though it may seem reliable, it can play tricks on you.&lt;/p&gt;

&lt;p&gt;✔️ Instead, use a tool to help you organize your tasks, ordering them by priority. Some of the most common are:&lt;/p&gt;

&lt;p&gt;📌 &lt;strong&gt;&lt;a href="https://todoist.com/" rel="noopener noreferrer"&gt;Todoist&lt;/a&gt;&lt;/strong&gt; – Simple to-do list, organized by projects and priorities.&lt;/p&gt;

&lt;p&gt;📌 &lt;strong&gt;&lt;a href="https://todo.microsoft.com/" rel="noopener noreferrer"&gt;Microsoft To Do&lt;/a&gt;&lt;/strong&gt; – Integrated into the Microsoft ecosystem, great for personal and work lists.&lt;/p&gt;

&lt;p&gt;📌 &lt;strong&gt;&lt;a href="https://keep.google.com/" rel="noopener noreferrer"&gt;Google Keep&lt;/a&gt;&lt;/strong&gt; – Great for quick notes and simple lists, syncs with Google.&lt;/p&gt;

&lt;p&gt;📌 &lt;strong&gt;&lt;a href="https://www.notion.so/" rel="noopener noreferrer"&gt;Notion&lt;/a&gt;&lt;/strong&gt; – More advanced organization, allows you to create lists, databases and personalized notes.&lt;/p&gt;

&lt;p&gt;My priority list in Notion:&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%2Fqv9uhy7nzgi7ovvoiuv9.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%2Fqv9uhy7nzgi7ovvoiuv9.png" alt="My priority list in Notion" width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ✅ Reward yourself 🥇🙆‍♀️
&lt;/h2&gt;

&lt;p&gt;Rewarding yourself after all the effort to keep things in order is a great way to stay motivated and avoid burnout. After all, working under pressure consumes mental and emotional energy.&lt;/p&gt;

&lt;p&gt;Our brain responds well to rewards, creating a positive association with a job well done. In addition, it also takes away the feeling of always racing against time, bringing a moment of relief.&lt;/p&gt;

&lt;p&gt;Finally, knowing that there is a pot of gold ✨ at the end of the rainbow 🌈 helps you keep going.&lt;/p&gt;

&lt;p&gt;❌ Instead of moving on to another set of priorities.&lt;/p&gt;

&lt;p&gt;✔️ Take a short break – A quiet coffee, a quick walk or a few minutes without screens. ☕🌿&lt;/p&gt;

&lt;p&gt;✔️ Do something you enjoy – Watch an episode of a series, listen to music or play a relaxing game. 🎧📺🎮&lt;/p&gt;

&lt;p&gt;✔️ Give yourself a physical reward – A chocolate or a special snack. 🍫🍕&lt;/p&gt;

&lt;p&gt;✔️ Unplug for a while – Go for a walk, practice a hobby or just do nothing. 🚶‍♂️🎨💤&lt;/p&gt;

&lt;h2&gt;
  
  
  Final words 🧁🙋‍♀️
&lt;/h2&gt;

&lt;p&gt;These are the main steps I follow when I'm dealing with pressure. You don't have to follow them exactly. Just try some of them and see what works for you. I hope they can help you in your day-to-day life, just like they help me 😉.&lt;/p&gt;

&lt;p&gt;If you liked the post , have any suggestions or complaints, or just want to type a little, please leave a comment 💁‍♀️&lt;/p&gt;

</description>
      <category>programming</category>
      <category>productivity</category>
      <category>career</category>
      <category>mentalhealth</category>
    </item>
    <item>
      <title>My impressions about the book The Clean Coder 🧹📚</title>
      <dc:creator>Assis Zang</dc:creator>
      <pubDate>Fri, 17 May 2024 14:58:31 +0000</pubDate>
      <link>https://forem.com/zangassis/my-impressions-about-the-book-the-clean-coder-le0</link>
      <guid>https://forem.com/zangassis/my-impressions-about-the-book-the-clean-coder-le0</guid>
      <description>&lt;p&gt;Recently, I finished reading the book &lt;em&gt;The Clean Coder: A Code of Conduct for Professional Programmers&lt;/em&gt; by Robert C. Martin (Uncle Bob) (Brazilian Portuguese version), and here are my impressions about it.&lt;/p&gt;

&lt;p&gt;If you are inside the software development world, you've certainly heard about the legendary book &lt;em&gt;The Clean Code&lt;/em&gt;, but there is another important book by the same author, called &lt;strong&gt;The Clean Coder&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The Clean Coder is not just about coding, it's about surviving in a corporate software-building environment with a high degree of professionalism and ethical standards.&lt;/p&gt;

&lt;p&gt;The author begins the book by talking about his childhood and adolescence when he discovered his first computer, his college experience, and the unusual thing that happened to his father when he tried to get him a job.&lt;/p&gt;

&lt;p&gt;"The Clean Coder" goes beyond the technical aspects of writing clean code and shows the reader what is on the other side of the computer screen: The professional's behaviors and attitudes.&lt;/p&gt;

&lt;p&gt;The book covers topics such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Time management and estimation&lt;/li&gt;
&lt;li&gt;Dealing with pressure and stress&lt;/li&gt;
&lt;li&gt;Communication and collaboration with team members and stakeholders&lt;/li&gt;
&lt;li&gt;Code reviews and feedback&lt;/li&gt;
&lt;li&gt;Testing and quality assurance&lt;/li&gt;
&lt;li&gt;Continuous learning and improvement&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Martin emphasizes the importance of discipline, practice, and commitment to quality. He provides practical advice and insights from his vast experience in the software development industry, always bringing the author's lived experiences told in a humorous and easy-to-understand tone.&lt;/p&gt;

&lt;p&gt;The book is aimed at both beginners and experienced programmers who want to improve their professional conduct and ensure they contribute positively to their teams and projects.&lt;/p&gt;

&lt;p&gt;I liked the book, as it helped me understand some aspects that I wasn't doing correctly, and emphasized some rules that we sometimes end up forgetting.&lt;/p&gt;

&lt;p&gt;Technical skills are something that is expected from any software programmer, but beyond that, the professional's behavior and conduct are also expected by the companies that hire them, and the book helps to deal with common situations in everyday life, such as reviewing code, and estimation, among others.&lt;/p&gt;

&lt;p&gt;Finally, I recommend reading it for any professional who wants to improve their conduct based on valid arguments that are directed by someone who helped shape what we know today as a &lt;strong&gt;coder&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>books</category>
      <category>development</category>
      <category>productivity</category>
      <category>tip</category>
    </item>
    <item>
      <title>Creating an easy algorithm in F#🦊</title>
      <dc:creator>Assis Zang</dc:creator>
      <pubDate>Wed, 13 Mar 2024 20:31:43 +0000</pubDate>
      <link>https://forem.com/zangassis/creating-an-easy-algorithm-in-f-4hag</link>
      <guid>https://forem.com/zangassis/creating-an-easy-algorithm-in-f-4hag</guid>
      <description>&lt;p&gt;I've been programming in C# for the last 8 years, but now I decided to learn a new functional programming language and my choice was F#.&lt;/p&gt;

&lt;p&gt;One of the best ways to learn a new programming language is to practice algorithms in the new language.&lt;/p&gt;

&lt;p&gt;So today let's create an easy algorithm in F#. This algorithm is very common in programming challenges websites like Hackerrank, Leetcode, and others...&lt;/p&gt;

&lt;p&gt;The algorithm consists of the sum of all elements in an array and then prints the result. As I said, this is very easy.&lt;/p&gt;

&lt;p&gt;So, to create the sample application in F# you must install the last &lt;a href="https://dotnet.microsoft.com/en-us/download" rel="noopener noreferrer"&gt;.NET SDK&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This tutorial will use the Visual Studio Code and the extension &lt;a href="https://ionide.io" rel="noopener noreferrer"&gt;Ionide for F#&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Then, write the following code in the terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dotnet new console &lt;span class="nt"&gt;-lang&lt;/span&gt; &lt;span class="s2"&gt;"F#"&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; ArraySumPractice
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So, open the folder with your favorite IDE, I recommend the Visual Studio Code.&lt;/p&gt;

&lt;p&gt;In the Program.fs file add the code below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight fsharp"&gt;&lt;code&gt;&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;arr&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[|&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="p"&gt;|]&lt;/span&gt;
&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;totalsum&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nn"&gt;Array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sum&lt;/span&gt; &lt;span class="n"&gt;arr&lt;/span&gt;

&lt;span class="n"&gt;printf&lt;/span&gt; &lt;span class="s2"&gt;"The total sum is %d&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="n"&gt;totalsum&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here we declared a variable called &lt;code&gt;arr&lt;/code&gt; that receives an array with some integer values, and then we declared another variable called &lt;code&gt;totalsum&lt;/code&gt; that receives the sum of all the values in the array. Finally, the total value is printed in the console.&lt;/p&gt;

&lt;p&gt;To execute this code, select all code, and then in Windows hold the &lt;code&gt;Alt&lt;/code&gt; key and hit &lt;code&gt;Enter&lt;/code&gt; and in macOS hold the &lt;code&gt;Option&lt;/code&gt; key and hit &lt;code&gt;Enter&lt;/code&gt; this command will open a terminal window pop up on the bottom of the screen, and it should look similar to this:&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%2F0o22t5azx0sj46t9u3kt.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%2F0o22t5azx0sj46t9u3kt.png" alt="Running the code in VS Code" width="800" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note that the phrase &lt;code&gt;The total sum is 31&lt;/code&gt; is displayed on the window, and now our algorithm is finished.&lt;/p&gt;

&lt;p&gt;The same code in C# can be written as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;arr&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;11&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;totalSum&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Sum&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;$"The total sum is &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;totalSum&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>programming</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>fsharp</category>
    </item>
    <item>
      <title>Hash tables in practice🐯</title>
      <dc:creator>Assis Zang</dc:creator>
      <pubDate>Tue, 20 Feb 2024 18:02:06 +0000</pubDate>
      <link>https://forem.com/zangassis/hash-tables-in-practice-12p5</link>
      <guid>https://forem.com/zangassis/hash-tables-in-practice-12p5</guid>
      <description>&lt;p&gt;Today let's learn what hash tables are and how fast they are.&lt;/p&gt;

&lt;h2&gt;
  
  
  🤔 What are hash tables?
&lt;/h2&gt;

&lt;p&gt;Hash tables, also known as hash maps or dictionaries in various programming languages, are &lt;strong&gt;data structures&lt;/strong&gt; that &lt;strong&gt;store key-value pairs&lt;/strong&gt;. They offer efficient insertion, deletion, and retrieval of elements, making them widely used in computer science and software development.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 What are its advantages?
&lt;/h2&gt;

&lt;p&gt;The main advantage of using hash tables is its fast lookup because of constant-time average-case performance for insertion, deletion, and retrieval operations. &lt;/p&gt;

&lt;p&gt;This means that regardless of the data set size, the time it takes to find, insert, or remove an element remains relatively constant, making hash tables ideal for applications requiring fast lookups.&lt;/p&gt;

&lt;p&gt;According to &lt;a href="https://www.freecodecamp.org/news/big-o-cheat-sheet-time-complexity-chart/#:~:text=When%20your%20algorithm%20is%20not,regardless%20of%20the%20input%20size." rel="noopener noreferrer"&gt;Freecodecamp&lt;/a&gt; in the Big O notation, when your algorithm is not dependent on the input size n, it is said to have a constant time complexity with order O(1). This means the run time will always be the same regardless of the input size.&lt;/p&gt;

&lt;h2&gt;
  
  
  🟣 Hash tables in ASP.NET Core
&lt;/h2&gt;

&lt;p&gt;In ASP.NET Core, hash tables are typically implemented using the &lt;code&gt;System.Collections&lt;/code&gt; namespace. There are 3 ways to implement hash tables:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Hashtable Class&lt;/strong&gt;: This class is available in the &lt;code&gt;System.Collections&lt;/code&gt; namespace and provides a classic implementation of a hash table data structure. It allows you to store key-value pairs where keys must be unique. It provides fast lookup and retrieval of elements based on the hash code of the keys.&lt;br&gt;
Example:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Collections&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;hashtable&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;Hashtable&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="n"&gt;hashtable&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"key1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"value1"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;hashtable&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"key2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"value2"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Dictionary Class&lt;/strong&gt;: This is a generic type that provides a strongly typed implementation of a hash table. It allows the storage of key-value pairs where the keys must be unique and provides compile-time type safety.&lt;br&gt;
Example:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Collections.Generic&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;dictionary&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Dictionary&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&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;&amp;gt;();&lt;/span&gt;
&lt;span class="n"&gt;dictionary&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"key1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"value1"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;dictionary&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"key2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"value2"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;ConcurrentDictionary Class&lt;/strong&gt;: This class is similar to &lt;code&gt;Dictionary&amp;lt;TKey, TValue&amp;gt;&lt;/code&gt; but is designed to be used in multi-threaded scenarios. It provides thread-safe operations without the need for external synchronization.&lt;br&gt;
Example:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Collections.Concurrent&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;concurrentDictionary&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;ConcurrentDictionary&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&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;&amp;gt;();&lt;/span&gt;
&lt;span class="n"&gt;concurrentDictionary&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;TryAdd&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"key1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"value1"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;concurrentDictionary&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;TryAdd&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"key2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"value2"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These are the most commonly used hash table implementations in ASP.NET Core applications, and each one has its advantages and use cases depending on your specific requirements, such as performance, thread safety, and type safety.&lt;/p&gt;

&lt;h2&gt;
  
  
  🥊 Hash tables VS Lists
&lt;/h2&gt;

&lt;p&gt;To see how fast hash tables are compared to lists, let's implement a simple code in C#.&lt;/p&gt;

&lt;p&gt;So, to create a new console application, you can use the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="n"&gt;dotnet&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;console&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="n"&gt;HashTableInPractice&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open the project and in the Program.cs file put the code below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Contact&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;contactsList&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;Contact&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"John"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"123-456-7890"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;Contact&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Alice"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"987-654-3210"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;Contact&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Bob"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"555-123-4567"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;Contact&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Zoe"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"999-888-7777"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;targetContact&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Alice"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;DateTime&lt;/span&gt; &lt;span class="n"&gt;startList&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;DateTime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Now&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;phoneNumberFromList&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;contactsList&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;FirstOrDefault&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Name&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt; &lt;span class="n"&gt;targetContact&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;PhoneNumber&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;DateTime&lt;/span&gt; &lt;span class="n"&gt;endList&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;DateTime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Now&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;TimeSpan&lt;/span&gt; &lt;span class="n"&gt;listTime&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;endList&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="n"&gt;startList&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;Dictionary&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&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;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;contactsDictionary&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Dictionary&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&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;&amp;gt;();&lt;/span&gt;
&lt;span class="n"&gt;contactsDictionary&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"John"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"123-456-7890"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;contactsDictionary&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"Alice"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"987-654-3210"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;contactsDictionary&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"Bob"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"555-123-4567"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;contactsDictionary&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"Zoe"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"999-888-7777"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;DateTime&lt;/span&gt; &lt;span class="n"&gt;startDictionary&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;DateTime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Now&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;phoneNumberFromDictionary&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;contactsDictionary&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ContainsKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;targetContact&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="n"&gt;contactsDictionary&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;targetContact&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"Contact not found"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;DateTime&lt;/span&gt; &lt;span class="n"&gt;endDictionary&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;DateTime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Now&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;TimeSpan&lt;/span&gt; &lt;span class="n"&gt;dictionaryTime&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;endDictionary&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="n"&gt;startDictionary&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Phone number for "&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="n"&gt;targetContact&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="s"&gt;" from List: "&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="n"&gt;phoneNumberFromList&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Search time in List: "&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="n"&gt;listTime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;TotalMilliseconds&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="s"&gt;" ms"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Phone number for "&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="n"&gt;targetContact&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="s"&gt;" from Dictionary: "&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="n"&gt;phoneNumberFromDictionary&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Search time in Dictionary: "&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="n"&gt;dictionaryTime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;TotalMilliseconds&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="s"&gt;" ms"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

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

    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="nf"&gt;Contact&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;phoneNumber&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;Name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="n"&gt;PhoneNumber&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;phoneNumber&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;In the code above we defined a List which is a collection class provided by the .NET framework that can store elements of any data type and dynamically resize itself.&lt;/p&gt;

&lt;p&gt;We also define a Dictionary which is a collection that stores key/value pairs and is more efficient than the List for accessing elements by key.&lt;/p&gt;

&lt;p&gt;Then we populate both with the same data, then we define the variable targetContact which represents the name of the contact whose phone number we want to find.&lt;/p&gt;

&lt;p&gt;We then measure the time needed to look up the phone number associated with targetContact in both the List and the Dictionary.&lt;/p&gt;

&lt;p&gt;Finally, the code prints the phone number associated with the targetContact and the time needed to look it up in both the List and the Dictionary.&lt;/p&gt;

&lt;p&gt;Now let's run the application and see how each one performs. So, to execute the application, you can use the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dotnet run
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So your terminal will display the following result:&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%2Fzp90l4bi80mqevws204o.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%2Fzp90l4bi80mqevws204o.png" alt="Hash table VS List time result" width="800" height="179"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note that the search time in List was &lt;strong&gt;13,5219&lt;/strong&gt; milliseconds 😪 while in Dictionary it was only &lt;strong&gt;0,004&lt;/strong&gt; milliseconds 😎.&lt;/p&gt;

&lt;h2&gt;
  
  
  ☕ Conclusion
&lt;/h2&gt;

&lt;p&gt;The Dictionary is a data structure that uses an internal hash table to store its elements, which allows much faster access to items by key. Therefore, the search is practically instantaneous, even with a large number of elements.&lt;/p&gt;

&lt;p&gt;In scenarios where fast key lookup is crucial, like in this case, Dictionary is the superior choice compared to List.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>csharp</category>
    </item>
    <item>
      <title>Creating a Hello World in Go with Zed 🙋‍♂️🌎</title>
      <dc:creator>Assis Zang</dc:creator>
      <pubDate>Fri, 09 Jun 2023 12:28:33 +0000</pubDate>
      <link>https://forem.com/zangassis/creating-a-hello-world-in-go-with-zed-540c</link>
      <guid>https://forem.com/zangassis/creating-a-hello-world-in-go-with-zed-540c</guid>
      <description>&lt;p&gt;&lt;a href="https://zed.dev/" rel="noopener noreferrer"&gt;Zed &lt;/a&gt; is a high-performance code editor (IDE) 🚀 developed by the creators of Atom and Tree-sitter.&lt;/p&gt;

&lt;p&gt;It is currently available in beta and is exclusive to Mac users 🍎.&lt;/p&gt;

&lt;p&gt;📌This tutorial considers that you already have Go configured on your machine, if you don't already have it, do it right now: &lt;a href="https://go.dev/doc/install" rel="noopener noreferrer"&gt;Installing Go&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To create a Hello World in Go just follow the steps below:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a file called &lt;code&gt;main.go&lt;/code&gt;, then put the code below in it:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;package&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="s"&gt;"fmt"&lt;/span&gt;

&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello, world!"&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;ol&gt;
&lt;li&gt;Open the terminal and execute the &lt;code&gt;go run main.go&lt;/code&gt; command as shown in the image below:&lt;/li&gt;
&lt;/ol&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%2Fuf4072qodmq4fzr13vw8.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%2Fuf4072qodmq4fzr13vw8.png" alt="Hello world in terminal" width="800" height="482"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;...And a new Hello world has just been born 🥳🎉.&lt;/p&gt;

&lt;p&gt;Although Zed is still in a beta version, it already has several cool features, such as collaboration with your team in integration with GitHub and others…&lt;/p&gt;

&lt;p&gt;Cover image made with Canva.&lt;/p&gt;

</description>
      <category>go</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>programming</category>
    </item>
    <item>
      <title>Public C# methods VS public Go functions 🤺</title>
      <dc:creator>Assis Zang</dc:creator>
      <pubDate>Sat, 03 Jun 2023 22:55:28 +0000</pubDate>
      <link>https://forem.com/zangassis/public-c-methods-vs-public-go-functions-1l43</link>
      <guid>https://forem.com/zangassis/public-c-methods-vs-public-go-functions-1l43</guid>
      <description>&lt;p&gt;In &lt;strong&gt;C#&lt;/strong&gt; to create a public method you must use this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;CreateBook&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Book&lt;/span&gt; &lt;span class="n"&gt;book&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
   &lt;span class="c1"&gt;//do something&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In &lt;strong&gt;Go&lt;/strong&gt; to create a public function you must use this:&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;func&lt;/span&gt; &lt;span class="n"&gt;CreateBook&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;product&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;structs&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Product&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="kt"&gt;error&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="c"&gt;//do something&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note that in C# it is necessary to use the reserved word &lt;code&gt;public&lt;/code&gt; and to create a private method, &lt;code&gt;private&lt;/code&gt; is used. &lt;/p&gt;

&lt;p&gt;In C# they are called Access Modifiers, there are others, you can check the complete list here: &lt;a href="https://learn.microsoft.com/pt-br/dotnet/csharp/language-reference/keywords%20/access-modifiers" rel="noopener noreferrer"&gt;C# Access Modifiers - Reference&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In Go to differentiate public from private functions, the initial of the function name is used. &lt;/p&gt;

&lt;p&gt;For public functions, capital letter is used. Example: &lt;em&gt;&lt;strong&gt;C&lt;/strong&gt;reateBook()&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;For private functions use lowercase initials. Example: &lt;em&gt;&lt;strong&gt;c&lt;/strong&gt;reateBook()&lt;/em&gt;.&lt;/p&gt;

</description>
      <category>go</category>
      <category>csharp</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Meu blog sobre programação e afins 🦝</title>
      <dc:creator>Assis Zang</dc:creator>
      <pubDate>Fri, 02 Jun 2023 12:23:54 +0000</pubDate>
      <link>https://forem.com/zangassis/meu-blog-sobre-programacao-e-afins-1o0f</link>
      <guid>https://forem.com/zangassis/meu-blog-sobre-programacao-e-afins-1o0f</guid>
      <description>&lt;p&gt;E aí pessoal, espero que todos se encontrem bem no momento 😀.&lt;/p&gt;

&lt;p&gt;Vou usar esse post para divulgar meu blog 😉: &lt;a href="https://fragmentando.substack.com/" rel="noopener noreferrer"&gt;fragmentando.substack.com&lt;/a&gt; que criei em nosso querido idioma Português.&lt;/p&gt;

&lt;p&gt;Minha idéia é trazer pequenos posts (fragmentos) falando sobre algum assunto de programação, desde pequenos tutoriais em Go, .NET ou alguma outra linguagem até reflexões e insights sobre a carreira dev, sempre em um formato de leitura rápida.&lt;/p&gt;

&lt;p&gt;📌 Então, se achar interessante &lt;strong&gt;não se esqueça de se inscrever&lt;/strong&gt; para receber uma notificação sempre que tiver post novo. &lt;/p&gt;

&lt;p&gt;Sua opinião é sempre bem vinda! Pretendo criar posts todas as semanas. &lt;br&gt;
Nos vemos lá 🙋🏻‍♂️&lt;/p&gt;

</description>
      <category>braziliandevs</category>
      <category>programming</category>
      <category>career</category>
      <category>go</category>
    </item>
    <item>
      <title>9 tips for writing a good tutorial article ✍️</title>
      <dc:creator>Assis Zang</dc:creator>
      <pubDate>Thu, 25 May 2023 18:34:11 +0000</pubDate>
      <link>https://forem.com/zangassis/9-tips-for-writing-a-good-tutorial-article-3ok5</link>
      <guid>https://forem.com/zangassis/9-tips-for-writing-a-good-tutorial-article-3ok5</guid>
      <description>&lt;p&gt;Tutorial articles are one of the best ways to learn something on the internet, but they don't always generate a good experience for readers. Who has never bumped into a Hell Tutorial out there? 😡&lt;/p&gt;

&lt;p&gt;With that in mind 💡, I decided to bring 10 tips 💁‍♂️ for you to create better articles and contribute positively to your target audience.✍️👍&lt;/p&gt;

&lt;h3&gt;
  
  
  1 - Be Objective 🎯
&lt;/h3&gt;

&lt;p&gt;A good tutorial article must have several key elements that emphasize in a specific topic or process. I know you have a lot to teach and not wait to put everything out, but try the maximum to keep the focus on the main subject, when you are something that is outside the scope of the article, you can put a reference as one Link or the dirt of a book if the reader wishes to delve into that subject.&lt;/p&gt;

&lt;h3&gt;
  
  
  2 - Create a clear and specific title 🧼
&lt;/h3&gt;

&lt;p&gt;The title should be brief and accurately describe what the tutorial is, giving readers a clear idea of the topic or knowledge they will learn.&lt;/p&gt;

&lt;h3&gt;
  
  
  3 - Create a concise introduction ☝️
&lt;/h3&gt;

&lt;p&gt;It is important that introduction provides an overview of what the tutorial aims to achieve. Explain the importance and relevance of the topic and which will be the goal achieved at the end of the article.&lt;/p&gt;

&lt;h3&gt;
  
  
  4 - Structure and organize the content 🗂️
&lt;/h3&gt;

&lt;p&gt;Divide the tutorial into sections and subsidies. Always keep a logical sequence by describing the tutorial step by step, it is important that the reader does not need to go back to subtitles, unless it is extremely necessary for the conclusion of the tutorial, in which case you can indicate the reader explaining the reason.&lt;/p&gt;

&lt;h3&gt;
  
  
  5 - Provide detailed explanations, but be careful with exaggeration 🧭
&lt;/h3&gt;

&lt;p&gt;Always try to explain in a way consists of each stage of the tutorial, but consenting in the main points, in information with relevance to the progress of the tutorial and discarding general information and that do not add to the content approached.&lt;/p&gt;

&lt;h3&gt;
  
  
  6 - Use visual aids 🖼️
&lt;/h3&gt;

&lt;p&gt;Whenever possible, use relevant visual aids such as diagrams, screenshots or images to support the explanations, you can use websites like Canva to create beautiful designs. Visual aids can clarify complex concepts more simply, but be careful not to overdo it, use them sparingly.&lt;/p&gt;

&lt;h3&gt;
  
  
  7 - Use practical examples or case studies 🛠️
&lt;/h3&gt;

&lt;p&gt;Whenever you need to explain something complex, consider including illustrations in real-world scenarios. These examples help readers to understand the content taught more easily if they are associated with everyday things. For example, to exemplify asynchronous programming you can use the story of a cook who prepares a meal doing several tasks at the same time, while the synchronous cook does one task after the other is finished.&lt;/p&gt;

&lt;h3&gt;
  
  
  8 - Provide step by step instructions 🔜
&lt;/h3&gt;

&lt;p&gt;Provide detailed and easy-to-follow instructions, always respecting the sequential order of each one. In texts written with markdown you can use number characters to create lists. For example:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Do it first&lt;/li&gt;
&lt;li&gt;Then do this&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Break complex processes down into smaller, manageable steps, ensuring readers can follow along and replicate actions.&lt;/p&gt;

&lt;h3&gt;
  
  
  9 - User feedback and engagement 🙋‍♂️
&lt;/h3&gt;

&lt;p&gt;Encourage readers to provide feedback, ask questions, or share their experiences in the comments section or through other means of contact.&lt;br&gt;
Always take the time to listen to your audience and respond to their questions or suggestions to foster a sense of community and continuous improvement.&lt;/p&gt;

&lt;p&gt;Blogs like Dev.to provide a notification system whenever someone comments on your article, so keep an eye out for notifications and encourage engagement, always using respectful and cordial comments.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Remember that a good tutorial article should be accessible, well-structured, and focused on providing a valuable learning experience for readers.&lt;br&gt;
Sharing knowledge is one of the best things that the internet provides for people, but we need to be careful to provide correct and useful information.&lt;/p&gt;

&lt;p&gt;Did you remember a tip? Please don't forget to comment!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>My journey with Rust 🦀 #1 - Why Rust?</title>
      <dc:creator>Assis Zang</dc:creator>
      <pubDate>Tue, 16 May 2023 03:58:04 +0000</pubDate>
      <link>https://forem.com/zangassis/my-journey-with-rust-1-why-rust-41g2</link>
      <guid>https://forem.com/zangassis/my-journey-with-rust-1-why-rust-41g2</guid>
      <description>&lt;p&gt;Perhaps the biggest reason I chose to study Rust is because it is considered one of the most beloved languages in the community, just like C# 💜. &lt;/p&gt;

&lt;h3&gt;
  
  
  C# 💜 VS RUST 🦀
&lt;/h3&gt;

&lt;p&gt;Speaking of C#, Rust has significant similarities with C#, I'm not saying that they have the same essence, quite the contrary, each one has its particularities, but the fact that we can use the same official C# IDE, Visual Studio to programming in Rust, that for me is something formidable 😃.&lt;/p&gt;

&lt;p&gt;Another point is: who wouldn't love a language with a cute crab as the &lt;del&gt;official&lt;/del&gt; symbol??? 🦀🤩&lt;/p&gt;

&lt;p&gt;Below is a list of reasons that led me to invest in learning Rust.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rust is highly secure 🔐
&lt;/h3&gt;

&lt;p&gt;Rust is known to be a safe language. It was designed from the ground up with security in mind, providing mechanisms that prevent a number of common programming errors, such as invalid memory accesses and memory leaks.&lt;/p&gt;

&lt;p&gt;Some features of Rust that contribute to its security are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Compile-time checking: The Rust compiler performs a series of static analyzes during the compilation process to verify the code's compliance with the language's safety rules and that help detect errors even before the program starts. be executed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Strong type system: Rust has a strong type system that checks at compile time the validity of operations performed on the code. It prevents common mistakes like mixing incompatible types or using uninitialized values.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ownership Rules: Rust's ownership system based on the concept of "ownership", ensures that each value has a single owner at a given time which eliminates the need for a garbage collector and helps to avoid problems such as memory leaks and invalid memory accesses.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Mutability control: Rust has strict rules for mutability control, which helps to avoid data races in concurrent code. Rust's type system ensures that concurrent access to data is secure, avoiding bugs that are hard to find and fix, contributing heavily to code quality.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Error Handling: Rust has a robust and secure error-handling system. Through the use of Results and Options, the language forces the developer to explicitly handle error cases, making it more difficult to ignore errors or deliberately propagate them.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Rust performs well 🚀
&lt;/h3&gt;

&lt;p&gt;Rust is known for offering a good performance. The Rust language was designed to be efficient and secure, striking a balance between performance and security. It is compiled into highly optimized machine code, which allows programs written in Rust to run quickly and efficiently.&lt;/p&gt;

&lt;p&gt;Below are some of the Rust features that help the language achieve high performance.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Memory control: Rust has a memory management system that guarantees security without the need for a garbage collector. This approach allows for more precise control over memory usage, reducing the overhead associated with garbage collection and avoiding issues such as memory leaks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No unwanted abstraction: Rust avoids unwanted abstractions that can introduce overhead and negatively impact application performance. Rust allows developers to precisely control low-level details such as memory allocation and thread management.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Optimized Compiler: The Rust compiler is known for its optimization capabilities. It performs sophisticated static analysis and applies a series of transformations to generate highly optimized code, taking full advantage of the underlying hardware.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Safe parallelism: Rust has built-in features for parallel programmings, such as the 'thread' concurrency primitive and the 'std::sync' standard library. These features allow developers to write safe and efficient concurrent code, taking advantage of available processing resources.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Conclusion ✅
&lt;/h3&gt;

&lt;p&gt;As a C# programmer, I wanted to learn a different programming language, but I wanted a language with another paradigm, not like Java or Node, and Rust for me was a perfect choice 😃.&lt;/p&gt;

&lt;p&gt;If you are an experienced programmer or even a beginner, Rust can be a great starting point to switch languages or even start programming, so don't wait and start your Hello World today! in Rust! 🥳&lt;/p&gt;

&lt;p&gt;In the next articles of the series, I will bring my impressions as I evolve in the knowledge of this wonderful technology called Rust 🦀. &lt;/p&gt;

&lt;p&gt;See you there! 💁‍♂️&lt;/p&gt;

</description>
      <category>rust</category>
      <category>programming</category>
      <category>beginners</category>
      <category>career</category>
    </item>
    <item>
      <title>10 Simple Work-From-Home Motivation Tips You Can Do Right Now! 👨‍💻🏡</title>
      <dc:creator>Assis Zang</dc:creator>
      <pubDate>Thu, 11 May 2023 13:24:27 +0000</pubDate>
      <link>https://forem.com/zangassis/10-simple-work-from-home-motivation-tips-you-can-do-right-now-37pe</link>
      <guid>https://forem.com/zangassis/10-simple-work-from-home-motivation-tips-you-can-do-right-now-37pe</guid>
      <description>&lt;p&gt;Staying motivated these days is something that for many may seem like a distant horizon, almost unattainable and the reason for this most of the time is that in our imagination we need good reasons to keep ourselves motivated, such as a salary increase for example. But there is a great paradox here, to get a salary increase I need to be motivated and perform more, but how am I going to be motivated if I need a salary increase for that???🤯&lt;/p&gt;

&lt;p&gt;Regardless of what your goal is, your motivation should not depend on external factors, but on things that are within your reach. That's why I created a list of 10 simple things you can start doing right now to keep yourself motivated and believe me, sometimes the answer to the biggest problems lies in the simplest things, the fall of Sir Isaac Newton's apple, despite being just an illustration about the discovery of gravity, it's a great example.&lt;/p&gt;

&lt;h3&gt;
  
  
  1 - Prepare a place for you to work 👨‍💻🏠
&lt;/h3&gt;

&lt;p&gt;Not everyone can have a room in their home to dedicate to work, but everyone probably has a corner. &lt;/p&gt;

&lt;p&gt;So, reserve a dedicated space entirely for your work this will help to separate the work from the home environment and to concentrate better.&lt;/p&gt;

&lt;h3&gt;
  
  
  2 - Establish a routine ⏰⏳
&lt;/h3&gt;

&lt;p&gt;Create a daily routine by setting fixed times to start and end work.&lt;/p&gt;

&lt;p&gt;There is usually no one watching over us when we work from home, but remember that hardworking people make good use of ethics, so always consider being honest with your boss and yourself, respecting the hours defined by the company you work for.&lt;/p&gt;

&lt;p&gt;If you are a freelance professional, you can create a work routine similar to a common routine that is normally 8 hours a day, this time can be reduced as long as it is productive.&lt;/p&gt;

&lt;h3&gt;
  
  
  3 - Dress appropriately 👔👗
&lt;/h3&gt;

&lt;p&gt;Wearing comfortable clothes like pajamas is great, but it can make us feel too relaxed.&lt;/p&gt;

&lt;p&gt;Several surveys show that what we wear greatly influences the type of people we are, so prefer to dress as if you were going to the office. This will help you create a work-oriented mindset and increase your motivation.&lt;/p&gt;

&lt;h3&gt;
  
  
  4 - Do non-work related activities 🏀🎮
&lt;/h3&gt;

&lt;p&gt;It may seem contradictory, but focusing too much on work can lower your motivation by becoming too tiring.&lt;/p&gt;

&lt;p&gt;During working hours, try to take short breaks to drink water, grab a coffee, play with your pet or any other activity, this means that your brain is not 100% focused on work, many ideas arise when we disconnect from what is in our minds.&lt;/p&gt;

&lt;p&gt;Take advantage of your free time to do other activities that you enjoy such as physical activity, reading a book, playing video games, etc... this will help you avoid burnout and stay focused when you are working.&lt;/p&gt;

&lt;h3&gt;
  
  
  5 - Look for sources of motivation 🎧🚀
&lt;/h3&gt;

&lt;p&gt;When I'm doing some activity on the computer that doesn't require much attention I like to listen to a podcast, if you have that habit, take the opportunity to look for themes that are related to motivation and that have inspiring themes that will certainly keep your motivation high.&lt;/p&gt;

&lt;h3&gt;
  
  
  6 - Improve your communication with your co-workers 👨‍💻🤝👩‍💻
&lt;/h3&gt;

&lt;p&gt;During my adolescence, I was a very introverted person and this hindered me a lot at the beginning of my workday, but something that helped me to deal with it was reading books related to the subject, such as:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Quiet by Susan Cain&lt;/li&gt;
&lt;li&gt;Quiet Influence by Jennifer B. Kahnweiler, PhD&lt;/li&gt;
&lt;li&gt;Nonviolent Communication: A Language of Life Marshall B Rosenberg PhD&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There are others that are not on this list, but these books have excellent tips for dealing with communication, especially for introverts.&lt;/p&gt;

&lt;p&gt;You can also video call or join group chats with colleagues to maintain a sense of team and social interaction, this will help you feel part of the team and will definitely boost your motivation.&lt;/p&gt;

&lt;h3&gt;
  
  
  7 - Create a daily goal 🎯📆
&lt;/h3&gt;

&lt;p&gt;Whenever you start your work day, try to create a small goal, a tip is to open your email calendar and check all the events scheduled for that day, this will help you never forget a scheduled meeting.&lt;/p&gt;

&lt;p&gt;You can create your own appointments, for example: Reading the Quiet Influence book from 10:00 am to 11:00 am, this will help you to focus on your goals and give you motivation to achieve them.&lt;/p&gt;

&lt;h3&gt;
  
  
  8 - Have a clear professional growth goal 🎯📈
&lt;/h3&gt;

&lt;p&gt;It is very common to hear the phrase: Where do you want to be in 5 years?&lt;br&gt;
This sentence makes me a little nervous because in 5 years a lot could have happened, maybe I've already changed my profession, could you predict 5 years ago the things that happened to you in that time?&lt;br&gt;
Instead think about where you want to be in 5 months or 1 year, that's more predictable. Are you a dev trainee and want to evolve to a higher level? Or maybe you're an HR person looking to change careers?&lt;/p&gt;

&lt;p&gt;Anything can be possible, just put the effort into it, so make a list of things you need to do to reach your short-term goal, separate those that are within your reach and those that are not, and then always review them to go fulfilling one by one whenever you have the opportunity. This will give you a clear vision of what your professional goal is and help you to be motivated to continue in your current job or even change it.&lt;/p&gt;

&lt;h3&gt;
  
  
  9 - Clean up your email inbox 🧼📧
&lt;/h3&gt;

&lt;p&gt;Even though messaging apps are on the rise these days, email is still the main form of communication for many companies, and it's very easy to receive a barrage of emails every day, whether it's advertising products or services, span, among others.&lt;/p&gt;

&lt;p&gt;Scan your inbox, create a folder with a prominent name like "Important" or whatever, then move into that folder what you consider important, then delete everything else, and your inbox will be clean and that way you will be able to identify which emails are really important to you and those that are not, you can unsubscribe and stop receiving them.&lt;/p&gt;

&lt;p&gt;Imagine how many opportunities you may have already missed by simply not noticing an important email in the midst of so many unnecessary ones.&lt;/p&gt;

&lt;h3&gt;
  
  
  10 - Start reading a book about motivation 📚 🚀
&lt;/h3&gt;

&lt;p&gt;It seems obvious, but we haven't always done the obvious and reading a book about motivation will definitely help you stay motivated because you'll be reading stories from someone who has probably gone through the same difficulties as you.&lt;/p&gt;

&lt;p&gt;It is very common to identify with reports written by the authors of the books, and this is a very good thing, as they help us to deal with various challenges of everyday life.&lt;/p&gt;

&lt;p&gt;To add reading to your routine, a tip is to leave the book close to your laptop so you won't forget to read it, if you prefer to read it in eBook format, try leaving the reading app open on your device so you can remember always make time for reading.&lt;/p&gt;

&lt;p&gt;Some great books about motivation that I've read and recommend:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Effective Engineer - Edmond Lau&lt;/li&gt;
&lt;li&gt;Clean Coder, The: A Code of Conduct for Professional Programmers - Robert C. Martin&lt;/li&gt;
&lt;li&gt;The Pragmatic Programmer: Your Journey to Mastery - David Thomas&lt;/li&gt;
&lt;li&gt;Mindset: The New Psychology of Success  - Carol S. Dwek&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Remember that these are just tips and you can adapt them to your reality, you also don't need to put them into practice all at once, start slowly and add one by one as you feel comfortable.&lt;/p&gt;

&lt;p&gt;Your motivation will increase dramatically and you will definitely feel much better. Did you remember another tip? Don't agree with something? Be sure to comment your opinion!&lt;/p&gt;

</description>
      <category>motivation</category>
      <category>productivity</category>
      <category>career</category>
      <category>programming</category>
    </item>
    <item>
      <title>The Senior Impostors 🎭. How to identify and deal with them</title>
      <dc:creator>Assis Zang</dc:creator>
      <pubDate>Mon, 01 May 2023 03:23:46 +0000</pubDate>
      <link>https://forem.com/zangassis/the-seniors-impostors-how-to-identify-and-deal-with-them-2a09</link>
      <guid>https://forem.com/zangassis/the-seniors-impostors-how-to-identify-and-deal-with-them-2a09</guid>
      <description>&lt;h2&gt;
  
  
  What are Senior Impostors?
&lt;/h2&gt;

&lt;p&gt;I've been working with systems development for 7 years, focusing on web development with ASP.NET Core. I've participated in projects that used almost all versions of .NET and I currently I work as a Senior Software Engineer.&lt;/p&gt;

&lt;p&gt;In these 7 years I've been able to go through several projects and development teams and something that has caught my attention is what I call Senior Imposters.&lt;/p&gt;

&lt;p&gt;I believe that the terms Senior, Junior, Trainee, Mid level etc... are very useful to identify a professional's level of experience, the problem is: What validates that a professional is in fact a "Senior"?&lt;/p&gt;

&lt;p&gt;What companies seem to take into consideration most for a professional to occupy a senior position is the length of experience he has, and that is exactly where the problem lies.&lt;/p&gt;

&lt;p&gt;Despite the global crisis, especially in large technology companies, the demand for programmers remains high, and often for different reasons, many programmers with little knowledge, but with a lot of experience, have taken on high-ranking positions such as Seniors and Specialists, at least that's what I've noticed, and the result is something, to say the least, worrying.&lt;/p&gt;

&lt;p&gt;Many times I've talked with Seniors who didn't know the difference between asynchronous and synchronous methods. This is a basic subject within the backend, especially when it comes to web systems where communication between web APIs can become unfeasible if they are done synchronously, imagine this senior helping juniors, mid-levels or trainees? &lt;/p&gt;

&lt;p&gt;Giving bad advice and creating more problematic code? And if you think bad code isn't that bad, I suggest you read Martin Fowler's Refactoring: Improving the Design of Existing Code to see how bad code can be detrimental to all parties involved in a development team.&lt;/p&gt;

&lt;p&gt;Another problem is that professionals who dedicate a good part of their free time to the study of the technologies in which they specialize often do not get a good salary and a good position because they simply do not have “the experience of a veteran”.&lt;/p&gt;

&lt;p&gt;For me this is very unfair, senior developers should pass a rigorous knowledge test to deserve the vacancy, it is simply unacceptable that senior professionals do not know basic subjects in their area of expertise.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to spot a Senior Imposter?
&lt;/h2&gt;

&lt;p&gt;It is important to know how to identify a Senior Imposter, as this can help you avoid several problems within the team and often even prevent you from wanting to leave your job or being involuntarily fired.&lt;/p&gt;

&lt;p&gt;A very clear sign of an Imposter Senior is their ability to talk, most of them can talk for an hour on a subject but if you write down what he said and do a little research you will realize that most of the things he said are false, he just managed to escape the correct answer by saying fancy words and jargon.&lt;/p&gt;

&lt;p&gt;Another sign when it comes to speech, is that in definition meetings such as planning and refinements, he is always questioning things, but normally these questions are shallow, such as, for example, Why use the X framework if the Y is better? Of course, questions are welcome in meetings of this type, but weird questions just waste time and start unnecessary discussions. &lt;/p&gt;

&lt;p&gt;But for the Senior Imposter, it's important to ask questions even if they're inane, because that way he gives the image that he's someone who knows enough about the subject to ask questions.&lt;/p&gt;

&lt;p&gt;Finally, the definitive sign is the bad code he writes, obviously we are not machines and we don't know everything, our learning is continuous and eternal, but as I said before, a senior must know how to write clean code, he must understand about good practices , if he wrote a dirty code it's because he doesn't know how to write a good code. &lt;/p&gt;

&lt;p&gt;If by chance he doesn't write code and is just guiding the team, you can pay attention to the advice he gives, always accept it but question whether it's correct.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to do if you work with a Senior Imposter?
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Continue to obey Senior Imposter's advice. Even knowing he's wrong, keep doing your work without causing any kind of friction, that's a principle of the agile manifesto.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Do not make any kind of accusation, just observe and if you conclude that your suspicion is correct, you can report the case to your superior, always using respect, without using any kind of pejorative term or offense.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Remember to gather all the evidence to support your argument and always try to dialogue with patience. It is very likely that your superior understands the situation and can, as a solution, offer improvement courses for the Senior, so you will be helping him and his entire team.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you consider yourself a senior imposter
&lt;/h2&gt;

&lt;p&gt;If you consider yourself one, congratulations, you've already taken the first step, which is to recognize that you need to evolve as a professional, we all need to evolve.&lt;/p&gt;

&lt;p&gt;Then, consider it urgent to improve your knowledge, take specialized courses in the technologies you work with most.&lt;/p&gt;

&lt;p&gt;Read books that talk about Clean Code, SOLID, Design Patterns, best practices and career development as a developer, such as "Becoming a Better Programmer: A Handbook for People Who Care About Code", by Pete Goodelife.&lt;/p&gt;

&lt;p&gt;Over time, you will become a great professional, worthy of the title you carry and leave a good legacy to follow.&lt;/p&gt;

</description>
      <category>career</category>
      <category>programming</category>
      <category>discuss</category>
      <category>motivation</category>
    </item>
    <item>
      <title>What you need know to get a job with .NET 👨‍💻💜</title>
      <dc:creator>Assis Zang</dc:creator>
      <pubDate>Thu, 01 Sep 2022 19:20:57 +0000</pubDate>
      <link>https://forem.com/zangassis/what-you-need-know-to-get-a-job-with-net-3o0e</link>
      <guid>https://forem.com/zangassis/what-you-need-know-to-get-a-job-with-net-3o0e</guid>
      <description>&lt;p&gt;I have been working with .NET since 2017 and today I hold the position of Senior Developer in a consultancy located in Brazil.&lt;/p&gt;

&lt;p&gt;Over the course of 6 years, I have noticed that many subjects are repeated regardless of the company, not only based on my own experiences but also by talking to friends and people I know.&lt;/p&gt;

&lt;p&gt;That's why I decided to create the list below to help people who want to start programming with the .NET platform. I would like to make it clear that there are exceptions but overall, if you learn the concepts listed below, the chances of you passing a trainee, junior or senior interview (why not?) are very high.&lt;/p&gt;

&lt;h2&gt;
  
  
  C# Basics 🍂
&lt;/h2&gt;

&lt;p&gt;C# (C-Sharp) is an object-oriented programming language and it is through it that .NET applications are implemented.&lt;/p&gt;

&lt;p&gt;C# Main Topics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Variables&lt;/li&gt;
&lt;li&gt;Conditional&lt;/li&gt;
&lt;li&gt;Data types&lt;/li&gt;
&lt;li&gt;Classes&lt;/li&gt;
&lt;li&gt;Interfaces&lt;/li&gt;
&lt;li&gt;Methods&lt;/li&gt;
&lt;li&gt;Encapsulation&lt;/li&gt;
&lt;li&gt;Polymorphism&lt;/li&gt;
&lt;li&gt;Heritage&lt;/li&gt;
&lt;li&gt;Loops&lt;/li&gt;
&lt;li&gt;LINQ&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;📌Microsoft reference: &lt;a href="https://dotnet.microsoft.com/en-us/learn/csharp" rel="noopener noreferrer"&gt;Learn C#&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Rest APIs 🥏
&lt;/h2&gt;

&lt;p&gt;Used for communication between servers and clients, Rest APIs are present in the vast majority of systems for Internet.&lt;/p&gt;

&lt;p&gt;📌Microsoft reference: &lt;a href="https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api?view=aspnetcore-6.0&amp;amp;tabs=visual-studio" rel="noopener noreferrer"&gt;Tutorial: Create a web API with ASP.NET Core&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Authentication and Authorization 🔐
&lt;/h2&gt;

&lt;p&gt;🙋‍♂️ Authentication (Proving that you are who you say you are)&lt;br&gt;
🔓 Authorization (Permission to do something after authenticating)&lt;/p&gt;

&lt;p&gt;📌Microsoft reference: &lt;a href="https://docs.microsoft.com/en-us/azure/active-directory/develop/authentication-vs-authorization" rel="noopener noreferrer"&gt;Authentication vs. authorization&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ORM (Object-relational mapping) 🌚➡🌝
&lt;/h2&gt;

&lt;p&gt;ORM is an ever-present subject in .NET development, through which we map relational database entities to .NET objects.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Entity Framework Core&lt;/strong&gt; is the best known ORM and one of the most used in the .NET environment, it is maintained by Microsoft itself.&lt;/p&gt;

&lt;p&gt;📌Microsoft reference: &lt;a href="https://docs.microsoft.com/en-us/ef/" rel="noopener noreferrer"&gt;Entity Framework documentation&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Messaging 📩
&lt;/h2&gt;

&lt;p&gt;A concept that defines that distributed systems can communicate through the exchange of messages (event), which are managed through a Message Broker (server).&lt;/p&gt;

&lt;p&gt;📌Microsoft reference: &lt;a href="https://docs.microsoft.com/en-us/events/dotnetconf-2021/modern-net-messaging-using-masstransit" rel="noopener noreferrer"&gt;Modern .NET Messaging using MassTransit&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Unit Tests 🧪
&lt;/h2&gt;

&lt;p&gt;Unit tests are fast compared to functional tests, can be run at the press of a button, and don't necessarily require any knowledge of business rules. Passing or failing the test rests with the test performer, not the individual.&lt;/p&gt;

&lt;p&gt;📌Microsoft reference: &lt;a href="https://docs.microsoft.com/en-us/visualstudio/test/unit-test-basics?view=vs-2022" rel="noopener noreferrer"&gt;Unit test basics&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion 🔚
&lt;/h2&gt;

&lt;p&gt;As I said above, these are some of the main subjects that can help anyone looking to get a job with .NET.&lt;/p&gt;

&lt;p&gt;Remembered something that could help? Please don't forget to comment!🙋‍♂️&lt;br&gt;
Cover image by &lt;a href="https://www.canva.com/" rel="noopener noreferrer"&gt;Canva&lt;/a&gt;&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>beginners</category>
      <category>career</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
