<?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: Abdurraheem Abdul-majeed</title>
    <description>The latest articles on DEV Community by Abdurraheem Abdul-majeed (@jdonq).</description>
    <link>https://dev.to/jdonq</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%2F1107117%2F5f87d4bb-4208-44d9-86b9-fc4774278df3.png</url>
      <title>DEV Community: Abdurraheem Abdul-majeed</title>
      <link>https://dev.to/jdonq</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jdonq"/>
    <language>en</language>
    <item>
      <title>Getting started in Software development: A Path to a rewarding career (Part 4, What type of programmer should I be)</title>
      <dc:creator>Abdurraheem Abdul-majeed</dc:creator>
      <pubDate>Sun, 27 Aug 2023 16:34:22 +0000</pubDate>
      <link>https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-part-4-what-type-of-programmer-should-i-be-555o</link>
      <guid>https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-part-4-what-type-of-programmer-should-i-be-555o</guid>
      <description>&lt;h2&gt;
  
  
  Hello and welcome
&lt;/h2&gt;

&lt;p&gt;Thanks for stopping by.&lt;/p&gt;

&lt;h2&gt;
  
  
  Table of Content
&lt;/h2&gt;

&lt;p&gt;Full table of content for the entire series is &lt;a href="https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-16ik"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Today, we will continue the following&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Getting started (cont'd)&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Decide which route you want to take (web, desktop, mobile, game, data, frontend, backend, Fullstack etc. We will be selecting Fullstack web development)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Decisions
&lt;/h2&gt;

&lt;p&gt;Today, we will discuss one of the biggest challenges for new or upcoming software developers. What are my &lt;strong&gt;options&lt;/strong&gt; in the profession, what &lt;strong&gt;route&lt;/strong&gt; should I take from among the options, which of these is &lt;strong&gt;most fulfilling&lt;/strong&gt; and when I choose, can I &lt;strong&gt;switch&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--X6gTnGnd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vemznh6hxoysqaijxg1s.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--X6gTnGnd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vemznh6hxoysqaijxg1s.gif" alt="decision" width="640" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As a new developer, it is understandable for this to be a problem, especially because there is a wide range of options to pick from and to make it more interesting, every few years, the options increase by at least one or fifty 🤷. &lt;/p&gt;

&lt;p&gt;The good news though is the same, there are many available options in terms of career paths and areas of specialization. You have a buffet and anyone you choose to pursue gives you the chance to have a fulfilling career so long as you commit to getting good at your chosen field and leveraging the many opportunities. &lt;/p&gt;

&lt;p&gt;Switching is also quite easy in this line of work, just put in some work and get good at the new field and you will be able to secure roles in no time. Another amazing bit is that a good amount of the knowledge in each subfield carries over well to others.&lt;/p&gt;

&lt;p&gt;Let us take a quick glimpse at some of the more common options:&lt;/p&gt;

&lt;h3&gt;
  
  
  Web Development
&lt;/h3&gt;

&lt;p&gt;Building websites (like company landing pages, society information sites etc) and web applications (like Facebook, Netflix, Gmail etc). For these you will need technologies like HTML, CSS, JavaScript, python, php etc.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--B1ziUtgb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mekugav1o5fm5v5qa3gj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--B1ziUtgb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mekugav1o5fm5v5qa3gj.png" alt="web" width="800" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Web development is usually broken into two broad subsections namely &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Frontend development: this involves two things; (1) designing the user interfaces (UI), the pages the users will see and interact with like buttons, colours, icons, lists etc. and (2) implementing the behaviours for speaking with the backend based on users’ interactions like filling a signup form and clicking submit, clicking follow on twitter (X), clicking play on Netflix, clicking upload on Instagram and so on&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Backend development: this also involves two things (1) the server-side logic that controls what happens when users interact with the frontend like login, sign up, make payment, add profile picture and (2) database interactions to ensure that the changes made while using the application are persisted for next time. Without the database, there will be no way to keep information from a previous session so users can continue whenever they return to the application.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are some awesome fellas however who can do both, because they have the skills to build out the frontend and the backend. They are called &lt;strong&gt;Fullstack developers&lt;/strong&gt;. Awesome is good so we will be learning towards becoming one of such awesome Fullstack Developers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mobile App Development
&lt;/h3&gt;

&lt;p&gt;This is quite like web development, and you will find that most of the web applications you see out there have accompanying mobile apps. It involves building applications to run on the most common mobile operating systems in the market (iOS and Android). &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PQJ4lIZJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tmq82db24c8euc79l6ml.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PQJ4lIZJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tmq82db24c8euc79l6ml.png" alt="mobile" width="800" height="419"&gt;&lt;/a&gt;&lt;br&gt;
There are two approaches that are common in the industry these days:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Native mobile development: this involves building the applications using the native platforms provided by the maintainers of the operating systems like using Swift for iOS and Java or Kotlin for Android.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cross-platform or Hybrid mobile development: There are frameworks like Ionic, React Native and Flutter that also allow developers to write code in web development technologies (HTML, CSS, Javascript) and then build them to works on multiple platforms like android and iOS devices.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are trade-offs to either choice like: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Performance (native code is optimized for each OS so it will likely run better) &lt;/li&gt;
&lt;li&gt;Cost and time to build (with hybrid, you can code once and build for multiple devices while with native you must code the same thing at least twice)&lt;/li&gt;
&lt;li&gt;Access to native functionality like hardware features and APIs (native code has these out of the box but hybrids need to implement workarounds)&lt;/li&gt;
&lt;li&gt;Maintenance (for every change on each OS for native, you must ensure you make same for the other and this also applies to bug fixes and stuff like that which can be a pain to track but for hybrids, all the coding is done once per change)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We will probably do a course on mobile development and go into more details when we are done with web development. &lt;/p&gt;

&lt;h3&gt;
  
  
  Desktop Application Development
&lt;/h3&gt;

&lt;p&gt;This is a lot like mobile applications except you are creating applications that run on desktop operating systems like Windows, macOS, and Linux. This can involve various programming languages like Java, C#, Python, and C++. There are also some hybrid solutions for building desktop applications like Electronjs and the same constraints as in mobile apply here.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0_D8-Tam--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gc1u8nai4r437t2wz4yf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0_D8-Tam--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gc1u8nai4r437t2wz4yf.png" alt="desktop" width="800" height="434"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Game Development
&lt;/h3&gt;

&lt;p&gt;All the video games we play are applications too and they can be built using specialized engines and tools like Unity or Unreal Engine. This field is highly specialized as combines programming skills with creativity and design. It takes some time and skill to get good at this, but the reward is worth the hustle&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RQ3vyN9f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u9hvvdxte0ea5p035m4j.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RQ3vyN9f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u9hvvdxte0ea5p035m4j.jpg" alt="game" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  DevOps Engineer
&lt;/h3&gt;

&lt;p&gt;They manage the entire process of enabling &lt;strong&gt;Dev&lt;/strong&gt;eloper &lt;strong&gt;op&lt;/strong&gt;eration*&lt;em&gt;s&lt;/em&gt;* (DevOps). It typically involves some coding or automation to enable the IT operations involved in the software engineering process. After all the code has been written, it needs to be tested and deployed to production for our users to use it, this requires some IT operations to provision the servers, install dependencies, handle networking, data storage, and so on. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ak79Kc4y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gbr6plaj0frgykdmzdt6.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ak79Kc4y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gbr6plaj0frgykdmzdt6.jpeg" alt="devops" width="770" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;DevOps engineers focus on automating these processes enabling continuous integration and continuous deployment also referred to as CI/CD. &lt;/p&gt;

&lt;p&gt;The typical DevOps person also needs some knowledge of Cloud Computing from providers like AWS, GCP, Azure and the likes&lt;/p&gt;

&lt;h3&gt;
  
  
  Quality Assurance (QA) Engineer
&lt;/h3&gt;

&lt;p&gt;This type of developers are the unsung heroes of software development because they are the ones that write code to test the quality of code written by other developers to quickly identify bugs before it gets to the users ensuring software quality. &lt;/p&gt;

&lt;p&gt;There are many levels of testing and language used for testing largely depends on the language being tested. There are however some tools and libraries that can mimic user behaviour on applications making it easy to go on the user journey and identify issues before releasing the application to the users&lt;/p&gt;

&lt;h3&gt;
  
  
  UI/UX Designer
&lt;/h3&gt;

&lt;p&gt;These are not strictly developers, but I deem them worth a mention here because they are the ones that conceptualize the interfaces we have all come to know and love. UI/UX (User Interface/User Experience) designers work closely with frontend developers to create user-friendly and visually appealing interfaces.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VRxm0ELO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7m9l8z3qu0xxkug5oj5f.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VRxm0ELO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7m9l8z3qu0xxkug5oj5f.jpg" alt="uiux" width="800" height="549"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are several other options like Embedded Systems Development, Cybersecurity Analyst, Cloud Computing Specialist, Blockchain Developer, Augmented Reality (AR) / Virtual Reality (VR) Developer, Machine Learning/Artificial Intelligence Engineer, Data Science/Analysis and more but for our scope we will leave it at this.&lt;/p&gt;

&lt;p&gt;To reiterate, we will be going Fullstack because we are awesome and to this end, we will start with learning Javascript (the only language you can code in fullstack) in the next one.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XuiA82jJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wmkro0kz1aer1o0o7k8l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XuiA82jJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wmkro0kz1aer1o0o7k8l.png" alt="iron legion" width="600" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As always remember we are here to help and stay frosty&lt;/p&gt;

&lt;p&gt;Previous post is &lt;a href="https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-part-3e-functional-programming-and-oop-39ii"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next post will be here&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>tutorial</category>
      <category>beginners</category>
      <category>career</category>
    </item>
    <item>
      <title>Getting started in Software development: A Path to a rewarding career (Part 3E, Functional Programming and OOP)</title>
      <dc:creator>Abdurraheem Abdul-majeed</dc:creator>
      <pubDate>Sat, 12 Aug 2023 23:43:36 +0000</pubDate>
      <link>https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-part-3e-functional-programming-and-oop-39ii</link>
      <guid>https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-part-3e-functional-programming-and-oop-39ii</guid>
      <description>&lt;h2&gt;
  
  
  Hello and welcome
&lt;/h2&gt;

&lt;p&gt;Thanks for stopping by.&lt;/p&gt;

&lt;h2&gt;
  
  
  Table of Content
&lt;/h2&gt;

&lt;p&gt;Full table of content for the entire series is &lt;a href="https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-16ik"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Today, we will continue the following&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Getting started (cont'd)&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Learn Programming concepts (cont'd)&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Programming Concepts
&lt;/h2&gt;

&lt;p&gt;Today we will round up the section on programming concepts with brief descriptions of Functional Programming and Object-Oriented Programming (OOP).  &lt;/p&gt;

&lt;p&gt;Fair warning, these concepts are a bit involved so just go through them for the sake of getting introduced to them. Do not be under pressure to understand them completely for now. We are only addressing them here because it is good to have this basic exposure now before we go in deeper in future sessions&lt;/p&gt;

&lt;p&gt;Lets goooo!!!&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%2Fcdbajnk8mgt9mrm909c9.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%2Fcdbajnk8mgt9mrm909c9.gif" alt="Yeeeeeaaaah"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Functional Programming
&lt;/h3&gt;

&lt;p&gt;Functional programming (or FP) is a software development paradigm where functions (&lt;strong&gt;Pure functions&lt;/strong&gt; to be specific) are the building blocks of the computations to be done in the application. &lt;/p&gt;

&lt;p&gt;Another aspect to it is that it seeks to avoid concepts of &lt;strong&gt;shared state&lt;/strong&gt; and &lt;strong&gt;mutable data&lt;/strong&gt;. Now lets zoom in to some of the key aspects of FP. Yes, the ones in bold.&lt;/p&gt;

&lt;h4&gt;
  
  
  Pure functions
&lt;/h4&gt;

&lt;p&gt;They are the basis of functional programming. They are functions like the ones we have addressed in the previous session (used for bundling behaviour to be reused) but with some specific behaviours:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  They take input parameters and return an output without modifying any external state or data. So, if your function affects anything outside its scope, it produces a side effect and that makes it impure. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Being an impure function is not a crime but it no longer fits the FP paradigm and you have to watch for the pitfalls that make pure functions desirable. It will only be wrong to have those if FP is what you are aiming for.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Same inputs to pure functions return same outputs all the time. Like a function to add 2 numbers; no matter how many times you try the function with the same parameters, you can be sure the output will be the same.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function add(a,b) {
   return a+b
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This &lt;code&gt;add&lt;/code&gt; function is pure. It does not impact/modify anything else and it will always return the same output given the same inputs.&lt;/p&gt;

&lt;p&gt;This behaviour of pure functions makes them easy to work with because they are predictable and easily testable.&lt;/p&gt;

&lt;h4&gt;
  
  
  Shared state and Data Immutability
&lt;/h4&gt;

&lt;p&gt;In functional programming, once data is created, it is not changed. Instead, new versions or copies are created when required. This reduces the issues that can arise from mutating (changing) data that can lead to side effect which can be hard to track, test and manage in programming.&lt;/p&gt;

&lt;p&gt;FP is not as common as it used to be because it was replaced/overtaken by OOP but there are still a few cases where it holds a lot of value and knowing and applying it as much as is convenient in your programming career might come in handy.&lt;/p&gt;

&lt;h3&gt;
  
  
  Object Oriented Programming
&lt;/h3&gt;

&lt;p&gt;This is a paradigm that organizes your application code into structures called objects. &lt;/p&gt;

&lt;p&gt;The way it works is that everything in your code is an object. Whether you are building a social media app, a ride hailing app or a to-do list app, everything is an object. The database connection is an object, the user is an object, authentication is an object etc. Literally everything in the world can be modeled in your application as an object.&lt;/p&gt;

&lt;p&gt;Objects are built from Classes and a Class is simply a template or blueprint that defines the properties (attributes/features) and behaviors (methods/abilities) that objects of that class will have.&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%2F33q8jm13874hffcmw54j.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%2F33q8jm13874hffcmw54j.png" alt="oop human"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the image above, you create a class called &lt;code&gt;Human&lt;/code&gt; and from that Human class you can build any number of ‘Human’ objects in your application as needed using that blueprint or template. &lt;/p&gt;

&lt;p&gt;Inside the Human class like every other class, you will specify 2 sets of things&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Attributes like gender, name, email address, account number and any other attributes that are relevant to your application use case for the Human’s objects. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Methods or function or actions that represent what the Humans in your application can do&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Do not make the mistake I made earlier while learning by specifying everything you can think of for a human, only the attributes relevant to the app. If the application does not use the date of birth of the human then it is not relevant. Seems like a given but is worth mentioning.&lt;/p&gt;

&lt;p&gt;There are the 4 main concepts in OOP namely &lt;strong&gt;Inheritance&lt;/strong&gt;, &lt;strong&gt;Polymorphism&lt;/strong&gt;, &lt;strong&gt;Abstraction&lt;/strong&gt; and &lt;strong&gt;Encapsulation&lt;/strong&gt;. Do not worry too much what they mean for now, we will go in deeper when we get to the OOP section in our journey &lt;/p&gt;

&lt;p&gt;In my opinion, OOP is a super power once you grasp it but it takes some time and effort to truly get it right.&lt;/p&gt;

&lt;p&gt;This is it for today and for this section on basic programming concepts.&lt;/p&gt;

&lt;p&gt;In the next one, we will get into the real meat of the matter and start writing code.&lt;/p&gt;

&lt;p&gt;Until then stay frosty and remember, we are here to help&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%2Fbjsczg5v88nxlkhx03w5.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%2Fbjsczg5v88nxlkhx03w5.gif" alt="Iron legion"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Previous post is &lt;a href="https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-part-3d-functions-data-structures-and-debugging-2ei0"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next post is &lt;a href="https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-part-4-what-type-of-programmer-should-i-be-555o"&gt;here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>career</category>
    </item>
    <item>
      <title>Getting started in Software development: A Path to a rewarding career (Part 3D, Functions, Data structures and Debugging)</title>
      <dc:creator>Abdurraheem Abdul-majeed</dc:creator>
      <pubDate>Mon, 31 Jul 2023 09:23:37 +0000</pubDate>
      <link>https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-part-3d-functions-data-structures-and-debugging-2ei0</link>
      <guid>https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-part-3d-functions-data-structures-and-debugging-2ei0</guid>
      <description>&lt;h2&gt;
  
  
  Hello and welcome
&lt;/h2&gt;

&lt;p&gt;Thanks for stopping by.&lt;/p&gt;

&lt;h2&gt;
  
  
  Table of Content
&lt;/h2&gt;

&lt;p&gt;Full table of content for the entire series is &lt;a href="https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-16ik"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Today, we will continue the following&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Getting started (cont'd)&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Learn Programming concepts (cont'd)&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Programming Concepts
&lt;/h2&gt;

&lt;p&gt;Here we are again to serve you more basic programming concepts.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ndUoMLe_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rxiawi16szvxrn0kf7cx.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ndUoMLe_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rxiawi16szvxrn0kf7cx.gif" alt="clap" width="640" height="640"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Functions
&lt;/h3&gt;

&lt;p&gt;This is the term used to describe a block of code that performs a specific task or we can say it is a block of code that performs a specific &lt;strong&gt;function&lt;/strong&gt; 😜. They are also sometime called ‘methods’, ‘procedures’, ‘subroutines’ in some programming languages. &lt;/p&gt;

&lt;p&gt;We need functions to ensure that the same operation or task can be implemented once in the code and reused as many times as needed instead of re-implementing the same operation everywhere it is needed.&lt;/p&gt;

&lt;p&gt;Let us take a function to add 2 numbers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function add(a,b) {
   return a+b
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the function above, we gave it a name of &lt;code&gt;add&lt;/code&gt; and passed the 2 numbers we want to add to it as the variables &lt;code&gt;a&lt;/code&gt; and &lt;code&gt;b&lt;/code&gt; and then we return the result of adding them. &lt;/p&gt;

&lt;p&gt;Now anywhere in the code we want to add 2 numbers, we simply call the function to do the job for us instead of reimplementing the addition again.&lt;/p&gt;

&lt;p&gt;An example of adding 2 numbers might seem trivial but imagine if you had to take a list of users, call a save function in a database for all of them and send a confirmation email for all of them when done. &lt;/p&gt;

&lt;p&gt;The single implementation of this alone is a big task to do. Now imagine having to re do the same logic anytime you have some users who need these operations. &lt;/p&gt;

&lt;p&gt;This is where functions shine. Implement logic once and call it everywhere you need it in the code&lt;/p&gt;

&lt;p&gt;Do not worry about how the code above works, we are not there yet&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--h3blSprP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t10q3mko90kglf9fjnf2.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--h3blSprP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t10q3mko90kglf9fjnf2.gif" alt="not yet" width="498" height="210"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Just understand that reusability is a crucial part of application development and functions are one of the tools that help to achieve that. We will do more on functions when we get to demo.&lt;/p&gt;

&lt;h3&gt;
  
  
  Input/Output (I/O)
&lt;/h3&gt;

&lt;p&gt;This simply describes operations that enable the program to read from and write to the storage of the server. &lt;/p&gt;

&lt;p&gt;Sometimes you might want to store a user’s profile image on a server or read an existing image so you can display it on the user’s profile when they log on. I/O operations enable these types of actions. We will take some time to learn some basics about these when we get to demo.&lt;/p&gt;

&lt;h3&gt;
  
  
  Data structures
&lt;/h3&gt;

&lt;p&gt;This as the name suggests is the structure of data. It is a term used to refer the different way in which data can be structured and stored to enable its efficient use. &lt;/p&gt;

&lt;p&gt;Some data structures make it easier and/or more efficient to &lt;strong&gt;read&lt;/strong&gt; data from them than alternatives. &lt;/p&gt;

&lt;p&gt;Some data structures make it easier and/or more efficient to &lt;strong&gt;add&lt;/strong&gt; data to them than alternatives.&lt;/p&gt;

&lt;p&gt;Some data structures make it easier and/or more efficient to &lt;strong&gt;edit&lt;/strong&gt; data in them than alternatives.&lt;/p&gt;

&lt;p&gt;Some data structures make it easier and/or more efficient to &lt;strong&gt;delete&lt;/strong&gt; data from them than alternatives.&lt;/p&gt;

&lt;p&gt;There are many data structures in different programming languages but the most common include:&lt;/p&gt;

&lt;h4&gt;
  
  
  Array / List
&lt;/h4&gt;

&lt;p&gt;This is a list of items of any data type or objects. Some programming languages enforce uniform types for all items while others (like our beloved javascript) allows arrays with items of different data types. &lt;br&gt;
Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;arrayOfStudentAges = [12,15,12,13,14,13,12]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Object / Map
&lt;/h4&gt;

&lt;p&gt;This is a data structure that provide a collection of key-value pairs that can be used to store information about an object or provide a mapping of information together&lt;br&gt;
Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;person = {
  name: "John",
  age: 30,
  city: "New York"
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Set
&lt;/h4&gt;

&lt;p&gt;This data structure is similar to an array but with a condition that all items must be unique in the list&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;setOfUniqueStudentAges = [12,13,14,15] // no duplicates
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Stack
&lt;/h4&gt;

&lt;p&gt;The stack is like a list except that it enforces Last in First out (LIFO) interactions. This means that any data added to the stack can only be remove after all subsequent items have been removed. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ly78gOap--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5r6c6kmll3gycrysesnd.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ly78gOap--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5r6c6kmll3gycrysesnd.jpg" alt="stack" width="450" height="299"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Data can only be added or removed only from the top. Picture a stack of books, or boxes. Ideally, you will remove or destack (yes, its a real word) each item from the top of the stack.&lt;/p&gt;

&lt;h4&gt;
  
  
  Queue
&lt;/h4&gt;

&lt;p&gt;This is also quite similar to a list except that it enforces First in First out (FIFO) operations. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--T9gy7Mnn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gae4isp3yr9jd7bmm5fo.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--T9gy7Mnn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gae4isp3yr9jd7bmm5fo.gif" alt="queue" width="400" height="224"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So like a queue at the mall or at the filling station, first in first out. Items can be added from the back of the queue only and can be removed from the front of the queue only.&lt;/p&gt;

&lt;p&gt;There are quite a few more data structures out there like Linkedlists, Trees, Graphs, Heaps and more. We will get to them as we go along because we are here to help&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--v6BNXKct--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oy2bxfhn3svz3ip6dvx2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--v6BNXKct--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oy2bxfhn3svz3ip6dvx2.png" alt="Iron legion" width="600" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;They are however more complex and require more than basic knowledge to implement and understand&lt;/p&gt;

&lt;h3&gt;
  
  
  Bugs
&lt;/h3&gt;

&lt;p&gt;A bug is anything that does not go right with your code. Bugs are defects or errors in your programs that make them to behave unexpectedly or generate incorrect or unintended results. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0hwXMx3O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2i38k3i2m6287p6am1k1.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0hwXMx3O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2i38k3i2m6287p6am1k1.gif" alt="error" width="498" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Some common types of bugs include:&lt;/p&gt;

&lt;h4&gt;
  
  
  Syntax Errors
&lt;/h4&gt;

&lt;p&gt;These bugs occur due to code that does not match the syntax rules of the programming language in use. They are typically easier to find and fix using a good IDE. Syntax errors can also be detected by the compiler or interpreter and prevent the code from running since the computer will not understand the language while trying to compile it and so it will throw errors.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KdxZKsP4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g6e9cxk8rkbij17xxe09.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KdxZKsP4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g6e9cxk8rkbij17xxe09.PNG" alt="syntax error" width="800" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Logic Errors
&lt;/h4&gt;

&lt;p&gt;Sometimes, the syntax is correct, but the logic is wrong. In this case the code will run without any syntax errors because the problem is not a syntax one, but it will produce incorrect, unintended or unexpected results due to flaws in the logic or algorithmic mistakes. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--J-Ro8iCo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ulv3v2kwe4rgoq1dzrlv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--J-Ro8iCo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ulv3v2kwe4rgoq1dzrlv.png" alt="logic error" width="500" height="324"&gt;&lt;/a&gt;&lt;br&gt;
For example, if you are writing a function to check if a number is greater than 5 but you use the less than operator in your comparison (because we all do this sometimes), the code will run fine but the function will return the exact opposite of what was intended. &lt;strong&gt;Logic Error&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Runtime Errors
&lt;/h4&gt;

&lt;p&gt;These bugs occur during program execution and often lead to program crashes or unexpected behaviour if not handled properly. Examples include division by zero, accessing invalid memory locations, or using uninitialized variables. &lt;/p&gt;

&lt;h3&gt;
  
  
  Debugging
&lt;/h3&gt;

&lt;p&gt;Debugging is the process of finding and fixing these bugs to ensure the program works as intended. It is an essential part of the software development process because no matter how good the developer, we all tend to introduce bugs from time to time. &lt;/p&gt;

&lt;p&gt;There involves various techniques and tools to locate and resolve issues effectively.&lt;/p&gt;

&lt;h4&gt;
  
  
  Print Statements
&lt;/h4&gt;

&lt;p&gt;Inserting print statements at various points in the code to output the values of variables and track the program's flow can be an effective way to understand what's happening during execution.&lt;/p&gt;

&lt;h4&gt;
  
  
  Debuggers
&lt;/h4&gt;

&lt;p&gt;Debugging tools and integrated development environments (IDEs) provide debuggers that allow developers to set breakpoints, inspect variables, and step through the code line by line to find issues.&lt;/p&gt;

&lt;h4&gt;
  
  
  Logging
&lt;/h4&gt;

&lt;p&gt;Using logging methods in the programming language (&lt;code&gt;console.log&lt;/code&gt; in javascript) to write debug information to the console or to log files can help in tracking the program's execution and resolving issues when they arise.&lt;/p&gt;

&lt;h4&gt;
  
  
  Unit Testing
&lt;/h4&gt;

&lt;p&gt;Writing unit tests to verify the correctness of individual units (functions, methods) in the code can help catch bugs early in the development process before shipping it off to users.&lt;/p&gt;

&lt;h4&gt;
  
  
  Code Reviews
&lt;/h4&gt;

&lt;p&gt;Having peers review your code can be valuable in catching errors that you might have missed because 2 heads are better than one.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5EcgIJFI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y02739woyemfzrzzdu2v.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5EcgIJFI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y02739woyemfzrzzdu2v.jpg" alt="debug" width="800" height="505"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The typical process of finding and fixing bugs is as follows&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;First, reproduce the Bug&lt;/li&gt;
&lt;li&gt;Isolate the Issue by determining which part of the code is causing the bug (using the techniques above).&lt;/li&gt;
&lt;li&gt;Read error messages and stack traces as they are typically good at helping to pinpoint the location and nature of the bug. Some error messages even recommend fixes (what a time to be a developer).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once the bug is identified, apply the necessary fixes, and thoroughly test the code to ensure that the issue is resolved without introducing new bugs 😅.&lt;/p&gt;

&lt;p&gt;Debugging is a skill that improves with experience. It requires patience, attention to detail, and a methodical approach to systematically find and fix bugs in the code. Effective debugging practices lead to more robust and reliable software.&lt;/p&gt;

&lt;p&gt;This is it for today. Until next time. Be cool.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5WCDlKPV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sa5ei96jq5dzhp4kpdwa.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5WCDlKPV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sa5ei96jq5dzhp4kpdwa.gif" alt="till next time" width="498" height="206"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Previous post is &lt;a href="https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-part-3c-53kg"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next post is &lt;a href="https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-part-3e-functional-programming-and-oop-39ii"&gt;here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>career</category>
    </item>
    <item>
      <title>Getting started in Software development: A Path to a rewarding career (Part 3C, Control structures)</title>
      <dc:creator>Abdurraheem Abdul-majeed</dc:creator>
      <pubDate>Sat, 22 Jul 2023 21:18:57 +0000</pubDate>
      <link>https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-part-3c-53kg</link>
      <guid>https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-part-3c-53kg</guid>
      <description>&lt;h2&gt;
  
  
  Hello and welcome
&lt;/h2&gt;

&lt;p&gt;Thanks for stopping by yet again.&lt;/p&gt;

&lt;h2&gt;
  
  
  Table of Content
&lt;/h2&gt;

&lt;p&gt;Full table of content for the entire series is &lt;a href="https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-16ik"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Today, we will continue the following&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Getting started (cont'd)&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Learn Programming concepts (cont'd)&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Programming Concepts
&lt;/h2&gt;

&lt;p&gt;Here again to learn some more basic programming concepts. &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%2Fle3r31uqnv87r0n3iic8.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%2Fle3r31uqnv87r0n3iic8.gif" alt="emotional damage"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Control Structures
&lt;/h3&gt;

&lt;p&gt;Control structures in programming are a fancy name for ways to make decisions, repeat actions, and execute specific blocks of code based on certain conditions being true or false (Boolean). &lt;/p&gt;

&lt;p&gt;Say for example you want to display a different message to a person depending on their age or gender, then you can use control structures to execute the code that handles each scenario.&lt;/p&gt;

&lt;p&gt;Say you want the same block of code to run multiple times like print from 1 to 10 or continue to display the current time every second then control structures are for you.&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%2Fxqtw4cc478duhpiu3xq4.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%2Fxqtw4cc478duhpiu3xq4.gif" alt="controller"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We are JavaScript developers here so we will look at some control structures in JavaScript below. For ease of understanding we will broadly categorize them into 2 sub-groups; the Decision Control Structures and the Repetition Control Structures&lt;/p&gt;

&lt;h4&gt;
  
  
  Decision Control Structures
&lt;/h4&gt;

&lt;p&gt;These are used to decide if to execute some block of code instead of others depending on a given condition and they include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  if...else statement: This allows you to execute different blocks of code based on a given condition. It allows you to say ‘if’ a condition is true then do some code ‘else’ do another thing.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if (someConditionIsTrue) {
  // Code to execute if the condition is true
  // do something in your application
} else {
  // Code to execute if the condition is false
  // do something else in your application
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It is important to note that any block of code whose condition is not true will not be executed&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if (1 + 1 &amp;gt; 3){
  // 1 + 1 &amp;gt; 3 is true
}
else{
  // 1 + 1 &amp;gt; 3 is not true
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;From the example above, we see that the code &lt;code&gt;1 + 1 &amp;gt; 3&lt;/code&gt; is true will not run because &lt;code&gt;1 + 1 &amp;gt; 3&lt;/code&gt; will return false.&lt;br&gt;
The code that will run in this case is &lt;code&gt;1 + 1 &amp;gt; 3&lt;/code&gt; is not true&lt;/p&gt;

&lt;p&gt;So the logic of the if else is: &lt;br&gt;
if condition is true, do what is in the block of code in between the curly braces &lt;code&gt;{}&lt;/code&gt; and jump to the code after the &lt;code&gt;if…else&lt;/code&gt; block.&lt;/p&gt;

&lt;p&gt;Otherwise, do what is in the curly braces &lt;code&gt;{}&lt;/code&gt; in the else block and then continue &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  if…else if...else statement: This here is the same as the if else statement, but it gives you the option of checking for multiple conditions instead of just 2&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Say you want to do something different on each weekday, you can say&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if (today === ‘Monday’){
  // do the Monday thing
}

else if(today === ‘Tuesday’){
  // do the Tuesday thing
}

else if(today === ‘Wednesday’){
  // do the Wednesday thing
}

else if(today === ‘Thursday’){
  // do the Thursday thing
}

else if(today === ‘Friday’){
  // do the Friday thing
}

else{
  // do nothing because it the weekend!!!
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We can see that we are handling multiple cases in the &lt;code&gt;if&lt;/code&gt; and &lt;code&gt;else if&lt;/code&gt; blocks and if none of them meet the criteria set then the &lt;code&gt;else&lt;/code&gt; block serves as a kind of catch all for any case that is not handled.&lt;/p&gt;

&lt;p&gt;The final &lt;code&gt;else&lt;/code&gt; block is not required but if it will be used then it must come last in the list&lt;/p&gt;

&lt;p&gt;We will take more examples in the weeks to come. This is just to aid basic understanding and so we have a starting point when demos begin because we are here to help.&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%2Foy2bxfhn3svz3ip6dvx2.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%2Foy2bxfhn3svz3ip6dvx2.png" alt="Iron legion"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  switch statement: This allows you to pass an expression and then execute a block of code depending on the outcome of that expression.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;switch (expression) {

  case value1:
    // Code to execute if expression is equal to value1
    break;
  case value2:
    // Code to execute if expression is equal to value2
    break;
  case value3:
    // Code to execute if expression is equal to value3
    break;

  // Add as many cases as needed

  default:
    // Code to execute if expression does not match any case
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;From the above, we see that what the computer does is dependent on if the expression that was given to the &lt;code&gt;switch&lt;/code&gt; block matches any of the cases.&lt;/p&gt;

&lt;p&gt;If no case is matched, there is the &lt;code&gt;default&lt;/code&gt; block that serves as a catch all. &lt;/p&gt;

&lt;p&gt;It is also important to note that the &lt;code&gt;break&lt;/code&gt; is needed otherwise the code of the next case will be executed as well. The &lt;code&gt;break&lt;/code&gt; is like saying move on to the next line of code outside the &lt;code&gt;switch&lt;/code&gt; block so it must come after whatever you want to do for each case.&lt;br&gt;
Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;switch (dayOfTheWeek) {

  case ‘Monday’:
    // Code to execute if dayOfTheWeek is equal to ‘Monday’
    break;
  case ‘Tuesday’:
    // Code to execute if dayOfTheWeek is equal to ‘Tuesday’
    break;
  case ‘Wednesday’:
    // Code to execute if dayOfTheWeek is equal to ‘Wednesday’
    break;
  case ‘Thursday’:
    // Code to execute if dayOfTheWeek is equal to ‘Thursday’
    break;
  case ‘Friday’:
    // Code to execute if dayOfTheWeek is equal to ‘Friday’
    break;
  default:
    // Code to execute if dayOfTheWeek does not match any weekday 
    // So it may be weekend or some other value not matched above
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the condition you want to check for is based on the same unchanging expression like weekday above then &lt;code&gt;switch&lt;/code&gt; statement can be a more concise replacement for &lt;code&gt;if…else if…else&lt;/code&gt; statement.&lt;/p&gt;

&lt;h4&gt;
  
  
  Repetition Control Structures
&lt;/h4&gt;

&lt;p&gt;These are used to execute the same block of code repeatedly until a condition is met or not met. They are sometimes referred to as &lt;strong&gt;loops&lt;/strong&gt; because the code is run in a loop until something &lt;strong&gt;breaks&lt;/strong&gt; the loop or ends it. And they are:&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%2Ff3bz03oyvalf5822pidg.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%2Ff3bz03oyvalf5822pidg.gif" alt="loop"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  while loop: This loop executes a block of code repeatedly as long as the specified condition is true. The syntax is
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;while (someCondition) {
  // Code to execute repeatedly as long as the someCondition is true
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So lets say we have an integer or number variable called &lt;code&gt;count&lt;/code&gt; and its value is 100. We can write a &lt;code&gt;while&lt;/code&gt; loop to do something until the value of &lt;code&gt;count&lt;/code&gt; is 0.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;count = 100
while(count &amp;gt; 0){
  // do something interesting
  // or just print count
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This code here will repeat everything in the code block until the value of count is 0.&lt;/p&gt;

&lt;p&gt;In the code we have above, the code will run forever because the value of count is 100 and so, every time it runs the code block and then goes back to check again, &lt;code&gt;count &amp;gt; 0&lt;/code&gt; will still be true, so it will run again.&lt;/p&gt;

&lt;p&gt;A loop that runs forever is called an infinite loop, it is a loop whose condition can never be false so it will continue to run until you manually stop it or the machine crashes or some other stopping event happens.&lt;/p&gt;

&lt;p&gt;Infinite loops should be avoided unless you know what you are doing, and you want the code to keep repeating endlessly.&lt;/p&gt;

&lt;p&gt;Since we do not want that here, we need to fix the above code by reducing the value of count in each iteration of the loop like so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;count = 100
while(count &amp;gt; 0){
  // do something interesting
  // or just print count
  count = count – 1
  // or count-- 
  // to reduce the value of count by 1
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, the value of &lt;code&gt;count&lt;/code&gt; will be reduced by 1 on each iteration of the loop and once &lt;code&gt;count&lt;/code&gt; is no long greater than 0, the loop will break and move on to the next line of code after the loop block.&lt;/p&gt;

&lt;p&gt;In the example above, the loop will run 100 times because the counter variable which we named &lt;code&gt;count&lt;/code&gt; here is 100 and it is decremented by 1 each iteration. &lt;/p&gt;

&lt;p&gt;There is no law that says we must only decrement by 1 so we can decrement by 2 or 5 or 10 in each iteration and the loop will adjust accordingly.&lt;/p&gt;

&lt;p&gt;There is also no law that says we must start our counter from 100, it can be anything. We can start from 0 and count upwards and set the condition to be when &lt;code&gt;count&lt;/code&gt; is up to a certain value like 1000. We can even use other data types as the ‘counter’. So long as we alter them in the loop until the at some point in the future, the loop ends (if we want it to). The counter is simply the controller of the loop that determines if the loop will break or continue.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  do…while loop: Almost the same as the &lt;code&gt;while&lt;/code&gt; loop, but the code block is executed at least once before checking the condition. So the instruction is &lt;code&gt;do&lt;/code&gt; what is in the code block &lt;code&gt;while&lt;/code&gt; a given condition is true. But because you encounter the &lt;code&gt;do&lt;/code&gt; block first then the code in it will run at least once before the while condition is checked and then repeated (or not) depending on the condition of the condition. Get it?. No?. Ok moving on.
Example:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;do {
  // Code to execute at least once then repeatedly 
  // as long as the condition is true
} while (condition);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;  for loop: This is a more concise way of writing the other loops. It allows you put the counter, condition and the change on each iteration in one line. Syntax is as follows.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for (initialization; condition; change) {
  // Code to execute repeatedly as long as the condition is true
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;let us revisit out while loop from above. It now prints the &lt;code&gt;count&lt;/code&gt; and uses the decrement operator to (well) decrement the value of &lt;code&gt;count&lt;/code&gt; on each iteration&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;count = 100
while(count &amp;gt; 0){
  // just print count
  print(count)
  count-- 
  // to reduce the value of count by 1
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now let us do the same thing using the &lt;code&gt;for&lt;/code&gt; loop.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for (count = 100; count &amp;gt; 0; count--) {
  // just print count
  print(count)
}

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

&lt;/div&gt;



&lt;p&gt;The 2 snippets above do the exact same thing but the &lt;code&gt;for&lt;/code&gt; loop is more concise and cleaner too if you ask me but then what do I know right. &lt;/p&gt;

&lt;p&gt;There are other ways to loop in Javascript like the &lt;code&gt;for…in&lt;/code&gt;, &lt;code&gt;for…of&lt;/code&gt; and some others that allow looping through certain data structures but we are here to do the basics and we will get into those when we start coding demos.&lt;/p&gt;

&lt;p&gt;This is it for today. Stay frosty guys.&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%2Fsa5ei96jq5dzhp4kpdwa.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%2Fsa5ei96jq5dzhp4kpdwa.gif" alt="till next time"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Previous post is &lt;a href="https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-part-3b-ooj"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next post is &lt;a href="https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-part-3d-functions-data-structures-and-debugging-2ei0"&gt;here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>career</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Getting started in Software development: A Path to a rewarding career (Part 3B, Operators)</title>
      <dc:creator>Abdurraheem Abdul-majeed</dc:creator>
      <pubDate>Sun, 16 Jul 2023 19:29:49 +0000</pubDate>
      <link>https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-part-3b-ooj</link>
      <guid>https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-part-3b-ooj</guid>
      <description>&lt;h2&gt;
  
  
  Hello and welcome
&lt;/h2&gt;

&lt;p&gt;Thanks for stopping by yet again.&lt;/p&gt;

&lt;h2&gt;
  
  
  Table of Content
&lt;/h2&gt;

&lt;p&gt;Full table of content for the entire series is &lt;a href="https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-16ik"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Today, we will continue the following&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Getting started (cont'd)&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Learn Programming concepts (cont'd)&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Programming Concepts
&lt;/h2&gt;

&lt;p&gt;Where were we? 💿 🤔  Oh yeah, last time we started learning some basic programming concepts. Let us continue.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--L59twPsD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cdbajnk8mgt9mrm909c9.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--L59twPsD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cdbajnk8mgt9mrm909c9.gif" alt="Yeeeeeaaaah" width="640" height="594"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Operators
&lt;/h3&gt;

&lt;p&gt;Operators, like in mathematics, allow you to perform some operations on values. For example, in the operation: &lt;code&gt;1+1&lt;/code&gt;, the plus sign ‘+’ is the operator and it lets you add the numbers on its 2 sides. Similarly, in code, operators tell the computer to perform certain operations with the adjoining values.&lt;/p&gt;

&lt;p&gt;There are several operators in the typical programming language and Javascript is no different. Here are some of the more common ones you will encounter in the early days of your software development life; fair warning, some of them may look like the ones you already know 😜. &lt;/p&gt;

&lt;p&gt;Also, the aim here is to understand how they work on a surface level, we will do a lot of practice with them when the time comes. 😎&lt;/p&gt;

&lt;h4&gt;
  
  
  Mathematical operators
&lt;/h4&gt;

&lt;p&gt;Mathematical operators are used for mathematical operations like adding, multiplying and so on. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_AW6dCzC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uubptma7ktkvtj1o2qtw.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_AW6dCzC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uubptma7ktkvtj1o2qtw.gif" alt="maths" width="460" height="196"&gt;&lt;/a&gt;&lt;br&gt;
Now before your fear of maths makes you run off, it is enough to know basic arithmetic to understand these concepts so no fear, you gat this.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0jchRCBO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yxowyldmbcaxl6nj1zuo.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0jchRCBO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yxowyldmbcaxl6nj1zuo.gif" alt="escape" width="400" height="222"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;They are as follows &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Addition (+): Adds two values together e.g.: 1+1 will return 2&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Subtraction (-): Subtracts one value from another e.g.: 2-1 will return 1&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Multiplication (*): Multiplies two values e.g.: 4*5 will return 20&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Division (/): Divides one value by another e.g.: 16/2 will return 8&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Modulus (%): Returns the remainder of a division operation e.g.: 5%2 will return 1 (because 5/2 will return 2 and a remainder of &lt;strong&gt;1&lt;/strong&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Increment (++): Increase the value of a variable by 1 e.g.: if variable &lt;code&gt;a&lt;/code&gt; has the value of 1 and we do &lt;code&gt;a++&lt;/code&gt; we will get 2 in return (it is the same as 1+1)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Decrement (--): Decrease the value of a variable by 1 e.g.: if &lt;code&gt;a&lt;/code&gt; has the value of 2 and we do &lt;code&gt;a--&lt;/code&gt; we will get 1 in return (it is the same as 2-1)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Exponent or Exponentiation operator (&lt;code&gt;**&lt;/code&gt;): Raise the first operand to the power of the second operand e.g.: 2&lt;code&gt;**&lt;/code&gt;5 will return 32 (meaning 2 raised to the power of 5 or 2 raised to the 5th power; 2*2*2*2*2)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  Assignment Operators
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Assignment (=): Assigns a value to a variable. Remember we spoke about assigning a value to a variable in the last post, this is the operator to do that. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you have a variable called &lt;code&gt;someCoolVariable&lt;/code&gt;, in order to assign a value (like the number &lt;code&gt;5&lt;/code&gt;) to that variable, you say&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;someCoolVariable = 5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, in the memory of the computer, there is a storage area (variable) named &lt;code&gt;someCoolVariable&lt;/code&gt; and it has the value of &lt;code&gt;5&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;What we did there was assigning the value of &lt;code&gt;5&lt;/code&gt; to the variable &lt;code&gt;someCoolVariable&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;To change the value in that memory location or variable to something else (say 22), we simply assign another value to it like so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;someCoolVariable = 22
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now let us say we want to change the value of &lt;code&gt;someCoolVariable&lt;/code&gt; to its original value plus 2;&lt;/p&gt;

&lt;p&gt;We can say&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;someCoolVariable =  someCoolVariable + 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Meaning we take whatever is in the &lt;code&gt;someCoolVariable&lt;/code&gt; memory location, we add &lt;code&gt;2&lt;/code&gt; to it using the addition operator from above;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;someCoolVariable + 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and store/assign the result back to the same location so we say&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;someCoolVariable =  someCoolVariable + 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If this is not clear, fear not, we will practice later on, and you will understand it with real examples.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Addition assignment (+=): Adds a value to the variable and assigns the result to the same variable giving it a new value. This is simply a shorter way of doing the following
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;someCoolVariable =  someCoolVariable + 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By making it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;someCoolVariable += 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The 2 lines above do the exact same thing but the second one using the addition assignment is shorter to type&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Subtraction assignment (-=): Subtracts a value from the variable and assigns the result to the variable. This is simply a shorter way of doing the following
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;someCoolVariable =  someCoolVariable - 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By making it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;someCoolVariable -= 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The 2 lines above do the exact same thing but the second one using the subtraction assignment is shorter to type&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multiplication assignment (*=): Multiplies the variable by a value and assigns the result to the variable. This is simply a shorter way of doing the following
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;someCoolVariable =  someCoolVariable * 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By making it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;someCoolVariable *= 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The 2 lines above do the exact same thing but the second one using the multiplication assignment is shorter to type&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Division assignment (/=): Divides the variable by a value and assigns the result to the variable. This is simply a shorter way of doing the following
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;someCoolVariable =  someCoolVariable / 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By making it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;someCoolVariable /= 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The 2 lines above do the exact same thing but the second one using the division assignment is shorter to type&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Modulus assignment (%=): Performs modulus division on the variable and assigns the result to the variable. This is simply a shorter way of doing the following
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;someCoolVariable =  someCoolVariable % 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By making it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;someCoolVariable %= 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The 2 lines above do the exact same thing but the second one using the modulus assignment is shorter to type&lt;/p&gt;

&lt;h4&gt;
  
  
  Comparison Operators
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8ojBLHna--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b51vj906s6wmwagwjgr9.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8ojBLHna--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b51vj906s6wmwagwjgr9.gif" alt="compare" width="498" height="498"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Equal to (==): Compares two values for equality. This equality (==) operator checks whether its two operands are equal, and returns a Boolean (true or false) result. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Something to note about this is that if it is given 2 operands of different data types like a string and a Boolean or a string and a number, it will attempt to convert the operands to the same type before comparing.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1 == 1
// read as ‘is 1 equal to 1’ and the answer in Boolean is true
// same data type. Expected output: true

'hello' == 'hello'
// same data type. Expected output: true

'1' ==  1
// different data types, ‘1’ is a string and 1 is a number. Expected output: true
// this is because when converted to a string, 1 is ‘1’ which is equal to the other string 
// and when converted to a number, ‘1’ is 1 which is equal to the other number 

0 == false
// different data types, number and Boolean. Expected output: true
// because when converted to a number, false is 0, equal
// and when converted to a Boolean, 0 is false, equal
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Not equal to (!=): Compares two values for inequality, allowing type coercion. This is the reverse of the equal operator, it returns true if the 2 operands are not equal even after type coercion and false when they are equal. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1 != 1
// read as ‘is 1 not equal to 1’ and the answer in Boolean is false
// same data type. Expected output: false
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;!&lt;/code&gt; is the negation operator and it usually just returns the opposite of its operand&lt;br&gt;
So if you have a variable &lt;code&gt;isCool&lt;/code&gt; and it is assigned the value of &lt;code&gt;false&lt;/code&gt;, &lt;code&gt;!isCool&lt;/code&gt; will be &lt;code&gt;true&lt;/code&gt; because the &lt;code&gt;!&lt;/code&gt; operator reverses it&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Strict equal to (===): Compares two values for equality without type coercion. In this case, unlike &lt;code&gt;==&lt;/code&gt; above, the operands will be compared as they are supplied without any type changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1 === 1
// read as ‘is 1 strictly equal to 1’ and the answer in Boolean is true
// same data type. Expected output: true

'hello' === 'hello'
// same data type. Expected output: true

'1' ===  1
// different data types, ‘1’ is a string and 1 is a number. Expected output: false 
// this is because there is no type coercion and string ‘1’ is not the exact same strictly speaking as number 1 
// the data type mismatch already makes them unequal so the result is false

0 === false
// different data types, number and Boolean. Expected output: false
// because there is no type coercion 
// the data type mismatch already makes them unequal so the result is false
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Strict not equal to (!==): Compares two values for inequality without type coercion. This is the reverse of the strict equal above, it returns true if the 2 operands are not equal with no type coercion and false when they are equal.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;‘1’ !== 1
// read as ‘is ‘1’ not strictly equal to 1’ and the answer in Boolean is true
// different data type means it is true to say they are not equal. Expected output: true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Greater than (&amp;gt;): Checks if one value is greater than another. This is easy enough, returns true only if value on the left is greater than value on the right&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;5 &amp;gt; 3
// read as ‘is 5 greater than 3’. Expected result: true

3 &amp;gt; 4
// read as ‘is 3 greater than 4’. Expected result: false

3 &amp;gt; 3
// read as ‘is 3 greater than 3’. Expected result: false
// because 3 is not greater than 3, seriously, its not, I promise you.

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Less than (&amp;lt;): Checks if one value is less than another. This is the reverse of the greater than and returns true only if value on the left is less than value on the right&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;5 &amp;lt; 3
// read as ‘is 5 less than 3’. Expected result: false

3 &amp;lt; 4
// read as ‘is 3 less than 4’. Expected result: true

3 &amp;lt; 3
// read as ‘is 3 less than 3’. Expected result: false
// because 3 is not less than 3, no seriously, shocking stuff.

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Greater than or equal to (&amp;gt;=): Checks if one value is greater than or equal to another. This returns true either if value on the left is greater than value on the right or if they are equal&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;5 &amp;gt;= 3
// read as ‘is 5 greater than or equal to 3’. Expected result: true
// because it meets one of the conditions (it is greater than)

3 &amp;gt;= 4
// read as ‘is 3 greater than or equal to 4’. Expected result: false
// because it doesn’t meet any of the conditions (it is not greater than and not equal to)

3 &amp;gt;= 3
// read as ‘is 3 greater than or equal to 3’. Expected result: true
// because it meets one of the conditions (it is not greater than but it is equal to) whew, finally

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Less than or equal to (&amp;lt;=): Checks if one value is less than or equal to another. This returns true either if value on the left is less than value on the right or if they are equal&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;5 &amp;lt;= 3
// read as ‘is 5 less than or equal to 3’. Expected result: false
// because it doesn’t meet any of the conditions (it is not less than and not equal to)

3 &amp;lt;= 4
// read as ‘is 3 less than or equal to 4’. Expected result: true
// because it meets one of the conditions (it is less than)

3 &amp;lt;= 3
// read as ‘is 3 less than or equal to 3’. Expected result: true
// because it meets one of the conditions (it is not less than but it is equal to) awesome!

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

&lt;/div&gt;



&lt;p&gt;There are other operators that we will encounter as we go along but in order not to overwhelm us, we will take a pause here until next time.&lt;/p&gt;

&lt;p&gt;Stay frosty guys, leave comments or questions down there because we are here to help&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FAXYVgAz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i26ghiin4jbb30oy6mok.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FAXYVgAz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i26ghiin4jbb30oy6mok.png" alt="Iron legion" width="600" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Previous post is &lt;a href="https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-part-3a-3eg9"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next post is &lt;a href="https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-part-3c-53kg"&gt;here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>career</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Getting started in Software development: A Path to a rewarding career (Part 3A, Programming concepts)</title>
      <dc:creator>Abdurraheem Abdul-majeed</dc:creator>
      <pubDate>Sun, 09 Jul 2023 18:35:24 +0000</pubDate>
      <link>https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-part-3a-3eg9</link>
      <guid>https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-part-3a-3eg9</guid>
      <description>&lt;h2&gt;
  
  
  Hello and welcome
&lt;/h2&gt;

&lt;p&gt;Thanks for stopping by again.&lt;/p&gt;

&lt;h2&gt;
  
  
  Table of Content
&lt;/h2&gt;

&lt;p&gt;Full table of content for the entire series is &lt;a href="https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-16ik"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Today, we will address the following&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Getting started (cont'd)&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Learn Programming concepts&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Programming Concepts
&lt;/h2&gt;

&lt;p&gt;These are the building blocks of the trade. We have touched on some of them during the introduction and definitions phase but here, we will take on the ones that you will need and use on a day-to-day basis as a developer. This is the foundation of your journey and if you get it right here, building on top of it will be a breeze 😜&lt;/p&gt;

&lt;p&gt;There are quite a few concepts you will come across in your software development journey and anyone who tells you that they can teach you all of them in one sitting is probably trying to sell you something 😈.&lt;/p&gt;

&lt;p&gt;Instead, we will go through the fundamentals, the basics, the ones you cannot escape and must know very well in order to be a decent developer. They are as follows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Syntax&lt;/li&gt;
&lt;li&gt; Algorithm&lt;/li&gt;
&lt;li&gt; Pseudocode&lt;/li&gt;
&lt;li&gt; IDE (&lt;strong&gt;I&lt;/strong&gt;ntegrated &lt;strong&gt;D&lt;/strong&gt;evelopment &lt;strong&gt;E&lt;/strong&gt;nvironment)&lt;/li&gt;
&lt;li&gt; Variables&lt;/li&gt;
&lt;li&gt; Data types&lt;/li&gt;
&lt;li&gt; Operators&lt;/li&gt;
&lt;li&gt; Control Structures

&lt;ul&gt;
&lt;li&gt;  If/Else Statements&lt;/li&gt;
&lt;li&gt;  Loops&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; Functions&lt;/li&gt;
&lt;li&gt;Input/Output (I/O)&lt;/li&gt;
&lt;li&gt;Data structures

&lt;ul&gt;
&lt;li&gt;  Arrays and Lists&lt;/li&gt;
&lt;li&gt;  Objects and Maps&lt;/li&gt;
&lt;li&gt;  Sets&lt;/li&gt;
&lt;li&gt;  Stacks&lt;/li&gt;
&lt;li&gt;  Queues&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Bugs and Debugging&lt;/li&gt;
&lt;li&gt;Functional Programming&lt;/li&gt;
&lt;li&gt;Object-Oriented Programming (OOP)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If we missed anything in the list above, please mention it in the comments and an edit might be on the cards. Also, we will need to split the explanations into &lt;del&gt;2&lt;/del&gt; many sessions so this is part 1 of &lt;del&gt;2&lt;/del&gt; &lt;code&gt;n&lt;/code&gt; where &lt;code&gt;n&lt;/code&gt; is some number we will determine at the end of this section.&lt;/p&gt;

&lt;p&gt;Let us begin&lt;/p&gt;

&lt;h3&gt;
  
  
  Syntax
&lt;/h3&gt;

&lt;p&gt;Simply put, syntax is programming grammar. The way we have grammar in any language which determines the correct order and arrangement of words and punctuations to convey what you want to say to a person, is the same way there is syntax defining the correct order and arrangement of what you want to ‘say’ to the computer. &lt;/p&gt;

&lt;p&gt;Remember that programming is just you, giving the computer instructions, ‘saying’ stuff to the computer, telling it what to do.&lt;/p&gt;

&lt;p&gt;For example: if you want to tell a friend to open your bag, bring out your book, place it on the table and open it, there is a proper sequence to doing this, a set of rules to follow and it might look something like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Hi Najeebah&lt;/li&gt;
&lt;li&gt; Please open my bag&lt;/li&gt;
&lt;li&gt; Bring out my book &lt;/li&gt;
&lt;li&gt; Place it on the table&lt;/li&gt;
&lt;li&gt; Open it&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You will not for example start the conversation with ‘place it on the table’ because then Najeebah will probably ask, place what on the table. &lt;strong&gt;Syntax error&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You will also not say ‘place the on it table’ or ‘plcae teh on it tblae’ because well that does not make sense and Najeebah will not know what you intend by that. Plus, it is weird to talk that way. &lt;br&gt;
&lt;strong&gt;Syntax error&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dgoCkNTn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tnja9gnod4kcy7v70jg0.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dgoCkNTn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tnja9gnod4kcy7v70jg0.PNG" alt="syntax error" width="800" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is in English and if you were speaking French or Arabic, you will naturally have to adjust to the syntax or grammar of these languages as well. The same applies in code. Each programming language has its own syntax and depending on the language you are speaking (writing your code in), you will need to adjust syntax. &lt;/p&gt;

&lt;p&gt;The way you give each command in your code must align with the syntax of the language you are speaking to the computer, just like with human language.&lt;/p&gt;
&lt;h3&gt;
  
  
  Algorithm
&lt;/h3&gt;

&lt;p&gt;This is the recipe for the task you are looking to do. It is a set of well-defined steps or instructions designed to solve a specific problem or accomplish a particular task.&lt;/p&gt;

&lt;p&gt;A good algorithm needs to be at least all the following and maybe more:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Clearly defined and easy to follow&lt;/li&gt;
&lt;li&gt;  Take zero or more inputs and generate some output or result&lt;/li&gt;
&lt;li&gt;  Must finish executing at some point (what is the point of a never-ending algorithm if we will never get the result from it)&lt;/li&gt;
&lt;li&gt;  Must be consistent and predictable in its behaviour &lt;/li&gt;
&lt;li&gt;  Must be a sequence of steps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--c6vm3444--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3sv74igjx6kyaab7zwvm.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--c6vm3444--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3sv74igjx6kyaab7zwvm.PNG" alt="algorithm" width="750" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are many ways to represent algorithms such as natural/human language descriptions, pseudocode, flowcharts, or programming code. For now, we will use regular human language&lt;/p&gt;

&lt;p&gt;Here is an example of an algorithm that adds two numbers:&lt;br&gt;
1-  Take input 1&lt;br&gt;
2-  Take input 2&lt;br&gt;
3-  Add input 1 and input 2&lt;br&gt;
4-  Store result in output&lt;br&gt;
5-  Return output&lt;/p&gt;

&lt;p&gt;In the above algorithm, we see that there is a clear list of steps, inputs and outputs, it is finite in its execution and every time you run this 'function', the behavior and output can be predicted.&lt;/p&gt;

&lt;p&gt;Now let us take a slightly more complex example that builds on the addition example above.&lt;/p&gt;

&lt;p&gt;A calculator with the 4 basic operations (Add, Subtract, Multiply, Divide)&lt;/p&gt;

&lt;p&gt;Before we do this, we should go back to what we learnt about problem solving and how we need to understand the problem and break it down before we execute.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UHT-Vij2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/78jd7se8wz2ugu2w5tft.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UHT-Vij2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/78jd7se8wz2ugu2w5tft.jpg" alt="basics" width="800" height="578"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The problem is to take 2 numbers and an operation and then execute the selected operation on the 2 numbers.&lt;/p&gt;

&lt;p&gt;We need to handle all the 4 possible operations. We have an example of one operation above, so we just need to use some sort of decision system to decide what to do in case of each operation&lt;/p&gt;

&lt;p&gt;Algorithm:&lt;br&gt;
1-  Take input 1 (First number)&lt;br&gt;
2-  Take input 2 (Second number)&lt;br&gt;
3-  Take input 3 (Operation)&lt;br&gt;
4-  &lt;em&gt;If Operation is ‘Add’&lt;/em&gt;&lt;br&gt;
5-  &lt;strong&gt;Add input 1 and input 2&lt;/strong&gt;&lt;br&gt;
6-  &lt;strong&gt;Store result in output&lt;/strong&gt;&lt;br&gt;
7-  &lt;strong&gt;Return output&lt;/strong&gt;&lt;br&gt;
8-  &lt;em&gt;Else if Operation is ‘Subtract’&lt;/em&gt;&lt;br&gt;
9-  &lt;strong&gt;Subtract input 1 and input 2&lt;/strong&gt;&lt;br&gt;
10- &lt;strong&gt;Store result in output&lt;/strong&gt;&lt;br&gt;
11- &lt;strong&gt;Return output&lt;/strong&gt;&lt;br&gt;
12- &lt;em&gt;Else if Operation is ‘Multiply’&lt;/em&gt;&lt;br&gt;
13- &lt;strong&gt;Multiply input 1 and input 2&lt;/strong&gt;&lt;br&gt;
14- &lt;strong&gt;Store result in output&lt;/strong&gt;&lt;br&gt;
15- &lt;strong&gt;Return output&lt;/strong&gt;&lt;br&gt;
16- &lt;em&gt;Else if Operation is ‘Divide’&lt;/em&gt;&lt;br&gt;
17- &lt;strong&gt;Divide input 1 and input 2&lt;/strong&gt;&lt;br&gt;
18- &lt;strong&gt;Store result in output&lt;/strong&gt;&lt;br&gt;
19- &lt;strong&gt;Return output&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You will notice that the steps in &lt;em&gt;italics&lt;/em&gt; are checks to see if the operation input matches a condition and the steps in &lt;strong&gt;bold&lt;/strong&gt; are the ones handling the actual computation depending on which operation was provided as input 3. We will get more into these concepts as we go further but the above is hopefully clear enough.&lt;/p&gt;

&lt;p&gt;From these two examples, we can see that algorithms are nothing to be afraid of, just a step by step list of what to tell the computer to do with your code when you eventually write it. &lt;/p&gt;

&lt;p&gt;Algorithms come before coding because with algorithms, you can lay out the steps to solve the problem without worrying about syntax since it is in human readable format&lt;/p&gt;

&lt;p&gt;After some time, when you get really good in programming, it will no longer be necessary to write out the algorithms for simple tasks like addition or a basic calculator but for more complex tasks, it will always come in handy.&lt;/p&gt;
&lt;h3&gt;
  
  
  Pseudocode
&lt;/h3&gt;

&lt;p&gt;It is one of the ways of representing algorithms and it is very similar to human language but unlike what we did above with human language algorithms, pseudocode has some code-like syntax. As the name ‘pseudo’ suggests, it is not actual code but resembles it.&lt;br&gt;&lt;br&gt;
For example, the pseudocode for our addition function from above will look something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function addition():
    display "Enter the first number:"
    read firstNumber

    display "Enter the second number:"
    read secondNumber

    sum = firstNumber + secondNumber

    display "The sum is: " + sum
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this pseudocode, the program prompts the user to enter the first number and the second number. It then calculates the sum by adding the two numbers together and stores the result in the variable ‘sum’. Finally, it displays the sum to the user as an output.&lt;/p&gt;

&lt;p&gt;Remember, pseudocode is not tied to any specific programming language syntax, so you would need to translate this pseudocode into the syntax of the programming language you are using to implement the addition functionality.&lt;/p&gt;

&lt;p&gt;It looks a lot like code, it is structured like code, we even gave it a black background like code, but it is not code 😜, still human language but written as Pseudocode. &lt;/p&gt;

&lt;h3&gt;
  
  
  IDE (&lt;strong&gt;I&lt;/strong&gt;ntegrated &lt;strong&gt;D&lt;/strong&gt;evelopment &lt;strong&gt;E&lt;/strong&gt;nvironment)
&lt;/h3&gt;

&lt;p&gt;This is a fancy name for the text editor where you will write your code. &lt;/p&gt;

&lt;p&gt;If you want to write an article for &lt;strong&gt;people who want to get started in software development&lt;/strong&gt; like yours truly 😉, any text editor can do the job. Notepad, WordPad, sticky notes, TextEdit (on mac) and others will take in your text and allow you edit it and save but you will agree that none of these options is as productive as using Microsoft word or Google docs to write the article. Why is that? Well, because Word and Docs are designed for that specific task. &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vdNx-khk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ufaqbvwwp2vfaal8zia6.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vdNx-khk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ufaqbvwwp2vfaal8zia6.jpg" alt="word vs docs" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
When you make a grammar (or syntax) mistake, Word will notify you with the red or blue underline, there are options to manage fonts, spacing, alignment, layouts and so much more right from the apps without much effort. &lt;/p&gt;

&lt;p&gt;This is the same idea with IDEs, they are text editors designed to help you with code highlighting, code completion, syntax checking, indentation and so on. Some even help you build, run and deploy your code right from the IDE. It is true to say you can use other text editors like Microsoft word and Notepad for coding for sure, and the code will work if saved in the right format and run in the right way but an IDE is designed to help you with your code and is the right way to go just like with writing articles with Microsoft Word and not notepad.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--97uFcvLc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hmwmwqu3a5o6hd4xsurl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--97uFcvLc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hmwmwqu3a5o6hd4xsurl.png" alt="IDEs" width="800" height="482"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Some IDEs are dynamic and can be used for several programming languages and some others are built specifically for specific languages. When we get to the coding part of this journey, we will be using VS code (Visual studio code) as our IDE&lt;/p&gt;

&lt;h3&gt;
  
  
  Variables
&lt;/h3&gt;

&lt;p&gt;These are storage boxes for storing data values in the computer memory. Any task a computer does is largely dependent on data and involves data processing and manipulation. A variable is used to store and manipulate data in a program. It typically has a name and can be assigned a value when it is created. The variable name is like a label on the storage box of the data and the value may or may not change during the execution of the program. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Kz8b5tJ---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wt509wnb3cpbi3z422j3.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Kz8b5tJ---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wt509wnb3cpbi3z422j3.jpg" alt="variables" width="236" height="184"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A variable is created using a declaration or keyword that varies across languages. The declaration of a variable typically provides some information and context as to what data type is stored in it and how it can be accessed and manipulated across the application.&lt;/p&gt;

&lt;p&gt;Variable names are typically alphanumeric, meaning they contain a-z and 0-9 and some special characters like underscore or the dollar sign. &lt;/p&gt;

&lt;p&gt;It is also very important to note that the name you choose for a variable must be descriptive of what that variable is used for. If the variable is ‘user name’, calling it ‘var1’ or ‘un’ or ‘usern’ or ‘uname’ is not the best, and can be misleading for other developers and even you if you return to it after some time. Call it ‘userName’ so everyone knows what it is. The compiler might not complain about bad naming but it is bad nonetheless.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Mn3vi9T5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dc2trwp6qf5roquj21ld.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Mn3vi9T5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dc2trwp6qf5roquj21ld.png" alt="variable name" width="800" height="960"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the example of the pseudocode above, ‘firstNumber’, ‘secondNumber’ and ‘sum’ are examples of variables named properly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Data types
&lt;/h3&gt;

&lt;p&gt;Profoundly enough, this simply refers to the &lt;strong&gt;types&lt;/strong&gt; of &lt;strong&gt;data&lt;/strong&gt;. A little on the nose I know but that’s just how it is. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--c7zddK2c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ufs07yfx6fpbpcw0rlzi.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--c7zddK2c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ufs07yfx6fpbpcw0rlzi.gif" alt="godfather" width="498" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The most common ones (especially in JavaScript) are as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  String: used to represent a ‘string’ of characters like a company’s name, a car’s plate number, a story, a phone number and the likes&lt;/li&gt;
&lt;li&gt;  Boolean (true or false): used to represent a Yes or No situation and can only be either ‘true’ or ‘false’. No grey areas, it either is or isn’t&lt;/li&gt;
&lt;li&gt;  Number: used to represent integers like 1, 50, 994 and floating-point numbers (decimal-base) like 75.2222, 3.14142142142, 322.435 and so on&lt;/li&gt;
&lt;li&gt;  Array: used to represent a collection or list of data like the grade of everyone in a class or the salary of all employees in HR department&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You may be thinking this surely will not be enough to represent every possible data in the world, like if you wanted to represent a person or a house or a fish as data in an application, you will need something more complex than these. &lt;/p&gt;

&lt;p&gt;If you are thinking that then you are right, there are more complex data types. These here are the basics, and the more complex types can be created using the basics as building blocks. &lt;/p&gt;

&lt;p&gt;Some programming languages have some more complex data types inbuilt and many of the mainstream programming languages allow you to build your own data types using other methods like object-oriented programming (OOP) which we will get into later.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QFBVf1jo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6p08xo57taqkaxhvvdhn.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QFBVf1jo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6p08xo57taqkaxhvvdhn.gif" alt="not yet" width="498" height="210"&gt;&lt;/a&gt;&lt;br&gt;
We will stop here for this session so we are not overwhelmed. &lt;/p&gt;

&lt;p&gt;The remaining concepts will be explained in the next one.&lt;/p&gt;

&lt;p&gt;Until then, stay frosty and remember. We are here to help&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PN9kik1L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jxpfv0i3nevilo1mt2e6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PN9kik1L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jxpfv0i3nevilo1mt2e6.png" alt="Iron legion" width="600" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Previous post is &lt;a href="https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-part-2-58f3"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next post is &lt;a href="https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-part-3b-ooj"&gt;here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>career</category>
    </item>
    <item>
      <title>Getting started in Software development: A Path to a rewarding career (Part 2, Problem solving)</title>
      <dc:creator>Abdurraheem Abdul-majeed</dc:creator>
      <pubDate>Sat, 01 Jul 2023 20:43:43 +0000</pubDate>
      <link>https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-part-2-58f3</link>
      <guid>https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-part-2-58f3</guid>
      <description>&lt;h2&gt;
  
  
  Hello and welcome
&lt;/h2&gt;

&lt;p&gt;Thanks for stopping by again.&lt;/p&gt;

&lt;h2&gt;
  
  
  Table of Content
&lt;/h2&gt;

&lt;p&gt;Full table of content for the entire series is &lt;a href="https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-16ik"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For today though we will address the following&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Getting started&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Learn problem solving as an idea&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Getting started
&lt;/h2&gt;

&lt;p&gt;Now that the intro, plan and basic definitions are cleared up and understood, it is time to get started for real by learning problem solving as an idea or a process. We will try to go through everything at a steady pace to ease understanding. This is especially important because subsequent sessions will rely on some of what is covered previously. &lt;/p&gt;

&lt;h3&gt;
  
  
  Learn problem solving as an idea
&lt;/h3&gt;

&lt;p&gt;Simply put, this involves &lt;strong&gt;learning&lt;/strong&gt; how to solve problems and while that is quite obvious, it is necessary to go deeper into it, &lt;br&gt;
understand it and internalize it.&lt;/p&gt;

&lt;p&gt;A problem in this context can be described as a challenge or task or process you are looking to develop software for. &lt;/p&gt;

&lt;p&gt;Learning problem-solving skills is as crucial in software development as it is in everyday life and below, we will go through some practical steps to solve almost any problem because as usual, we are here to help 😁&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PN9kik1L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jxpfv0i3nevilo1mt2e6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PN9kik1L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jxpfv0i3nevilo1mt2e6.png" alt="Iron legion" width="600" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Understand the Problem&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;This is arguably the most important step in problem solving. You want to know the problem, embrace the problem, visualize the problem, become one with the problem, get into the problem, appreciate the problem, the problem is the enemy and as Sun Tzu said; ‘Know thy enemy’. &lt;/p&gt;

&lt;p&gt;I cannot tell you how many lines of code in my experience have gone to waste because of misunderstood problems. &lt;/p&gt;

&lt;p&gt;Read and analyse the problem carefully &lt;strong&gt;as many times as necessary&lt;/strong&gt;. Put a good amount of thinking into understanding it. You want to ensure you have a clear understanding of what needs to be solved because knowing the problem well will help you properly identify the requirements, constraints, the what, the why and so on of the problem.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Gb3lJ354--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5gwevts8hkvftd80ao7t.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Gb3lJ354--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5gwevts8hkvftd80ao7t.PNG" alt="The problem" width="800" height="446"&gt;&lt;/a&gt;&lt;br&gt;
The better you know the problem, the better your chances of solving the problem properly. The quality of your solution is a direct factor of your knowledge and understanding of the problem. It is just that important. &lt;strong&gt;Understand. The. Problem.&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Break Down the Problem&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Here, after you have become one with the problem and you have a strong grasp of what needs to be done, you want to break down the problem into smaller more manageable chunks. &lt;/p&gt;

&lt;p&gt;Any problem, no matter how complex, is just a lot of smaller problems in one, and if the smaller problems of the initial problem are still too complex, then break them into smaller problems still and the cycle continues until all you have are simple problems that cannot be broken down further. &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bJfve2IB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rrouzqlvp0uqdp5ny8q4.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bJfve2IB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rrouzqlvp0uqdp5ny8q4.PNG" alt="Break problems down" width="800" height="483"&gt;&lt;/a&gt;&lt;br&gt;
A sky scrapper is a grand structure but once broken down, it is just a lot of single buildings stacked upon each other.&lt;/p&gt;

&lt;p&gt;A building is still imposing in its own way but once broken down is just a lot of bricks arranged in a certain way.&lt;/p&gt;

&lt;p&gt;A brick, well that is not nearly as scary as a sky scrapper &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rWaJyOYv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rv2206hyv94nv6p5htmz.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rWaJyOYv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rv2206hyv94nv6p5htmz.PNG" alt="Bricks" width="384" height="258"&gt;&lt;/a&gt;&lt;br&gt;
Using the example above, if you take the problem as a sky scrapper, it will be overwhelming but if it is broken down to mere bricks then things will not look so scary anymore.&lt;/p&gt;

&lt;p&gt;One of these folks that say wise things once said, “A big problem is just a problem that has not been broken down properly”.&lt;br&gt;
Another one is “if you find the problem to be too complex, seek first to break it down further”&lt;br&gt;
&lt;strong&gt;Break. Things. Down&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Plan and Execute&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;So, you now understand the problem and you have broken it down into manageable chunks after a lot of thinking, time to plan how you will solve the problem. &lt;/p&gt;

&lt;p&gt;Devise a strategy to solve the problems in their manageable form. What tools can you use, what algorithms can you use, how will it all flow together etc. This will give your execution some structure so that your efforts are not scattered or wasted. &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5O6un8lg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jmremvg7jsxssu71tk7y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5O6un8lg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jmremvg7jsxssu71tk7y.png" alt="Think Plan Execute" width="720" height="425"&gt;&lt;/a&gt;&lt;br&gt;
Sometimes, while planning, you will realize you do not fully understand the problem or did not break things down well enough. If this ever happens, you are not alone, these first three steps are usually a cycle in my experience. No worries at all, this is quite normal, all you have to do is go back and break things down further. If you do not run into that then great job, you are ready to execute. &lt;/p&gt;

&lt;p&gt;Implement the plan you have put together and while doing this, if you find that you missed something, go back to the understanding or breaking down phase and clear things up then proceed as before.&lt;br&gt;
&lt;strong&gt;Think. Plan. Execute&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Test and evaluate&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Once you have executed the plan, the job is almost done. Next you need to check your output for correctness. You need to test what you have built to see if it works and if it works as it was intended. Does it do what you set out to achieve. &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IPNFt0kY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9kag4j9ugxsfl4b56o22.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IPNFt0kY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9kag4j9ugxsfl4b56o22.png" alt="metrics" width="800" height="419"&gt;&lt;/a&gt;&lt;br&gt;
Is the problem solved, is it solved well, does it meet the requirements, are there edge cases where your solution might struggle, in the case of a user solution; are the user defined metrics and standards met. Basically, did you get the job done? &lt;strong&gt;Check. Check. Check&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Review and Take lessons&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;A common mistake with getting the job done is the assumption that it is great and that’s it, but almost always, there are lessons to be learnt against next time. &lt;/p&gt;

&lt;p&gt;Go back and take a look at your solutions to see what could have been done better, faster, with less resources, more efficiently and what can be added to a library somewhere as part of a knowledge base to help improve yourself and others in the future.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lhun_cos--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o0s76ptmpqtihsdf25rl.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lhun_cos--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o0s76ptmpqtihsdf25rl.jpg" alt="Review" width="800" height="664"&gt;&lt;/a&gt;&lt;br&gt;
Review your solution and reflect on the problem-solving process, consider alternative approaches or optimizations that could improve your solution, learn from your mistakes and analyse how you can avoid similar pitfalls in the future.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Take on the next problem and repeat&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;A simple fact of life is that problem-solving skills are developed through practice and experience. Engaging in problem-solving activities regularly will help enhance your skills. Solve as many problems as you can from different domains in different contexts to get your brain attuned to the problem-solving process as well as actually solving problems. &lt;/p&gt;

&lt;p&gt;Do not be afraid to take on new challenges with increasingly complex or unfamiliar problems because that is how you will grow (trust me I know this much). &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---jBF9uDq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7i13dfew8jy7zhn6so8c.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---jBF9uDq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7i13dfew8jy7zhn6so8c.jpg" alt="Try Try Try" width="612" height="612"&gt;&lt;/a&gt;&lt;br&gt;
Seek guidance from resources around (like this article 😁) and collaborate with others and seek mentorship so you can glean experience from others and grow as a result.&lt;br&gt;
As usual, we are here to help&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PN9kik1L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jxpfv0i3nevilo1mt2e6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PN9kik1L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jxpfv0i3nevilo1mt2e6.png" alt="Iron legion" width="600" height="338"&gt;&lt;/a&gt;&lt;br&gt;
Consult resources like books, tutorials, or online platforms (like this series 😁) that offer problem-solving tools and tips.&lt;/p&gt;

&lt;p&gt;Participate in competitions, hackathons, or collaborative projects to solve problems collectively whenever you can. This is especially useful as you will need to collaborate with one or more teams when you get into the software development industry.&lt;/p&gt;

&lt;h2&gt;
  
  
  To conclude
&lt;/h2&gt;

&lt;p&gt;It is very important to note that problem-solving can be challenging and require perseverance. Embrace the process of learning and view obstacles and failings as opportunities for growth.&lt;/p&gt;

&lt;p&gt;Stay positive, patient, and persistent in your problem-solving journey and remember that problem-solving skills are developed through practice and experience. As you tackle a wide range of problems and apply different strategies, you will become more proficient in understanding problems, analysing, planning, and executing solutions effectively. 💪💪💪&lt;/p&gt;

&lt;p&gt;Until next time. Cheers&lt;/p&gt;

&lt;p&gt;Previous post is &lt;a href="https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-16ik"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next post is &lt;a href="https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-part-3a-3eg9"&gt;here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>career</category>
    </item>
    <item>
      <title>Getting started in Software development: A Path to a rewarding career (Part 1)</title>
      <dc:creator>Abdurraheem Abdul-majeed</dc:creator>
      <pubDate>Sat, 24 Jun 2023 20:15:49 +0000</pubDate>
      <link>https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-16ik</link>
      <guid>https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-16ik</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Software development offers exciting and interesting opportunities for those seeking a dynamic, value driven and rewarding career. Regardless of who you are, where you are, what your situation in life is or what stage you are in your career; be it a recent graduate, long term veteran in other fields, a career changer, a new mom, a not so new mom or simply someone passionate/curious about learning it, software development is an option for you. This fact alone among others makes it appealing to nearly everyone.&lt;/p&gt;

&lt;p&gt;As dynamic and all welcoming as it is, however, diving into the vast realm of software development or application development as some will call it can be overwhelming, especially for beginners. Fear not though! In the words of Tony Stark’s iron legion: “We are here to help”.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PN9kik1L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jxpfv0i3nevilo1mt2e6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PN9kik1L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jxpfv0i3nevilo1mt2e6.png" alt="Iron legion" width="600" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this series, we will provide you with a comprehensive guide on how to commence the adventure, equipping you with step-by-step guides, essential tips, pitfalls to avoid, demos and insights to embark on a successful journey in this exciting field. &lt;/p&gt;

&lt;p&gt;You are most welcome!&lt;/p&gt;

&lt;h2&gt;
  
  
  Table of Content
&lt;/h2&gt;

&lt;p&gt;This table of content will guide the entire series, but the sections handled in each post will be emboldened as below&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Introduction (up there)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Definitions: Helping you know what some concepts mean and how they fit together&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What you will need to get started and clarifying expectations&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Getting started

&lt;ul&gt;
&lt;li&gt;Learn problem solving as an idea&lt;/li&gt;
&lt;li&gt;Learn Programming concepts&lt;/li&gt;
&lt;li&gt;Decide which route you want to take (web, desktop, mobile, game, data, frontend, backend, Fullstack etc. We will be selecting Fullstack web development)&lt;/li&gt;
&lt;li&gt;Learn a programming language (preferably one that can be used for what you choose in the step above. We will use JavaScript)&lt;/li&gt;
&lt;li&gt;Learn industry leading frameworks (because most programming languages are better as frameworks where all the heavy lifting is done and most roles will require one or more of them)&lt;/li&gt;
&lt;li&gt;Build stuff (We will build and deploy a ‘water ordering ecommerce system’ end to end)&lt;/li&gt;
&lt;li&gt;Learn more and build more &lt;/li&gt;
&lt;li&gt;Create a portfolio to showcase your work and skills&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;How to seek employment and get hired and do well for your self

&lt;ul&gt;
&lt;li&gt;Keep learning and building and doing well for yourself in an endless loop.&lt;/li&gt;
&lt;li&gt;Interview Prep and Ideas&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Key concepts to know as a developer

&lt;ul&gt;
&lt;li&gt;Data structures and algorithms&lt;/li&gt;
&lt;li&gt;Principles (SOLID, DRY, YAGNI, KISS, MVC, MVVM, MVT)&lt;/li&gt;
&lt;li&gt;Design Patterns&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Now to begin with definitions
&lt;/h2&gt;

&lt;p&gt;First, we will define terms you will encounter as we go along. Do not memorize the meanings but instead understand them, read each meaning as many times as you need to and link it to your own world experience to help you understand what each term means in the practical sense.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Software&lt;/strong&gt;: in simple terms, software is an application on a computer that performs tasks, any application, seriously, all applications are software. Your: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Browser (google chrome, firefox etc) is a software, &lt;/li&gt;
&lt;li&gt;Microsoft word, powerpoint, excel etc is software, &lt;/li&gt;
&lt;li&gt;Whatsapp, facebook, twitter, Instagram are software, &lt;/li&gt;
&lt;li&gt;Video games are software&lt;/li&gt;
&lt;li&gt;Point of sale (POS) machine uses software&lt;/li&gt;
&lt;li&gt;ATM machine uses software&lt;/li&gt;
&lt;li&gt;VLC player, software&lt;/li&gt;
&lt;li&gt;Canva, photoshop, figma…. software&lt;/li&gt;
&lt;li&gt;Spotify, Netflix, Prime Video… software &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--F5v8zpVv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yo2avykr4zsy670c0b03.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--F5v8zpVv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yo2avykr4zsy670c0b03.PNG" alt="software examples" width="800" height="359"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I think you get the idea. Everything that performs some tasks on a computer is software.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Software development&lt;/strong&gt;: this is, well, the development of software and all the practices it entails. Some of these practices include writing code or programming, testing, debugging, deploying. There are other aspects like system analysis and design, UI/UX and the likes but for simplicity let us leave it at that. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uWBhINP8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6hpctq2hh29caq1tigdw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uWBhINP8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6hpctq2hh29caq1tigdw.png" alt="sdlc" width="650" height="718"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also, you should know that software development is quite broad and has different areas, such as web development, mobile app development, data science, or game development. Each domain offers its own set of tools, frameworks, and challenges and we will get into all of that in time&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Software developer/Programmer&lt;/strong&gt;: me and you who write build/develop the software. Once you build software, you are automatically added to an elite guild/Cabal of awesome folks: The Software Developers &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Inserts dramatic sounds&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KzsH5dvA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tmk179ewsw0qpckujret.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KzsH5dvA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tmk179ewsw0qpckujret.PNG" alt="super programmer" width="693" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Code&lt;/strong&gt;: this is a set of instructions you write as a software developer and give to the computer in a language it understands (Programming language) to perform the tasks the software is for. Think of it like a recipe. A recipe is a set of steps or instructions which a person should follow to prepare a meal and a typical recipe contains ingredients and all of what is required to prepare a meal. Code is basically you the developer giving the computer a recipe to tell it how to prepare a software.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ileqwx_J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/926dmd9mi3fyzgg0jt8l.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ileqwx_J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/926dmd9mi3fyzgg0jt8l.jpg" alt="recipe" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Programming&lt;/strong&gt;: this is the act of writing code in a specific language the computer understands&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--t_RQKuu9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/94ei7u1cdotwi22vh3lt.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--t_RQKuu9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/94ei7u1cdotwi22vh3lt.jpeg" alt="programming" width="800" height="598"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Programming language&lt;/strong&gt;: is a language the computer understands. Language here is the same as in human context so, same way we have English, Arabic, French and Yoruba. The computer has many languages it understands or can be taught to understand (kind of like us humans too) like C, C++, C#, Python, Java, JavaScript, PHP, Rust, Go, and the list goes on&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5nQyYXqs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0w2sh0vx01x0sh67rrz0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5nQyYXqs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0w2sh0vx01x0sh67rrz0.png" alt="programming languages" width="762" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What you need to get started
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;A computer system: Because we are building applications to be run on a computer system, you will need one to write the code, to test the code and to host the application locally to see if it works before you move it to a server (which interestingly is also another computer, more details on that later)&lt;/li&gt;
&lt;li&gt;Internet connection: many of the tools you will need will need to be downloaded from the internet, and in case you run into issues not covered here, you will need the internet to help you with possible solutions&lt;/li&gt;
&lt;li&gt;These articles 😁 : because well, we are here to help
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PN9kik1L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jxpfv0i3nevilo1mt2e6.png" alt="Iron legion" width="600" height="338"&gt;
&lt;/li&gt;
&lt;li&gt;Commitment and Patience: In the words of one of these guys who say wise stuff; ‘You only loose when you give up’. If you are committed and patient with yourself in the learning process, then it will be worth it in the end. At times, you might feel overwhelmed or out of place, that is not a sign to quit but a sign to take a break and give it another shot in a bit. No pressure to get it at the first try, very few people do. ‘If at first you do not succeed then try and try again’. 💪&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Expectations
&lt;/h2&gt;

&lt;p&gt;Even though we will go into a lot of detail, this remains a getting started series and as such will not be all you need to succeed as a developer. If you follow the series diligently, at the end, you will be ready for a junior-mid level role in a typical organization.&lt;/p&gt;

&lt;p&gt;If we still have you eyes and ears at this point then great job, great start, and see you in the next one where we will actually get started 💯 🎉&lt;/p&gt;

&lt;p&gt;Next link is &lt;a href="https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-part-2-58f3"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Cheers&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>career</category>
    </item>
  </channel>
</rss>
