<?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: Raviraj Subramanian</title>
    <description>The latest articles on DEV Community by Raviraj Subramanian (@ravirajsubramanian).</description>
    <link>https://dev.to/ravirajsubramanian</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%2F79459%2F6844f2ab-3b52-47cb-bc0d-bebc22e96bc5.jpg</url>
      <title>DEV Community: Raviraj Subramanian</title>
      <link>https://dev.to/ravirajsubramanian</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ravirajsubramanian"/>
    <language>en</language>
    <item>
      <title>The Journey of 0-to-1 in Content Strategy</title>
      <dc:creator>Raviraj Subramanian</dc:creator>
      <pubDate>Tue, 12 Dec 2023 09:52:00 +0000</pubDate>
      <link>https://dev.to/ravirajsubramanian/the-journey-of-0-to-1-in-content-strategy-10e</link>
      <guid>https://dev.to/ravirajsubramanian/the-journey-of-0-to-1-in-content-strategy-10e</guid>
      <description>&lt;p&gt;&lt;em&gt;Hint: It's a no-metrics zone.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In the journey from 0 to 1, where time is a precious resource, the balance between content creation and metrics is crucial. Let's explore how to navigate this delicate equilibrium.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--f7UqlLz6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hz2ifa66ltvmxnwl9q4y.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--f7UqlLz6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hz2ifa66ltvmxnwl9q4y.jpg" alt="A person writing in the beach alone" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="https://www.pexels.com/photo/man-writing-in-notebook-on-a-beach-19357862/"&gt;Photo by Bruno Brandao&lt;/a&gt;
  &lt;/p&gt;

&lt;h2&gt;
  
  
  The Early Stage: Metrics Shouldn't Guide, but Enlighten
&lt;/h2&gt;

&lt;p&gt;In the initial phase, focus on creating content without being overly concerned about metrics. The goal is to take that first step, produce valuable material, and establish a foundation.&lt;/p&gt;

&lt;p&gt;Constantly measuring every detail too early can be counterproductive. Metrics should not dictate your every move but rather provide insights to challenge assumptions and hypotheses.&lt;/p&gt;

&lt;h2&gt;
  
  
  Iterate and Reflect
&lt;/h2&gt;

&lt;p&gt;Instead of micromanaging with constant measurements, schedule periodic reflections, say once a month or a quarter. This allows for a more comprehensive analysis of progress without overwhelming daily tracking.&lt;/p&gt;

&lt;p&gt;If engagement is lacking, consider positive pivots. For instance, experimenting with different content formats, like short videos over long video formats, based on observed engagement trends.&lt;/p&gt;

&lt;h2&gt;
  
  
  Freshworks Developer Platform Case Study
&lt;/h2&gt;

&lt;p&gt;The case study involves diversifying content formats but faces challenges in contributing to content with a broader reach.&lt;/p&gt;

&lt;h3&gt;
  
  
  Identifying an Easier Medium
&lt;/h3&gt;

&lt;p&gt;Recognizing the need for an easier medium, I introduced knowledge-base articles on our community platform, combining better reach with ease of contribution.&lt;/p&gt;

&lt;h3&gt;
  
  
  Frequency and SEO
&lt;/h3&gt;

&lt;p&gt;A strategic decision to publish articles frequently on the new platform with excellent SEO results in a compounding effect on reach. At some point, our team has contributed an article every day.&lt;/p&gt;

&lt;h3&gt;
  
  
  Metrics-driven Approach
&lt;/h3&gt;

&lt;p&gt;After a significant number of articles, we dived into analytics to measure engagement, user attraction, support ticket reduction, and identify the content gaps.&lt;/p&gt;

&lt;p&gt;Based on metrics, we adjusted the content creation frequency and type, optimizing for sustained engagement.&lt;/p&gt;

&lt;h2&gt;
  
  
  From 1 to N: The Role of Metrics Evolves
&lt;/h2&gt;

&lt;p&gt;As the initiative progresses from 0 to 1 and beyond, metrics evolve from being an occasional tool to a necessary guide in understanding audience behavior and refining strategies.&lt;/p&gt;

&lt;p&gt;Early concerns about missing out on metrics were, in hindsight, beneficial. It allowed our team to focus on content creation before diving into detailed measurements.&lt;/p&gt;

&lt;p&gt;In essence, the early stages require a focus on content creation, with metrics serving as occasional guides rather than strict rulers. Over time, strategic reflections, positive pivots, and metrics-driven adaptations become essential for sustained success.&lt;/p&gt;

</description>
      <category>contentwriting</category>
      <category>contentstrategy</category>
      <category>videoproduction</category>
    </item>
    <item>
      <title>Three skills to get job in web development</title>
      <dc:creator>Raviraj Subramanian</dc:creator>
      <pubDate>Fri, 14 Jan 2022 11:21:14 +0000</pubDate>
      <link>https://dev.to/ravirajsubramanian/three-skills-to-get-job-in-web-development-65k</link>
      <guid>https://dev.to/ravirajsubramanian/three-skills-to-get-job-in-web-development-65k</guid>
      <description>&lt;p&gt;Improving in three skills are important to get into a web development job from zero. But remember everyone starts from zero at some point in life.&lt;/p&gt;

&lt;p&gt;The important three skills are,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Technical Skills (Hard skills)&lt;/li&gt;
&lt;li&gt;Communication (Soft skill)&lt;/li&gt;
&lt;li&gt;Networking (Soft skill)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HsoaU1Tk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2sg3r7r7kl7ns0oyzf3i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HsoaU1Tk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2sg3r7r7kl7ns0oyzf3i.png" alt="Image of three overlapping circles for the three skills" width="880" height="810"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Your expertise on these skills decide how sooner you can get into a job. The better your skills are the more competitive you are. On the image, when you get to the region where all three circles overlap, &lt;a href="https://www.swyx.io/create-luck"&gt;your luck&lt;/a&gt; surface is widened.&lt;/p&gt;

&lt;p&gt;Let me expand on those three skills,&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Skills
&lt;/h2&gt;

&lt;p&gt;According to me, this is currently the Getting Started Kit for web development.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="http://freecodecamp.org"&gt;FreeCodeCamp&lt;/a&gt; - To get started with practical learning of basics. You would how do you learn here and on your smooth progress.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Web"&gt;MDN web docs&lt;/a&gt; - Reference document to learn about specifics. You would go back here when you want to understand a certain area better or just to get the syntax to use them properly. They also have tutorials and learning materials.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://stackoverflow.com"&gt;StackOverflow&lt;/a&gt; - An online Q&amp;amp;A forum. It has answers for almost everything already. Search your specific question online, StackOverflow has answer for you. Sign up on this forum and get involved by contributing as well.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When you evolve from a beginner, you will know where else you will have to learn and grow. That will be influenced based on your networking skill. I will cover that in the Networking skill section.&lt;/p&gt;

&lt;h2&gt;
  
  
  Communication skill
&lt;/h2&gt;

&lt;p&gt;In this planet, every species communicates in a way or another. So, it also means your life would be much better with a better communication skill. Job Interviews are built in ways that interviewers validate your technical and communication skills. Resumé is the first gateway where this validation happens. Have you thought about how do they do it just with your resumé?&lt;/p&gt;

&lt;p&gt;Communication skill is not straightforward like the technical skills. It varies since there's no set in stone way of communication. Even setting in a stone is a way of communication. 😅 So, it comes down to the requirement the job has, what the recruiting manager thinks is a better communication, and what the society has normalised as a better communication.&lt;/p&gt;

&lt;p&gt;For example, in India, if you speak and write English well, you are one step ahead already. It's the society norm. Most of the times, the recruiting manager may not think more than the society and industry norms. The job would require certain communication skills. Such as, Email writing for a email support staff, public speaking for a marketing staff, writing and English proficiency for technical writing staff, and documentation skill for any engineering role.&lt;/p&gt;

&lt;p&gt;Find the necessary skills and come up with a plan to learn them as start learning your technical skills. For instance, I started learning English by reading books and watching movies in English when I was getting better at my technical side as well. Technical writing and public speaking are other skills that I picked up in the recent years with my interest leaning towards them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Networking skill
&lt;/h2&gt;

&lt;p&gt;Networking is a powerful yet untapped skill for many. It works pretty well and it is easily recognisable to see it's benefit better than the other soft skills.&lt;/p&gt;

&lt;p&gt;When you join a more relevant tribe, you feel motivated. There are tech communities that can be considered a relevant tribe for your target technology. For example, I joined Chennai.js community to get better in JavaScript and to connect with folks in my living city (Chennai).&lt;/p&gt;

&lt;p&gt;The online forums and social networks open up the entire world for you. It is not limited by geographical limits anymore. I'm in another community in WhatsApp to join folks who learn international languages and I'm the only among the few from India and I have friends now in countries that I do not even know where is it in map. 😅&lt;/p&gt;

&lt;p&gt;Three steps you can start doing today:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Join local tech communities. I found some communities on Meetup app.&lt;/li&gt;
&lt;li&gt;Use social networks where the like-minded people roam around. After you have entered into a different world of technology, you would have to change your tribe anyway. Why not try it early? I notice Twitter and LinkedIn is where web developers are usually active. There could be others I may not know.&lt;/li&gt;
&lt;li&gt;When consuming content from the Internet, make room in your mind by not reading anything outside your focus area (Web development and software technologies, in this case). This would give you more time to read more within your focus area. Anyway, we would be interested to read about specific trends and topics outside our focus area that we will anyway read. That is totally fine as long as it doesn't consume majority of your reading time.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Right networking also provides you right content to consume at the right time. Finally, the benefit you get from joining tech communities and social networks are usually by-products. Find a reason to do it. For example, I first felt alone in the tech world with my specific growth mindset and I needed more similar folks to keep my motivation.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>networking</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Why meaningful names are important?</title>
      <dc:creator>Raviraj Subramanian</dc:creator>
      <pubDate>Sat, 20 Nov 2021 17:21:06 +0000</pubDate>
      <link>https://dev.to/ravirajsubramanian/why-meaningful-names-are-important-13i8</link>
      <guid>https://dev.to/ravirajsubramanian/why-meaningful-names-are-important-13i8</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;We name everything in code from directories and files to functions, arguments, and variables. Choosing good names takes more time and saves more than it takes. A name should answer all the questions that may pop up to the next coder.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why does it matter?
&lt;/h2&gt;

&lt;p&gt;We often excuse the subtle name with code comments. If a name requires a comment, it does not reveal the intent. Why should we give it a name when it does not solve the very reason it was considered?&lt;/p&gt;

&lt;p&gt;We go for a short names for simplicity-sake and without our knowledge, it makes a lot of assumptions about the reader to understand the same thing we do from the short name. When the assumptions are wrong, it will only arise more questions.&lt;/p&gt;

&lt;h2&gt;
  
  
  10 reasons why meaningful names are important
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Noise words like Info and Data are not helpful without distinction for names&lt;/li&gt;
&lt;li&gt;Pronounceable names are easy to read and search by humans.&lt;/li&gt;
&lt;li&gt;With larger scope, single letter or small names do not help much but make the job even harder defeating the purpose of using them.&lt;/li&gt;
&lt;li&gt;Generalisations only add disinformation if not true. For example, using List when it's actually not a list or using similar names would only confuse the programmer and considered disinformation.&lt;/li&gt;
&lt;li&gt;Humours and culture-oriented slangs do not mean the same everywhere. Do not use them.&lt;/li&gt;
&lt;li&gt;Problem domains are not completely understandable by the programmers. Use solution domain for names in the program. Problem domain names can be a last option as documentation or domain experts would be able to help. Do not use names from neither domains.&lt;/li&gt;
&lt;li&gt;Adding context to the names would look expanding the code. But, it will be found necessary reading the code after months by other teammates who has to take over the project or even by the same author.&lt;/li&gt;
&lt;li&gt;Clarity is king. Be creative to share enough context and still deliver clarity.&lt;/li&gt;
&lt;li&gt;Additional encoding adds extra burden to understand the code. For example, p_address for permanent address data. Do not use unnecessary encodings and go for meaningful complete names instead.&lt;/li&gt;
&lt;li&gt;Picking different names for the same concept confuses to understand the distinction or similarity. Pick one work per concept. For example, settle on one name among get, fetch, retrieve and one among manager, controller, handler, and driver.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Happy coding! 🙂&lt;/p&gt;

</description>
      <category>programming</category>
      <category>cleancode</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Clean Code, What? and Why?</title>
      <dc:creator>Raviraj Subramanian</dc:creator>
      <pubDate>Thu, 23 Jul 2020 03:58:27 +0000</pubDate>
      <link>https://dev.to/ravirajsubramanian/clean-code-what-and-why-4ep6</link>
      <guid>https://dev.to/ravirajsubramanian/clean-code-what-and-why-4ep6</guid>
      <description>&lt;h1&gt;
  
  
  What is &lt;code&gt;clean code&lt;/code&gt;?
&lt;/h1&gt;

&lt;p&gt;Well, Ideally, a properly written code by a professional is what is called as clean code.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Writing clean code is what you must do in order to call yourself a professional. There is no reasonable excuse for doing anything less than your best. - Robert C. Martin&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;How is it written will be covered in the latter part of this series. Let's see why is it important and what advantage does it provide you, your company, and your future self. 😉&lt;/p&gt;

&lt;h1&gt;
  
  
  Why clean code?
&lt;/h1&gt;

&lt;p&gt;Clean code in a project provides efficiency to the engineers over the time that it makes it easier to make changes in the future, easier to troubleshoot bugs, easier to add or remove a particular component without side-effects and there are a lot more advantages.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The code easier to read is easier to write.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Everybody has deadlines. Everybody has a client or customer who wants the code to be deployed soon. You're responsible for the code, not your boss, not your customer.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We like to think that we mostly do power typing. But we actually do is staring at the Abyss. - Douglas Crockford&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We may think we are going fast by skipping certain principles of coding and agile methodology. But, we are actually going slow.&lt;/p&gt;

&lt;p&gt;Before the application gets released, there will be bugs while testing the application for usability. We will go back to fix the bugs. There will be multiple releases for each bug fix cycle.&lt;br&gt;
Considering this fact, dirty code has more cost with respect to time. To say the truth, it actually takes more time than writing clean code.&lt;/p&gt;

&lt;p&gt;As a matter of fact, the ratio of time spent reading code versus writing is well over 10 to 1.&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%2Fi%2Ft453y1nh18pt7hac2bxw.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ft453y1nh18pt7hac2bxw.jpg" alt="Image for Code review scenario with two doors with minimal to maximum WTFs per minute"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's the "craftsmanship" that puts you behind the left door.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;There are two parts to learning craftsmanship: knowledge and work. You must gain the knowledge of principles, patterns, practices, and heuristics that a craftsman knows, and you must also grind that knowledge into your fingers, eyes, and gut by working hard and practicing. - on the book, Clean Code by Robert C. Martin (Uncle Bob)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Take doctors, for example. Will you accept for them to skip a few practices like washing hands before surgery?&lt;br&gt;
For accountants to skip copying certain records for auditing purposes?&lt;/p&gt;

&lt;p&gt;Every professionals follow their own set of principles and practices. Being professional is what makes a clean code possible.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“It is not enough for code to work.” - Robert C. Martin&lt;/p&gt;
&lt;/blockquote&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%2Fi%2Ftvaqmsooz4owhg8b4iet.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftvaqmsooz4owhg8b4iet.jpg" alt="Image on a meme about being professional"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What impacts a dirty code has?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It gets difficult to maintain the code. Remember the &lt;a href="https://en.wikipedia.org/wiki/Open-closed_principle" rel="noopener noreferrer"&gt;Open-Closed principle&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;As it is difficult to add features, the project backlog grows and slows down the application releases.&lt;/li&gt;
&lt;li&gt;Over time, it results in poor performance of the application.&lt;/li&gt;
&lt;li&gt;New developers joining the project get confused while reading the code to work on it.&lt;/li&gt;
&lt;li&gt;You or your company may end up losing the contract of the client.&lt;/li&gt;
&lt;li&gt;Poorly written code welcomes security breaches.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  What's next?
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;First, it is through practice in the small that professionals gain proficiency and trust for practice in the large. Second, the smallest bit of sloppy construction, of the door that does not close tightly or the slightly crooked tile on the floor, or even the messy desk, completely dispels the charm of the larger whole. That is what clean code is about. - James O. Coplien&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In painting, knowing the difference between the good art paint to the bad one does not mean we know how to paint. In the same way, the ability to differentiate clean code with the dirty code does not mean we know how to write clean code.&lt;/p&gt;

&lt;p&gt;In the following articles in this series, let's see how to write clean code by following certain practices, follow a checklist of a professional, and how each of them will help for the better.&lt;/p&gt;

</description>
      <category>code</category>
      <category>bugs</category>
      <category>developer</category>
      <category>agile</category>
    </item>
    <item>
      <title>Build a resume in the right way.</title>
      <dc:creator>Raviraj Subramanian</dc:creator>
      <pubDate>Sun, 10 May 2020 08:33:49 +0000</pubDate>
      <link>https://dev.to/ravirajsubramanian/build-a-resume-in-the-right-way-3emp</link>
      <guid>https://dev.to/ravirajsubramanian/build-a-resume-in-the-right-way-3emp</guid>
      <description>&lt;p&gt;Why does it important to build a resume in the first place? What is the right way? Is it the same everywhere and for everyone?&lt;/p&gt;

&lt;p&gt;Before jumping in to answer these questions, let's understand what does resume even means.&lt;/p&gt;

&lt;p&gt;The resume is a summary or a short form of &lt;a href="https://en.wikipedia.org/wiki/Curriculum_vitae"&gt;&lt;em&gt;curriculum vitae (CV)&lt;/em&gt;&lt;/a&gt; which means "&lt;em&gt;course of life&lt;/em&gt;" in Latin. So, it is a comprehensive overview of professional or educational history. Unlike a CV, the resume will only contain recent professional highlights in short notes.&lt;/p&gt;

&lt;p&gt;Thank you, &lt;a href="https://ladybug.dev"&gt;LadyBug podcast&lt;/a&gt; hosts, for motivating me to write this blog and given most of these details on &lt;a href="https://ladybug.dev/resumes"&gt;an episode&lt;/a&gt;. 🙏&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Back to the original question, why is it important to build a resume?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine buying a T-shirt. But, instead of looking at it yourself, based on what shopkeeper tell you, how this T-shirt will look like, what design it has, what cloth material it is, what size it is, and how it would fit you, will you be able to make a buying decision based on how the shopkeeper described it?&lt;/p&gt;

&lt;p&gt;Though you cannot try the T-shirt on you, how about taking a look at it yourself? How about taking a peek into its designs and touch and feel the quality of the material?&lt;br&gt;
Even e-commerce sites have some sample images, descriptions, specifications, and reviews from previous buyers to convince you.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I hope, you got my point here.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A resume is a tool to showcase your skills, valuable experiences, and academic background. It will make the potential employer take a justified hiring decision based on the provided information to understand how your individual contribution or leadership skills can contribute to the organization's success. Having a strong resume is what will set you apart from the competition.&lt;/p&gt;

&lt;p&gt;Let's jump next to how it can be written in the right way.&lt;/p&gt;

&lt;p&gt;There's no &lt;em&gt;one-right-way&lt;/em&gt; to build the resume.&lt;br&gt;
&lt;a href="https://i.giphy.com/media/DjclSiVtiB11C/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/DjclSiVtiB11C/giphy.gif" alt="Tony Stark waving bye, disappointing the congress, in IronMan movie"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The factors to consider before writing each section will let you decide what would be a suitable structure, what's important to include, and what can be skipped on your resume.&lt;br&gt;
With all the best practices considered, you will eventually get to the point of building the resume in the right way, for you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What are the factors that need to be considered?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;That depends.&lt;/em&gt;&lt;br&gt;
&lt;a href="https://i.giphy.com/media/U4VXRfcY3zxTi/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/U4VXRfcY3zxTi/giphy.gif" alt="Mr. Bean got disappointed"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's true. It completely depends on what information do you want to fill in your resume. You may or may not want to highlight specific information such as academic results in the irrelevant area, certifications, photograph of yourself, references, personal information, and so on.&lt;/p&gt;

&lt;p&gt;But, let's see if they should really be optional for a better resume.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Sounds easy, right?&lt;/em&gt;&lt;br&gt;
&lt;a href="https://i.giphy.com/media/j6qMqGnOZ9x0atp6Ug/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/j6qMqGnOZ9x0atp6Ug/giphy.gif" alt="Cat feels it is easy"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No, they may not necessarily be easy to make those decisions. Target geography, type of industry, the culture of the targeting company, and a few other factors need to be considered before adding or removing some information and structuring it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are the ways resume built, same across different countries?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It is definitely not the same way. But, some structures are followed the same way in many countries.&lt;/p&gt;

&lt;p&gt;For example, including the photograph is a matter of choice in South-East Asia and some other Asian countries like India, Pakistan, Sri Lanka, and Bangladesh.&lt;br&gt;
But, it is recommended to include it in the resume and most of the employers expect it from the candidates' resume in Europe. Also, it is preferred to use CV over a resume for some European countries.&lt;/p&gt;

&lt;p&gt;It is recommended to avoid photographs in the US as it may lead to bias based on racial preferences.&lt;/p&gt;

&lt;p&gt;So, the deep analysis of the geography has to be done before building your resume depending on your target country or region to avoid any biases and follow their cultural practices to attract the employer by showcasing your fit for the position.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are the ways resume built, same for every industry?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You know the answer, of course, it is &lt;em&gt;not&lt;/em&gt; the same standard across different industries.&lt;/p&gt;

&lt;p&gt;Some sections might be relevant for a particular industry and may not be relevant for the other, which is the reason why there's a variety in the resume standards.&lt;/p&gt;

&lt;p&gt;For example, in the case of the Software Engineer resume, you may include information on certifications on some technologies, participation in hackathons, most challenging software designs, open-source contribution, and some big failures. If you may take up a Sales professional career, you may highlight some of the deals closed, challenging prospects, winning over a big competitor, and some numbers like recurring revenue, total revenue, and lifetime value of the customers from the deals you have closed.&lt;/p&gt;

&lt;p&gt;The abstraction is the same even though the details might vary.&lt;/p&gt;

&lt;p&gt;So, let's jump into the point.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What information to add in your resume regardless of geography and industry?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Personal details&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fullname, email id, phone number should be added to notify the best way to contact you.&lt;/li&gt;
&lt;li&gt;Gender - It can be added if you wish. Anyway, it can most-probably be guessed from your full name.&lt;/li&gt;
&lt;li&gt;Age and Marital status - Again, it is your preference. It will help recruiters best guess the fit for the job if added.&lt;/li&gt;
&lt;li&gt;Sexual orientation - Need not to mention unless the target company has diversity policies that may add benefit to you and you think it is safe.&lt;/li&gt;
&lt;li&gt;Address - Your local address can be added. In case of the absence of a local address, the permanent address can be added. Never forget to add province/state and country along with the addresses.&lt;/li&gt;
&lt;li&gt;Nationality - It is must-needed information if case you're in a foreign country or the target country is different.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Objective or Summary&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ideal resume should have it.&lt;/li&gt;
&lt;li&gt;This should answer what are you looking for, from your new job.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Skills&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It may be your technical or non-technical skills depending on your industry.&lt;/li&gt;
&lt;li&gt;Only highlight the skills that wish to continue work on.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Experience&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It should be in reverse-chronological order. Keep it super-short. This should have the appropriate skills used and learned for the relevant job. * The description should have outcomes (mostly, in numbers) instead of the objectives and responsibilities.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Academics&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It should be in reverse-chronological order, as well.&lt;/li&gt;
&lt;li&gt;Prefer mentioning only the relevant studies or major educational milestones. For example, Ph.D., post-graduate, under-graduate, and other studies that are equivalent to a degree can be added here.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Social and professional handles&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Social network profiles and listing can be added to showcase your personal branding if they are career-oriented or professional.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Certification&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add the major relevant certifications along with the motivation of you to do the same.&lt;/li&gt;
&lt;li&gt;If they have a verifiable link, provide them as well.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Projects&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add the projects that you have done which are not part of your work. It can be a side-hustle, passion project, and even a hackathon project.&lt;/li&gt;
&lt;li&gt;Even add the projects that you've worked in a minor part with the highlight of your work on it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Hobbies&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It might be so intimidating to add your entertainment category of hobbies here. But, say a strict NO for them.&lt;/li&gt;
&lt;li&gt;Remember to add only the relevant hobbies for the role that you apply. For example, blogging would be a relevant hobby for technical writer role and marketing roles, competitive coding for software engineers, and reading books would be a fit for any roles. 📚 ❤️&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Designs&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Prefer designing the resume if you can. A plain resume would also be fine if they are crisp and clear.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Styles - Use bold and italic styles wherever appropriate. But, do not overdo it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fonts - Do not introduce more than two font families.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Colors - It sometimes depends on the company and its culture and interests on the casual to the professional level.&lt;br&gt;
There are some color themes are preferred in the market such as,&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Mono-color: One color shade with different hues used.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Triadic: Three different colors in the color wheel with equal distance chosen to attract eyes. This may stand out when compared with other resumes because it may look crazy. So, it is not recommended for a traditional professional role.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Complementary color palettes: Using two opposite colors in the color wheel throughout the resume.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whatever you choose, make sure the end resume still looks professional. Send the resume as PDFs to make sure all your efforts on the looks were the same when the recruiters see.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What can be preferred to skip?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;More pages&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Typically one page is enough unless you have more than 7 years of experience. In that case, two pages maximum. Be mindful that recruiters spend an average of 7.4 seconds looking at your resume.&lt;/li&gt;
&lt;li&gt;Do not clutter the details. Exceptionally, you can extend the pages if needed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Paragraphs&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Do not use paragraphs. Always use bullet points that will help skim through the details quickly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Photograph&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It is not needed most of the time. You can add if you wish and think it will give more confidence to you and the recruiter for some profession.&lt;/li&gt;
&lt;li&gt;Beware that you might be judged with it in some regions in Asia and the United States, it may even go up to lower priority in opportunity and rejections.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Repetitive words&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Unconsciously you might have over-used some words repeatedly.&lt;/li&gt;
&lt;li&gt;Try to be clever to find new synonyms and enrich your phrases with similar words but not the same.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Date&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Just month and year will do. Do not attach date in any details such as date-of-birth, education, experience, certification, courses, and so on.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Irrelevant hobbies&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Some irrelevant hobbies would even backfire for you. So, do not include entertainment and lazy activities and other irrelevant hobbies.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Grammatical mistakes&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It might sound funny. I have found grammatical mistakes and typos in some of my friends' resumes and candidates applied for interviews.&lt;/li&gt;
&lt;li&gt;Use grammatical checker tools like &lt;a href="https://www.grammarly.com"&gt;Grammarly&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So far, we have seen how the resume can be written in the right way by considering the factors listed above.&lt;br&gt;
Let's see what are the other ways to showcase your profile to the employer rather than writing a resume which has these many struggles.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Other ways to showcase skills and experiences:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Portfolio sites&lt;/strong&gt;&lt;br&gt;
This is famous across many industries from software engineering and bloggers to fashion and photography.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can alternatively go with a portfolio site that will showcase all the above details with some interactive page rather than a two-page static content. It can also be attached along with the resume.&lt;/li&gt;
&lt;li&gt;It has some advantage of making it an awesome experience from creative designs to cool way of interactivity on the webpage.&lt;/li&gt;
&lt;li&gt;This can have many pages and a list of portfolio highlights without boring the recruiter.&lt;/li&gt;
&lt;li&gt;It can be maintained with real-time updated data to see, though applied for jobs a few days or weeks before.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Professional and social networks&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can build and maintain some of your professional and social profiles and use them to highlight your works and activities.&lt;/li&gt;
&lt;li&gt;LinkedIn, Medium, GitHub, Pinterest, Dribble, and Product Hunt are some of the social profiles used as resumes.&lt;/li&gt;
&lt;li&gt;Sometimes, this may not be strong enough to send to the recruiters without a resume.&lt;/li&gt;
&lt;li&gt;A resume or a cover letter or both can be attached together to go as a perfect profile showcase kit.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Some of the samples of resumes&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Mine - ravirajsubramanian.github.io
I have not used this for any career change, so it was experimental when I built and may not be updated now. I wish to keep it updated always and it gets postponed due to some of my side-project that I never complete. 😝&lt;/li&gt;
&lt;li&gt;Emma Bostian - &lt;a href="https://emmawedekind.com/resume-templates"&gt;https://emmawedekind.com/resume-templates&lt;/a&gt; and &lt;a href="https://twitter.com/emmabostian/status/1235154752700375041"&gt;https://twitter.com/emmabostian/status/1235154752700375041&lt;/a&gt;
&lt;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zFRWuZE0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/media/ESQmZQuXsAABUiN.jpg" alt="unknown tweet media content"&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--oKETWI0Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1239969385579773952/756CZbQE_normal.jpg" alt="Emma Bostian 🐞 profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Emma Bostian 🐞
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="comment-mentioned-user" href="https://dev.to/emmabostian"&gt;@emmabostian&lt;/a&gt;

      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P4t6ys1m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      Inspired by my course with LinkedIn Learning (formerly &lt;a href="https://t.co/gDikfWlX49"&gt;Lynda.com&lt;/a&gt;), I've just re-done my resume! &lt;br&gt;&lt;br&gt;What does yours look like? Post below 👇 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      10:46 AM - 04 Mar 2020
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1235154752700375041" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-reply-action.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1235154752700375041" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-retweet-action.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      29
      &lt;a href="https://twitter.com/intent/like?tweet_id=1235154752700375041" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-like-action.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
      911
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Sample portfolio sites&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://iamsaravieira.com"&gt;https://iamsaravieira.com&lt;/a&gt; - Programming&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.dimeloper.com"&gt;https://www.dimeloper.com&lt;/a&gt; - Programming&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://sarah.dev"&gt;https://sarah.dev&lt;/a&gt; - Developer Experience&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.alispit.tel"&gt;https://www.alispit.tel&lt;/a&gt; - Programming teacher&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://nareshnilphotography.com"&gt;http://nareshnilphotography.com&lt;/a&gt; - Photography&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.ijustine.com"&gt;https://www.ijustine.com&lt;/a&gt; - YouTuber&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>resume</category>
      <category>cv</category>
      <category>career</category>
      <category>interview</category>
    </item>
    <item>
      <title>How to use Git and GitHub for collaborative programming?</title>
      <dc:creator>Raviraj Subramanian</dc:creator>
      <pubDate>Sun, 14 Oct 2018 11:21:16 +0000</pubDate>
      <link>https://dev.to/ravirajsubramanian/how-to-use-git-and-github-for-collaborative-programming-14a3</link>
      <guid>https://dev.to/ravirajsubramanian/how-to-use-git-and-github-for-collaborative-programming-14a3</guid>
      <description>&lt;p&gt;October 2018&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally posted at &lt;a href="https://medium.com/@ravirajsubramanian/how-to-use-git-and-github-for-collaborative-programming-955da6876aa9"&gt;Medium&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is a sequel of my basic tutorial on Git and GitHub posted &lt;a href="https://dev.to/ravirajthedeveloper/what-is-git-and-github-and-how-to-use-github-2mb1"&gt;here&lt;/a&gt;. If you’re new to Git or GitHub, I would suggest you to start reading from there.&lt;/p&gt;

&lt;h2&gt;
  
  
  Catalog:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Organizations&lt;/li&gt;
&lt;li&gt;Forks&lt;/li&gt;
&lt;li&gt;Pull Requests&lt;/li&gt;
&lt;li&gt;Code Review Process&lt;/li&gt;
&lt;li&gt;Deployment&lt;/li&gt;
&lt;li&gt;Tags&lt;/li&gt;
&lt;li&gt;Releases&lt;/li&gt;
&lt;li&gt;Advanced features&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I have given you the basic idea of Git and GitHub in my previous post. In this post, we are going to see how we can improve knowledge on &lt;a href="https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control"&gt;VCS (Version Control System)&lt;/a&gt; and make our development process more structured to work with a community or Co-workers for better collaborative programming.&lt;/p&gt;

&lt;p&gt;Okay, I said “&lt;strong&gt;A community&lt;/strong&gt;” or “&lt;strong&gt;Co-workers&lt;/strong&gt;”. If they also want to contribute, how they can see and work on your own cloud repository? We need a common repository to place our project so that every other person wants to work on the project can access it.&lt;/p&gt;

&lt;p&gt;How do we do that? Here we go.&lt;/p&gt;

&lt;h3&gt;
  
  
  Organizations
&lt;/h3&gt;

&lt;p&gt;The organization is like creating a group in GitHub just like Groups in other social media or messaging platforms such as Facebook, WhatsApp, Skype, etc.&lt;/p&gt;

&lt;p&gt;What is awesome than a group of programmers in one place! 💙&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--X322DpS7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/cdkqkboprlm29adqcs4w.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--X322DpS7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/cdkqkboprlm29adqcs4w.jpg" alt="Photo of people at work fist bumping"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let’s start by creating an organization.&lt;/p&gt;

&lt;p&gt;Go to the homepage of &lt;a href="https://github.com/"&gt;GitHub&lt;/a&gt; or &lt;a href="https://github.com/"&gt;click here&lt;/a&gt; to see the following screen.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QZCvg08O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/qn81ijxls98grv0eenov.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QZCvg08O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/qn81ijxls98grv0eenov.png" alt="GitHub homescreen"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you’re not a Hacker, you have to log in first to see the above screen. 😬&lt;/p&gt;

&lt;p&gt;At the right top, you have this &lt;code&gt;+&lt;/code&gt; icon, clicking on it will open up this drop-down window.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--H07op1V5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/8v2h0dcu3w3epkr8yzkz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--H07op1V5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/8v2h0dcu3w3epkr8yzkz.png" alt="Picture of the new organization option in the drop-down"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You already got the idea, aren’t you? If you still haven’t, You have to click on “&lt;strong&gt;Create new organization&lt;/strong&gt;” to create a new organization. 😑&lt;/p&gt;

&lt;p&gt;Fill in some basic details like the organization name, Email ID, etc. As of now, you can create it in the free plan since we are not going to create any private projects. When you are creating an organization for your company or some team where you want to keep your project private, you have to set up the payment settings in this step.&lt;/p&gt;

&lt;p&gt;We don't need to add additional members as of now, you can do it at any time at the later point of time. Just fill in the other mandatory details and complete the creation of a new organization.&lt;/p&gt;

&lt;p&gt;Cheers! Now you got your own organization. 😎&lt;/p&gt;

&lt;p&gt;Organizations can hold of projects (AKA repositories) and existing members of GitHub as part of it. So, we have to create a project in the organization to let the other people work on it along with us as a team.&lt;/p&gt;

&lt;p&gt;Waiting for what? Let’s create one.&lt;/p&gt;

&lt;p&gt;In the homepage of your organization, you can see a button named, “&lt;strong&gt;New&lt;/strong&gt;”. Clicking on it will open up a window where you can fill in some details and create a repository just like creating a repository with our own account. The only difference is, the repository is owned by the organization, not you even though it was created by very you. What does it mean? It means that only who get admin access to your organization can do whatever with these repositories and no other members can.&lt;/p&gt;

&lt;p&gt;Don’t worry. Currently, you’re the only admin for your organization.&lt;/p&gt;

&lt;p&gt;You cannot push code to the repository that you just created on your own organization.&lt;/p&gt;

&lt;p&gt;Yes, you read it right. You just shouldn’t, if you really want to work collaboratively with your team, friends or peer programmers.&lt;/p&gt;

&lt;p&gt;As I mentioned before, the repo is owned by the organization. Which means every member working on the projects has to know what’s going on. You should not change something in the code and push it directly. You need to suggest changes and submit as a proposal. so that other members will review the code and we can push the code when everyone approves. When the organization grows like many open-source organizations, only authorized admins will approve the changes to not to break the application.&lt;/p&gt;

&lt;p&gt;Okay, how do they do it? That’s where the Forking comes into play.&lt;/p&gt;

&lt;h3&gt;
  
  
  Forks
&lt;/h3&gt;

&lt;p&gt;A fork is nothing but a copy of the repository.&lt;/p&gt;

&lt;p&gt;Let’s fork!&lt;/p&gt;

&lt;p&gt;In the homepage of your organization’s project, you can see a button named, “&lt;strong&gt;Fork&lt;/strong&gt;” in the right top as shown below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--V29vKp93--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/lxxikwcy3ol8srommnky.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--V29vKp93--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/lxxikwcy3ol8srommnky.png" alt="Picture of Fork option"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you fork the repo you just created in the organization, it will ask under which account you want to create this fork. Click on your account where do you see your username and your profile picture. Now you got the copy of your organization’s repo under your account. It's called the fork of the organization's repo.&lt;/p&gt;

&lt;p&gt;You know what, you’re the owner of this copied fork repository. (Even though it inherits some of its properties of organization’s repo like security configurations, etc.)&lt;/p&gt;

&lt;p&gt;What’s the difference between the fork and your own repository?&lt;/p&gt;

&lt;p&gt;The fork is always linked to the original repo of others and the other organizations as the parent. So if you want to propose a code change to their repo, you can easily give from the forks since it knows it’s parent, apparently.&lt;/p&gt;

&lt;p&gt;You cannot propose code changes to any other repositories from some other repo you create on your account. It just doesn’t work like that.&lt;/p&gt;

&lt;p&gt;You can create any number of branches and change anything in this project by pushing your commits to it.&lt;/p&gt;

&lt;p&gt;But, how do we suggest these changes to the organization’s repo? Proceed further to find the answer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pull Requests
&lt;/h3&gt;

&lt;p&gt;Pull request (AKA PR) is the method of proposing code changes to the parent repo or even one branch to another in the same repo.&lt;/p&gt;

&lt;p&gt;Whenever you work on a feature or fixing a bug or even some random code change, usually you will commit the code and push to the cloud on your personal repository. In the organization's repo, you cannot simply push your changes as it is. You have to propose the change and the other members of the organization have to review and merge your proposed change with the organization's repo.&lt;/p&gt;

&lt;p&gt;So, you would not be the only one to take the blame when something goes wrong in the code base. 😝&lt;/p&gt;

&lt;p&gt;But, the pull request is more than just a change proposal. It’s a dedicated forum for discussing the proposed code change. If there are any problems with the changes or something need to be discussed about some code change, organization members can post feedback in the pull request and even tweak the code by pushing follow-up commits.&lt;/p&gt;

&lt;p&gt;Let's see this in action.&lt;/p&gt;

&lt;p&gt;Clone your fork repository to your local machine. Create a new branch, let's name it &lt;code&gt;feature/first-proposal&lt;/code&gt; and make some code change in the branch and push the commit to your fork in the cloud.&lt;/p&gt;

&lt;p&gt;If you don't how to do it, refer my &lt;a href="https://dev.to/ravirajthedeveloper/what-is-git-and-github-and-how-to-use-github-2mb1"&gt;previous article&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Now open your fork repository in the browser. You can see a drop-down to change the project as shown below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FO5nxkIU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/g079upf40l2a4uy3b9ng.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FO5nxkIU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/g079upf40l2a4uy3b9ng.png" alt="Picture of list of branches drop-down"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now go to your new branch by selecting &lt;code&gt;feature/first-proposal&lt;/code&gt; in the drop-down.&lt;/p&gt;

&lt;p&gt;Let's raise a Pull request by clicking the "&lt;strong&gt;New pull request&lt;/strong&gt;" next to the branch selecting drop-down. Now it will just preview the pull request that you're about to raise. You can change any details, modify the pull request name and change the parent branch to which you're proposing the code change. Once you're sure about all the details click on "&lt;strong&gt;Create pull request&lt;/strong&gt;" to confirm the proposal.&lt;/p&gt;

&lt;p&gt;You have successfully filed a Pull request to the organization repo. Now everything we need to do is to let any other member of the organization to review this pull request by sharing the link to this PR. You can just copy it from the browser address bar.&lt;/p&gt;

&lt;h3&gt;
  
  
  Code review process
&lt;/h3&gt;

&lt;p&gt;When you raise a PR, the other members of the organization review your code just to make sure you did not break any existing features of the project by adding some additional code or removing some code. 😝&lt;/p&gt;

&lt;p&gt;And it's vice-versa, you will have to review your teammates' code so that you will know what's going on with the project.&lt;/p&gt;

&lt;p&gt;So how do we do it?&lt;/p&gt;

&lt;p&gt;Click on the tab saying "&lt;strong&gt;Files changed&lt;/strong&gt;" as shown below, which will open up a page showing all code changes in some color codes in all the files that you or your teammate changed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KrhIMHTC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ao9ggrdegawxk7jzp77c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KrhIMHTC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ao9ggrdegawxk7jzp77c.png" alt="Picture of button of Files changed"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ECRX-V6O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/cbvs6z7ywgnxe82zmz7s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ECRX-V6O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/cbvs6z7ywgnxe82zmz7s.png" alt="Picture of the differences of code changes with red and green color"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the above picture, the code shown in green are the ones that have been added to the project and the ones shown in red are removed from the project. Also, you can see &lt;code&gt;+&lt;/code&gt; or &lt;code&gt;-&lt;/code&gt; signs before every line which is self-explanatory as the same purpose as the color codes do.&lt;/p&gt;

&lt;p&gt;The reviewer has to go through all the code change and see if there's any mistake made in the code that is obvious. If there's any mistake or something has to be done differently or missed, the reviewer can leave a comment to the request. You don't need to go anywhere to put a comment, an awesome feature which GitHub has done to you is that you can leave a comment on any line and it will be pointing the exact line to anyone viewing the PR later.&lt;/p&gt;

&lt;p&gt;When you hover over the code, you can see a blue colored button with &lt;code&gt;+&lt;/code&gt; (plus) icon appears before the line starts, clicking on it will open up a comment box in the very same line. You can type anything, tag anybody in the organization and you can do many more things just like any other comment box. Even emojis are supported. 😉&lt;/p&gt;

&lt;p&gt;Then the requester will get a notification through Email and in the GitHub notifications about the comment in their PR. And even the reviewer can inform the requester in any chat to get their immediate attention. The conversations in the PR can be continued or relevant changes can be done and pushed with additional commits to the same branch.&lt;/p&gt;

&lt;p&gt;After the requester addresses all the comments left by the reviewer, now the "&lt;strong&gt;Files changed&lt;/strong&gt;" page will be updated and the reviewer has to go through the changes again to make sure there are no worse things happened in the next commits. 😝&lt;/p&gt;

&lt;p&gt;Please read &lt;a href="https://hackernoon.com/the-art-of-humanizing-pull-requests-prs-b520588eb345"&gt;this article&lt;/a&gt;, it is an interesting article on how the pull request and the code review process has to be done in a polite and friendly manner.&lt;/p&gt;

&lt;p&gt;Once everything looks fine, the reviewer has to approve the pull request by clicking on the "&lt;strong&gt;Review changes&lt;/strong&gt;" button and submit with "&lt;strong&gt;Approve&lt;/strong&gt;" radio button checked as shown below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6TuCpCia--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ax0dplfn7psx9kzuvgo5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6TuCpCia--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ax0dplfn7psx9kzuvgo5.png" alt="Picture of pull request approval option"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And merge the pull request with the master branch of the organization's repository by clicking "&lt;strong&gt;Merge pull request&lt;/strong&gt;" button and confirming it as shown below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Gw2PSNFJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/f9q2n7n5pcv4vbqzszoc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Gw2PSNFJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/f9q2n7n5pcv4vbqzszoc.png" alt="Picture of merge pull request button"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pull request need not be approved to get merged with the organization repo unless it is configured so. So, you can review the code changes yourself and merge it with the master branch without approval. But ideally, it is not advised.&lt;/p&gt;

&lt;h3&gt;
  
  
  Deployment
&lt;/h3&gt;

&lt;p&gt;In the organization's projects, we will deploy the code somewhere through FTP or some containerization tool(Docker or Kubernetes) on the cloud through any service provider such as Amazon Web Services, Azure Cloud, Google Cloud Platform to name a few.&lt;/p&gt;

&lt;p&gt;Whenever we make changes, we might want to deploy the code to any server instance created in any of the cloud services.&lt;/p&gt;

&lt;p&gt;It is completely fine if you have done it before or even heard of it. We are not going to do this right now because it is a wide topic to learn dedicatedly.&lt;/p&gt;

&lt;p&gt;If DevOps team or some other people does these work in your organization, it is right time you learn it and work with them on this process as it is becoming more of a required skill set for the developers as well.&lt;/p&gt;

&lt;p&gt;We are not going to cover deployment steps as there are a ton of resources available for each service provider on their official websites and other resources online. We are only going to see how do we store the different version of the code base with the use of git and how are we going to differentiate the latest released version for easier deployment process.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tags
&lt;/h3&gt;

&lt;p&gt;Tags are nothing but naming a released version of the project and keep the whole project files at any stage in some compressed format as a back-up.&lt;/p&gt;

&lt;p&gt;The process is similar to the branches.&lt;/p&gt;

&lt;p&gt;Let's create a tag by running the following command by opening up a terminal window on your project directory.&lt;br&gt;
&lt;code&gt;git tag v1.0&lt;/code&gt;&lt;br&gt;
&lt;em&gt;v1.0&lt;/em&gt; is the tag's name here. It is just like a branch name, you can type anything instead of that.&lt;/p&gt;

&lt;p&gt;Let's push this tag to your fork repository in the cloud.&lt;br&gt;
&lt;code&gt;git push origin v1.0&lt;/code&gt;&lt;br&gt;
The above command will push the tag to your fork which means that you have taken backup project files in your cloud. It can be fetched and restored anytime. When something collapses in the deployed server, you can make use of these tags to rollback to the previous version of the project. Usually, tags are pushed in the organization's repository instead of anyone's fork repo to keep the tags available organization-wide.&lt;/p&gt;

&lt;p&gt;So how do we restore a tag pushed to the cloud?&lt;/p&gt;

&lt;p&gt;The command &lt;code&gt;git fetch origin&lt;/code&gt; will fetch all the branches as you know. It will also download all the tags to your local machine.&lt;/p&gt;

&lt;p&gt;You can see all the tags by executing, &lt;code&gt;git tag&lt;/code&gt;. It will list the names of all the tags in your local machine.&lt;/p&gt;

&lt;p&gt;Let's say, you made a lot of commits and moved on with some other branch and your product owner/manager asks you to rollback to the &lt;em&gt;v1.0&lt;/em&gt; version to the development environment in the cloud server.&lt;/p&gt;

&lt;p&gt;You can fetch all the tags from the cloud using the commands listed above. You can restore a particular tag using &lt;code&gt;git checkout origin/v1.0&lt;/code&gt; just like checkout to a branch. It will restore the code from the tag v1.0 as you have backed it up. Now you can proceed to deploy the code to the server from your local machine.&lt;/p&gt;

&lt;h3&gt;
  
  
  Releases
&lt;/h3&gt;

&lt;p&gt;Multiple deployments down the line, you or your team members would not be able to remember which version is deployed when and why. Also, we cannot have a track of which version is live in the server now. So we need to manually track it somewhere or we simply do the following to keep track of the released live version of the project.&lt;/p&gt;

&lt;p&gt;You can find a tab called "&lt;strong&gt;releases&lt;/strong&gt;" as shown below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lHgpgPHz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/dth59za3j6y2t0r9ydsv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lHgpgPHz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/dth59za3j6y2t0r9ydsv.png" alt="Picture of releases tab"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on the "&lt;strong&gt;Tag&lt;/strong&gt;" tab as shown below to see the list of tags so far that has been pushed to your cloud repository.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LbMYbf_6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/26zpy59j6gh88cbp6vzk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LbMYbf_6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/26zpy59j6gh88cbp6vzk.png" alt="Picture of Tags tab"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select the tag that you want to name as the latest release. Then click on the "&lt;strong&gt;Edit tag&lt;/strong&gt;" button on the right top corner as shown below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7y4O0bX3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/9rni3yaqqgsjb5v7d91q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7y4O0bX3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/9rni3yaqqgsjb5v7d91q.png" alt="Picture of option to edit tag"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now it will ask you some details to fill in. Don't worry it's not a job application, it only has a few fields to type in. 😉&lt;/p&gt;

&lt;p&gt;Type any name in the "&lt;strong&gt;Release title&lt;/strong&gt;" field, the same as the tag name would be fine. Then type any summary about this release to let your teammates know about the release if you want, otherwise leave it blank.&lt;/p&gt;

&lt;p&gt;Go ahead and submit the release.&lt;/p&gt;

&lt;p&gt;Now you can see the details of this tag on the top marked as "&lt;strong&gt;Latest release&lt;/strong&gt;" in the "&lt;strong&gt;Releases&lt;/strong&gt;" page as shown below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hGm-IK1d--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/lvynknm81z45pxpr9pzb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hGm-IK1d--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/lvynknm81z45pxpr9pzb.png" alt="Picture of details of latest release"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can follow the same steps to push a new tag every time there's a new version needs to be deployed to the cloud server.&lt;/p&gt;

&lt;p&gt;Awesome! We are done with the basic workflows followed in the collaborative programming in the organizations these days.&lt;/p&gt;

&lt;h3&gt;
  
  
  Advanced features
&lt;/h3&gt;

&lt;p&gt;The following are some of the advanced features in Git that you can use to make your development process smarter.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Save the code changes in memory without committing or losing it with the feature of &lt;code&gt;git stash&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Edit commit messages, Squashing multiple commits into one, remove a commit in a branch and much more with the "Rebase" feature using the command &lt;code&gt;git rebase&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;See the whole logs of the commits and even the code changes with &lt;code&gt;git log&lt;/code&gt; command.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use any particular commit made in the past in your current branch with the use of &lt;code&gt;git cherry-pick&lt;/code&gt; command&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;See the code changes with smart filtering options like the commit author, or particular word in the code and much more to find any commits in the past with &lt;code&gt;git blame&lt;/code&gt; command&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of the above said commands have to be used with some more options passed along with it to actually make it work. Learn about them before using those and make sure you don't collapse the code base and lose anything.&lt;/p&gt;

&lt;p&gt;If you like this post, like it. Even bookmark it if you really found it useful. 😉&lt;/p&gt;

&lt;p&gt;Let's connect on social platforms,&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/ravirajthedeveloper"&gt;GitHub&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/ravirajsubramanian"&gt;LinkedIn&lt;/a&gt;, &lt;a href="https://twitter.com/ThisIsRaviraj"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Happy coding. 👩‍💻🙂&lt;/p&gt;

&lt;p&gt;- &lt;a href="https://about.me/ravirajsubramanian"&gt;Raviraj Subramanian&lt;/a&gt;&lt;/p&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>beginners</category>
      <category>productivity</category>
    </item>
    <item>
      <title>What is Git and GitHub? And how to use GitHub?</title>
      <dc:creator>Raviraj Subramanian</dc:creator>
      <pubDate>Wed, 11 Jul 2018 20:22:50 +0000</pubDate>
      <link>https://dev.to/ravirajthedeveloper/what-is-git-and-github-and-how-to-use-github-2mb1</link>
      <guid>https://dev.to/ravirajthedeveloper/what-is-git-and-github-and-how-to-use-github-2mb1</guid>
      <description>&lt;p&gt;July, 2018&lt;/p&gt;

&lt;p&gt;Originally posted on &lt;a href="https://medium.com/@theraviraj/what-is-git-and-github-and-how-to-use-github-f49d6be08b25" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Have you ever wondered how big projects are done by huge people working on it and how people manage to deliver it quickly? Answer for this has been described in this post. For instance, they use “Git” or something similar as a version control system to manage the development and project release. Here we are going to see why and how it is used.&lt;/p&gt;

&lt;h2&gt;
  
  
  Catalog:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Git&lt;/li&gt;
&lt;li&gt;GitHub&lt;/li&gt;
&lt;li&gt;Installation of Git&lt;/li&gt;
&lt;li&gt;Set-up GitHub&lt;/li&gt;
&lt;li&gt;Project setup&lt;/li&gt;
&lt;li&gt;Branching&lt;/li&gt;
&lt;li&gt;Git Commands&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To whom this post will be useful?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Any kind of Software Programmer&lt;/li&gt;
&lt;li&gt;Newbie for Git and GitHub&lt;/li&gt;
&lt;li&gt;Computer Science or similar degree student&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Git:
&lt;/h2&gt;

&lt;p&gt;Git is basically a version control system (aka VCS). There are a bunch of version control system tools are available. We are going to pick GitHub, which is a familiar cloud service provider for all your VCS needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  About GitHub:
&lt;/h2&gt;

&lt;p&gt;It is great git tool with nice UI and it’s pretty easy to use. Though, it is giving their services to open-source/public projects for free, it has some pricing for private projects.&lt;/p&gt;

&lt;p&gt;Didn’t you read the latest news about Microsoft’s acquisition of GitHub. Yes, GitHub is now a product of one of the big players. &lt;a href="https://blogs.microsoft.com/blog/2018/06/04/microsoft-github-empowering-developers/" rel="noopener noreferrer"&gt;Read more about it&lt;/a&gt;.&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fo899hg66zx6yhrpz0nfm.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%2Fo899hg66zx6yhrpz0nfm.jpg" alt="Microsoft acquired GitHub"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Why you should use a version control system?&lt;/p&gt;

&lt;p&gt;Because no one should go through the struggle of naming their project folder like,&lt;/p&gt;

&lt;p&gt;project (1), project-copy, project-new, project-final, project-final (1), project-final-final, etc.,&lt;/p&gt;

&lt;p&gt;If you still like that way. This post might disappoint you. 😐&lt;/p&gt;

&lt;p&gt;How will Git be useful for you and/or your organization?&lt;/p&gt;

&lt;p&gt;You can keep your project files in organized way that you haven’t imagined before and you can also work in a project with multiple people working on the same at a time.&lt;/p&gt;

&lt;h1&gt;
  
  
  Don’t believe me?
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://www.linuxfoundation.org/projects/linux/" rel="noopener noreferrer"&gt;Linux project&lt;/a&gt; uses git with hundreds of thousands of people working on it at a time and they release a build twice a month.&lt;/p&gt;

&lt;p&gt;Okay now. &lt;em&gt;Where do I start?&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You don’t learn to walk by following rules. You learn by doing, and by falling over.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Richard Branson&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;Let’s learn by doing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation of Git:
&lt;/h2&gt;

&lt;p&gt;If you have already installed Git on your computer. Well and good, you can proceed to the next section.&lt;/p&gt;

&lt;p&gt;If not, You can download it from &lt;a href="https://git-scm.com/downloads" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want some help on installation, find it &lt;a href="https://git-scm.com/book/en/v2/Getting-Started-Installing-Git" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Set-up GitHub:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/" rel="noopener noreferrer"&gt;Click here&lt;/a&gt; to sign up on GitHub with your Email If you have one already, you can use it. Log in to your account.&lt;/p&gt;

&lt;p&gt;No matter if you have a project already on your local machine/computer, you have to create a new repository in GitHub. Repository mean nothing but a project. Give it a nice name. Remember, it’s your first project! Name it the way you like. 😉&lt;/p&gt;

&lt;p&gt;Now time to use the tool of hackers, &lt;em&gt;The Terminal&lt;/em&gt; or &lt;em&gt;The Command Prompt&lt;/em&gt;.&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%2Fmedia1.tenor.com%2Fimages%2F093b967de4114d379d5860ff0c335c2a%2Ftenor.gif%3Fitemid%3D7506285" 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%2Fmedia1.tenor.com%2Fimages%2F093b967de4114d379d5860ff0c335c2a%2Ftenor.gif%3Fitemid%3D7506285" alt="Picture of Computer hacking"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Project setup:
&lt;/h2&gt;

&lt;p&gt;Open the terminal.&lt;/p&gt;

&lt;p&gt;If you already have a project, change the directory to your project’s directory or create a new project and move into the new project directory.&lt;/p&gt;

&lt;p&gt;If you’re new to terminal, Please use the following links.&lt;/p&gt;

&lt;p&gt;Click &lt;a href="https://en.wikipedia.org/wiki/List_of_DOS_commands" rel="noopener noreferrer"&gt;here&lt;/a&gt; and &lt;a href="https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/windows-commands" rel="noopener noreferrer"&gt;here&lt;/a&gt; for Windows&lt;/p&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/List_of_Unix_commands" rel="noopener noreferrer"&gt;Click here&lt;/a&gt; for MacOS or Linux&lt;/p&gt;

&lt;p&gt;Once you have created a repository in GitHub, the homepage of it will look something like this,&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Ff4n02rv0ozkgm3igmbs0.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Ff4n02rv0ozkgm3igmbs0.png" alt="Linux repository in GitHub"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on &lt;strong&gt;Clone or download&lt;/strong&gt; button, You can see a link. This is the Git URL. Copy it. You’re going to use it in a bit.&lt;/p&gt;

&lt;p&gt;If you still struck setting up a repository. &lt;a href="https://help.github.com/articles/set-up-git/" rel="noopener noreferrer"&gt;See here&lt;/a&gt; for more instructions.&lt;/p&gt;

&lt;p&gt;Go back to your Terminal, make sure you’re in your project directory.&lt;/p&gt;

&lt;p&gt;Type “&lt;code&gt;git init&lt;/code&gt;” and then Enter, It will add some files to save some metadata for tracking of your file changes and some other necessary stuffs&lt;/p&gt;

&lt;p&gt;When I put something inside two brackets like this &lt;code&gt;&amp;lt; &amp;gt;&lt;/code&gt;, You need to fill in your input inside it.&lt;/p&gt;

&lt;p&gt;Now type “&lt;code&gt;git remote add origin &amp;lt;LINK_OF_GitHub_REPOSITORY_THAT_YOU_JUST_COPIED&amp;gt;&lt;/code&gt;”, Click Enter, It has saved the link for your repository in the name of “origin”&lt;/p&gt;

&lt;p&gt;If it prompts for username and/or password, enter your GitHub credentials that you used to create the account.&lt;/p&gt;

&lt;p&gt;If you don’t have any files already in your project, you can add some files and make relevant changes to your project.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: Your project files will be pushed to GitHub publicly, so make sure you’re not typing any secret information anywhere in your project like passwords, API token, phone numbers, credit card details, etc.,&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In Git world, a repository resembles the structure of a tree. If you are making any change to it, you do it on one of it’s branch. Since you’re pushing for the first time you can push to it’s main branch which is widely called as “master”. And others will make their changes in different branch and need to do some formalities to merge it with the main branch. We will see that in a bit.&lt;/p&gt;

&lt;p&gt;Let’s create a branch,&lt;/p&gt;

&lt;p&gt;Type “&lt;code&gt;git checkout -b master&lt;/code&gt;”, it will create a branch in the name of “master”&lt;/p&gt;

&lt;p&gt;Later you will create branch in different name since it should be unique in your project.&lt;/p&gt;

&lt;p&gt;You just created a branch but your files are not added to it or saved in those “git metadata folder” for tracking of your progress.&lt;/p&gt;

&lt;p&gt;Let’s add your files and say git that you want these files to be tracked.&lt;/p&gt;

&lt;p&gt;Type “&lt;code&gt;git add .&lt;/code&gt;” (Don’t miss the dot at the end), it will add all the files to tracking list.&lt;/p&gt;

&lt;p&gt;And now you need to save all your changes to git, so it will put it in it’s local bank with a unique hash assigned to it. It’s called a &lt;strong&gt;commit&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Type “&lt;code&gt;git commit -m “initial commit”&lt;/code&gt;”, it will save your changes or commit to it’s metadata folder with a unique hash.&lt;/p&gt;

&lt;p&gt;So far, the changes were saved only on your local machine. We need to push this to cloud, so you can download from any machine or your own machine even if you lose it.&lt;/p&gt;

&lt;p&gt;Type “&lt;code&gt;git push origin master&lt;/code&gt;”, it will push your commit (your saved changes/files) to your repository in cloud.&lt;/p&gt;

&lt;p&gt;That’s it, Your code is in cloud now.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/HgycnYQCMeJXO/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/HgycnYQCMeJXO/giphy.gif" alt="Picture of cloud"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Go to your repository page in GitHub, You can see all your file changes you made available there.&lt;/p&gt;

&lt;p&gt;So how will you proceed your work further.&lt;/p&gt;

&lt;p&gt;You can make any changes in your favorite text editor anytime and push code to the same master branch, so your code will go to your repository in cloud. But, that’s not what clever people do.&lt;/p&gt;

&lt;p&gt;Overwhelmed by too much stuff to learn? Don’t worry, you will get used to it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Today is cruel.&lt;br&gt;
Tomorrow is crueler.&lt;br&gt;
And the day after tomorrow is beautiful.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Jack Ma&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;Let’s take another step,&lt;/p&gt;

&lt;p&gt;Now assume you are having a small issue in your project and you are going to push a small change or patch. It could possible fix the issue. What you do usually is just make the necessary changes and save it in a new folder with the fix name. We are going to do the same concept with the use of branching.&lt;/p&gt;

&lt;h2&gt;
  
  
  Branching:
&lt;/h2&gt;

&lt;p&gt;Branching is nothing but saving copies with changes in multiple files. It might sound just like ancient method of having different folders for different versions. But, it comes with a lot of advantages.&lt;/p&gt;

&lt;p&gt;Let’s do a sample to know about it.&lt;/p&gt;

&lt;p&gt;Stick to your assumption of having a small fix or patch and you need to push it to cloud so that your team members can get the working copy of yours.&lt;/p&gt;

&lt;p&gt;Go back to your terminal and make sure you’re in your project directory. Type, “&lt;code&gt;git status&lt;/code&gt;”, It will show you some information about which branch you’re in or which commit you made last and all the files you have changed after it has been updated in the cloud.&lt;/p&gt;

&lt;p&gt;It will say something like,&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;“On branch master

Your branch is up to date with ‘origin/master’.

nothing to commit, working tree clean”
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;It means that you have never made any change after it has been updated to cloud repository.&lt;/p&gt;

&lt;p&gt;It’s time to create a branch, &lt;em&gt;finally&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Type “&lt;code&gt;git checkout -b new-branch&lt;/code&gt;”, It will create a branch with the name "new-branch" and checkout the same.&lt;/p&gt;

&lt;p&gt;What is checkout? Don’t worry, the git can only concentrate on one branch at a time in a terminal windows. So you need to tell which branch to concentrate. That’s it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: Missing the “-b” in the above command will throw an error like,&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pathspec ‘new-branch’ did not match any file(s) known to git.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The above error indicates that it couldn’t find any branch called “new-branch”. Because it will search for any existing branch and checkout if exists and throws error if not.&lt;/p&gt;

&lt;p&gt;I hope, You typed the previous command right.&lt;/p&gt;

&lt;p&gt;Now make your changes in the files in your project.&lt;/p&gt;

&lt;p&gt;Even if you don’t really know what to change and just learning the process. Just change any file by adding some empty lines and move further.&lt;/p&gt;

&lt;p&gt;Now hit, “&lt;code&gt;git status&lt;/code&gt;”&lt;/p&gt;

&lt;p&gt;You can see something like the following and some changed files names in red as,&lt;/p&gt;

&lt;p&gt;ON branch new-branch&lt;br&gt;
   Changes not staged for commit:&lt;/p&gt;

&lt;p&gt;Modified: &lt;/p&gt;

&lt;p&gt;It means, the mentioned file contents has been changed after the project has been updated with the cloud repository. You can see in the first line that you’re in the new branch that you just created.&lt;/p&gt;

&lt;p&gt;Now we need to commit all the changes to this branch and push it to cloud.&lt;/p&gt;

&lt;p&gt;Type, “&lt;code&gt;git commit -m “my second commit”&lt;/code&gt;”, It will commit your changes to “new-branch”, the branch that you just created.&lt;/p&gt;

&lt;p&gt;Hit “&lt;code&gt;git push origin new-branch&lt;/code&gt;” which will push your new branch to your cloud repository.&lt;/p&gt;

&lt;p&gt;In the above command, “origin” means the alias that we have assigned for your cloud repository URL. So it knows where your branch should be uploaded. “new-branch” means you’re asking git to push your locally created branch “new-branch” to push to the repository you mentioned.&lt;/p&gt;

&lt;p&gt;Now go to the browser and see your cloud repository page, In the home page where it shows all the files, there’s will be a drop down option in the left side to choose the branch. It is similar to your terminal. The page can only show files from only one branch at a time. So you’re choosing which one to show. There you can find your newly created branch name “new-branch” shown.&lt;/p&gt;

&lt;p&gt;Clicking it will show files from that particular branch. Go and see the file you made some changes on. This is just like a new folder in your machine.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Voila!&lt;/em&gt; You have learned one of the complicated concept, branching. You will have to follow the same steps whenever you need to make new changes and push to cloud.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Now give the URL for your branch to your friends or teammates and say, “the code you want is here” like a boss. 👓&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Git Commands:
&lt;/h2&gt;

&lt;p&gt;You can see that we have used many git commands in the terminal. We will see them here again collectively so that you can remember.&lt;/p&gt;

&lt;h3&gt;
  
  
  To setup project:
&lt;/h3&gt;

&lt;p&gt;“&lt;code&gt;git clone &amp;lt;CLOUD_REPOSITORY_CLONE_URL&amp;gt;&lt;/code&gt;” — To create a project directory for the cloud repository that has been created&lt;/p&gt;

&lt;h3&gt;
  
  
  For Existing project:
&lt;/h3&gt;

&lt;p&gt;“&lt;code&gt;git init&lt;/code&gt;” — To create all the hidden files of git to track our file changes and more&lt;/p&gt;

&lt;p&gt;“&lt;code&gt;git remote add origin &amp;lt;CLOUD_REPOSITORY_CLONE_URL&amp;gt;&lt;/code&gt;” — To add the cloud repository Git URL to the memory of git, so that we can call it later by the name of “origin”&lt;/p&gt;

&lt;h3&gt;
  
  
  Status:
&lt;/h3&gt;

&lt;p&gt;“&lt;code&gt;git status&lt;/code&gt;” — To check the current branch and all the files modified&lt;/p&gt;

&lt;h3&gt;
  
  
  Branch:
&lt;/h3&gt;

&lt;p&gt;“&lt;code&gt;git checkout -b &amp;lt;NEW_BRANCH_NAME&amp;gt;&lt;/code&gt;” — To create a new branch with your unique name&lt;/p&gt;

&lt;h3&gt;
  
  
  To switch to existing branch:
&lt;/h3&gt;

&lt;p&gt;“&lt;code&gt;git checkout &amp;lt;EXISTING_BRANCH_NAME&amp;gt;&lt;/code&gt;” — To let the git concentrate on a particular branch (already existing branch)&lt;/p&gt;

&lt;h3&gt;
  
  
  Pushing:
&lt;/h3&gt;

&lt;p&gt;“&lt;code&gt;git add .&lt;/code&gt;” — To add all the files to git tracking list&lt;/p&gt;

&lt;p&gt;“&lt;code&gt;git commit -m “&amp;lt;YOUR_COMMIT_MESSAGE&amp;gt;”&lt;/code&gt;” — To save all the file changes to the git memory (simply called commit)&lt;/p&gt;

&lt;p&gt;“&lt;code&gt;git push origin &amp;lt;YOUR_BRANCH_NAME&amp;gt;&lt;/code&gt;” — To push all the commits in your branch to cloud repository with the same branch name&lt;/p&gt;

&lt;p&gt;I have told you branching has a lot of advantages over ancient methods. We will see all those in the next part and much more for organizational use.&lt;/p&gt;

&lt;p&gt;Have you learned something in this post? Or you got any doubt from the examples in this post? The comment box is all yours. 😉&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Happy Coding!&lt;/em&gt; 😈&lt;/p&gt;

&lt;p&gt;&lt;a href="https://about.me/ravirajsubramanian" rel="noopener noreferrer"&gt;Raviraj Subramanian&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Find me on &lt;a href="https://github.com/ravirajthedeveloper" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; and &lt;a href="https://twitter.com/thisisraviraj" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>versioncontrol</category>
      <category>projectmanagement</category>
    </item>
  </channel>
</rss>
