<?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: edytawrobel</title>
    <description>The latest articles on DEV Community by edytawrobel (@edytawrobel).</description>
    <link>https://dev.to/edytawrobel</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%2F112281%2F5409e13f-0abb-420e-81a5-9349c05b0a32.jpg</url>
      <title>DEV Community: edytawrobel</title>
      <link>https://dev.to/edytawrobel</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/edytawrobel"/>
    <language>en</language>
    <item>
      <title>Buffett's Take On Generative AI - another genie's out of the bottle</title>
      <dc:creator>edytawrobel</dc:creator>
      <pubDate>Sat, 11 May 2024 01:51:35 +0000</pubDate>
      <link>https://dev.to/edytawrobel/another-genies-out-of-the-bottle-decoding-warren-buffetts-take-on-gen-ai-19gf</link>
      <guid>https://dev.to/edytawrobel/another-genies-out-of-the-bottle-decoding-warren-buffetts-take-on-gen-ai-19gf</guid>
      <description>&lt;p&gt;If you know me, you know it's pretty rare for any single event to keep my attention locked for five minutes, let alone for four hours straight. Yet year after year, I make an exception for the annual Berkshire Hathaway shareholders meeting.&lt;/p&gt;

&lt;p&gt;Maybe it's the chance to hear an investing legend's unfiltered words of wisdom. Or maybe it's the profound sense of gratitude that fills me, realizing the privilege of witnessing Warren Buffett's genius during my own lifetime. &lt;/p&gt;

&lt;p&gt;What's most bewildering, though, is how this incredible fount of financial wisdom and life lessons is available for anyone in the world to tap into for free, just by having an internet connection.&lt;/p&gt;

&lt;p&gt;It makes me wonder - could generative AI one day democratize knowledge creation and dissemination in the same transformative way the internet democratized access to information?&lt;/p&gt;

&lt;p&gt;As he effortlessly fields questions from the audience, his charismatic humor and personable demeanor only add to the experience. In all of this, there's a valuable leadership lesson too. There might be a future article coming solely focusing on that topic.&lt;/p&gt;

&lt;p&gt;Meanwhile, Warren Buffett soberly warns about the "genie" of artificial intelligence that has been unleashed upon the world. He described his experience of being introduced to his own deepfake version, commenting that neither his wife nor children would be able to distinguish between the fake and the real. The 93-year-old investing legend drew parallels between today's transformative AI boom and the 20th century's harnessing of nuclear power - a breakthrough technology holding boundless potential for benefiting humanity, but also grave risks if not carefully constrained. Just as nuclear gave us the terrible weapons we've seen, it gave us also nuclear energy plants that can power entire cities for decades. AI is a disruptive force that can create abundance or scarcity depending on how it is developed and governed.&lt;/p&gt;

&lt;p&gt;I felt a sense of relief hearing Buffett's viewpoint. I had feared he might default to the typical 'Invest Only in What You Truly Understand' mantra and not say anything beyond that. &lt;br&gt;
His commitment to his 'circle of competence' philosophy led him to steer clear of highly successful tech giants like Google and Microsoft in their early stages, despite acknowledging their innovative offerings. Generative AI transcends the dot-com bubble and traditional internet realms; and it really needed some cautionary commentary.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzva41uy2jcpkmbb5k77r.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzva41uy2jcpkmbb5k77r.jpg" alt="electricity_bulb" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Generative AI pervasive influence parallels the advent of electricity in the 19th and 20th centuries. However, unlike electricity, its potential for harm is exponentially greater. While electricity itself isn't inherently dangerous, mishandling it can lead to severe consequences, including shocks, fires, and accidents. Guardrails must be established to mitigate these risks, encompassing proper installation, maintenance, and usage of electrical systems and equipment. By implementing stringent safety measures, we can navigate the transformative power of generative AI responsibly and avert potential hazards. Yet, is this analogy too simplistic perhaps? It overlooks the unsettling reality that generative AI is often likened to a mysterious black box, its capabilities and consequences not fully known nor understood. As it operates on vast computational power, resembling AGI more closely with each advancement, could it potentially run wild, completely unchecked?&lt;/p&gt;

&lt;p&gt;So yes, it's reassuring to me that Buffett voiced existential concerns about the potential for advanced AI systems to pursue goals and objectives that may conflict with human ethics and values. I found Buffett's stance reflects Berkshire's enduring culture of integrity and values, emphasizing a unique approach to investing rooted in long-term and responsible stewardship.&lt;/p&gt;

&lt;p&gt;As I watch Buffett's teachings stream directly to my device, I can't help but feel immensely fortunate to live in an era where invaluable insights from one of history's most successful investors are so accessible and uncapped. It's both humbling and empowering. However, will I be able to say the same about the technological advancements in 10 years from now?&lt;/p&gt;

</description>
      <category>technology</category>
      <category>generativeai</category>
      <category>warrenbuffet</category>
      <category>ai</category>
    </item>
    <item>
      <title>React State Management Status. It Is Complicated.</title>
      <dc:creator>edytawrobel</dc:creator>
      <pubDate>Mon, 22 Jun 2020 07:18:48 +0000</pubDate>
      <link>https://dev.to/edytawrobel/react-state-management-status-it-is-complicated-438m</link>
      <guid>https://dev.to/edytawrobel/react-state-management-status-it-is-complicated-438m</guid>
      <description>&lt;p&gt;Managing state in our applications is one of the hardest parts about React because if not carefully thought-through, it has the potential to get complicated.&lt;/p&gt;

&lt;p&gt;There are many various techniques and tools for state management. From the local component state through more native to React solutions such as Context to the full-fledged libraries such as Redux, and of course the latest kid on the block, a kind of a hybrid, &lt;strong&gt;Recoil&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This post will provide an overview of various available tools to manage your React app's state as of today. It won't provide any answers, however, regarding which one you should choose for your application.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://redux.js.org/"&gt;Redux&lt;/a&gt;
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;A Predictable State Container for JS Apps&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For some, it is still the number one choice when developing apps with React. In my opinion, it gained popularity by centralizing the state and making it accessible by any component. And such it solved the &lt;strong&gt;prop drilling problem&lt;/strong&gt; (passing data from a parent through every single child to the component that actually needs that piece of state, down in React tree). As such it reduced the number of repetitions and time spent figuring out where the props came from.&lt;/p&gt;

&lt;p&gt;It also gave the developers the patterns and structure to follow that you can't easily diverge from. Although it may have a rather steep learning curve, once you've learnt the concepts such as: store (one object that holds all the application state), actions (events, the only way data gets to store), reducers (pure functions that take the current state and an action as arguments and return a new state value) and especially if you are familiar with the functional programming paradigm, you will find yourself at ease working with Redux.&lt;/p&gt;

&lt;p&gt;Redux Store is a global immutable object where the state and logic of your entire application lives. This state tree cannot be changed directly. A new object is created every time a change happens.&lt;/p&gt;

&lt;p&gt;The problem with Redux is that it it makes you write a lot of boilerplate code, and so the logic can be hard to follow. Updating the state requires the use of actions and dispatch calls, interacting with reducers, all of them in different files. Tracing the flow of data requires heavy cognitive load. I found the teams that had a very strict folder organization rules and the prescribed ways of working with Redux were much happier with it overall.&lt;/p&gt;

&lt;p&gt;But there is another issue. Some people have a tendency to over-use it; moving all the state to the store, even the local component state. Make sure you have a valid case to moving your state out from local component according with the design principles.&lt;/p&gt;

&lt;p&gt;All the restrictions mentioned above might make you want look elsewhere, but they are the same reasons why Redux has become so popular in the first place.&lt;/p&gt;

&lt;p&gt;It is important to note that Redux can be used with other view libraries, like Angular or Vue.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://mobx.js.org/README.html"&gt;MobX&lt;/a&gt;
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;The philosophy behind MobX is very simple:&lt;br&gt;
Anything that can be derived from the application state, should be derived. Automatically.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In trying to solve the problem of decoupling the state from the individual components as well as sharing the data between them, MobX is similar to Redux. Both rely on the concept of the store for data. However, with MobX you can have multiple mutable stores; the data can be updated directly there. As it is based on the Observable Pattern: [the subject, maintains a list of its dependents, called observers, and notifies them automatically of any &lt;a href="https://netbasal.com/javascript-observables-under-the-hood-2423f760584"&gt;state changes&lt;/a&gt;. It allows you to track the updates to your data automatically. While the components are being rendered, MobX builds the dependency graph to track which ones need to re-render when an observable variable changes.&lt;/p&gt;

&lt;p&gt;This solution might be for you if you are familiar with the transparent functional reactive programming principles. To read more on why you might want to use MobX versus Redux, I recommend &lt;a href="https://codeburst.io/the-curious-case-of-mobx-state-tree-7b4e22d461f"&gt;this&lt;/a&gt; post by Michel Weststrate, the author of MobX.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://reactjs.org/docs/context.html"&gt;React Context API&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;The interesting part of this solution is that it was there from the very beginning. In all fairness though, it wasn't that long time ago when it became fully supported by React API. Also the modern React additions, such as hooks made it all so much easier to put together. Plus, if you are missing Redux, you can use &lt;strong&gt;useReducer&lt;/strong&gt; hook 😉&lt;/p&gt;

&lt;p&gt;It enables sharing data between multiple components and keeping the data close to where they are needed. By looking at your tree, you pick the lowest level common parent and wrap the context provider around it.&lt;br&gt;
Provider passes data directly to the consumer without having to drill through every level of the tree via props. Best part of this solution is that it only affects certain parts of the React tree, and the rest of the components may not even know that anything is happening.&lt;/p&gt;

&lt;p&gt;One word of caution, do not reach for context too soon. Keep your data locally if the data is not needed in any other component. Also, let's not forget that passing props has always been integral part of React. There is nothing wrong in using it when your app is small and if it is just a couple of layers down. React documentation points out that a lot of problems stem from the incorrect &lt;a href="https://reactjs.org/docs/composition-vs-inheritance.html"&gt;composition&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It is one of my preferred way of managing state in the React applications. Mostly because no additional libraries are needed. Once you've learnt React - there is no added learning curve. And most of all, it is easy to share the state between the un-related leaves in the React tree without having to &lt;a href="https://reactjs.org/docs/lifting-state-up.html"&gt;lift your state up&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In order to make it all stick a little bit more, let's implement &lt;em&gt;Theme Switcher&lt;/em&gt; as an example of how you can do this.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frt9hi1r565jb44f96dmr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frt9hi1r565jb44f96dmr.png" alt="context" width="800" height="841"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Theme Switcher functionality will allow you to toggle between 'light' and 'dark' mode in the application:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fpjwg6ziem2ac7nhxrgsc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fpjwg6ziem2ac7nhxrgsc.png" alt="light mode" width="800" height="736"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You start with creating context for the state you want to share between your components. In our case, we want to share the theme mode. We also create Provider and Consumer to then plug into the components actually using this data:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjqojosqzkticuq3u8no6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjqojosqzkticuq3u8no6.png" alt="context code" width="800" height="616"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since most of our application will use the same theme, we will wrap the whole app in our provider:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2xfovqq06m2mdgzflgvh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2xfovqq06m2mdgzflgvh.png" alt="provider" width="800" height="368"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Any component that needs to use that state will be wrapped in the consumer. Note we omitted Header from this wrapper:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvzdhx80sn8m8gwazpzd0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvzdhx80sn8m8gwazpzd0.png" alt="consumer example" width="800" height="573"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💥 What if I want one of my components to be of a different theme than the rest of the app?&lt;/p&gt;

&lt;p&gt;Pass the theme via props instead! The Header example below also implements its own button to change the state just to illustrate the point, but of course in real life it is an overkill 😁&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fy50dxyoqxrk2ru9lm9o8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fy50dxyoqxrk2ru9lm9o8.png" alt="header code" width="800" height="561"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In my app's case, I want my Header to always be in the light mode, so it uses the default theme:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fy50dxyoqxrk2ru9lm9o8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fy50dxyoqxrk2ru9lm9o8.png" alt="dark mode example" width="800" height="561"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can notice that clicking on &lt;em&gt;Change Theme&lt;/em&gt; button, changes the theme for the whole app, but not Header.&lt;/p&gt;

&lt;p&gt;React Context allows you to have a Provider at the top of the tree and consumers that are listening to it. This is great as it allows us to pass the state between the parts of the React tree that are not connected in any way, without much extra code.&lt;/p&gt;

&lt;p&gt;However, that might be not enough for more complicated problems. Say you want to generate a list of items on the fly and you don't know how many items you will end up having, how do you insert the Providers then?&lt;/p&gt;

&lt;p&gt;Luckily, that's been solved now with using the latest addition to the React world i.e. Recoil.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://recoiljs.org/"&gt;Recoil&lt;/a&gt;
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Recoil works and thinks like React. Add some to your app and get fast and flexible shared state.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It is said to be very minimal and adding "extra little ingredients to React". It focuses on solving flexibility and performance limits.&lt;/p&gt;

&lt;p&gt;As an example, let's think of an application where you needed to share your users' name between &lt;em&gt;Header&lt;/em&gt; and &lt;em&gt;Body&lt;/em&gt;. You will keep one useState hook in your Header component and the second one in your Body component. With Recoil, however, we can share this state without having to keep it in sync in two different places.&lt;/p&gt;

&lt;p&gt;That is enabled by the concept of &lt;strong&gt;Atoms&lt;/strong&gt;, a piece of state that other components can subscribe to. Any change with an atom will cause a re-render in all components subscribed to it:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0x6hccaa3w1379ojorq3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0x6hccaa3w1379ojorq3.png" alt="Atoms" width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This graph has been stolen directly from &lt;a href="https://www.youtube.com/watch?time_continue=5&amp;amp;v=_ISAA_Jt9kI&amp;amp;feature=emb_logo"&gt;Dave's conference talk&lt;/a&gt;. I recommend you watch it in order to understand the building blocks as well the use-case for Recoil.&lt;/p&gt;

&lt;p&gt;With Recoil, the leaves in the React tree can co-operate with each other without having to go through their common ancestor or having to create any reducers. Recoil allows for the application wide state observation.&lt;/p&gt;

&lt;p&gt;In his presentation, Dave explains in great detail the advantages of this solution. Additionally, if you are familiar with hooks, the learning curve will be minimal for you. if you are building an application where performance is a key, you may want to check out this library. I can see a lot of us reaching for this solution in future, especially for more complex data management problems.&lt;/p&gt;

&lt;p&gt;If you would like to give it a try, head over to &lt;a href="https://recoiljs.org/docs/introduction/getting-started"&gt;getting-started guide&lt;/a&gt; of the Recoil documentation where you can learn how to implement a to-do application using the new concepts.&lt;/p&gt;

&lt;p&gt;Please note I have not used Recoil in production yet, so these conclusions are based on the research, not application.&lt;/p&gt;

&lt;p&gt;All in all, it may seem overwhelming and hard to grasp why there is so many choices for the state management. And if you are new to React, and have not been following the journey of how it's been changing over the years, I understand your frustration. However, I strongly believe that all the recent additions and changes have made the lives of developers much easier after the initial phase of dismay over yet another React library or a concept to learn. &lt;/p&gt;

&lt;p&gt;Good luck with making your choice!&lt;/p&gt;

&lt;p&gt;Please note: this post has originally appeared on my &lt;a href="https://www.edytawrobel.com/theme-switch-react/"&gt;blog&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Main Photo by Michael Dziedzic, thanks for sharing your work on Unsplash.&lt;/p&gt;

</description>
      <category>react</category>
      <category>redux</category>
      <category>recoil</category>
      <category>context</category>
    </item>
    <item>
      <title>Learn Modern React in 2020</title>
      <dc:creator>edytawrobel</dc:creator>
      <pubDate>Mon, 25 May 2020 19:23:16 +0000</pubDate>
      <link>https://dev.to/edytawrobel/learn-modern-react-in-2020-14o8</link>
      <guid>https://dev.to/edytawrobel/learn-modern-react-in-2020-14o8</guid>
      <description>&lt;p&gt;You took upon yourself to learn React during these lockdown months. I applaud you for choosing to make this investment in yourself.&lt;/p&gt;

&lt;p&gt;React is a &lt;a href="https://reactjs.org/"&gt;JavaScript library&lt;/a&gt; for building user interfaces. Currently, it is one of the most popular front-end frameworks, with no view of changing in the near future. Thus, if you are looking for a front-end job, or frankly any web development position in 2020, knowing React is a huge asset if not a must-have.&lt;/p&gt;

&lt;p&gt;But do not just take my word for it. Let’s check my opinion against the data from a few respectable sources. On the graph below taken from &lt;a href="https://2019.stateofjs.com/front-end-frameworks/"&gt;State of JS Survey&lt;/a&gt;, you can see that although there are other JS frameworks that gained popularity in the recent years, such as Vue or Svelte, React is still by far the most popular framework:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fcfp71cihfcz29kxi00pj.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fcfp71cihfcz29kxi00pj.jpg" alt="react trends" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The same survey also provides the overview of Usage by Company Size as well as the Salary Range:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhrjytjosiyld7obvsy7k.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhrjytjosiyld7obvsy7k.jpg" alt="react trends companies" width="800" height="306"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fga2yvl35mkvx6n2l78vt.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fga2yvl35mkvx6n2l78vt.jpg" alt="react trends salary" width="800" height="308"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With that in mind, we can compare it now against the preferences of the developers themselves. We can get that data from &lt;a href="https://npm-stat.com/charts.html?package=%40angular%2Fcore&amp;amp;package=react&amp;amp;package=vue&amp;amp;package=svelte&amp;amp;from=2017-12-30&amp;amp;to=2020-05-05"&gt;npm stats&lt;/a&gt;. Npm is a package manager or in a more layman’s terms a repository of various packages that we as developers can use in our projects. I plotted a chart to show the popularity of four front-end frameworks in the last 3 years:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3gyzo9gaw6gexl3m83cj.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3gyzo9gaw6gexl3m83cj.jpg" alt="npm stats" width="800" height="629"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can see that React is clearly a winner here.&lt;/p&gt;

&lt;p&gt;That is also confirmed in &lt;a href="https://insights.stackoverflow.com/survey/2019#technology-most-loved-dreaded-and-wanted-loved2"&gt;Developer Survey Results from 2019&lt;/a&gt; conducted by Stack Overflow. React is the first on the list of the most loved web frameworks.&lt;/p&gt;

&lt;p&gt;Hopefully, all this data provided enough insights to confirm that you made the right decision to learn React. I assume you already have some decent JS skills, as it is definitely a prerequisite in order to master React.&lt;/p&gt;

&lt;h2&gt;
  
  
  Your Roadmap to Master React
&lt;/h2&gt;

&lt;p&gt;Without further ado, let’s design a roadmap for you to learn React in the next couple of months.&lt;/p&gt;

&lt;p&gt;The following resources have been picked after a lot of research as well as trial and error. Please note there is no affiliation involved here. There are a lot of other great tutorials that I completed when learning React for the first time over a year ago. However, since React has changed a lot since it emerged, I believe the list below will equip you with the most up to date skills.&lt;/p&gt;

&lt;p&gt;If you follow the four tutorials listed below, you should get a great foundation and understanding of the most important concepts, as well as to pick up the most up-to-date trends and best practices that emerged in the last couple of years. If you really take this task seriously, you will go from the beginner to professional in no time:&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://reactjs.org/tutorial/tutorial.html"&gt;ReactJS.org Tutorial&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;React has excellent documentation and many tutorials written by the developers who work on the framework day to day. I’d recommend you thoroughly examine that site, but since this task itself can be quite daunting, the best place to start is the Intro to React Tutorial. By building your own implementation of tic-tac-toe game you will be ready to dive deeper into React in a day or two. It will answer your questions about what React is, provide overview of foundational concepts and will give you a fun and practical way to experiment with the framework itself.&lt;/p&gt;

&lt;p&gt;This tutorial was written by the &lt;a href="https://reactjs.org/community/team.html"&gt;React team&lt;/a&gt;. I highly recommend you follow all of them, but especially blog of &lt;a href="https://overreacted.io"&gt;Dan Abramov&lt;/a&gt;. It is dedicated to React and I cannot recommend it highly enough if you really want to understand all the React concepts in detail when you are a little further along your React journey.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://egghead.io/lessons/react-a-beginners-guide-to-react-introduction"&gt;A Beginners Guide to React Introduction&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://twitter.com/kentcdodds"&gt;Kent C. Dodds&lt;/a&gt; is one of the most influential people in the React world. He has many tutorials, workshops, talks and it is one of the people, whose work you should really follow closely. You can find out more about him on his &lt;a href="https://kentcdodds.com/blog/"&gt;blog&lt;/a&gt; as well as find some other great tutorials.&lt;/p&gt;

&lt;p&gt;This egghead.io tutorial from Kent is, in my humble opinion, the most succinct and yet detailed course out there. If I were to pick just one tutorial for you to make sure you get all the foundations as well as overview of the most recent techniques, it would be this one. Plus, it is completely free.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://www.roadtoreact.com/"&gt;The Road to React&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;I love this site. You will find here absolutely everything related to React, from the basic concepts, through testing and becoming advanced in React. It has the whole roadmap designed and ready for you to follow. It is a paid book, but you can choose from various options from just The Bare Essentials to The Professional. A lot of industry leaders are recommending it, and I do think it is worth your money. But it is third on my list, because frankly you do not have to spend any money to learn React if you do not want to.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://flaviocopes.com/page/list-subscribed/"&gt;The React Handbook by Flavio Copes&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;I recommend you subscribe to Flavio’s newsletter. I really like the structure of his tutorials. They are always to the point, practical and well… short! One concept at a time. He writes about all kind of stuff, but with most focus on the JavaScript world. He has various Handbooks that are free for you to follow, and there is one dedicated to &lt;a href="https://flaviocopes.nyc3.digitaloceanspaces.com/react-handbook/react-handbook.pdf"&gt;React&lt;/a&gt; too.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://scrimba.com/g/glearnreact"&gt;React on Scrimba&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;This one has only recently made onto my list. I absolutely love that it is free and the way it is structured. The fact it is beautifully designed is also a plus. In 58 relatively short videos it teaches you how to write modern day react, explain all the concepts and shows you where to go next. It is a must-do and definitely won’t regret picking this one up.&lt;/p&gt;

&lt;p&gt;Having all these resources in front of you now, I hope I saved you some time searching the web to figure out which tutorial is best. I would follow these tutorials in the order provided. If you are short on time, you can pick just two of them and you will be on your way to take the next step in your React learning journey, i.e. building your own applications. There is no substitute for applying your skills onto the real projects. So do get your hands dirty on some suitable projects on platforms such as &lt;a href="https://www.helpfulengineering.org/"&gt;Helpful Engineering&lt;/a&gt; or &lt;a href="https://www.freecodecamp.org/"&gt;freeCodeCamp.org&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;All you need to do now is to create a schedule and timeline for yourself. Create a &lt;a href="https://trello.com/"&gt;Trello&lt;/a&gt; board. Make deadlines to keep yourself accountable. Find a place to keep all your notes and perhaps set up a couple of &lt;a href="https://www.mindmeister.com/"&gt;mind maps&lt;/a&gt; to enhance your learning.&lt;/p&gt;

&lt;p&gt;Best of luck on your journey! 🤞🤞🤞&lt;/p&gt;

&lt;p&gt;Please note this article was originally written for &lt;a href="https://www.edytawrobel.com/react2020/react2020/"&gt;my blog&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>react</category>
      <category>frontend</category>
      <category>resources</category>
      <category>learning</category>
    </item>
  </channel>
</rss>
