The IoT landscape is expanding, but it can’t do so without strong teams of IoT developers. If you’re wondering how to get into the field, start with this blog.
What is an IoT Developer?
First off: what actually is an IoT developer? What does the job entail?
IoT developer jobs can involve a little bit of everything — and by “everything” we mean security, networking, systems engineering, cloud programming, and hardware device programming. Since the position is relatively new, there’s lots of room to forge your own path if you have a particular interest.
While expertise in everything is neither necessary nor possible, it’s still important for an IoT developer to be at least somewhat familiar with every aspect of any given IoT project. IoT development is a highly collaborative exercise. Closing yourself or your team off from the people working on the hardware or design, for example, will undoubtedly produce an inferior product.
Stages in the IoT Development Process
To know the skills necessary to become a successful IoT developer, you’ll need to start with a basic understanding of the IoT development process. This way, you’ll be able to see all of the points where a developer enters the process and even identify a particular segment you’d like to specialize in.
IoT presents a unique challenge when it comes to developing and iterating products at the pace consumers demand. That’s because it combines hardware development (traditionally a linear process) with software development (which, with the increasing adoption of Agile development, supports continuous iteration).
The IoT development process requires an experienced, coordinated team of software developers, product managers, mechanical engineers, electrical engineers, UI/UX designers, and more to deliver products in a timely manner and continue improving them even after their release.
Using the Agile IoT development framework, our team at Very has identified 10 steps in the IoT development process that we use to guide each project:
1. Validations and Constraints
In this first stage, you’ll validate your assumptions about the project and go over any constraints that you will face (budget, timeline, staff, etc.). For example: Does your project require machine learning? Will you need custom hardware development?
2. Product Development Roadmap
Construct a plan from the ground up, making sure everyone is on the same page about the goals of the product. As a developer, you need to understand how the software is intended to interact with the hardware, what your timelines are, and which direction the design team is headed.
3. Hardware De-Risking
This stage will eliminate unknowns around your hardware design and will require you to collaborate with engineers to ask and answer questions like:
- Is it possible to measure/control X with an acceptable level of accuracy?
- Is it possible to receive wireless communication in the expected operating environment?
4. Imitation & Emulation
This stage involves physically building rough prototypes for hardware, which you won’t necessarily have to do yourself as it requires mechanical engineering skills. In fact, many IoT devices use primarily pre-assembled boards with sensors connected to them, so the building isn’t completely from scratch. Breadboards and alligator clips are your friends here. The important part is that the hardware you put together acts correctly, with an emphasis on “acts."
You’ll primarily come in on the application side, using software testing tools to emulate how the hardware will interact with the software once it’s fully built. You’ll also begin building the critical components around device provisioning, authentication, firmware updates, and basic message passing between the web backend and the device.
5. Full Prototype
At this stage, your prototype should be fully connected to the web. To make this possible, you’ll need programming skills to read the data from the sensors connected to the IoT device and send them to the server. You’ll also need someone to program the server that will receive and store the data from the device. This requires knowledge of server-side languages like Ruby, Elixir, Python, C#, Java, or TypeScript, and familiarity with database query languages — both SQL and NoSQL.
Finally, you’ll need to display data and messages to the user via a web page or app. This means you’ll need experience in web development languages like TypeScript, HTML, CSS, and frameworks like React or Vue.
6. Micro-Facturing Run
In this step, your hardware team will create custom printed circuit boards, and 3D printed mechanical enclosures/components. They’ll distribute these to developers so that you can perform testing with the actual hardware.
7. First Manufacturing Run
In this initial manufacturing run, you’ll create around 100 devices that you can distribute to a pilot group of testers. User testing is just as important in IoT as it is in regular software development — if not more so — because IoT involves physical hardware costs. It can’t be changed as easily if something goes wrong further down the line.
During this stage, you should receive feedback that you can use to make iterative improvements. If a hardware change is needed, the software team might be paused, or you might be asked to work on other features while the kinks are worked out.
8. Real Manufacturing Run
This stage will produce 1,000 or more devices, and by this time you should have worked with the manufacturer to complete any necessary custom provisioning or calibration software. You can work with your early adopters to get feedback on the training and onboarding process.
9. Go-to-Market Manufacturing Run
You’re ready to release your product. You can now work on other products to add to your IoT system, or you can think about ways to extend the life and value of the product now that it’s on the market. For example, can you use the data your product’s sensors are already collecting to provide new insights within your application?
10. Simulation with Digital Twin Technology
Finally, to collect more accurate product feedback, you can create a digital twin — a virtual reproduction of a physical object that you can use for testing and experimentation. Digital twins can also reduce the lifetime cost of owning and supporting a device.
Must-Have Skills for IoT Developers
Now that you’ve got the gist of the IoT development process, what else do you need to explore?
1. AI, Machine Learning, and Data Science
Businesses are increasingly seeing the value of AI, machine learning, and data science to automate processes, extract more knowledge and insights from data, and make more informed decisions.
Because IoT products by nature often collect massive amounts of data, it’s crucial for IoT developers to understand the technologies they’ll need to use to help businesses maximize the value of the information being collected.
2. Embedded Systems Engineering
Even if you’re not directly involved with the programming of an IoT device, or you don’t have a computer science degree, you should understand the basics of how the sensors work and how the hardware interacts with the software. You can try playing around with a Raspberry Pi to get an idea of how this works.
3. Networking & Security
Successful IoT solutions rely on efficient communication across secure networks. To ensure connectivity, developers should be familiar with the OSI stack and the communication protocols used in IoT (like MQTT).
4. Mobile Development Knowledge
It’s practically a given that you’ll need some web development knowledge to work in IoT so that you can create the application that’s connected to your “thing” or device. Additionally, with a huge number of connected devices being controlled by smartphones, some of the most marketable IoT developers today are highly skilled in mobile development for iOS and Android.
5. User Experience and User Interface Design
Your IoT product could have perfect connectivity and be programmed with flawless code, but if it’s not intuitive to use, none of that will matter. That’s where UX and UI design come in.
While you don’t have to be an IoT UX/UI design expert (especially given all of the complexities of IoT design ) collaboration with your software and hardware designers will be essential throughout your IoT project — so make sure you’re speaking the same language.
6. IoT Development Frameworks, Languages, & Technologies
To succeed as an IoT developer, you may need to be proficient in the following methodologies, frameworks, languages, and technologies:
- Agile Development
- Lean Development
- Extreme Programming
- Ruby on Rails
- React Native
- AWS IoT
- Microsoft Azure IoT
Making it Real
It’s an exciting time to get into IoT development, and it will be interesting to see how the field develops in the coming years. If anything from this post sounded like you and you’re interested in joining a team of IoT developers, check out our open positions here.
If you’re looking for a way to resource your next IoT project, reach out to our team today for a 30-minute conversation about how we can help.