GithubHelp home page GithubHelp logo

5mustafa / iot-roadmap Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mahmoodfathy/iot-roadmap

0.0 0.0 0.0 83 KB

A Roadmap to become an IoT developer either an embedded or IoT Application Developer , this roadmap is highly subjective but it reflects the market and can be further developed

Home Page: https://the-daily-grind.netlify.app/roadmap

iot-roadmap's Introduction

Road To become an IoT Developer ✔️

I have split this post to 2 road ways :

  • Embedded IoT Developer 🧑‍💻
  • IoT Application Developer 🧑‍💻

The Way the road maps are structured are as follows:

  • Programming Languages
  • Concepts
  • Tools

Embedded IoT Developer

Programming Languages 💻:

  • Embedded C (Must Have)
  • C++ (Must Have)
  • Python (Must Have)
  • Bash Scripting (Nice To have)
  • Rust (Nice To have)

Those Programming Languages are going to give you a head start to kickstart the embedded journey where C++ and Embedded C are the bare minimum to get started

Concepts 🧠:

  • RTOS (Must Have)
  • IoT Value Chain (Must Have)
  • IoT Security (Nice To Have)
  • Wireless Communication (Must Have)
  • OS Fundamentals (Must Have)
  • Cloud Computing Basics (Nice To Have)
  • Linux (Must Have)
  • Web Services (Nice To Have)
  • Pub / Sub Systems (Must Have)
  • Embedded Design Patterns (Must Have)
  • Networks (Nice To Have)

These Concepts are mandatory in order to be able to work comfortablly developing IoT Solutions.

Tools 🧰:

  • Platform IO
  • CMake
  • Esp IDF

Target Architectures

  • RISC
  • CISC

The difference between CISC and RISC Targets should be understandable during development of Embedded IoT Solutions

You Can try the Following Targets / Dev Boards:

Targets

  • STM32 (Blue/Black Pill)
  • Esp32 / NodeMCU
  • Raspberry Pi (Embedded Linux)
  • BeagleBone (Embedded Linux)
  • Jetson Nano (Embedded Linux)

To Work with those Targets and get something useful out of them you have to understand the target peripherals which include the following:

Microcontoller Peripherals 🎮

  • GPIO
  • Timers
  • PWM
  • ADC
  • DAC
  • Serial Communication(SPI,I2C,UART)
  • Wifi
  • Memory(Flash,SRAM,EEPROM)
  • BLE

Here is a High Level Mindmap 🗺️:

"Embedded IoT Developer"

IoT Application Developer

For you to become an iot application developer you have to wear a lot of hats and be knowledgable in alot of things , you should not think that you have to expert at all of these but atleast have some idea on how to work with the following:

  • Frontend
  • Backend
  • Cross Platform Mobile Development (Nice To have)

you can choose from the below frameworks whatever you feel comfortable working with or have worked with before.

Programming Languages 💻:

  • TypeScript
  • JavaScript
  • Python
  • Java

Frameworks

Frontend

  • React
  • Angular
  • Vue
  • Svelte

Backend

  • ExpressJS
  • NestJS
  • FastAPI
  • Flask
  • DJango
  • SpringBoot
  • GO

Mobile Technologies

  • Flutter
  • React Native

Concepts 🧠

  • IoT Value Chain
  • IoT Security
  • Wireless Communication
  • OS Fundamentals
  • Cloud Computing Basics
  • Linux
  • Web Services
  • Pub / Sub Systems
  • System Integration
  • Networks
  • M2M
  • Design Patterns

For Realtime operating systems you just have to understand how they work and how to deal with event loops because you can work with one.

RTOS

  • Mynewt
  • FreeRTOS
  • Amazon FreeRTOS
  • NuttX

For Internet Protocols they are mandatory that you understand how they work with different Architectures, for example client / server or pub / sub systems

Internet Protocols

  • HTTP/HTTPS
  • MQTT
  • COAP
  • AMQP

Wireless Technologies

  • LORA
  • BLE
  • WIFI
  • NFC Industrial protocols are not mandatory but they are nice to have and to understand how they work and if you want to work in the IIOT space then they will become very important and give you a headstart.

Industrial Protocols

  • OPC UA
  • Modbus

Distributed Computing

You should at least know one of the following message brokers to implement distributed computing and asynchronous code execution

  • Microservices
Message Brokers
  • Kafka
  • RabbitMQ
  • HiveMQ
  • EMQX
  • ESB eg. WSO2

You have to know atleast one Relational database, one nosql database and one Timeseries database as well as keystore databases.

Databases

  • Mysql
  • Postgresql
  • MongoDB
  • Cassandra
  • Redis Cache
  • InfluxDB

Time to market is really important to Enterprise companies that's why the use Application Enablement Platform, where they can develop iot solutions faster and below are the most popular ones in the market varying from open source to fully paid solutions

IoT Platforms(AEP)

  • ThingsBoard
  • The Things Industries
  • Mainflux
  • ThingsWorx
  • Losant
  • ThingsWorks
  • Cumulocity
  • Data Cake

Cloud Native Technologies & Tools 🧰

  • Kubernetes
  • Docker
  • Prometheus

Monitoring 🖥️

Monitoring your assets and applications and servers is key to successful IoT deployment and maintenance Grafana is one of the best monitoring and visualization tools

  • Grafana

IoT CLoud Providers

There are two types of AEPs One we call as Application enablement platform and one we call as Hyperscalers, Amazon and Microsoft are conisdered as Market Hyperscalers who enter the cloud and iot space to provide premade services to accelarate your time to market and development cycle

  • AWS IOT
  • AZure IOT

Here is a High Level Mindmap 🗺️:

"IoT Application Developer"

iot-roadmap's People

Contributors

mahmoodfathy avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.