<?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: Jean Santana</title>
    <description>The latest articles on Forem by Jean Santana (@jsantanadev).</description>
    <link>https://forem.com/jsantanadev</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%2F408844%2Fd2a8983d-6d85-4d79-847a-7c51132b0eaf.png</url>
      <title>Forem: Jean Santana</title>
      <link>https://forem.com/jsantanadev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/jsantanadev"/>
    <language>en</language>
    <item>
      <title>Crafting extensible components with React</title>
      <dc:creator>Jean Santana</dc:creator>
      <pubDate>Tue, 04 Jul 2023 12:00:36 +0000</pubDate>
      <link>https://forem.com/jsantanadev/crafting-extensible-components-with-react-422e</link>
      <guid>https://forem.com/jsantanadev/crafting-extensible-components-with-react-422e</guid>
      <description>&lt;p&gt;Hello! I'm Jean. If you haven't heard of me, you're probably not alone - fame and I are like parallel lines, we never meet! I make a living as a software developer and moonlight as a tech philosopher when the mood strikes. It's been a year since my last article or in developer terms, roughly 500 cups of coffee ago. But, as they say, the code never sleeps! So I'm back with a new tutorial for you, let's take a look. &lt;/p&gt;

&lt;p&gt;Often, we design components for a single application with well-defined behaviors, catering to specific functionalities via set props and functions. This works efficiently in many scenarios. However, consider a situation where a component is reusable across multiple front-ends, and these different interfaces sometimes require additional behaviors. What should our approach be? Should we fork the component inside each project and customize it accordingly? Although it's a possible method, it's not the most efficient, as it overlooks the inherent power of React components. &lt;/p&gt;

&lt;p&gt;In this article, I'm going to guide you through the process of crafting extensible components, an approach that optimizes reusability without sacrificing the capacity for customization.&lt;/p&gt;

&lt;p&gt;Consider a Blog component that includes a &lt;code&gt;TitleSection&lt;/code&gt;, &lt;code&gt;ContentSection&lt;/code&gt;, and &lt;code&gt;CommentsSection&lt;/code&gt;. Each of these sections may have their unique default behavior, but there could be cases where we want to replace these with custom behavior or entirely different layouts without rewriting or altering the entire component. The concept of extensibility steps in here.&lt;/p&gt;

&lt;p&gt;Let's first look at the structure of the Blog component.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;interface Customizations {
  titleSlot?: React.ReactNode;
  contentSlot?: React.ReactNode;
  commentsSlot?: React.ReactNode;
  titleHandler?: () =&amp;gt; void;
  contentHandler?: () =&amp;gt; void;
  commentsHandler?: () =&amp;gt; void;

}

interface BlogProps {
  customizations: Customizations;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, the Customizations interface is defined to accept optional ReactNode and handler functions for each section. This interface enables passing custom React components (slots) and custom handler functions, thus providing the component with extensibility.&lt;/p&gt;

&lt;p&gt;Let's now create the Blog component.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Component sections
function TitleSection({ onTitleChange }) {
  return (
    &amp;lt;div&amp;gt;
      &amp;lt;input type="text" onChange={(event) =&amp;gt; onTitleChange(event.target.value)} placeholder="Enter Title" /&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}

function ContentSection({ onContentChange }) {
  return (
    &amp;lt;div&amp;gt;
      &amp;lt;textarea onChange={(event) =&amp;gt; onContentChange(event.target.value)} placeholder="Enter Content"&amp;gt;&amp;lt;/textarea&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}

function CommentsSection({ onComment }) {
  return (
    &amp;lt;div&amp;gt;
      &amp;lt;input type="text" onChange={(event) =&amp;gt; onComment(event.target.value)} placeholder="Enter Comment" /&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}

// Blog component
function Blog({ customizations }: BlogProps) {
  const {
    titleSlot,
    contentSlot,
    commentsSlot,
    titleHandler: customTitleHandler,
    contentHandler: customContentHandler,
    commentsHandler: customCommentsHandler,
    ...restProps
  } = customizations;

  const defaultTitleHandler = (newTitle) =&amp;gt; {
    console.log(`New title is: ${newTitle}`);
    if (customTitleHandler) {
      customTitleHandler(newTitle);
    }
  };

  const defaultContentHandler = (newContent) =&amp;gt; {
    console.log(`New content is: ${newContent}`);
    if (customContentHandler) {
      customContentHandler(newContent);
    }
  };

  const defaultCommentsHandler = (newComment) =&amp;gt; {
    console.log(`New comment is: ${newComment}`);
    if (customCommentsHandler) {
      customCommentsHandler(newComment);
    }
  };

  return (
    &amp;lt;div {...restProps}&amp;gt;
      {titleSlot || &amp;lt;TitleSection onTitleChange={defaultTitleHandler} /&amp;gt;}
      {contentSlot || &amp;lt;ContentSection onContentChange={defaultContentHandler} /&amp;gt;}
      {commentsSlot || &amp;lt;CommentsSection onComment={defaultCommentsHandler} /&amp;gt;}
    &amp;lt;/div&amp;gt;
  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, when you type in the inputs of the TitleSection, ContentSection, or CommentsSection, it will trigger the respective handlers. If you pass custom handlers or custom sections to the Blog component, those will be used instead of the defaults.&lt;/p&gt;

&lt;p&gt;Here's how to use this component with custom slots and handlers in the parent component:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react';
import Blog, { Customizations } from 'path-to-blog-component-in-library';

function ParentComponent() {
  const customTitleHandler = (newTitle) =&amp;gt; {
    console.log(`Custom title logic: ${newTitle}`);
  };

  const customContentHandler = (newContent) =&amp;gt; {
    console.log(`Custom content logic: ${newContent}`);
  };

  const customCommentsHandler = (newComment) =&amp;gt; {
    console.log(`Custom comment logic: ${newComment}`);
  };

  const customTitleSection = (
    &amp;lt;div&amp;gt;
      &amp;lt;h1&amp;gt;This is a custom title section&amp;lt;/h1&amp;gt;
    &amp;lt;/div&amp;gt;
  );

  const customContentSection = (
    &amp;lt;div&amp;gt;
      &amp;lt;p&amp;gt;This is a custom content section&amp;lt;/p&amp;gt;
    &amp;lt;/div&amp;gt;
  );

  const customCommentsSection = (
    &amp;lt;div&amp;gt;
      &amp;lt;p&amp;gt;This is a custom comments section&amp;lt;/p&amp;gt;
    &amp;lt;/div&amp;gt;
  );

  const customizations: Customizations = {
    titleHandler: customTitleHandler,
    contentHandler: customContentHandler,
    commentsHandler: customCommentsHandler,
    titleSlot: customTitleSection,
    contentSlot: customContentSection,
    commentsSlot: customCommentsSection,
    style: { background: 'lightgray' },
  };

  return &amp;lt;Blog customizations={customizations} /&amp;gt;;
}

export default ParentComponent;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, the &lt;code&gt;customHandlers&lt;/code&gt; will log a message with the new title, content, or comment. The &lt;code&gt;customSections&lt;/code&gt; simply display a message indicating they are custom sections.&lt;/p&gt;

&lt;p&gt;The custom handlers will be used instead of the default ones if provided, and the custom sections will replace the default sections. The additional props like style will also be applied to the Blog component.&lt;/p&gt;

&lt;p&gt;And there we have it - your quick guide to creating extensible React components. I hope you found this helpful, and that you're feeling ready to bring this into your own work. It's all about adaptability and efficiency in our ever-changing tech landscape.&lt;/p&gt;

&lt;p&gt;Remember, coding is a journey of constant learning and creativity. &lt;/p&gt;

&lt;p&gt;Ah, don't forget to read my most loved article:&lt;br&gt;
&lt;a href="https://dev.to/jssantana/the-mistakes-of-tech-hiring-process-a-senior-dev-perspective-1dp6"&gt;The unfair tech hiring processes&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See ya!&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>react</category>
      <category>tutorial</category>
      <category>webdev</category>
    </item>
    <item>
      <title>"Do not comment on your code, it should be self-documented". Well... I don't agree.</title>
      <dc:creator>Jean Santana</dc:creator>
      <pubDate>Sun, 17 Apr 2022 19:03:41 +0000</pubDate>
      <link>https://forem.com/jsantanadev/do-not-comment-your-code-it-should-be-self-documentated-well-i-dont-agree-2n59</link>
      <guid>https://forem.com/jsantanadev/do-not-comment-your-code-it-should-be-self-documentated-well-i-dont-agree-2n59</guid>
      <description>&lt;p&gt;Since I started write my first block of code, I heard from many developers that commenting is useless and it's a type of apology to write a bad code, but after working in a big projects with a big team, the only thing I can say is: Not commenting your code is narcisist and excludes beginners, by the way, who said your code is so good and obvious as you think it is? Yeah, your mind.&lt;/p&gt;

&lt;p&gt;During your work, probably you faced a function that you asked yourself: "&lt;em&gt;-What the hell is even that&lt;/em&gt;?". Many of us experienced this situation, even with our own code after some weeks far from the project. Now, imagine if instead of you have to waste your time, searching through the houndreds of files for the right function you need to put hands on, you could have just comment your code telling the function purpose, its params and what it should return. Life could be a dream, right?&lt;/p&gt;

&lt;p&gt;Also, we cannot asume the everybody think like us and we are being so obvious. People have different ways to analyze things, we have people that are less experienced or even have mental health conditions like, anxiety and ADDH, and that makes the process of understand some pieces of code even harder. Should we just exclude them because we can't use one single minute to comment our complexity? I think we shouldn't.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The question is not about if you should comment your code or not, but is what you need to comment in your code and how it should be done. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Write a clean and easily readable code is unegotiable, and you get better on this with experience, but you can also write clean and good comments, so it can be used as a reference for you and the others, and it do not make you a bad programmer, on the contrary!, It makes you a better professional,your code will be easily maintainable, plus, you're ensuring that no matter the level of who enters on your team, they'll get it faster and start working on the project, and if you have to leave your job, the devs that comes after you will be grateful and thanks you everyday before they going to bed. (okay, I'm not so sure about this last part).&lt;/p&gt;

&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn1ixtwt0to7o6zsiwk5m.png" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn1ixtwt0to7o6zsiwk5m.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Programs must be written for people to read and only incidentally for machines to execute.” - Hal Abelson - MIT Professor.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Recommended reads:&lt;br&gt;
&lt;a href="https://stackoverflow.blog/2021/12/23/best-practices-for-writing-code-comments/" rel="noopener noreferrer"&gt;Best practices for writing code comments&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://gomakethings.com/whats-the-best-way-to-document-javascript/#:~:text=You%20should%20absolutely%20do%20it,Always%20document%20your%20code." rel="noopener noreferrer"&gt;What's the best way to document JavaScript?&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>webdev</category>
      <category>discuss</category>
      <category>programming</category>
    </item>
    <item>
      <title>Make it work first, split after. Creating components without pain in React</title>
      <dc:creator>Jean Santana</dc:creator>
      <pubDate>Sun, 03 Apr 2022 19:11:37 +0000</pubDate>
      <link>https://forem.com/jsantanadev/make-it-work-first-split-after-creating-components-without-pain-react-1l71</link>
      <guid>https://forem.com/jsantanadev/make-it-work-first-split-after-creating-components-without-pain-react-1l71</guid>
      <description>&lt;p&gt;Create components for your React app is one of the most extensive work you do when coding. Export, import, use props, check many components files at the same time, handle data, functions and so on.&lt;/p&gt;

&lt;p&gt;If you're starting creating multiple component files at once and keeps opening them at the same time, you're punishing yourself unnecessarily.&lt;/p&gt;

&lt;p&gt;These three points should be your mantra:&lt;/p&gt;

&lt;p&gt;1- Have one single block of code and work on it until it works as you expect. So, implement functions, variables, hooks, libs, styles and all you need.&lt;/p&gt;

&lt;p&gt;2- Identify the parts of the code that make sense to be a single component. (You can use the Athomic Design methodology to do it: &lt;br&gt;
Read &lt;a href="https://atomicdesign.bradfrost.com/chapter-2/" rel="noopener noreferrer"&gt;Atomic Design&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3- Do not "over-split" your code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make it work first.
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Before you think about create splitted components, you should focus on make the whole thing work.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I saw many devs creating components without even have clarity what props they should pass trough them and what should be a separate component or not, turning a simple task into a painful activity. &lt;/p&gt;

&lt;p&gt;I'll show you what should be the best way to create components in React. (You can use this methodology with other frameworks)&lt;/p&gt;

&lt;p&gt;I'll use a simple HTML table as example to make it easy for anyone.&lt;/p&gt;

&lt;p&gt;Our main component file:&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%2Fbn4pydl7xn26vbpryrgj.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%2Fuploads%2Farticles%2Fbn4pydl7xn26vbpryrgj.png" alt="Image description" width="800" height="570"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you see above, we have a complete table with it's childrens (headers and rows), but what if we want to split it into small components?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;We'll &lt;strong&gt;do not&lt;/strong&gt; create any file now, we'll just focus on make everthing works as we expect&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Check the example below:&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%2Ffymon6mq03rf1ty8929e.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%2Fuploads%2Farticles%2Ffymon6mq03rf1ty8929e.png" alt="Image description" width="800" height="802"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now we have our small parts of our table separated on components but they're still on the same file, so we can debug and test our code with ease, without worry about imports and work with multiple files.&lt;/p&gt;

&lt;p&gt;Let's finish our example, implementing our functions, props and 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%2Fuploads%2Farticles%2Fe711g3iam12hntcgom8j.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%2Fuploads%2Farticles%2Fe711g3iam12hntcgom8j.png" alt="Image description" width="800" height="856"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, now we have everything we need, so we can just create our component files and export the small parts of our table, import it on our main componet, and everything will work as it have been before the split.&lt;/p&gt;

&lt;p&gt;Check it out:&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%2Ffhe8st81mj5prxcyb3az.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%2Fuploads%2Farticles%2Ffhe8st81mj5prxcyb3az.png" alt="Image description" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;--&lt;br&gt;
If you like these types of article, do not forget to like, comment and follow me. This will give me the feedback I need to keep posting.&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>If you are starting as developer, read this.</title>
      <dc:creator>Jean Santana</dc:creator>
      <pubDate>Sun, 03 Apr 2022 16:29:57 +0000</pubDate>
      <link>https://forem.com/jsantanadev/if-you-are-starting-as-developer-read-this-549n</link>
      <guid>https://forem.com/jsantanadev/if-you-are-starting-as-developer-read-this-549n</guid>
      <description>&lt;p&gt;Before I start, I want to welcome you studant or junior dev, that has started in this wondeful area that for sure will change your life.&lt;/p&gt;

&lt;p&gt;I know how you feel right now, I was there when I start too. Maybe you gave up so many times and keeps returning because you know you are capable to make it, and yes, YOU ARE!&lt;/p&gt;

&lt;p&gt;Maybe you feel stressed, anxious, maybe you had many bad times thinking that your're not enough and this is not for you, but continue reading this and I'll tell you the secrets that I wish someone could have told me when I was starting.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Save this post to read anytime that you're feeling like loosing your way.&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;You do not need to be a genius&lt;/strong&gt;, nerd, young or man to work with tech. If you love technology, if you like to solve problems, and have persistence, you have everything you need.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Do not waste your time trying to learn or memorize everything from a language, it will make you anxious and will make you feel like a looser because you'll not make it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Focus on learn about how internet and mobile apps works, database types, requests and responses, api concepts, algorithm basis, like variables, functions and statements.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Do not waste your time watching hours and hours of courses, instead, make a basic algorithm course and chose any language to start (do not focus on it), download a code editor like VScode, take a coffee and &lt;strong&gt;DO CODE&lt;/strong&gt;. Create something easy, make some loops, calculate your BMI, create a simple calculator, try to solve a simple problem. &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;-&lt;em&gt;Each time you see your code running and doing what you told him to do, you'll feel great and it will give you the fuel you need to continue&lt;/em&gt;&lt;br&gt;
.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;5 . &lt;strong&gt;FAIL IS THE SECRET&lt;/strong&gt;. Yes, you need to fail, and you'll. By failing you'll search for the "why" and you'll find the "because", and doing this you'll be teaching your brain to be a problem solver. This is what we (programmers, engineers, developers) are, &lt;em&gt;Problem Solvers&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;6 . &lt;strong&gt;Have patience&lt;/strong&gt;. Do not try to learn everything, do everything, know about everything. I know that the some jobs is asking for an entire dev team to a Junior role, but listen to me... &lt;em&gt;they do not know what they need&lt;/em&gt;! Many recruiters do a google search, take the most actual tech skills, languages and do a copy/paste on the job description. So, if you already have the concepts, have small projects on github that you're proud of... don't be afraid! Make a good CV, apply for the starter roles, talk about what you have done, show that you are a good learner and start to put your name on this world as a developer.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;-&lt;em&gt;But I do not know so much things, I'll not get a job or I'll be fired soon as they see it.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Let me tell you something... 90% of what you'll learn will be on your job, you'll be faced with tasks that will challenge you, so you'll search for solution, you'll read the docs, you'll have help from seniors, Stackoverflow will save you many times, and at the end you'll find yourself as an experienced developer, working with the most cool projects and companies, and the most important... Living Your Dreams.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Do not give up! Your future is the result of what you learned yesterday and what you're doing today.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>beginners</category>
      <category>programming</category>
      <category>tutorial</category>
      <category>devjournal</category>
    </item>
    <item>
      <title>The unfair tech hiring processes (a senior dev perspective)</title>
      <dc:creator>Jean Santana</dc:creator>
      <pubDate>Fri, 01 Apr 2022 16:36:14 +0000</pubDate>
      <link>https://forem.com/jsantanadev/the-mistakes-of-tech-hiring-process-a-senior-dev-perspective-1dp6</link>
      <guid>https://forem.com/jsantanadev/the-mistakes-of-tech-hiring-process-a-senior-dev-perspective-1dp6</guid>
      <description>&lt;p&gt;Recently I did some interviews for companies that call themselves "human focused", but in the time they need to show their humanity and respect they just forget it. &lt;/p&gt;

&lt;p&gt;I do understand that in this market we have a lot of dev that are "underqualified" but we too have a lot of jobs that are "overspecified", so we both have problems.&lt;/p&gt;

&lt;p&gt;When a company ask a developer to make a live code in 30 minutes of unexpected problem, as a developer you have 90% of chance to fail, not because you can't do what they asking you, but because of the external enviroment, like, engineers watching you, anxiety, impostor sydrom, and much more. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Interviwer: Hi, please share your screen... So... this is the challenge, we expect you finish in 30 minutes, you can start when you're ready.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Developer starts working and see himself being anayzed by two engineers seeing each keystroke he makes, he wants the job, the anxiety starts, the code don't run, the mind get blank and... he fail.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Interviwer: Okay, I think we can stop here. I think you are not qualified for what we want, we expect someone fluent on this, and you're not prepared, maybe in the future. Good Luck, bye.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now I ask you, fellow devs... Is this fair? Your experience and skills just being throw on trash by a company, just because you can't acomplish something in a stressfull enviroment in 30 minutes? Something that in a daily work situation you could have done it without problems. I find it at least disrespectful.&lt;/p&gt;

&lt;p&gt;If you are a tech recruiter, I'll tell you what could be a better (and the right) way of doing an interview.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Put the Tech Lead or engineer to talk with the candidate, and ask questions about his experiences, it will give you about 50% you need to know.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ask him to show you some project that he's proud of, and ask questions based on it. "The candidate will love tell you about it".&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Send home-tests AWAYS based on the experience that the role REALLY needs or based on the candidate experience with at least 2 days to finish. (not a computer science algorithm to calculate the air volume of earth).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Finally, be human. Humans have depression, anxiety, stressful days, humans forget things, humans fail. These types of stressful hiring process can never judge the talent and experience of a professional.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My name is Jean, I'm a senior full-stack developer. I code, I manage, I design, I create, I help the team, but... I'm not perfect! I fail, I still have so much to learn, and... &lt;strong&gt;I'M NOT A ROBOT&lt;/strong&gt;. If your company need a "thing", that code anything besides any human and external enviroment problems in less than 30 minutes, make a bot yourself, or hire me to make it for you.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>hiring</category>
      <category>discuss</category>
      <category>devjournal</category>
    </item>
    <item>
      <title>Being a Dev with ADHD</title>
      <dc:creator>Jean Santana</dc:creator>
      <pubDate>Mon, 28 Jun 2021 12:52:09 +0000</pubDate>
      <link>https://forem.com/jsantanadev/being-a-dev-with-adhd-3oa3</link>
      <guid>https://forem.com/jsantanadev/being-a-dev-with-adhd-3oa3</guid>
      <description>&lt;p&gt;Probably many of you here suffer with the ADHD condition, and many of you here don't. Share this maybe make others feel more comfortable and make you that maybe work with a ADHD colegue or manage a Dev that have it, understand how is our day. &lt;/p&gt;

&lt;p&gt;Live with ADHD is not easy... You feel lost, you forget your tasks, you don't understand what you have to do, you don't find the best solution, your code sucks, you don't want work, you procrastinate, you give up.Yes, it's a mess... And it can even get worse when you work remotely.&lt;/p&gt;

&lt;p&gt;Focus is not the only monster that you have to fight when you are a Dev with ADHD. You still have to deal with not understand simple things of the language or framework, even if you try your best, you still don't understand and this can make you feel dumb, even you know you're not and you are a good developer.&lt;/p&gt;

&lt;p&gt;The sensation of losing yourself can make you feel like you are an impostor, that you can't do what you do,that everybody is better than you, that you will lose your job and will not achieve your goals in life, and yet, you have to try make others understand that is not all your fault.&lt;/p&gt;

&lt;p&gt;Only who have ADHD knows how being alive feels so bad sometimes. It can even lead you to a depressive condition, and you still try, take your pills and go fight for your place on this earth.&lt;/p&gt;

&lt;p&gt;Do you have ADHD? &lt;br&gt;
Do you work with someone that have it? &lt;br&gt;
Do you manage someone with ADHD? &lt;/p&gt;

&lt;p&gt;Leave in the comments your experience.&lt;/p&gt;

&lt;p&gt;"Sorry if I make some English mistake, it's not my native language."&lt;/p&gt;

</description>
      <category>dev</category>
      <category>adhd</category>
      <category>programming</category>
      <category>life</category>
    </item>
    <item>
      <title>ReactJS: Component everything or not?</title>
      <dc:creator>Jean Santana</dc:creator>
      <pubDate>Wed, 22 Jul 2020 03:15:21 +0000</pubDate>
      <link>https://forem.com/jsantanadev/reactjs-component-everything-or-not-4bkp</link>
      <guid>https://forem.com/jsantanadev/reactjs-component-everything-or-not-4bkp</guid>
      <description>&lt;p&gt;Hey devs! Since I started learn ReactJS some questions don't let me sleep. When we should create components?&lt;br&gt;
We should component everything or only if we will use it again in future? What is not a good practice put inside App.js?&lt;/p&gt;

&lt;p&gt;Sometimes I put a entire Form inside App.js and I don't know if it is a good practice when use React.&lt;/p&gt;

&lt;p&gt;Let me know what you think.&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>discuss</category>
    </item>
    <item>
      <title>ReactJS - tiny projects #1</title>
      <dc:creator>Jean Santana</dc:creator>
      <pubDate>Wed, 15 Jul 2020 19:37:12 +0000</pubDate>
      <link>https://forem.com/jsantanadev/reactjs-tiny-projects-1-hd4</link>
      <guid>https://forem.com/jsantanadev/reactjs-tiny-projects-1-hd4</guid>
      <description>&lt;p&gt;I made this pricing page in ReactJS for study! &lt;br&gt;
Tell me what you think :) &lt;br&gt;
Follow-me on Github for this and next projects.&lt;br&gt;
Github: &lt;a href="https://github.com/JSsantana" rel="noopener noreferrer"&gt;https://github.com/JSsantana&lt;/a&gt;&lt;br&gt;
Project: &lt;a href="https://codesandbox.io/s/github/JSsantana/react-pricing-page" rel="noopener noreferrer"&gt;https://codesandbox.io/s/github/JSsantana/react-pricing-page&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
