<?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: Rishabhraghwendra18</title>
    <description>The latest articles on DEV Community by Rishabhraghwendra18 (@rishabhraghwendra).</description>
    <link>https://dev.to/rishabhraghwendra</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%2F638754%2F7f9ee0fc-7ad7-4bbc-894f-76e1047b025a.jpeg</url>
      <title>DEV Community: Rishabhraghwendra18</title>
      <link>https://dev.to/rishabhraghwendra</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rishabhraghwendra"/>
    <language>en</language>
    <item>
      <title>Fund Me Smart Contract using Typescript on Near (Non-EVM)</title>
      <dc:creator>Rishabhraghwendra18</dc:creator>
      <pubDate>Sun, 29 Oct 2023 11:17:10 +0000</pubDate>
      <link>https://dev.to/rishabhraghwendra/fund-me-smart-contract-using-typescript-on-near-non-evm-29kl</link>
      <guid>https://dev.to/rishabhraghwendra/fund-me-smart-contract-using-typescript-on-near-non-evm-29kl</guid>
      <description>&lt;p&gt;Near is a Non-EVM blockchain with 100,000 TPS which is 3x faster, and cheaper than the Non-EVM blockchain Solana!!&lt;/p&gt;

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

&lt;p&gt;On top of that, You can deploy Typescript code as a smart contract on Near!!&lt;/p&gt;

&lt;p&gt;Let's build and deploy a fully functional FundMe DApp with  Typescript smart contract on Near and learn some new concepts that make Near better than other EVM and non-EVM chains.&lt;/p&gt;

&lt;p&gt;Here's a little preview of what we gonna build:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc6alx34a7lyeazkxhslo.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc6alx34a7lyeazkxhslo.gif" alt="App Preview"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This DApp allows users to donate Near tokens, and allows admins to withdraw the donations from the contract from the blockchain explorer.&lt;/p&gt;

&lt;p&gt;So let's go 🚀&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup the development environment
&lt;/h2&gt;

&lt;p&gt;Setup the development environment using the below template. It's made using Vite React and Near CLI which is much faster than the official Near's &lt;code&gt;npx create-near-app&lt;/code&gt; CLI.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://github.com/Rishabhraghwendra18/react-near-template
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Just click on the top green button to &lt;code&gt;Use this template&lt;/code&gt; which will setup a new repository in your account using the template.&lt;/p&gt;

&lt;p&gt;Clone the repository created in your account on your local machine and follow the below instructions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd frontend 
npm i
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In another terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd contract
npm i
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After installing dependencies in both folders, run &lt;code&gt;npm run deploy&lt;/code&gt; in the contract folder to deploy the dummy &lt;code&gt;HelloNear&lt;/code&gt; contract. &lt;/p&gt;

&lt;p&gt;On the successful deployment of the contract run, &lt;code&gt;npm run dev&lt;/code&gt; in the frontend folder.&lt;/p&gt;

&lt;p&gt;You will see a basic UI running at &lt;code&gt;http://localhost:5173/&lt;/code&gt; in the browser.&lt;/p&gt;

&lt;h2&gt;
  
  
  Create a testnet wallet on Near
&lt;/h2&gt;

&lt;p&gt;Create a testnet wallet on Near on &lt;a href="https://testnet.mynearwallet.com/" rel="noopener noreferrer"&gt;MyNearWallet&lt;/a&gt;. Near will automatically deposit $200 worth of test Near in your wallet so no need for faucets.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Fun Fact: Near doesn't provide a random hash as your wallet account address. It has named account addresses like mine is &lt;code&gt;rishabh.testnet&lt;/code&gt; which is very easy to remember.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Let's now see step by step to build the Typescript smart contract. I will explain to you the meaning of each and every line.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building the FundMe Contract
&lt;/h2&gt;

&lt;p&gt;Navigate to &lt;code&gt;contract/src/contract.ts&lt;/code&gt; file and remove all the code.&lt;/p&gt;

&lt;p&gt;Import dependencies on first line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { NearBindgen, near, call, view,UnorderedMap } from 'near-sdk-js';
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;NearBindgen&lt;/strong&gt;: This decorator helps to convert typescript classes to Near smart contracts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;near&lt;/strong&gt;: It has lots of built-in near API like getting contract balances, caller account IDs, etc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;call&lt;/strong&gt;: Decorator for setter functions in contract.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;view&lt;/strong&gt;: Decorator for getter functions in the contract.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UnorderedMap&lt;/strong&gt;: An iterable hashmap data structure to store the donation amount with the donor account.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now create a class with NearBindgen decorator:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@NearBindgen({})
class FundMe {
  beneficiary: string ="&amp;lt;beneficary-account-id&amp;gt;";
  donations= new UnorderedMap&amp;lt;bigint&amp;gt;('d');
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You may wonder what is &lt;code&gt;'d'&lt;/code&gt; in the UnorderedMap. It's used as a prefix to store key-value pairs in the memory on the near blockchain. So whenever you have two unorderedmap make sure their prefixes are different.&lt;/p&gt;

&lt;p&gt;Let's add &lt;code&gt;donate&lt;/code&gt; function:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@call({payableFunction:true})
  donate(){
    let donor=near.predecessorAccountId();
    let donationAmount: bigint = near.attachedDeposit() as bigint;

    let donatedSoFar = this.donations.get(donor, {defaultValue: BigInt(0)})
    donatedSoFar+=donationAmount;
    this.donations.set(donor,donatedSoFar);
    near.log(`Thank you ${donor} for donating ${donationAmount}! You donated a total of ${donatedSoFar}`);
  }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, we have passed &lt;code&gt;payableFunction:true&lt;/code&gt; to decorator because the caller will attach some near amount with function call. It's similar to &lt;code&gt;payable&lt;/code&gt; in solidity.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;near.predecessorAccountId()&lt;/strong&gt;: To get the caller account ID.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;near.attachedDeposit()&lt;/strong&gt;: Near attached to the function call like &lt;code&gt;msg.value&lt;/code&gt; in solidity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;this.donations.get()&lt;/strong&gt;: to get the donor account ID and previously donated amount (if any, otherwise default value is 0) from the hashmap.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;this.donations.set&lt;/strong&gt;: updating new donation amount for the caller in hashmap.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;near.log&lt;/strong&gt;: To log any message on blockchain explorer when transactions complete. Same as &lt;code&gt;console.log&lt;/code&gt; in javascript.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Wow! Donation function is complete. Let's move to &lt;code&gt;withdraw_funds&lt;/code&gt; function which will allow the admin (the contract deployer) to withdraw the donations from the contract.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@call({privateFunction:true})
  withdraw_funds(){
    let balance=near.accountBalance() - BigInt('10000000000000000000000000');
    const promise = near.promiseBatchCreate(this.beneficiary)
    near.promiseBatchActionTransfer(promise, balance);
  }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice the &lt;code&gt;privateFunction:true&lt;/code&gt; we have passed to the decorator because we want this function to only be called by the admin.&lt;/p&gt;

&lt;p&gt;Private functions work differently in Near than EVM chains. &lt;/p&gt;

&lt;p&gt;There's a concept of access keys in Near which is similar to Private keys but are shareable. By default, the user who deploys the contract at first has full access to smart contract functions including private functions. It enables the user to transfer tokens, cross-contract calls, and even update the contract after deployment (we will talk about this in the end).&lt;/p&gt;

&lt;p&gt;&lt;em&gt;To know more about new concepts, and cool stuff on Near visit my recent blog for an easy explanation: &lt;a href="https://dev.to/rishabhraghwendra/near-blockchain-development-guide-for-ethereum-developers-1f1n"&gt;https://dev.to/rishabhraghwendra/near-blockchain-development-guide-for-ethereum-developers-1f1n&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We are also leaving 10 Near in the contract for future use to pay for gas fees in the future:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;near.accountBalance() - BigInt('10000000000000000000000000');
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Since smart contract is built using Typescript it also has a Promises concept. Every token transfer and cross-contract call returns a promise. In this case, we have like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const promise = near.promiseBatchCreate(this.beneficiary)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Remember we can't use async/await in the contract. It's not supported. &lt;/p&gt;

&lt;p&gt;To resolve this promise we can do something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;near.promiseBatchActionTransfer(promise, balance);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now let's create the function to get all the donations list&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@view({})
  get_all_donations(){
    return this.donations.toArray();
  }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's a simple view function call that converts the donations hashmap into an array and returns it to the caller.&lt;/p&gt;

&lt;p&gt;To get the balance of the contract:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@view({})
  view_balance(){
    return near.accountBalance();
  }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Deploy the smart contract by running &lt;code&gt;npm run deploy&lt;/code&gt; in the contract folder. It will also output the transaction ID link on the near test net where the contract has been deployed. &lt;/p&gt;

&lt;p&gt;Copy the transaction hash and search it on &lt;a href="https://testnet.nearblocks.io/" rel="noopener noreferrer"&gt;https://testnet.nearblocks.io/&lt;/a&gt; for better UI.&lt;/p&gt;

&lt;p&gt;Note: Whenever you deploy a contract using the above template it will automatically store the contract address in the &lt;code&gt;contract/neardev/dev-account.env&lt;/code&gt; environment variable which will be automatically taken up by the frontend.&lt;/p&gt;

&lt;p&gt;Now smart contract is done. Since it's not a frontend tutorial I will build a simple frontend and connect it with smart contract.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building the simple frontend
&lt;/h2&gt;

&lt;p&gt;The frontend is made using Vite React. If your frontend is not running, run it by running &lt;code&gt;npm run dev&lt;/code&gt; in the frontend folder. &lt;/p&gt;

&lt;p&gt;I am using Material UI to get some UI components. Install it in frontend folder using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install @mui/material @emotion/react @emotion/styled
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Go to &lt;code&gt;App.jsx&lt;/code&gt; file and paste below code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import * as nearAPI from "near-api-js";
import React, { useState } from "react";
import Card from "@mui/material/Card";
import CardContent from "@mui/material/CardContent";
import Button from "@mui/material/Button";
import Table from "@mui/material/Table";
import TableBody from "@mui/material/TableBody";
import TableCell from "@mui/material/TableCell";
import TableContainer from "@mui/material/TableContainer";
import TableHead from "@mui/material/TableHead";
import TableRow from "@mui/material/TableRow";
import Paper from "@mui/material/Paper";
import "./App.css";

import {  SignInButton,SignOutButton } from "./components/SignInButton.jsx";

const contractId=process.env.CONTACT_NAME;

export default function App({contractId, wallet }) {
  const [donorsList, setDonorsList] = useState([]);
  const [depositValue, setDepositValue] = useState();
  const [totalFunds, setTotalFunds] = useState('');

  // Get blockchian state once on component load
  useEffect(() =&amp;gt; {
    getDontations()
      .then((response) =&amp;gt; {
        const { utils } = nearAPI;

        let donors = response.map((donor) =&amp;gt; ({
          donor: donor[0],
          amount: utils.format.formatNearAmount(donor[1]),
        }));
        setDonorsList(donors);
        console.log("response: ", response);
      })
      .catch(alert)
      getTotalFunds().then((response)=&amp;gt;{
        let funds =nearAPI.utils.format.formatNearAmount(response);
        funds=funds.split(".");
        let wholeNumber = funds[0];
        let decimalPart='0';
        if(funds.length&amp;gt;=2){
          decimalPart=funds[1].padEnd(2,'0').slice(0,2);
        }
        setTotalFunds(wholeNumber+'.'+decimalPart);
      })
  }, []);

  const getTotalFunds = async()=&amp;gt;{
    return wallet.viewMethod({ method: "view_balance", contractId })
  }

  function donate(e) {
    e.preventDefault();
    const deposit = nearAPI.utils.format.parseNearAmount(depositValue);

    // use the wallet to send the funds to the contract
    wallet
      .callMethod({
        method: "donate",
        deposit,
        contractId,
      })
      .then(async () =&amp;gt; {
        console.log("Deposited!!");
        return getDontations();
      })
      .then(setValueFromBlockchain)
  }

  function getDontations() {
    // use the wallet to query the all contract's donations
    return wallet.viewMethod({ method: "get_all_donations", contractId });
  }

  return (
    &amp;lt;&amp;gt;
      {wallet.accountId ?&amp;lt;SignOutButton accountId={wallet.accountId} onClick={()=&amp;gt;{wallet.signOut()}}/&amp;gt;:&amp;lt;SignInButton onClick={()=&amp;gt;{wallet.signIn()}}/&amp;gt;}
      &amp;lt;main&amp;gt;
        &amp;lt;div className="flex"&amp;gt;
          &amp;lt;h1&amp;gt;Welcome To Fund Me Contract on Near&amp;lt;/h1&amp;gt;
          &amp;lt;h2&amp;gt;(Total Funds Raised: {totalFunds} Near)&amp;lt;/h2&amp;gt;
          &amp;lt;div className="container-div"&amp;gt;
            &amp;lt;div className="txn-list"&amp;gt;
              &amp;lt;h3&amp;gt;All Donors&amp;lt;/h3&amp;gt;
              &amp;lt;TableContainer component={Paper}&amp;gt;
                &amp;lt;Table
                  sx={{ minWidth: 400 }}
                  size="small"
                  aria-label="a dense table"
                &amp;gt;
                  &amp;lt;TableHead&amp;gt;
                    &amp;lt;TableRow&amp;gt;
                      &amp;lt;TableCell&amp;gt;Donor&amp;lt;/TableCell&amp;gt;
                      &amp;lt;TableCell align="right"&amp;gt;Amount&amp;lt;/TableCell&amp;gt;
                    &amp;lt;/TableRow&amp;gt;
                  &amp;lt;/TableHead&amp;gt;
                  &amp;lt;TableBody&amp;gt;
                    {donorsList.map((row) =&amp;gt; (
                      &amp;lt;TableRow
                        key={row.name}
                        sx={{
                          "&amp;amp;:last-child td, &amp;amp;:last-child th": { border: 0 },
                        }}
                      &amp;gt;
                        &amp;lt;TableCell component="th" scope="row"&amp;gt;
                          {row.donor}
                        &amp;lt;/TableCell&amp;gt;
                        &amp;lt;TableCell align="right"&amp;gt;{row.amount} Near&amp;lt;/TableCell&amp;gt;
                      &amp;lt;/TableRow&amp;gt;
                    ))}
                  &amp;lt;/TableBody&amp;gt;
                &amp;lt;/Table&amp;gt;
              &amp;lt;/TableContainer&amp;gt;
            &amp;lt;/div&amp;gt;
            &amp;lt;div className="fund-me"&amp;gt;
              &amp;lt;h3&amp;gt;Fund Me&amp;lt;/h3&amp;gt;
              &amp;lt;Card&amp;gt;
                &amp;lt;CardContent sx={{display:'flex',flexDirection:'column',gap:'1.3rem'}}&amp;gt;
                  &amp;lt;label&amp;gt;Enter Amount&amp;lt;/label&amp;gt;
                  &amp;lt;input
                    autoComplete="off"
                    defaultValue={0}
                    className="amount"
                    type="number"
                    onChange={(e)=&amp;gt;setDepositValue(e.target.value)}
                  /&amp;gt;
                  &amp;lt;Button variant="contained" size="small" sx={{width:'100%'}} onClick={donate}&amp;gt;Submit&amp;lt;/Button&amp;gt;
                &amp;lt;/CardContent&amp;gt;
              &amp;lt;/Card&amp;gt;
            &amp;lt;/div&amp;gt;
          &amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
      &amp;lt;/main&amp;gt;
    &amp;lt;/&amp;gt;
  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The template has the helper class called &lt;code&gt;Wallet&lt;/code&gt; in &lt;code&gt;frontend/src/utils/near-wallet.js&lt;/code&gt; which has the all methods to call the &lt;code&gt;call&lt;/code&gt; function on the contract as well as the &lt;code&gt;view&lt;/code&gt; functions.&lt;/p&gt;

&lt;p&gt;Checkout &lt;code&gt;main.jsx&lt;/code&gt; to know how the template setups the Class object at the app startup.&lt;/p&gt;

&lt;p&gt;In &lt;code&gt;App.css&lt;/code&gt; paste this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.flex{
    display: flex;
    gap: 1rem;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}
.container-div{
    display: flex;
    flex-direction: column-reverse;
    gap: 1rem;
    width: 100%;
    align-items: center;
    justify-content: center;
}
.txn-list{
    width: 100%;
    max-width: 600px;
}
.fund-me{
    width: 100%;
    max-width: 600px;
}
.amount{
    border: 2px solid grey;
    border-radius: 0.3rem;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And your first DApp on Near Blockchain is ready!! 🚀&lt;/p&gt;

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

&lt;p&gt;I hope you liked the blog. If you have any doubts let me know in the comments.&lt;/p&gt;

&lt;p&gt;To support me, you can donate me some Near on &lt;code&gt;rishabhrag.near&lt;/code&gt; 🥳&lt;/p&gt;

</description>
      <category>near</category>
      <category>blockchain</category>
      <category>web3</category>
      <category>typescript</category>
    </item>
    <item>
      <title>Near Blockchain Development Guide For Ethereum Developers</title>
      <dc:creator>Rishabhraghwendra18</dc:creator>
      <pubDate>Sun, 22 Oct 2023 12:37:22 +0000</pubDate>
      <link>https://dev.to/rishabhraghwendra/near-blockchain-development-guide-for-ethereum-developers-1f1n</link>
      <guid>https://dev.to/rishabhraghwendra/near-blockchain-development-guide-for-ethereum-developers-1f1n</guid>
      <description>&lt;p&gt;Near is a non-EVM-based blockchain, similar to Solana. The best part of it is that smart contracts can be written in JavaScript/TypeScript.&lt;/p&gt;

&lt;p&gt;However, if you haven't built on non-EVM chains before, then this blog is for you. It includes a few new concepts and some interesting facts that a developer should know before building on Near.&lt;/p&gt;

&lt;h2&gt;
  
  
  Smart contracts are not immutable
&lt;/h2&gt;

&lt;p&gt;On Near, smart contracts are not immutable. A smart contract can be updated or changed after it's deployed unless it changes the state of the previously deployed version of the contract. This feature has both pros and cons. &lt;/p&gt;

&lt;h3&gt;
  
  
  Pros
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;This enables developers to add new features and fix bugs &amp;amp; security issues.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cons
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;This makes the network slightly centralized, as one entity or person has full rights to change the smart contract code as needed. Therefore, before trusting the smart contract, check who has full authority to change the code. It should be linked to a multi-sig wallet.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Access Keys and Private Keys
&lt;/h2&gt;

&lt;p&gt;Access Keys and Private Keys may sound similar but they have different functionalities. Access keys are derived from Private keys but are shareable.&lt;/p&gt;

&lt;p&gt;Access keys are those keys that authorize someone to perform specific tasks based on their access permissions. This concept is similar to role-based access in Web2. For example, a company can share its wallet access keys with its employees, allowing them to spend Near tokens on behalf of the company without needing to share the private keys.&lt;/p&gt;

&lt;p&gt;These access keys are primarily used for smart contract updates. The access key with full access to a smart contract has the authority to make any changes and publish them to the network. Therefore, it's advisable to ensure complete decentralization of the smart contract by either removing all access keys after smart contract deployment or by giving access keys to a multi-sig wallet.&lt;/p&gt;

&lt;p&gt;There are two types of access keys:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;FullAccess&lt;/code&gt;:  This type of access grants full authority over the account, enabling actions like deleting the account, deploying a smart contract, calling any method on any contract, and transferring Near Ⓝ tokens.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;FunctionCall&lt;/code&gt;: These keys only allow permission to call specific methods on a contract, potentially all methods, but do not permit attaching NEAR Ⓝ to the call."&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Some Fun facts about Near Ⓝ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Fact 1: Contract codes are not visible on Block Explorer
&lt;/h3&gt;

&lt;p&gt;This is a harsh reality, but the Near Block Explorer (&lt;a href="https://nearblocks.io/"&gt;https://nearblocks.io/&lt;/a&gt;) does not display the smart contract code, unlike what we can see on Etherscan.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fact 2: Near has named wallet addresses.
&lt;/h3&gt;

&lt;p&gt;You read it correctly. Unlike other blockchains where you receive an unmemorable hash as your wallet address, Near provides named wallet addresses by default, such as mine: &lt;code&gt;rishabhrag.near&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This wallet address is referred to as a TLD (Top Level Domain), and it can be used to create sub-domains as well, such as &lt;code&gt;rishabhrag.school.near&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;These are some of the new concepts and facts I discovered when transitioning from an EVM-based blockchain to a non-EVM-based blockchain. I hope they will assist new developers who are venturing into Near, as it took me two days to grasp these new concepts.&lt;/p&gt;

&lt;p&gt;If you found this information helpful and would like to show your appreciation, you can donate to me at &lt;code&gt;rishabhrag.near&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;Your contribution would be greatly appreciated.&lt;/p&gt;

&lt;p&gt;Thanks for reading, and have a fantastic day! Keep building on Near!&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>ethereum</category>
      <category>near</category>
      <category>smartcontract</category>
    </item>
    <item>
      <title>What is Rust Progamming Language | Why Big Tech Companies are using it in Production | Why you should learn it in 2022</title>
      <dc:creator>Rishabhraghwendra18</dc:creator>
      <pubDate>Sat, 29 Jan 2022 14:26:17 +0000</pubDate>
      <link>https://dev.to/rishabhraghwendra/what-is-rust-progamming-language-why-big-faang-companies-are-using-it-in-production-why-you-should-learn-it-in-2022-58ij</link>
      <guid>https://dev.to/rishabhraghwendra/what-is-rust-progamming-language-why-big-faang-companies-are-using-it-in-production-why-you-should-learn-it-in-2022-58ij</guid>
      <description>&lt;p&gt;&lt;em&gt;“If you want your application in production for 10+ years with very less need of maintenance prefer Rust else Go”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;As per &lt;a href="https://insights.stackoverflow.com/survey/2020#technology-most-loved-dreaded-and-wanted-languages-loved"&gt;StackOverflow survey 2020&lt;/a&gt; , Rust is the most beloved language in the developer community .&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6nZ4Z_XG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u6q5chbbna5px14sv7ad.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6nZ4Z_XG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u6q5chbbna5px14sv7ad.png" alt="StackOverflow survey 2020" width="880" height="517"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So what makes Rust so amazing even than Python or TypeScript ? Why are people suggesting to write the whole Linux kernel in Rust ? We will answer all these questions and explore the uniqueness of Rust. We will discuss about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Features of Rust that are different from other languages&lt;/li&gt;
&lt;li&gt;Companies who use Rust and why they use it&lt;/li&gt;
&lt;li&gt;Cons of Rust&lt;/li&gt;
&lt;li&gt;Conclusion whether you should learn Rust or not in 2022&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So let’s begin&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Rust is a statically typed programming language without a garbage collector (yes , it doesn’t have a garbage collector) and with more focus on safety, speed and more low level control without sacrificing the high level syntax. It's developed by keeping in mind the core issues of the today's high level languages, for example data races conditions in multithreading programs.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Rust was originally made as a side project at Mozilla Research by Graydon Hoare. It was first launched on 7th July 2010.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Today many tech giants like AWS , Microsoft use Rust in production . It’s new way of managing memory has made developers write bug free code (not completely free) without sacrificing speed and performance . It can be used in different domains like Web, Blockchain , Game , Networking and even for Embedded devices because it’s minimal (or no) runtime. Let’s see what Rust has to offer&lt;/p&gt;

&lt;h2&gt;
  
  
  Unique features of Rust that no other language provide
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The ownership model
&lt;/h3&gt;

&lt;p&gt;If you are a C/C++ developer then you have experienced the problem of dangling pointers aka when a pointer points to an already freed memory location . In such a situation your programs crash. This is a major issue which is present in many languages , even if they don’t have pointers . The used garbage collector to automatically deallocate memory instead of the programmer has to do. But this is also not a full proof solution . Garbage collector instead has its own bugs. Due to such bugs and inappropriate memory management lead to memory leaks and memory related security issues. &lt;/p&gt;

&lt;p&gt;Rust tries to solve this issue using it’s ownership model concept. In rust there is a concept of ownership. If we pass an object to a function , instead of passing it as by reference the parameters of the function takes the ownership of the object. Let’s take an example to get a clear picture:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#[derive(Debug)]
struct Person{
   name: String,
   age: u64,
}

fn show_struct(person_obj: Person){
   println!("Name is: {} and age is {}",person_obj.name,person_obj.age);
}
fn main() {
  let person1 = Person{
      name: String::from("Rishabh Raghwendra"),
      age:19
  };
  show_struct(person1);
  println!("{:#?}",person1); // here we get the error
}

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

&lt;/div&gt;



&lt;p&gt;If you run this code in , Rust compiler will give you an error &lt;code&gt;borrow of moved value:&lt;/code&gt;person1&lt;code&gt;&lt;br&gt;
value borrowed here after move&lt;/code&gt; . &lt;/p&gt;

&lt;p&gt;We have created a struct called Person and an object of it in main() as person1. We then passed the object to function show_struct() to print the object contents. After that we tried to print the person1. The reason we get the error at the print statement because of person1 is no longer the owner of the object.&lt;/p&gt;

&lt;p&gt;When we passed the person1 to the show_struct() function , it’s parameters took the ownership of the person1 object. Hence person1 is no longer the owner of the object. &lt;/p&gt;

&lt;p&gt;There is a way to not let the function parameters take the ownership , by passing it as pass by reference as we do in C/C++ . It is out of the scope of the blog so we will discuss about in my future blog.&lt;/p&gt;

&lt;p&gt;This model prevents the misuse of memory without the need of a garbage collector. &lt;/p&gt;
&lt;h3&gt;
  
  
  Fearless Concurrency
&lt;/h3&gt;

&lt;p&gt;Ever run in a data race condition or deadlock situation while doing multi-threading programming ? If yes , then you definitely run in any one of these situations and you even know how hard it is to write a correct multi-thread program and also how hard to debug it if something bad happens in production .  &lt;em&gt;Ahhhhh!!! Never push your code on Fridays.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Rust has special attention to concurrency and memory safety . It gives you errors at compile time rather than at runtime.   Rust again uses an ownership model to prevent access to invalid memory . For eg take a look at this Rust code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;use std::thread;

fn main() {
   let v = vec![1, 2, 3];

   let handle = thread::spawn(|| {
       println!("Here's a vector: {:?}", v);
   });

   drop(v); // oh no!

   handle.join().unwrap();
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We spawn a thread with a closure who is accessing vector ‘v’ and store the thread instance in variable ‘handle’. After that we tried to drop the (free up) vector ‘v’. &lt;/p&gt;

&lt;p&gt;If you implement the same logic in other programming languages like C/C++ or Python . You will get a Segmentation  Fault error which will lead your program to crash and hackers to gain access to your system , nice. &lt;/p&gt;

&lt;p&gt;If you run this code in Rust . It will give you an error saying that you don’t have the right to drop the variable ‘v’ because its value is moved to the thread . The ownership model kicked in!!. It does so because rust compilers have trust issues with us (thread: what’s the guarantee that ‘v’ will be valid till I am doing my work). That's why Rust compiler asks you to give the ownership of the variable to the thread so that it can fearlessly use the variable ‘v’. &lt;em&gt;To see the solution of the above error see this &lt;a href="https://doc.rust-lang.org/book/ch16-01-threads.html#using-move-closures-with-threads"&gt;link&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;See how rust stopped you from making a nasty concurrency bug at compile time and saved your weekend . Such type of development Rustaceans called Compiler Driven Development. &lt;/p&gt;

&lt;h3&gt;
  
  
  Friendly Compiler
&lt;/h3&gt;

&lt;p&gt;If you have run the above examples (you can run it in &lt;a href="https://play.rust-lang.org/"&gt;Rust Playground&lt;/a&gt;) , you have seen that the compiler gives you solutions/hints to the errors too. Rust compiler is very intelligent and tries to give you the appropriate solution to the error in a friendly readable way. This is one of the features that made developers love Rust.&lt;/p&gt;

&lt;h2&gt;
  
  
  Companies who uses Rust in Production
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Microsoft
&lt;/h3&gt;

&lt;p&gt;Microsoft has now started to migrate their C/C++ codebase to Rust . The reason is that they have found that most security issues are related to memory. They tried to solve the issue on their own using C/C++ but failed to do so . The only option they are left with is to migrate their C/C++ codebase to Rust which prevents 90% of the memory related issues at compile time only. &lt;/p&gt;

&lt;p&gt;For more info watch this &lt;a href="https://youtu.be/NQBVUjdkLAA"&gt;video&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Facebook
&lt;/h3&gt;

&lt;p&gt;Facebook used Rust to rewrite their source control backend which was originally written in Python . Rust attracted their attention because they want speed &amp;amp; memory safety which is only Rust's able guarantee .&lt;/p&gt;

&lt;p&gt;For more info watch this &lt;a href="https://youtu.be/kylqq8pEgRs"&gt;video&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Discord
&lt;/h3&gt;

&lt;p&gt;Discord has written both their client-side and server-side in Rust. They rewritten the Read state service in Rust which was originally written in Go. Due to the Go garbage collector they see unexpected high latency spikes randomly. The only solution they are left with is to rewrite everything in Rust because it doesn’t have a garbage collector and ensures memory safety. Till now their experience with Rust is very positive and the codebase is easily able to serve 11 million users at a time.&lt;/p&gt;

&lt;p&gt;For more info read this official discord &lt;a href="https://blog.discord.com/why-discord-is-switching-from-go-to-rust-a190bbca2b1f"&gt;blog&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  NPM
&lt;/h3&gt;

&lt;p&gt;Engineers at NPM realized that their service performance would soon become a bottleneck if the user increased. They refused to use C/C++ and Java because they don’t provide memory safety and they don’t want to deploy JVM on their servers. The only best fit as per their requirements is Rust. They believe it’s the right choice they have made, as Rust has the most friendly compiler and community. They also have positive experience with Rust till now.&lt;br&gt;
For more info read this official Rust &lt;a href="https://www.rust-lang.org/static/pdfs/Rust-npm-Whitepaper.pdf"&gt;whitepaper&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Cons of Rust
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Rust has steep learning Curve
&lt;/h3&gt;

&lt;p&gt;Rust involves lot’s of new programming concepts which you haven’t heard of or used in any of the programming languages like Python , Java , C++ . For eg as we have seen there are concepts of ownership , it also has a concept known as lifetimes and these are the major concepts of Rust and most of the time Rust developers find themselves fighting with the compiler. Hence , Rust is not preferred to be your first language.&lt;/p&gt;

&lt;h3&gt;
  
  
  Slow compilations time
&lt;/h3&gt;

&lt;p&gt;It has slow compilation time. For bigger projects it can be more than 5 mins . Even it uses some methods to reduce the compilation time but it doesn’t have much effect. Rust compilation time has decreased from the legacy releases but still it’s slow and most importantly if your machine doesn’t have enough RAM then it may slow down your machine performance. Therefore , for now , it’s recommended to use some host servers to compile the Rust code , as it can drastically reduce the compilation time. &lt;/p&gt;

&lt;h3&gt;
  
  
  Small developer community
&lt;/h3&gt;

&lt;p&gt;Rust is a new language , hence it’s community is not so big . You can get stuck in some errors but there is no solution for it on google or stackoverflow even. But this is not a big issue . You can join their discord server , there are already more than 2k+ developers on the server , where you can get 24x7 support . It’s a very welcoming community and you should be a part of it if you are learning Rust. &lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion: Whether you should learn Rust or not in 2022
&lt;/h2&gt;

&lt;p&gt;In my opinion , Rust has a bright future . Despite not being a beginner friendly or smaller developer community , it has lots of features and memory safety guarantees which other languages don’t . If you are a beginner , just starting out your career in programming then Rust is not a best fit for you . It may demotivate you from programming . So it’s best to learn other languages like Python , Java and when you become comfortable with them then learn Rust. Otherwise if you want to learn system programming then Rust can be a best choice for you. &lt;/p&gt;

&lt;p&gt;If you have any doubts , feel free to comment down below . I will be happy to help you.&lt;/p&gt;

&lt;p&gt;To see my projects or to get in personal touch , follow me on:&lt;br&gt;
Linkedin:&lt;a href="https://www.linkedin.com/in/rishabh-sde/"&gt;https://www.linkedin.com/in/rishabh-sde/&lt;/a&gt;&lt;br&gt;
GitHub: &lt;a href="https://github.com/Rishabhraghwendra18"&gt;https://github.com/Rishabhraghwendra18&lt;/a&gt;&lt;br&gt;
Thanks for reading&lt;br&gt;
Written with ❤️ &amp;amp; passion 🔥 by Rishabh Raghwendra&lt;/p&gt;

</description>
      <category>programming</category>
      <category>rust</category>
      <category>news</category>
    </item>
    <item>
      <title>SDLC: Agile Model</title>
      <dc:creator>Rishabhraghwendra18</dc:creator>
      <pubDate>Tue, 17 Aug 2021 14:15:01 +0000</pubDate>
      <link>https://dev.to/rishabhraghwendra/sdlc-agile-model-l3f</link>
      <guid>https://dev.to/rishabhraghwendra/sdlc-agile-model-l3f</guid>
      <description>&lt;p&gt;Agile model is commonly used by SDLC these days because of its adaptability to changing requirements . It is a combination of Iterative &amp;amp; Incremental models . It focuses on process adaptability &amp;amp; rapid delivery of working software products . &lt;/p&gt;

&lt;p&gt;In Agile , requirements are divided in small incremental builds (iteration). Each build lasts for about 1-2 months . Each build is planned in advance . At the end of each build customers feedback is taken on the current build. The final build has all requirements.&lt;/p&gt;

&lt;p&gt;Here’s the diagram of Agile Model:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DDyElXIf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vqrd568m5oigz62nbad3.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DDyElXIf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vqrd568m5oigz62nbad3.jpg" alt="Agile Model Workflow"&gt;&lt;/a&gt;&lt;br&gt;
Each Build has to go through Design , Development and Testing.&lt;/p&gt;

&lt;p&gt;Check out my blog &lt;a href="https://dev.to/rishabhraghwendra/software-development-life-cycle-beginners-guide-k8p"&gt;SDLC&lt;/a&gt; to get the gist of the process.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use Cases&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Frequent changes are required&lt;/li&gt;
&lt;li&gt;Highly skilled team is available&lt;/li&gt;
&lt;li&gt;Customer is ready to have interaction frequently&lt;/li&gt;
&lt;li&gt;Project size is small&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pros of Agile Model&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Easy to manage&lt;/li&gt;
&lt;li&gt;Little or no planning required&lt;/li&gt;
&lt;li&gt;Reduces total development time&lt;/li&gt;
&lt;li&gt;Customer interaction is the backbone of the model&lt;/li&gt;
&lt;li&gt;Minimum documentation required&lt;/li&gt;
&lt;li&gt;Adaptive to changing requirements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons of Agile Model&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Not good fit for complex projects&lt;/li&gt;
&lt;li&gt;Risk of sustainability , maintainability &amp;amp; extensibility &lt;/li&gt;
&lt;li&gt;Heavily dependent on customer interaction . If customer is not clear then team can be guided in wrong direction&lt;/li&gt;
&lt;li&gt;Very high dependency on an individual since less documentation is made &lt;/li&gt;
&lt;li&gt;Due to less documentation passing of the project to new team members is difficult &lt;/li&gt;
&lt;li&gt;An overall plan and an agile expert/leader is needed without him/her the model is difficult to follow .&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So far, we have discussed the Model, it’s use cases, pros &amp;amp; cons.&lt;/p&gt;

&lt;p&gt;More information on waterfall model &amp;amp; iterative model is in my other blog’s, here’s the link :&lt;br&gt;
&lt;strong&gt;WaterFall Model:&lt;/strong&gt; &lt;a href="https://dev.to/rishabhraghwendra/sdlc-waterfall-model-307n"&gt;https://dev.to/rishabhraghwendra/sdlc-waterfall-model-307n&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Iterative Mode:&lt;/strong&gt; &lt;a href="https://dev.to/rishabhraghwendra/sdlc-iterative-model-1lb6"&gt;https://dev.to/rishabhraghwendra/sdlc-iterative-model-1lb6&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feel free to comment if you have any questions. All comments are greatly appreciated. If you like the blog , don’t forget to like it &amp;amp; share with your friends/colleagues.&lt;/p&gt;

&lt;p&gt;To see my projects or to get in personal touch , follow me on:&lt;br&gt;
&lt;strong&gt;Linkedin:&lt;/strong&gt;&lt;a href="https://www.linkedin.com/in/rishabh-sde/"&gt;https://www.linkedin.com/in/rishabh-sde/&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/Rishabhraghwendra18"&gt;https://github.com/Rishabhraghwendra18&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading&lt;br&gt;
Written with ❤️ &amp;amp; passion 🔥 by Rishabh Raghwendra&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>agilemodel</category>
      <category>softwareengineering</category>
      <category>softwaredevelopmentlifecycle</category>
    </item>
    <item>
      <title>SDLC: Iterative Model</title>
      <dc:creator>Rishabhraghwendra18</dc:creator>
      <pubDate>Wed, 21 Jul 2021 14:38:12 +0000</pubDate>
      <link>https://dev.to/rishabhraghwendra/sdlc-iterative-model-1lb6</link>
      <guid>https://dev.to/rishabhraghwendra/sdlc-iterative-model-1lb6</guid>
      <description>&lt;p&gt;In the Iterative Model , the development starts with a small set of requirements. Once this set of requirements is completed , then a new set of requirements is implemented again . This process of implementation goes on iteratively until unless the complete set of requirements is not implemented.&lt;/p&gt;

&lt;p&gt;In each iteration , we design , test &amp;amp; deploy . Every iteration has a fixed time in which it should be completed . &lt;/p&gt;

&lt;p&gt;Here’s the diagram , representing iterations as ‘Build 1’ , ‘Build 2’ and ‘Build 3’:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KvZowPEb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kvkuprk71nh56v4skgmz.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KvZowPEb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kvkuprk71nh56v4skgmz.jpg" alt="Iterative Model Digram"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each Build (iteration) has to go through Design , Development , Testing &amp;amp; Deployment (Implementation as per the diagram)&lt;/p&gt;

&lt;p&gt;Check out my blog &lt;a href="https://dev.to/rishabhraghwendra/software-development-life-cycle-beginners-guide-k8p"&gt;SDLC&lt;/a&gt;  to get the gist of the process.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When to use the model&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This model is best fit for project which are:&lt;/li&gt;
&lt;li&gt;Requirements are clearly defined&lt;/li&gt;
&lt;li&gt;Client wants working model at each iteration&lt;/li&gt;
&lt;li&gt;New technologies are implemented &amp;amp; learnt on the way&lt;/li&gt;
&lt;li&gt;Not availability of highly skilled team&lt;/li&gt;
&lt;li&gt;Highly risky project&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pros of Iterative Model&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A working model is ready in end of every iteration&lt;/li&gt;
&lt;li&gt;Feedback of client can be taken at each iteration &lt;/li&gt;
&lt;li&gt;Supports changing requirements&lt;/li&gt;
&lt;li&gt;Risk management is easy . Highly risky part is done first&lt;/li&gt;
&lt;li&gt;Suitable for large &amp;amp; critical projects&lt;/li&gt;
&lt;li&gt;Parallel development is possible&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons of Iterative Model&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Not suitable for smaller projects&lt;/li&gt;
&lt;li&gt;More resources are required&lt;/li&gt;
&lt;li&gt;More attention of management is required&lt;/li&gt;
&lt;li&gt;Management complexity is more&lt;/li&gt;
&lt;li&gt;End of project is not defined , which can be risky&lt;/li&gt;
&lt;li&gt;System design or architecture issues may arise because all requirements is not gathered at the beginning &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So far, we have discussed the Iterative model, it’s use cases, pros &amp;amp; cons.&lt;/p&gt;

&lt;p&gt;More information on Waterfall Model is in my other blog’s, here’s the link &lt;br&gt;
&lt;strong&gt;WaterFall Model:&lt;/strong&gt; &lt;a href="https://dev.to/rishabhraghwendra/sdlc-waterfall-model-307n"&gt;https://dev.to/rishabhraghwendra/sdlc-waterfall-model-307n&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feel free to comment if you have any questions. All comments are greatly appreciated. If you like the blog , don’t forget to like it &amp;amp; share with your friends/colleagues.&lt;/p&gt;

&lt;p&gt;To see my projects or to get in personal touch , follow me on:&lt;br&gt;
&lt;strong&gt;Linkedin:&lt;/strong&gt; &lt;a href="https://www.linkedin.com/in/rishabh-sde/"&gt;https://www.linkedin.com/in/rishabh-sde/&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/Rishabhraghwendra18"&gt;https://github.com/Rishabhraghwendra18&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading&lt;br&gt;
Written with ❤️ &amp;amp; passion 🔥 by Rishabh Raghwendra&lt;/p&gt;

</description>
      <category>programming</category>
      <category>model</category>
      <category>beginners</category>
      <category>sdlc</category>
    </item>
    <item>
      <title>SDLC: WaterFall Model</title>
      <dc:creator>Rishabhraghwendra18</dc:creator>
      <pubDate>Tue, 13 Jul 2021 14:46:29 +0000</pubDate>
      <link>https://dev.to/rishabhraghwendra/sdlc-waterfall-model-307n</link>
      <guid>https://dev.to/rishabhraghwendra/sdlc-waterfall-model-307n</guid>
      <description>&lt;p&gt;The Waterfall Model was the first Process Model to be introduced. It was widely used as it was easy to understand &amp;amp; implement . &lt;/p&gt;

&lt;p&gt;WaterFall Model is also known as &lt;strong&gt;Linear-Sequential Life Cycle Model&lt;/strong&gt; because work is done linearly - the next stage begins after completion of the previous stage . Output of the previous stage is the input of the next stage . &lt;/p&gt;

&lt;p&gt;The name &lt;strong&gt;“WaterFall Model”&lt;/strong&gt;  is because the process looks like flowing steadily downwards - as shown below just like a waterfall .&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MfNm1df9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/or69elssvz9oewm97byd.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MfNm1df9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/or69elssvz9oewm97byd.jpg" alt="WaterFall Model diagram" width="600" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Phases are:-&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Requirement Analysis:&lt;/strong&gt; In this phase all the requirements about the project are gathered . For eg features in projects , etc . All these requirements are well documented in the SRS ( Software Requirement Specifications ) document.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;System Design:&lt;/strong&gt; The SRS document is then used to design the system . Defining system requirements like hardware, modules (any),etc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Implementation:&lt;/strong&gt; After the System design phase is completely over . Implementation phase starts . Here each unit is individually developed . This stage goes on until all the requirements in the SRS document are not developed . &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Testing &amp;amp; Integration:&lt;/strong&gt; Each individual unit is tested for potential bugs or errors . After testing is successful , individual units are integrated together.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Deployment:&lt;/strong&gt; Once the integration is done, the software is deployed to production servers.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Note: Before deploying to production , the project is tested again (we are not going into much details).&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Maintenance:&lt;/strong&gt; Project is continuously being monitored for any user inconvenience or bugs . Time to time new patches are released as a result of any bug fixes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Projects best fit for WaterFall Model:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Requirements are clear&lt;/li&gt;
&lt;li&gt;Technology used is not dynamic&lt;/li&gt;
&lt;li&gt;Project is short&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Advantages of WaterFall Model:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Model is simple &amp;amp; easy to understand&lt;/li&gt;
&lt;li&gt;Clear defined milestones &amp;amp; deadlines&lt;/li&gt;
&lt;li&gt;Properly documented , hence team is focused towards one common goal&lt;/li&gt;
&lt;li&gt;Clearly defined stages&lt;/li&gt;
&lt;li&gt;Easy to arrange tasks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Disadvantages of WaterFall Model:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No working software is made till end of life cycle&lt;/li&gt;
&lt;li&gt;Client feedback is not taken at any stage.&lt;/li&gt;
&lt;li&gt;Not good fit for changing project requirements&lt;/li&gt;
&lt;li&gt;Not suitable for OOPs &amp;amp; long-on going projects&lt;/li&gt;
&lt;li&gt;Difficult to track progress within a stage&lt;/li&gt;
&lt;li&gt;Includes high amount of risk &amp;amp; uncertainty&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So far, we have discussed the WaterFall model, it’s use cases, advantages &amp;amp; disadvantages.&lt;/p&gt;

&lt;p&gt;Feel free to comment if you have any questions. All comments are greatly appreciated. If you like the blog , don’t forget to like it &amp;amp; share with your friends/colleagues.&lt;/p&gt;

&lt;p&gt;To see my projects or to get in personal touch , follow me on:&lt;br&gt;
&lt;strong&gt;Linkedin:&lt;/strong&gt; &lt;a href="https://www.linkedin.com/in/rishabh-sde/"&gt;https://www.linkedin.com/in/rishabh-sde/&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/Rishabhraghwendra18"&gt;https://github.com/Rishabhraghwendra18&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading,&lt;br&gt;
Written with ❤️ &amp;amp; passion 🔥 by Rishabh Raghwendra&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>waterfall</category>
      <category>sdlc</category>
      <category>devops</category>
    </item>
    <item>
      <title>Software Development Life Cycle: Beginners Guide </title>
      <dc:creator>Rishabhraghwendra18</dc:creator>
      <pubDate>Fri, 25 Jun 2021 14:04:11 +0000</pubDate>
      <link>https://dev.to/rishabhraghwendra/software-development-life-cycle-beginners-guide-k8p</link>
      <guid>https://dev.to/rishabhraghwendra/software-development-life-cycle-beginners-guide-k8p</guid>
      <description>&lt;p&gt;You may have heard the term Software Development Life Cycle (SDLC) and are curious to know what it means and it’s benefits?&lt;br&gt;
My Blog will provide all that information in a simplified way for the beginners. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is SDLC?&lt;/strong&gt;&lt;br&gt;
SDLC stands for software development life cycle.It’s a systematic process for building software that ensures the quality &amp;amp; correctness of the software build .In simple terms , it’s a planning process before developing the software .&lt;/p&gt;

&lt;p&gt;You may have heard of the quote &lt;em&gt;“Think twice, code once.”&lt;/em&gt; &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0y3p08uyzor7barhgsoe.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%2Fuploads%2Farticles%2F0y3p08uyzor7barhgsoe.jpg" alt="Think twice code once"&gt;&lt;/a&gt;&lt;br&gt;
It’s true , we should follow this approach and such an approach can be achieved with the help of SDLC.&lt;/p&gt;

&lt;p&gt;We plan each and every step like requirements, coding conventions, design patterns, etc in SDLC . We do so to achieve goals in less time , save money and prevent chaos .&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SDLC Phases&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F22wqjhzbpebokzic8jdy.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%2Fuploads%2Farticles%2F22wqjhzbpebokzic8jdy.jpg" alt="SDLC Phases"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Phase 1: Planning&lt;/strong&gt;&lt;br&gt;
This is the most important or crucial stage of the process . It defines the success or failure of the project . If a project is not thoroughly planned , we are likely to fail to build it.&lt;/p&gt;

&lt;p&gt;Here the senior members take input about the project from the customer , then domain experts analyse it and estimate the cost of the project as well as the risk factors .&lt;/p&gt;

&lt;p&gt;With the help of experts , marketing team and surveys they are able to minimize the risk factors and the cost to the team . &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 2: Defining&lt;/strong&gt;&lt;br&gt;
After the planning phase is complete , now it’s time to document it . This document is called &lt;strong&gt;SRS( Software Requirement Specification )&lt;/strong&gt; .It includes all the product requirements needed during the life cycle process . Later on the SRS is sent to the customer or the market analyst for approval .&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 3: Designing&lt;/strong&gt;&lt;br&gt;
After the approval of the SRS document, a &lt;strong&gt;DDS( Design Document Specification )&lt;/strong&gt; is proposed at this stage. It contains all the architecture (follow &amp;amp; managing of data) and design patterns (paradigms to follow while coding) proposed considering all the requirements and risk factors involved . &lt;/p&gt;

&lt;p&gt;Later on, all the stakeholders review the DDS and select a good fit architecture &amp;amp; pattern for the project . &lt;/p&gt;

&lt;p&gt;DDS contains the data flow structure from different modules (if any) . The more DDS is detailed about every step, the easier the development phase.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 4:Building&lt;/strong&gt;&lt;br&gt;
This is the stage where real fun begins - coding. DDS is sent to developers . Developers follow the layed out patterns in the document.&lt;/p&gt;

&lt;p&gt;It includes tools a developer needs while developing like compiler , interpreter , debugger , etc . It also includes in which high level languages like C, JavaScript , Python,etc  he/she should code .&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 5:Testing&lt;/strong&gt;&lt;br&gt;
We can say it’s a subset of coding . In the real world we follow TDD -  Test Driven Development , it means we test every piece of code that we have written . Same process here is also followed.&lt;/p&gt;

&lt;p&gt;Here each piece of function is tested rigorously . We perform tests on each and every function and part of the application . This helps us to identify bugs , unexpected errors at an early stage . &lt;/p&gt;

&lt;p&gt;&lt;em&gt;If you have testing skills as a developer then you have an edge over other developers so it’s recommended to learn this skill too to get high chances of your resume getting shortlisted.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 6: Deployment &amp;amp; Maintenance&lt;/strong&gt;&lt;br&gt;
After testing (removing each and every bug), your application is ready to be deployed for the public.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: Before deploying there is a staging environment where Testers test applications under heavy load but we are not going into much details right now .&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Regular feedback is taken from the public - who are using their application to spot any bug or error that is not spotted in the testing phase . Afterwards the team analyzes the problem and solves the bug and redeploy it .This process of feedback &amp;amp; resolving bugs continues .&lt;/p&gt;

&lt;p&gt;Our newly deployed application is also monitored . It helps us to get insight out how much load we are getting on our application and what should be our next task to manage this load much more efficiently .&lt;/p&gt;

&lt;p&gt;This whole process of SDLC repeatedly  &lt;em&gt;goes-on-and-on&lt;/em&gt;  - forever till the application gets outdated -  adding new features , resolving new bugs , etc.&lt;/p&gt;

&lt;p&gt;Here we have only discussed what SDLC is , it’s benefits and phases . But it’s not the end . There are different models/methodologies we follow in SDLC for eg Agile, Iterative, Waterfall Model, etc . Each of these models have their pros and cons. We will discuss this in the next blog.&lt;/p&gt;

&lt;p&gt;Thanks for reading,&lt;br&gt;
Written with  ❤️ &amp;amp; passion 🔥 by &lt;em&gt;Rishabh Raghwendra&lt;/em&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>sdlc</category>
      <category>softwaredevelopment</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Step By Step Visual Roadmap To Any learn programming Language (Practice Questions included)</title>
      <dc:creator>Rishabhraghwendra18</dc:creator>
      <pubDate>Tue, 08 Jun 2021 14:13:00 +0000</pubDate>
      <link>https://dev.to/rishabhraghwendra/step-by-step-visual-roadmap-to-any-learn-programming-language-practice-questions-included-3mci</link>
      <guid>https://dev.to/rishabhraghwendra/step-by-step-visual-roadmap-to-any-learn-programming-language-practice-questions-included-3mci</guid>
      <description>&lt;p&gt;It’s always a good idea to plan rather than directly jumping in, to achieve our goals in a shorter period of time.&lt;/p&gt;

&lt;p&gt;To learn a programming language, follow a visual roadmap to understand the basics and succeed in that. Practice questions sheets are provided for some important topics. This roadmap &amp;amp; questions are applicable to any language you are learning because concepts are same in every language , only syntax is different. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Note: Assuming that you have chosen which programming language to learn.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So let’s get started ,yippee..&lt;/p&gt;

&lt;p&gt;Learn a new topic and practice that topic on alternate days, as shown below :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5tz15ylrzu5m4ni05y8i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5tz15ylrzu5m4ni05y8i.png" alt="Plan/Strategy"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Blue bar shows the day to learn a new topic . White bar shows the day to practice questions from below the &lt;strong&gt;Practice Questions sheet&lt;/strong&gt; , topics that we have learnt a day before.&lt;br&gt;
Sunday is our day off!!&lt;/p&gt;

&lt;p&gt;Visual roadmap of topics that we should know in any programming language .&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Link :- &lt;a href="https://cutt.ly/cnEJca4" rel="noopener noreferrer"&gt;https://cutt.ly/cnEJca4&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As promised , here’s the practice questions sheet :&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Link :- &lt;a href="https://cutt.ly/5nTeQ4G" rel="noopener noreferrer"&gt;https://cutt.ly/5nTeQ4G&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Questions are not complex, but enough to make your concepts clear. Solutions of these questions can be very easily found on the internet , but try to spend at least 30mins figuring out the solution.&lt;/p&gt;

&lt;p&gt;With these estimates you can complete the roadmap in about 3 month! It’s just a rough estimate and can vary from person to person.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bonus Tip:&lt;/strong&gt; If you are still searching for best resources to learn C++,JavaScript,Python , here’s the list:&lt;br&gt;
&lt;strong&gt;- C++(Paid):&lt;/strong&gt; &lt;a href="https://cutt.ly/HnEJIjF" rel="noopener noreferrer"&gt;https://cutt.ly/HnEJIjF&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;- JavaScript(Free):&lt;/strong&gt; &lt;a href="https://cutt.ly/JnEJDu8" rel="noopener noreferrer"&gt;https://cutt.ly/JnEJDu8&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;- Python(Free):&lt;/strong&gt; &lt;a href="https://cutt.ly/LnEJJKd" rel="noopener noreferrer"&gt;https://cutt.ly/LnEJJKd&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At last all I would say is, keep on practicing as practice is the only key to success!&lt;/p&gt;

&lt;p&gt;Thanks for reading,&lt;br&gt;
Written with ❤️ &amp;amp; passion 🔥 by Rishabh Raghwendra &lt;/p&gt;

</description>
      <category>programming</category>
      <category>beginners</category>
      <category>roadmap</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How to learn Programming in 2021</title>
      <dc:creator>Rishabhraghwendra18</dc:creator>
      <pubDate>Thu, 27 May 2021 14:09:11 +0000</pubDate>
      <link>https://dev.to/rishabhraghwendra/how-to-learn-programming-in-2021-4c3i</link>
      <guid>https://dev.to/rishabhraghwendra/how-to-learn-programming-in-2021-4c3i</guid>
      <description>&lt;p&gt;Computer Programming is one of the hot industries in the world. It not only pays good salary but also gives job security during pandemic too .This industry has grown 66% in the US in 10 years and expected to grow 20% annually.&lt;/p&gt;

&lt;p&gt;You want to be a part of Programming industry, but don’t know how to program or code? &lt;br&gt;
In this blog, I will share some tips provided by my mentors when I started, this will be useful for the beginners.&lt;/p&gt;

&lt;p&gt;Throughout the blog, I will use the programming and coding words interchangeably, for sake of simplicity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt; Focus on one programming language or technology to start with.&lt;/p&gt;

&lt;p&gt;Beginners think that they have to learn every programming language to become a good programmer, but it's not true, follow below steps which will prevent you from burnout.&lt;/p&gt;

&lt;p&gt;Even Professionals, don’t learn each and every language/technology.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Start Programming
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Hang out with people with the same interest (learn program/code)&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ym5rtyh28jm6obd3cwy.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ym5rtyh28jm6obd3cwy.jpeg" alt="People in a group"&gt;&lt;/a&gt; &lt;br&gt;
This is the most important step than directly jumping into learning any new programming language.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;What’s the benefit of this?&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most of the beginners when they start learning any programming language, initially they are very enthusiastic but as they continue learning they get bored. They don’t have much enthusiasm and as a result, they start procrastinating. That is when your coding buddies will help and support! Learning in a group brings more enthusiasm and motivation. Discussing the programming issues and coming up with a solution together will make you work harder with more energy and motivation. Most important thing is &lt;strong&gt;the people you hang out with , more likely you will become like them.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;How to find coding buddies 🤔?&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can start following professional programmers on social media like YouTube, Twitter, Instagram, etc. Most of them have discord servers, you can join their servers (for free) and make them your coding buddies. Another way to find coding buddies is to go to programming events or online events and meet people or you can make a WhatsApp group of your college classmates, who are passionate about coding, in there you may find a mentor as well! &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Decide what you want to learn&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fggznrh1lk6jtxs43ic7u.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fggznrh1lk6jtxs43ic7u.jpeg" alt="Decision Making"&gt;&lt;/a&gt; &lt;br&gt;
There are a lot of technologies in the market for different domains - Web development, Cloud Computing, Blockchain, etc.. and it’s not possible to learn all these technologies at one time, so first decide what you want to become and your end goal. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;You can search about different domains of computer science or I will also write a blog on this topic with salary expectations, on your demand.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Below are some ideas -&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Want a job within a year?&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To get a job within a year or two, the focus should be on one programming language preferably C++ because it’s faster than other languages. Know some basics about the language and then learn Data Structures &amp;amp; Algorithms (DSA).&lt;/p&gt;

&lt;p&gt;Most of the companies don’t usually see how many projects you worked on, but they see your problem solving capabilities . DSA is the key point that can prove that you are a problem solver.&lt;/p&gt;

&lt;p&gt;Learn DSA through free or paid DSA courses on the internet. Practice DSA skills using sites like LeetCode, InterviewBit, etc. These are interview-based sites which will help with the coding interview round for different product or service-based companies. The more you practice the more confidence you get, in cracking an interview.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Want to develop Apps just for fun?&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a Mobile app or a Web app or Social networking sites like Instagram/Facebook, then learn Python or JavaScript, HTML, CSS also learn SQL or MongoDB databases, these are the common requirements for a Web or an Android app.&lt;/p&gt;

&lt;p&gt;Python and JavaScript are used as the backend for any application to run continuously on a server.&lt;/p&gt;

&lt;p&gt;HTML, CSS are used to create frontend  interface for an application, whereas JavaScript is used to make frontend  interactive. We can learn Frontend in a month or so. Later on we can learn Reactjs, Angular.js, Vue.js - these are frontend libraries and frameworks, to enhance our front-end skills.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Want to be a software developer?&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To be a software developer first learn a programming language and make a stronghold on it. Learn C++ first as it fastest programming language and as well many other programming languages like Java has evolved from C++. Many other programming language or run-time environment also uses C++ under the hood like CPython, Node.js.&lt;/p&gt;

&lt;h4&gt;
  
  
  Fun Fact: C++ developer has a higher salary than any other programming language developer!
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;2.Learn one Language at a time&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Don’t try to learn more than one programming language simultaneously, spend time on learning one language, the more time you spend, the more benefit in the long run. Choose a small project to get hands on experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choose a project
&lt;/h2&gt;

&lt;p&gt;This is the most crucial step. If you don’t do this, then no one can believe you that you know to program.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3.Learn technologies as per your project requirements.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It’s impossible to learn every Technology, learn technologies as per project requirements. To learn every technology will take ages and we won’t be able to learn or implement anything.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Start with a simple project&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Start with a small project like a Calculator, a Coffee ordering app or a Game..&lt;br&gt;
After making some simple projects, make 2-3 medium-level projects from which you can learn something new while developing it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Practice makes everyone perfect…. Practice, Practice &amp;amp; Practice!&lt;/strong&gt;&lt;br&gt;
Follow your dreams to become a great Programmer by practicing hard.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I will also post a roadmap for learning your first programming language, so stay in tune 😉&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading ,&lt;br&gt;
Written with ❤️ &amp;amp; passion 🔥by &lt;em&gt;Rishabh Raghwendra&lt;/em&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>project</category>
      <category>coding</category>
      <category>programmingforbeginner</category>
    </item>
  </channel>
</rss>
