<?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: Aditya Agrawal</title>
    <description>The latest articles on DEV Community by Aditya Agrawal (@explorerforlife).</description>
    <link>https://dev.to/explorerforlife</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%2F474553%2F697fd584-ddf1-4bb2-b99f-88bae2e7c746.png</url>
      <title>DEV Community: Aditya Agrawal</title>
      <link>https://dev.to/explorerforlife</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/explorerforlife"/>
    <language>en</language>
    <item>
      <title>BEM methodology in CSS</title>
      <dc:creator>Aditya Agrawal</dc:creator>
      <pubDate>Sun, 13 Dec 2020 18:58:54 +0000</pubDate>
      <link>https://dev.to/explorerforlife/bem-methodology-in-css-j38</link>
      <guid>https://dev.to/explorerforlife/bem-methodology-in-css-j38</guid>
      <description>&lt;p&gt;&lt;strong&gt;BEM or Block, Element, Modifier is a popular and effective naming convention for classes in HTML and CSS. The main purpose of BEM is to provide developers more clarity, scalability, and easy reusability in code.&lt;/strong&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  What is BEM style?
&lt;/h2&gt;

&lt;p&gt;Classes named in context of BEM convention will look like below code snippet :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/* Block component or parent */
.link {}

/* Element or child item */
.link__primary {}
.link__secondary {}

/* Modifiers that style the block */
.link--active {}
.link--color {}
.link-bg-green {}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The block component &lt;code&gt;.link&lt;/code&gt; is like a parent element. All of the child elements of this block should have a name like &lt;code&gt;.link__primary&lt;/code&gt;, notice the two underscores followed by block name. Now, modifiers style the block element and they are written like &lt;code&gt;.link--active&lt;/code&gt;, these modifiers are named by putting two hyphens after the block element. &lt;/p&gt;




&lt;p&gt;The above code is easily readable to other developers, they can easily tell which classes are doing what.  In simpler words, BEM gives everyone in the team easy accessibility as the syntax is very declarative, the team members don't need to scratch their heads to know which components are doing what. &lt;em&gt;One main problem that BEM resolves is the fear of changing CSS code, yeah you heard it right. One change in bad codebase can crash the entire component because CSS just goes level by level, it doesn't have a good nature. So it is better to prepare for the chaos and BEM is an antidote to this chaos.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  More reasons to consider BEM
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You will have more confidence in your styling because it doesn't break easily and this is a good factor to look upon.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Everything is a class and nothing is nested.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes CSS specificity very very low, so you don't have to worry too much about specificity while styling.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The scalability of the codebase will increase because it can be easily modified and maintained in the future. Also, the reliability of code and trust of the team members improves a lot if the interface is maintainable. This is a good point for beginners.&lt;/li&gt;
&lt;li&gt;BEM naming conventions are customizable until you don't kill the core idea behind it. 
You can give it your own flair but other developers should find it easy to read.&lt;/li&gt;
&lt;li&gt;BEM is modular in nature, you can easily use previous block styles in a new project. This feature can save a lot of your time.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Wrapping up
&lt;/h2&gt;

&lt;p&gt;It is fair to say that BEM solves a lot of our problems and is a good habit to have as a developer. There are also other methodologies like  &lt;a href="http://oocss.org/"&gt;OOCSS&lt;/a&gt;,  &lt;a href="http://smacss.com/"&gt;SMACSS&lt;/a&gt;,  &lt;a href="http://suitcss.github.io/"&gt;SUITCSS&lt;/a&gt;. Every one of these has its own advantages and limitations including BEM, feel free to check them out. In the end, it depends on the developer's preference but one should not compromise on the maintainability of code. &lt;/p&gt;

&lt;p&gt;That's it from me, I hope it helps someone who is new to CSS or someone who is afraid of writing CSS. Tell me your thoughts in the comments!&lt;/p&gt;

</description>
      <category>css</category>
      <category>beginners</category>
      <category>webdev</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Get out of tutorial hell</title>
      <dc:creator>Aditya Agrawal</dc:creator>
      <pubDate>Fri, 27 Nov 2020 08:20:41 +0000</pubDate>
      <link>https://dev.to/explorerforlife/get-out-of-tutorial-hell-4h35</link>
      <guid>https://dev.to/explorerforlife/get-out-of-tutorial-hell-4h35</guid>
      <description>&lt;h4&gt;
  
  
  NOOOO, ANOTHER ARTICLE ABOUT TUTORIAL HELL!!
&lt;/h4&gt;

&lt;p&gt;I'm sure all of you have read a post on this topic at least once in your developer journey but it just doesn't happen because &lt;strong&gt;&lt;em&gt;coding is not that easy as people say&lt;/em&gt;&lt;/strong&gt;. Here, I will be talking about eight points which will help you to get out of hell.&lt;/p&gt;




&lt;h3&gt;
  
  
  Don't code with tutorial
&lt;/h3&gt;

&lt;p&gt;The problem with coding along with the tutorial is that you don't develop the muscle memory and thinking in programming. My mentor &lt;strong&gt;Tanay Pratap&lt;/strong&gt; says &lt;code&gt;learn programming before learning to code, learn how to think while coding&lt;/code&gt;. &lt;br&gt;
Take notes while watching/reading the tutorial and code later. Don't take help from the program until you're stuck for a long time.&lt;/p&gt;




&lt;h3&gt;
  
  
  Make habit of reading documentation
&lt;/h3&gt;

&lt;p&gt;Documentation is the best resource to find the solution because it's like a book where you'll find every aspect of the technology you're working on. It's boring and hard to read the documentation but good habits don't come easily. You have to scratch your head and get your hands dirty. Period.&lt;/p&gt;




&lt;h3&gt;
  
  
  Surround yourself with people smarter than you
&lt;/h3&gt;

&lt;p&gt;There is a saying that you're an average of 4-5 people you surround yourself with. Your social environment matters more than you think, so it's better to surround yourself with people smarter than you. Join a smart community, it will add great value to your thinking process and you'll get to know insights into the field you want to work in.&lt;/p&gt;




&lt;h3&gt;
  
  
  Read books
&lt;/h3&gt;

&lt;p&gt;Nothing can ever replace the beauty of a great book. In this time of videos/tutorials, books are often left behind and their knowledge is not utilized. The habit of reading books is powerful as they talk to you slowly and deep dive into the concept, tutorials don't cover this idea.&lt;/p&gt;




&lt;h3&gt;
  
  
  Stick to one tech stack
&lt;/h3&gt;

&lt;p&gt;I see a lot of newbies hopping into different technologies every month, this practice is neither good nor fruitful. It will constantly give the feeling of being overwhelmed by the different technologies available. Pick one tech stack which has remained popular for some years and will land you a job in the market. &lt;em&gt;Don't go with the hype, do your research first.&lt;/em&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Start small and easy
&lt;/h3&gt;

&lt;p&gt;Don't go to make a complex app straight away, you will forget how it works after a few months. Start small and build on your own, this will boost your confidence in the initial months of your journey. Progress slowly. &lt;em&gt;Prepare yourself for the marathon, not for the sprint.&lt;/em&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Picking projects and art  of googling
&lt;/h3&gt;

&lt;p&gt;As you start to build medium to large apps, it becomes necessary to pick different kinds of projects that will make your resume stand out among your peers.&lt;br&gt;
Problems will arise when you step out of your comfort zone, hence you spend a lot of time googling your problems. &lt;code&gt;Learning the art of googling your problem is an important skill&lt;/code&gt;. Read more about it, you know where :p.&lt;/p&gt;




&lt;h3&gt;
  
  
  Beauty is in the attempt
&lt;/h3&gt;

&lt;p&gt;Yes, beauty is in the attempt.&lt;br&gt;
&lt;code&gt;Don't think too much before starting a project, don't feel overwhelmed, don't think that you can't do it, don't think that you're incapable.&lt;/code&gt;&lt;br&gt;
If you don't attempt, you will never know. So go for it and step out of your comfort zone because that's where you will find good things waiting for you.&lt;/p&gt;




&lt;p&gt;I went through all of these problems when I started because it is easy to get lost when you don't know how to learn. Follow these habits because as renowned author &lt;strong&gt;James Clear&lt;/strong&gt; says - &lt;code&gt;When talent is lacking, habits will often suffice.&lt;/code&gt; &lt;br&gt;
That's all from my side, happy coding!&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>beginners</category>
      <category>motivation</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Perks of writing a good README file for beginners</title>
      <dc:creator>Aditya Agrawal</dc:creator>
      <pubDate>Thu, 26 Nov 2020 16:55:19 +0000</pubDate>
      <link>https://dev.to/explorerforlife/perks-of-writing-a-good-readme-file-for-beginners-5917</link>
      <guid>https://dev.to/explorerforlife/perks-of-writing-a-good-readme-file-for-beginners-5917</guid>
      <description>&lt;h1&gt;
  
  
  This is an article about READMEs.
&lt;/h1&gt;

&lt;h2&gt;
  
  
  First things first, why I am talking about READMEs here?
&lt;/h2&gt;

&lt;p&gt;A README is probably the first thing consumer sees on the repository, so as the author of the module it is our responsibility to show them exactly what they need and how can our module fulfill their need. Our job is to:&lt;/p&gt;

&lt;p&gt;a) &lt;strong&gt;tell them what it is&lt;/strong&gt;&lt;br&gt;
b) &lt;strong&gt;show them what it looks when it's live (a demo gif may work here)&lt;/strong&gt;&lt;br&gt;
c) &lt;strong&gt;show them how they use it&lt;/strong&gt;&lt;br&gt;
d) &lt;strong&gt;tell them any other relevant details&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Feeling lazy, sorry dude!
&lt;/h2&gt;

&lt;h2&gt;
  
  
  NO README, NO ABSTRACTION 💁‍♂️
&lt;/h2&gt;

&lt;p&gt;If you don't put a satisfactory README then developers have to look and deep dive into your code which is not a pretty thing to do in my opinion. The developers or consumers want to see your working module before they look into your code so it's better to use a little abstraction.&lt;/p&gt;




&lt;h2&gt;
  
  
  Okay, I will write one but how to write it?
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Here it goes 👇
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Project title&lt;/code&gt;&lt;br&gt;
A little info about your project and what it is about.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Features&lt;/code&gt;&lt;br&gt;
Tell the consumer about the unique features of your module and how it will solve their problem.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Tech Stack&lt;/code&gt;&lt;br&gt;
Mention all the technologies you used in the project.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Demo&lt;/code&gt;&lt;br&gt;
Add screenshots and demo gif of your working module. Trust me, this will add good value to your module.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;How to use&lt;/code&gt;&lt;br&gt;
Create a simple and easy to understand guide for consumers if they wish to interact with your working project.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;API Reference&lt;/code&gt;&lt;br&gt;
If you're using an API in your projects, tell the consumer what it does, and add a link to API docs if needed.&lt;/p&gt;

&lt;p&gt;Above mentioned points are enough for beginners who are starting their coding journey. You should keep in mind that adding links, demo, images, references, and interactivity will make you a better developer.&lt;/p&gt;




&lt;h2&gt;
  
  
  Some resourceful links coming your way 🚀
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Articles
&lt;/h3&gt;

&lt;p&gt;1) &lt;a href="https://github.com/noffle/art-of-readme#readme"&gt;"Art of Readme - Learn the art of writing quality READMEs"&lt;/a&gt; - Stephen Whitmore&lt;/p&gt;

&lt;p&gt;2) &lt;a href="https://thoughtbot.com/blog/how-to-write-a-great-readme"&gt;"How To Write A Great README"&lt;/a&gt; - Caleb Thompson&lt;/p&gt;

&lt;h3&gt;
  
  
  Examples of awesome READMEs
&lt;/h3&gt;

&lt;p&gt;1) &lt;a href="https://github.com/aimeos/aimeos-typo3#readme"&gt;aimeos/aimeos-typo3 &lt;/a&gt; - Project logo. Clear description of what the project does. Demo screenshot. TOC for easy navigation. Easy installation and setup sections with screenshots. Links for further reading.&lt;/p&gt;

&lt;p&gt;2) &lt;a href="https://github.com/ai/size-limit#readme"&gt;ai/size-limit &lt;/a&gt; -  Project logo, clear description, screenshot, step-by-step installing instructions.&lt;/p&gt;

&lt;p&gt;3) &lt;a href="https://github.com/iharsh234/WebApp#readme"&gt;iharsh234/WebApp &lt;/a&gt; - Project landing page. Clear description of what the project does. Demo screenshot. Simple install and usage sections. Includes an examples section with common uses and a mobile demo section.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;That's all folks, hope it helps the new comers!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>github</category>
      <category>markdown</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
