Zero-to-One on Software Development Roadmap

What is Programming and Software Development?

Have you ever wondered how your computer and your mobile phone are created? The physical part of it? The software and the applications inside? They are created by software engineers. The software and mobile applications and the websites you visit are all made by programmers and developers.

A program: The applications in your phone, the software in your computer and the websites you visit. Each one of them is called a program.

A programmer: The person who creates all these programs is called a programmer

A Software Engineer/Developer: Most of the time, it’s the same with a programmer. The actual difference is a programmer can only write programs and a developer can write programs plus, think, plan, and design how the programs should work perfectly.

A coder: The same with a programmer

What Does a Programming Language Look Like?

We have different types of programming languages. As you know, a computer only understands 0 and 1, the binary system. Meaning, that when you are to write a program in a computer system, you may be telling the computer to perform some arithmetic operations, let’s say “Add 20 + 30”. How do you tell the computer to do that? You write it in the form of the binary system. “ …”. A lot of applications perform hundreds and thousands of operations in much more complex ways, so writing a program in 0s and 1s is not feasible for humans, a language is created called the Assembly language which is a bit better as it’s human readable. As a result, some other languages were created like C and C++ to make programming languages easy, more readable, and understandable to humans. C and C++ are great and are in use up to today for programming, but as the world is developing and easier methods of solving problems are created every day, high-level languages like Java, C#, JavaScript, Rust, etc were created. These languages are the most used languages to create web applications, mobile applications, and computer software. Each one of these languages has where it’s best use. Like JavaScript is a web browser language, it’s used for creating websites. Java is mostly used in creating Android apps. So as other languages, they all have where they are best used.

Languages and Where They Are Best Used

Assembly Language: When your application needs to access core system components in much complex way

C/C++: When you want to create complex systems that deal with a lot of memory management

Java and Kotlin: It was the official programming language for building Android apps until 2019 when Kotlin took over. Java is still the widely used language for creating Android apps. 

Dart and Swift: They are languages used for building iOS apps   

JavaScript: It only works in the browser, so it’s widely used in creating web apps. Node.js is created to run outside the browser 

Python: It’s a scripting language. It is known for creating artificial Intelligence and machine learning apps. It is also widely used for creating web apps.

C#: A language popular for creating games

Matlab and R: They are used for heavy scientific calculations. 

Rust and Golang: Web development

Note: All these languages are not created for a particular purpose. For example, Java is only used for creating Android. No, it can be used for creating web applications too.

What are Frameworks and Tech Stacks?

A lot of these languages called high-level languages are also not used directly for creating apps. There is something called a framework and a library. A framework is a set of tools for a particular language used to ease the creation of apps in that language. A library is a set of modules (a lot of functionalities bundled to work together) that can fasten the implementation of your app. But in this guide, we’ll consider their aim. They both used to fasten software development. 

Tech Stacks

These are a set of tools for creating apps. Like languages, frameworks, and tools we should use in creating a particular type of app;

Web Development          

Frontend Development 

Backend Development

Full-Stack

Mobile Development

a.    Android Development

b.    IOS Development

3.    Hybrid Mobile Development

Others are

1. Machine Learning Development

2. Game Development

3. Blockchain Development

4. IoT Development

All these tech stacks and specializations are popular ones for building a specific type of software and they are recommended. 

Languages and their Frameworks/Libraries

In every language, we have a lot of frameworks/libraries, but we’ll limit our salves to the most useful and popularly used ones and according to the use of context. 

A library: We have standalone libraries which can be used to create an entire app and we have those that are used inside another library, a framework, or another language 

JavaScript: In JavaScript, we use Node.js to create a backend app, the server. ReactJs, Angular, and Vue for the frontend.

PHP: Laravel, 

Python: Flask, Django

JavaScript: React, Vue, Angular Svelt

Some Recommended Quick Roadmaps for Some Stacks 

Web Development: 

HTML => CSS => JavaScript => JavaScript Frameworks Front-end (React or Vue or Angular or Svelte), Backend (Node.js/Express) => Site Generators (Next.js, Gatsby, Nuxt.js) 

Hosting 

1. Netlify

2. Vercel

3. Render

4. Heroku

5. DigitalOcean, 

6. AWS

7. Google Cloud

Software Engineering  

1. Software Design Principles

2. Programming Paradigms 

3. Software Design Patterns

Android Development

1. iOS Development

 2. Game Development

 3. Blockchain and Web3

 4. Machine Learning and AI

Most Popular Roles and Specializations in Software Development

Full-stack Developer

Frontend Developer

Backend Developer

Android Developer

IOs Developer

Hybrid Developer

Software Engineer

Software Developer

Developer/Software Architect

Language Developer/Engineer 

DevOps Engineer

Machine Learning Expert

Blockchain Developer

IoT Engineer

Game Developer

Specific Sector Engineer/Expert

DevRel

All these roles can have a junior, senior or mid-level. So, know where you fit before you apply.      

Career Path

A day Job

Freelancing

Content creator

A founder 

There are many ways to learn how to code and beyond. 

1. Self-taught: You can learn anything online today. Especially with Google and YouTube, everything is out there for free. A lot of people did it and they are now great developers and great software engineers. I think even If you embarrassed other paths, as you advance, you will find yourself teaching yourself almost everything 

2. Getting a mentor: This is one of the best ways to learn how to code quickly in the right direction. It’s more effective than being self-taught. Your mentor has already done it and you’ll learn faster with him as he will take his time to explain. You can ask him questions. 

3. Studying Computer Science: If you go for a computer science degree and you take your classes seriously, you’ll be a great software and have far more advantages than a mere software developer. Learning a programming language doesn’t make you a software engineer. Computer science or Software Engineering does. You’ll learn fundamental concepts of computers, software engineering, and how to solve problems.

Qualities of a Good Developer

Passion

Newbies starting in tech have various motives and behaviors toward learning how to code. Some will jump into tech because they see their tech friends are making a lot of money, some are because they want to be seen as intelligent. The real way to get into tech is by being passionate. As humans, we have triggers that make us want to do something. One of those triggers is passion. If you are passionate about something, you don’t get bored doing it over time, you don’t sit till someone tells you to do it. You do it happily and at your own will. That’s the best way to get into anything in life.

Vision

Not only in tech, you should always have vision in whatever you are doing in life. Look into 10 years, and what you want to be from today. For me, after the fun I have building web apps and solving technical problems, I always want to create something impactful for my community and the world. That’s my lifetime dream. You should have that from day 1. That will keep you going until you achieve your dream.

Consistency

 I believe learning how to code is all about consistency. Jumping onto your computer and writing code daily is something you should do by default If you are passionate. If you show up daily, you will learn in a year, 52x that somebody who shows up weekly and 12x that who shows up monthly. 

Perseverance

A lot of people starting are so derived with online scams, “Learn how to code in 2 weeks”, and “Be a Software Engineer in 1 month”. I think people are so eager to get money, because that’s their motive That got them into tech, and they fall into these scams. For anything you want to be good at, 2 weeks is not enough for even the fundamentals talkless of advanced concepts and having the experience. For tech, you give yourself 1-2 years to learn the basics and feel how it is. And depending on how you did it, it can take a longer period. We will talk about different ways to learn how to code and which ones are the best. The takeaway here is to learn to use your time and don’t rush. Stay calm and learn everything you need to., If not, you either say you are a developer or a software engineer and you are not, because you rushed and didn’t learn what it requires.   

Tips and Tricks for Developers

Tip #1: Always, rephrase what you learned in understandable sentences and write them down in an organized way. Revisit the notes from time to time to ensure you understand and remember them.

Tip #2: Use cheat sheets to quickly revise or go through already-known concepts and language syntaxes

Tip #3:   Join developer communities to keep yourself up to date and learn new things

Tip #4: Always practice what you have learned

Tip #5: Be consistent in the field. You need consistency to be a great developer.

What is Next?

This guide is all you need to get started in tech. The next step you need to take is to pick one of these paths and start learning from the resources outlined in the guide. 

Best of luck

Questions and Answers

1. What languages are used for building mobile apps?

Answer: We use Java or Kotlin to build Android apps, Swift to build IOS apps, and Flutter or React Native to build hybrid mobile apps

2. What is the difference between a programmer and a software engineer?

Answer: A programmer only writes code while a software engineer analyzes, designs, builds, and test software  

3. What language is used for writing machine learning and AI applications?

Answer: We can use Python to build machine-learning applications

4. What are the steps to take to learn web development?

Answer: Start learning HTML then CSS then JavaScript. You then choose a framework from React, Angular, Vue, and so on as a front-end technology. For the backend, you use Node.js and Express or Nest.js to write your APIs

5.  What is HTML and CSS used for?

Answer: We use HTML to write web documents while we use CSS to style the web document

6. How do you prevent DDOS attacks?

Answer: By using a rate limiter and using third-party services like Cloudflare. 

7. Why should we always stay up to date with the technologies and languages we use on our web applications?

Answer: To prevent hackers from leveraging the vulnerabilities of the deprecated version to hack into our system

8. What is the use of HTTPS in communication between the user and the server?

Answer: To encrypt the communication between the server and the user.

9. What command do we use to prevent client-side scripts from stealing web application cookies?

Answer: We use HttpOnly

10.   What password creation rules should a web app enforce on a user to protect him from hackers?

Answer: Always use an 8 or above combination of alphabet, numbers, and characters. Also, don’t use personal data like name, phone number, or address.

BY SAHEED BUSARI