<?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: enguerran 🐐💨</title>
    <description>The latest articles on DEV Community by enguerran 🐐💨 (@enguerran).</description>
    <link>https://dev.to/enguerran</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%2F3230%2Fe6d9dfe3-ed52-4f75-a7f8-a5dcf3ae59b3.jpg</url>
      <title>DEV Community: enguerran 🐐💨</title>
      <link>https://dev.to/enguerran</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/enguerran"/>
    <language>en</language>
    <item>
      <title>Vuex State and Getters (2)</title>
      <dc:creator>enguerran 🐐💨</dc:creator>
      <pubDate>Mon, 27 Apr 2020 16:30:00 +0000</pubDate>
      <link>https://dev.to/enguerran/vuex-state-and-getters-2-2l34</link>
      <guid>https://dev.to/enguerran/vuex-state-and-getters-2-2l34</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Oi-M7vWA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.ticabri.com/content/images/2020/04/IMG_20190119_223007.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Oi-M7vWA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.ticabri.com/content/images/2020/04/IMG_20190119_223007.jpg" alt="Vuex State and Getters (2)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To be honest, I wasn't sure what I was writing when I wrote &lt;a href="https://dev.to/enguerran/vuex-state-and-getters-1cep"&gt;the previous article about Vuex State and Getters&lt;/a&gt;. And the more I use Vuex, the more I question this "everything in Getters" proposition. In the end, writing this article allowed me to review the situation.&lt;/p&gt;

&lt;p&gt;I know why something did not smell right to me.&lt;/p&gt;

&lt;h2&gt;
  
  
  The case of the Vuejs components
&lt;/h2&gt;

&lt;p&gt;Several data are accesible within a component, they can come from &lt;code&gt;props&lt;/code&gt;, be defined in &lt;code&gt;data&lt;/code&gt; or be calcultated in &lt;code&gt;computed&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;When we use them in the teplate, we don't ask ourselves the question of their origins, they are all accessible through the &lt;code&gt;this&lt;/code&gt; interface.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Vue.component("ButtonCounter", {
  props: {
    name: {
      type: String,
      default: () =&amp;gt; "John Doe"
    }
  },
  data: function() {
    return {
      count: 0
    };
  },
  computed: {
    times: function() {
      return this.count === 1 ? "time" : "times";
    }
  },
  template: `
  &amp;lt;button v-on:click="count++"&amp;gt;
    Hi {{name}}, you clicked me {{ count }} {{times}}.
  &amp;lt;/button&amp;gt;`
});
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
Vuejs props, data and computed properties





&lt;p&gt;(&lt;a href="https://codesandbox.io/s/state-and-getters-vuejs-p4b04"&gt;Codesandbox Vuejs demo&lt;/a&gt;)&lt;/p&gt;

&lt;h2&gt;
  
  
  The case of React components
&lt;/h2&gt;

&lt;p&gt;There are two interfaces: &lt;code&gt;this.state&lt;/code&gt; and &lt;code&gt;this.props&lt;/code&gt;. The first handles internal data of the component. The second handles external data of the component whether it comes from the calling component or the state manager.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class ButtonCounter extends React.Component {
  constructor(props) {
    super(props);
    this.state = { count: 0 };
  }

  render() {
    const { count } = this.state;
    const { username } = this.props;
    const times = count === 1 ? "time" : "times";
    return (
      &amp;lt;button
        onClick={() =&amp;gt; {
          this.setState({ count: count + 1 });
        }}
      &amp;gt;
        Hi {username}, you clicked me {count} {times}.
      &amp;lt;/button&amp;gt;
    );
  }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
React props and state





&lt;p&gt;(&lt;a href="https://codesandbox.io/s/state-and-getters-reactjs-vczct"&gt;Codesandbox Reactjs demo&lt;/a&gt;)&lt;/p&gt;

&lt;h2&gt;
  
  
  The case of Vuex
&lt;/h2&gt;

&lt;p&gt;Whether the data is directly provided by the state of the store, or the data is derived, we don't have the same interface: &lt;code&gt;this.state&lt;/code&gt; vs &lt;code&gt;this.getters&lt;/code&gt;. And the consumer of the data has to be aware of the internal organization of the store, which is a bit disturbing.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const initialState = {
  todos: [
    { id: 1, text: 'Learn about State', done: true },
    { id: 2, text: 'Learn about Getters', done: false }
  ]
};

function doneTodos(state) {
  return state.todos.filter(todo =&amp;gt; todo.done)
}

const store = new Vuex.Store({
  state: initialState,
  getters: {
    doneTodos: doneTodos
  }
})

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
Vuex state and getters





&lt;p&gt;To access the &lt;code&gt;todos&lt;/code&gt;, components can add a &lt;code&gt;computed&lt;/code&gt; properties:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Vue.component("TodoList", {
  computed: {
    todos: function() {
      return this.$store.state.todos
    },
    doneTodos: function() {
      return this.$store.getters.doneTodos
    }
  },
  template: `
  &amp;lt;ul&amp;gt;
    &amp;lt;li v-for="todo in todos" :key="todo.text"&amp;gt;
      {{ todo.text }}
    &amp;lt;/li&amp;gt;
  &amp;lt;/ul&amp;gt;`
});
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
Usage with Vuejs





&lt;h2&gt;
  
  
  The case of Redux
&lt;/h2&gt;

&lt;p&gt;Getters are referred to as &lt;em&gt;Selectors&lt;/em&gt; and handle providing &lt;a href="https://redux.js.org/recipes/computing-derived-data"&gt;derived data&lt;/a&gt;. In a redux vanilla framework, we will implement a function well-named &lt;code&gt;mapStateToProps&lt;/code&gt; (transforming a data of the global state into a component's &lt;code&gt;props&lt;/code&gt; property).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const initialState = {
  todos: [
    { id: 1, text: 'Learn about State', done: true },
    { id: 2, text: 'Learn about Selectors', done: false }
  ]
};

function doneTodos(state) {
  return state.todos.filter(todo =&amp;gt; todo.done)
}

const store = createStore(function(state, action) {
  if (typeof state === 'undefined') {
    return initialState
  }

  return state;
});
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
Redux state and selectors





&lt;p&gt;This creates &lt;a href="https://redux.js.org/basics/example#container-components"&gt;container components&lt;/a&gt; (connected to the state manager).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class TodoList extends React.Component {
  constructor(props) {
    super(props);
    this.state = { count: 0 };
  }

  render() {
    const { todos, doneTodos } = this.pros;
    return (
      &amp;lt;ul&amp;gt;
        {todos.map(todo =&amp;gt; (
          &amp;lt;li&amp;gt;{todo.text}&amp;lt;/li&amp;gt;
        ))}
      &amp;lt;/ul&amp;gt;
    );
  }
}

const mapStateToProps = state =&amp;gt; {
  return {
    todos: state.todos,
    doneTodos: doneTodos(state)
  }
};

const TodoListContainer = connect(mapStateToProps)(TodoList)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
Usage with Reactjs





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

&lt;p&gt;React and Redux don't do something special for computed properties or getters, they are only functions that take a raw data as a parameter and return a computed data.&lt;/p&gt;

&lt;p&gt;Vuejs and Vuex treat computed properties and getters in a special way that force developers to adapt their code to the framework (in order to be reactive):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Vuejs component that consumes a Vuex data must know how the state is organised;&lt;/li&gt;
&lt;li&gt;Developers need to know the correct interface to access the state data regarding if they are raw or computed data.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>développement</category>
    </item>
    <item>
      <title>Vuex state and getters</title>
      <dc:creator>enguerran 🐐💨</dc:creator>
      <pubDate>Tue, 10 Mar 2020 00:00:00 +0000</pubDate>
      <link>https://dev.to/enguerran/vuex-state-and-getters-1cep</link>
      <guid>https://dev.to/enguerran/vuex-state-and-getters-1cep</guid>
      <description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;(edit)&lt;/strong&gt; I have evolved my thinking on the subject, which I have expressed in a new article: &lt;a href="https://dev.to/enguerran/vuex-state-and-getters-2-2l34"&gt;https://dev.to/enguerran/vuex-state-and-getters-2-2l34&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;With vuex is there a reason why it's better to access state directly than via a getter if the getter is just returning the state?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NP2KNAZ8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.ticabri.com/content/images/2020/03/IMG_20190119_222809.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NP2KNAZ8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.ticabri.com/content/images/2020/03/IMG_20190119_222809.jpg" alt="Vuex state and getters"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let us first take care to illustrate this issue:&lt;/p&gt;

&lt;h2&gt;
  
  
  the store
&lt;/h2&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const store = new Vuex.Store({
  state: {
    messages: [
      { from: "Bob", to: "Alice", content: "Hello, Alice!" },
      { from: "Alice", to: "Bob", content: "Hi, Bob!" },
      {
        from: "Bob",
        to: "Alice",
        content:
          `What is the difference between accessing the state directly
          rathen than using a getter?`
      },
      {
        from: "Alice",
        to: "Bob",
        content: `This is your last chance.
          After this, there is no turning back.
          You take the blue pill—the story ends,
          you wake up in your bed and believe whatever you want to believe.
          You take the red pill—you stay in Wonderland,
          and I show you how deep the rabbit hole goes.
          Remember: all I'm offering is the truth. Nothing more.`
      }
    ]
  },
  getters: {
    messages: state =&amp;gt; state.messages
  }
});
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
Vuex store





&lt;h2&gt;
  
  
  two very different components
&lt;/h2&gt;

&lt;p&gt;In both components, messages are the responsibility of a Vuex store.&lt;/p&gt;

&lt;h3&gt;
  
  
  RedPill: direct access to the state
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export default {
  name: "HelloWorld",
  computed: {
    messages() {
      return this.$store.state.messages;
    }
  }
};
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
RedPill component





&lt;p&gt;In the component &lt;code&gt;&amp;lt;RedPill /&amp;gt;&lt;/code&gt;, we access the state directly via the store object which is &lt;a href="https://vuex.vuejs.org/guide/state.html#getting-vuex-state-into-vue-components"&gt;injected&lt;/a&gt; to all root child components.&lt;br&gt;&lt;br&gt;
The component retrieves the list of messages and can display their content:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;template&amp;gt;
  &amp;lt;div class="hello"&amp;gt;
    &amp;lt;h1&amp;gt;Dependant of the state organization&amp;lt;/h1&amp;gt;
    &amp;lt;ul v-for="(message, index) in messages" :key="index"&amp;gt;
      &amp;lt;li&amp;gt;{{message.from}} to {{message.to}}: {{message.content}}&amp;lt;/li&amp;gt;
    &amp;lt;/ul&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/template&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
Vue template to display messages





&lt;h3&gt;
  
  
  BluePill: using a getter
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export default {
  name: "HelloWorld",
  computed: {
    messages() {
      return this.$store.getters.messages;
    }
  }
};
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
BluePill component





&lt;p&gt;In the other component &lt;code&gt;&amp;lt;BluePill /&amp;gt;&lt;/code&gt;, we access the state via a getter which is not complex since it returns directly the object: &lt;code&gt;const messages = state =&amp;gt; state.messages&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;From a component and the application point of view, there is no difference.&lt;/p&gt;

&lt;h2&gt;
  
  
  how deep does the rabbit hole go?
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;RedPill&lt;/code&gt; is dependant of the internal state organization. Every time the state is reorganized, the &lt;code&gt;RedPill&lt;/code&gt; should be updated. The &lt;code&gt;RedPill&lt;/code&gt; has a big responsibility: to know where it can find the list of messages.&lt;/p&gt;

&lt;p&gt;On the other hand, the &lt;code&gt;BluePill&lt;/code&gt; is independent of the internal organization of the state because it asks the store, whenever it needs it, to return the list of messages. The &lt;code&gt;BluePill&lt;/code&gt; does not have the responsibility to know where it can find the list of messages.&lt;/p&gt;

&lt;p&gt;Let's say that the Vuex store is redesigned to allow organization in modules.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const store = new Vuex.Store({
  state: {
    messages: [
      { from: "Bob", to: "Alice", content: "Hello, Alice!" },
      { from: "Alice", to: "Bob", content: "Hi, Bob!" },
      {
        from: "Bob",
        to: "Alice",
        content:
          `What is the difference between accessing the state directly
          rathen than using a getter?`
      },
      {
        from: "Alice",
        to: "Bob",
        content: `This is your last chance.
          After this, there is no turning back.
          You take the blue pill—the story ends,
          you wake up in your bed and believe whatever you want to believe.
          You take the red pill—you stay in Wonderland,
          and I show you how deep the rabbit hole goes.
          Remember: all I'm offering is the truth. Nothing more.`
      }
    ]
  },
  getters: {
    messages: state =&amp;gt; state.messages
  }
});
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
Vuex store before refactoring





&lt;p&gt;Now we want to use &lt;a href="https://vuex.vuejs.org/guide/modules.html"&gt;Vuex modules&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const store = new Vuex.Store({
  modules: {
    messages: {
      state: {
        messages: [
          { from: "Bob", to: "Alice", content: "Hello, Alice!" },
          { from: "Alice", to: "Bob", content: "Hi, Bob!" },
          {
            from: "Bob",
            to: "Alice",
            content: `What is the difference between accessing the state directly
              rathen than using a getter?`
          },
          {
            from: "Alice",
            to: "Bob",
            content: `This is your last chance.
              After this, there is no turning back.
              You take the blue pill—the story ends,
              you wake up in your bed and believe whatever you want to believe.
              You take the red pill—you stay in Wonderland,
              and I show you how deep the rabbit hole goes.
              Remember: all I'm offering is the truth. Nothing more.`
          }
        ]
      },
      getters: {
        messages: state =&amp;gt; state.messages
      }
    }
  }
});
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
Vuex store with modules





&lt;p&gt;I have to update the &lt;code&gt;RedPill&lt;/code&gt; computed data:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export default {
  name: "HelloWorld",
  computed: {
    messages() {
      return this.$store.state.messages.messages;
    }
  }
};
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
Tightly coupled to the store





&lt;p&gt;But not the &lt;code&gt;BluePill&lt;/code&gt;'s one.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export default {
  name: "HelloWorld",
  computed: {
    messages() {
      return this.$store.getters.messages;
    }
  }
};
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
Weakly coupled to the store





&lt;p&gt;And that is the same about adding a new feature.&lt;/p&gt;

&lt;p&gt;Let's say messages are updated to have a boolean that expresses the need to be displayed or not: &lt;code&gt;draft: true&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;You just need to update the getter and everything is right:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;getters: {
  messages: state =&amp;gt; state.messages.filter(message =&amp;gt; !message.draft)
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;a href="https://refactoring.guru/smells/shotgun-surgery"&gt;Shotgun surgery&lt;/a&gt; avoidance





&lt;p&gt;That is an introduction to &lt;a href="https://en.wikipedia.org/wiki/Coupling_(computer_programming)"&gt;coupling in software development&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>development</category>
      <category>vuex</category>
      <category>cleancode</category>
    </item>
    <item>
      <title>What Is it Like to Be a Developer?</title>
      <dc:creator>enguerran 🐐💨</dc:creator>
      <pubDate>Thu, 09 Aug 2018 13:46:34 +0000</pubDate>
      <link>https://dev.to/enguerran/what-is-it-like-to-be-a-developer-55i0</link>
      <guid>https://dev.to/enguerran/what-is-it-like-to-be-a-developer-55i0</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fbpo1qyspk049qpjnp4yd.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fbpo1qyspk049qpjnp4yd.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Questions about what to do, what to learn or what to use from beginners or advanced developers are often answered with the subjectivity of a singular person. That person could be a doctor in Computer Science studying Ditributed Neural Networks or a self-taught JavaScript developer. That is not hard to understand their answers will be very different not helping the beginner asking for advices.&lt;/p&gt;

&lt;p&gt;The title of this post is directly inspired by &lt;a href="https://en.wikipedia.org/wiki/What_Is_it_Like_to_Be_a_Bat%3F" rel="noopener noreferrer"&gt;"What is it like to be a bat?"&lt;/a&gt;: it is a paper by American philosopher &lt;a href="https://en.wikipedia.org/wiki/Thomas_Nagel" rel="noopener noreferrer"&gt;Thomas Nagel&lt;/a&gt;, first published in The Philosophical Review in October 1974.&lt;/p&gt;

&lt;p&gt;Noone's experience could be compared to another one's experience. That is the fundamental origin of the impostor syndrom. Each developer goes his own way towards what he tends to become, and if some paths are identical, we cannot conclude to similar experiences if we take into account &lt;a href="https://en.wikipedia.org/wiki/Qualia" rel="noopener noreferrer"&gt;qualia&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Qualia are defined to be individual instances of subjective, conscious experience.&lt;/p&gt;

&lt;p&gt;That means that if you get an advice, you have to transpose that advice into your own inherent experience before building some kind of experience about it.&lt;/p&gt;

&lt;h1&gt;
  
  
  Examples of Advice
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Work Hard
&lt;/h2&gt;

&lt;p&gt;For me, work hard means read and practice a lot. I need to confront what I understand from a theory with a concrete example that I can manipulate.&lt;/p&gt;

&lt;p&gt;That will not be necessarly the same for another person.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understand What You Are Doing
&lt;/h2&gt;

&lt;p&gt;How do you know my understanding is the same your understanding? I could paraphrase and try to explain what I understood. But there will never be an assurance that I understood what you try to explain to me.&lt;/p&gt;

&lt;p&gt;On the other hand, some genius people are capable of doing things they do not understand theorically speaking. And that is not necessarily a problem.&lt;/p&gt;

&lt;p&gt;We can sum this up by saying that you may try to be able to reproduce what you did in some other similar contexts, and that might be enough to validate that advice.&lt;/p&gt;

&lt;h2&gt;
  
  
  Avoid Dogmas
&lt;/h2&gt;

&lt;p&gt;I need to understand what I am doing, this brings me confidence. Otherwise, I quickly become stressed and question my whole life and all my choices. That's why I hunt dogmas by trying to explain everything.&lt;/p&gt;

&lt;p&gt;But I can beleive that is not the case for everyone. That someone else can live a long and happy life believing something without ever having to confront reason, experience or theory. And it's not necessarily a problem to be able to do something (it could be a problem if you have to teach someone).&lt;/p&gt;

&lt;h1&gt;
  
  
  What Is it Like to Be a Developer?
&lt;/h1&gt;

&lt;p&gt;To be a good developer, you should seek to feel positive things when you do what it is for you to be a developer. That is, in the end, the only thing that matters.&lt;/p&gt;

&lt;p&gt;And, please, forget comparisons, competitions. Help your entourage by listening to their questions, after all, it is the &lt;a href="https://en.wikipedia.org/wiki/Rubber_duck_debugging" rel="noopener noreferrer"&gt;rubber duck technique&lt;/a&gt; that works so often in our profession.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>career</category>
      <category>tips</category>
      <category>learning</category>
    </item>
    <item>
      <title>Hi, I'm enguerran 🐐💨</title>
      <dc:creator>enguerran 🐐💨</dc:creator>
      <pubDate>Wed, 01 Mar 2017 07:52:57 +0000</pubDate>
      <link>https://dev.to/enguerran/hi-im-enguerran-</link>
      <guid>https://dev.to/enguerran/hi-im-enguerran-</guid>
      <description>

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