├── App-Software.JPG ├── Embedded.JPG └── ReadMe.md /App-Software.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mahmoodfathy/IoT-Roadmap/df85980b9d4e6fe8f9c6e377e3ffb5ec4064fbda/App-Software.JPG -------------------------------------------------------------------------------- /Embedded.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mahmoodfathy/IoT-Roadmap/df85980b9d4e6fe8f9c6e377e3ffb5ec4064fbda/Embedded.JPG -------------------------------------------------------------------------------- /ReadMe.md: -------------------------------------------------------------------------------- 1 | # Road To become an IoT Developer ✔️ 2 | 3 | I have split this post to 2 road ways : 4 | 5 | - Embedded IoT Developer 🧑‍💻 6 | - IoT Application Developer 🧑‍💻 7 | 8 | The Way the road maps are structured are as follows: 9 | 10 | - Programming Languages 11 | - Concepts 12 | - Tools 13 | 14 | ## Embedded IoT Developer 15 | 16 | ### Programming Languages 💻: 17 | 18 | - Embedded C (Must Have) 19 | - C++ (Must Have) 20 | - Python (Must Have) 21 | - Bash Scripting (Nice To have) 22 | - Rust (Nice To have) 23 | 24 | Those Programming Languages are going to give you a head start to kickstart the embedded journey where C++ and Embedded C are 25 | the bare minimum to get started 26 | 27 | #### Concepts 🧠: 28 | 29 | - RTOS (Must Have) 30 | - IoT Value Chain (Must Have) 31 | - IoT Security (Nice To Have) 32 | - Wireless Communication (Must Have) 33 | - OS Fundamentals (Must Have) 34 | - Cloud Computing Basics (Nice To Have) 35 | - Linux (Must Have) 36 | - Web Services (Nice To Have) 37 | - Pub / Sub Systems (Must Have) 38 | - Embedded Design Patterns (Must Have) 39 | - Networks (Nice To Have) 40 | 41 | These Concepts are mandatory in order to be able to work comfortablly developing IoT Solutions. 42 | 43 | ### Tools 🧰: 44 | 45 | - Platform IO 46 | - CMake 47 | - Esp IDF 48 | 49 | ### Target Architectures 50 | 51 | - RISC 52 | - CISC 53 | 54 | The difference between CISC and RISC Targets should be understandable during development of Embedded IoT Solutions 55 | 56 | You Can try the Following Targets / Dev Boards: 57 | 58 | #### Targets 59 | 60 | - STM32 (Blue/Black Pill) 61 | - Esp32 / NodeMCU 62 | - Raspberry Pi (Embedded Linux) 63 | - BeagleBone (Embedded Linux) 64 | - Jetson Nano (Embedded Linux) 65 | 66 | To Work with those Targets and get something useful out of them you have to understand the target peripherals which include the following: 67 | 68 | #### Microcontoller Peripherals 🎮 69 | 70 | - GPIO 71 | - Timers 72 | - PWM 73 | - ADC 74 | - DAC 75 | - Serial Communication(SPI,I2C,UART) 76 | - Wifi 77 | - Memory(Flash,SRAM,EEPROM) 78 | - BLE 79 | 80 | ### Here is a High Level Mindmap 🗺️: 81 | 82 | !["Embedded IoT Developer"](Embedded.JPG) 83 | 84 | ## IoT Application Developer 85 | 86 | For you to become an iot application developer you have to wear a lot of hats and be knowledgable in alot of things , 87 | 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: 88 | 89 | - Frontend 90 | - Backend 91 | - Cross Platform Mobile Development (Nice To have) 92 | 93 | you can choose from the below frameworks whatever you feel comfortable working with or have worked with before. 94 | 95 | ### Programming Languages 💻: 96 | 97 | - TypeScript 98 | - JavaScript 99 | - Python 100 | - Java 101 | 102 | ### Frameworks 103 | 104 | #### Frontend 105 | 106 | - React 107 | - Angular 108 | - Vue 109 | - Svelte 110 | 111 | #### Backend 112 | 113 | - ExpressJS 114 | - NestJS 115 | - FastAPI 116 | - Flask 117 | - DJango 118 | - SpringBoot 119 | - GO 120 | 121 | #### Mobile Technologies 122 | 123 | - Flutter 124 | - React Native 125 | 126 | ### Concepts 🧠 127 | 128 | - IoT Value Chain 129 | - IoT Security 130 | - Wireless Communication 131 | - OS Fundamentals 132 | - Cloud Computing Basics 133 | - Linux 134 | - Web Services 135 | - Pub / Sub Systems 136 | - System Integration 137 | - Networks 138 | - M2M 139 | - Design Patterns 140 | 141 | 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. 142 | 143 | ### RTOS 144 | 145 | - Mynewt 146 | - FreeRTOS 147 | - Amazon FreeRTOS 148 | - NuttX 149 | 150 | For Internet Protocols they are mandatory that you understand how they work with different Architectures, 151 | for example client / server or pub / sub systems 152 | 153 | ### Internet Protocols 154 | 155 | - HTTP/HTTPS 156 | - MQTT 157 | - COAP 158 | - AMQP 159 | 160 | ### Wireless Technologies 161 | 162 | - LORA 163 | - BLE 164 | - WIFI 165 | - NFC 166 | 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 167 | IIOT space then they will become very important and give you a headstart. 168 | 169 | ### Industrial Protocols 170 | 171 | - OPC UA 172 | - Modbus 173 | 174 | ### Distributed Computing 175 | 176 | You should at least know one of the following message brokers to implement distributed computing and asynchronous code execution 177 | 178 | - Microservices 179 | 180 | ##### Message Brokers 181 | 182 | - Kafka 183 | - RabbitMQ 184 | - HiveMQ 185 | - EMQX 186 | - ESB eg. WSO2 187 | 188 | You have to know atleast one Relational database, one nosql database and one Timeseries database as well as keystore databases. 189 | 190 | ### Databases 191 | 192 | - Mysql 193 | - Postgresql 194 | - MongoDB 195 | - Cassandra 196 | - Redis Cache 197 | - InfluxDB 198 | 199 | Time to market is really important to Enterprise companies that's why the use Application Enablement Platform, 200 | 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 201 | 202 | ### IoT Platforms(AEP) 203 | 204 | - ThingsBoard 205 | - The Things Industries 206 | - Mainflux 207 | - ThingsWorx 208 | - Losant 209 | - ThingsWorks 210 | - Cumulocity 211 | - Data Cake 212 | 213 | ### Cloud Native Technologies & Tools 🧰 214 | 215 | - Kubernetes 216 | - Docker 217 | - Prometheus 218 | 219 | #### Monitoring 🖥️ 220 | 221 | Monitoring your assets and applications and servers is key to successful IoT deployment and maintenance Grafana is one of the best monitoring and 222 | visualization tools 223 | 224 | - Grafana 225 | 226 | ### IoT CLoud Providers 227 | 228 | 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 229 | who enter the cloud and iot space to provide premade services to accelarate your time to market and development cycle 230 | 231 | - AWS IOT 232 | - AZure IOT 233 | 234 | ### Here is a High Level Mindmap 🗺️: 235 | 236 | !["IoT Application Developer"](App-Software.JPG) 237 | --------------------------------------------------------------------------------