Getting started in Software development: A Path to a rewarding career (Part 1)
Tags: webdev, beginners, tutorial, career
Published: 2023-06-24 20:15:49

## Introduction
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.

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”.

![Iron legion](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jxpfv0i3nevilo1mt2e6.png)

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. 

You are most welcome!

## Table of Content
This table of content will guide the entire series, but the sections handled in each post will be emboldened as below

- **Introduction (up there)**
- **Definitions: Helping you know what some concepts mean and how they fit together**
- **What you will need to get started and clarifying expectations**
- Getting started
    - Learn problem solving as an idea
    - Learn Programming concepts
    - Decide which route you want to take (web, desktop, mobile, game, data, frontend, backend, Fullstack etc. We will be selecting Fullstack web development)
    - Learn a programming language (preferably one that can be used for what you choose in the step above. We will use JavaScript)
    - 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)
    - Build stuff (We will build and deploy a ‘water ordering ecommerce system’ end to end)
    - Learn more and build more 
    - Create a portfolio to showcase your work and skills
- How to seek employment and get hired and do well for your self
    - Keep learning and building and doing well for yourself in an endless loop.
    - Interview Prep and Ideas
- Key concepts to know as a developer
    - Data structures and algorithms
    - Principles (SOLID, DRY, YAGNI, KISS, MVC, MVVM, MVT)
    - Design Patterns



## Now to begin with definitions
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.

**Software**: in simple terms, software is an application on a computer that performs tasks, any application, seriously, all applications are software. Your: 
- Browser (google chrome, firefox etc) is a software, 
- Microsoft word, powerpoint, excel etc is software, 
- Whatsapp, facebook, twitter, Instagram are software, 
- Video games are software
- Point of sale (POS) machine uses software
- ATM machine uses software
- VLC player, software
- Canva, photoshop, figma…. software
- Spotify, Netflix, Prime Video… software 

 
![software examples](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yo2avykr4zsy670c0b03.PNG)


I think you get the idea. Everything that performs some tasks on a computer is software.

**Software development**: 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. 
 

![sdlc](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6hpctq2hh29caq1tigdw.png)

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

**Software developer/Programmer**: 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 

*Inserts dramatic sounds*
 

![super programmer](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tmk179ewsw0qpckujret.PNG)


**Code**: 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.


![recipe](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/926dmd9mi3fyzgg0jt8l.jpg)

 
**Programming**: this is the act of writing code in a specific language the computer understands
 

![programming](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/94ei7u1cdotwi22vh3lt.jpeg)


**Programming language**: 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
 

![programming languages](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0w2sh0vx01x0sh67rrz0.png)



## What you need to get started
1. 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)
2. 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
3. These articles :grin: : because well, we are here to help
![Iron legion](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jxpfv0i3nevilo1mt2e6.png)
4. 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’. :muscle:

## Expectations
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.

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 :100: 🎉

Next link is [here](https://dev.to/jdonq/getting-started-in-software-development-a-path-to-a-rewarding-career-part-2-58f3).

Cheers