This time, we're going to dive in the ups and downs of IoT development with a step-by-step tutorial. Real-life example, no theoretical "maybes", and lots of experience included. Quick references to related articles as a bonus. Original article — How to create a startup: IoT project from idea to production It's high time for industrial revolution #4, and you shouldn't miss this opportunity. What is the right way to take part in this wave? Since we already wrote a basic article about making idea become a real product, this time we decided to write a guide that you can use to achieve results on each step and get thorough understanding of the process. So, let's begin! First things first, you should clearly understand and define your goal and divide it into subgoals prior to any development.\
Your project requirements should include the following information: Keep in mind that your project requirements should contain both technical and business-related parts of the system. Where, why, and how the end users will use your product? Defining clear and sufficient project requirements is critical as explains the team what they should create and why. Otherwise, you are in a risk list to fail the deadlines. See our project description template for reference. While creating unique template for all kinds of projects is definitely not possible, we hope the samples we give in our articles will be useful for you. To better understand specifics of IoT development, check our article with a short overview of existing solutions and nuances.  After your project description is ready, you can share it with your team and discuss all the details. Update the document if you find reasonable feedback. If you have prospective customers before you start the development, that means your system is in demand. Also, you can start beta testing right when the initial version of the system is ready. Moreover, early customers will help you make sales right from the start.\
Still, you can look for potential customers while development is in progress. Here are the most common approaches: In this case, before interview and negotiations, read how to learn if the outsourcing team is overcharging you.\
Conclusion: Professional outsourced team saves you time and costs as well as provides impersonal and useful feedback. Messy team will get you nowhere. 2. Gather your own team This alternative seems really nice, but be aware of pitfalls: Conclusion: you'll have much less time for evolving your business. But you'll have an in-house team. After finding the team that will implement technical part, start working on technical project specification. Project description explains the "whats" of your product. Now you have to get down to "hows". Don't underestimate the value of such document. While it may look like wasting time (it's not), it saves you time, money, and nerves in the long run. Particularly, you'll notice you didn't define about stuff like interaction, each page's content, etc., and what tools you'll need for their implementation. Go through the document carefully to make sure you missed nothing. It will be a lot cheaper and faster to define the scope from the start, then change it in the process. Yet, the specification may be updated further after preparing the design (that's okay, it will crystallize the budget and timeline more).\
You can find template for project technical description here — Project Technical description template So now, when you fully understand what needs to be done for your product, visualize it. Taking both intended use and technical specifics into account, design your hardware and applications, and include them into project description and specification. Design will also reveal many things you missed while describing. This way your budgeting will be better and better. We've drilled down the example budgeting of IoT projects works, you can check it out here — How much does it cost to create IoT solution? Back on the design track, here's a visualisations: The device design is important, because it answers the following questions: Commercial: Technical:  The design of your software, be it a mobile, web, or desktop application, literally defines how users will perceive your product. Make it as easy to use and intuitive as possible (even if the functionality behind it is super complex). Here's our example:  Awesome, with design in place, both you and your team have a vision of how the product should look like, and that's one of the most important things. Yet, you may not have a complete understanding of the flow: how the users can interact with both software and hardware part of your product. To identify any inconveniences/redundancies prior to development and production, it's better to spend a little time and create a prototype.\
For application prototype, you may use: For hardware prototype, create draft device that contains basic functions and proves feasibility of your idea. Neither size and weight, nor the look matter now as you only explore functionality. Your main goal now is verifying that system reads data from sensors and loads it on MQTT broker (or any other IoT data transfer protocol like WebSocket, HTTP REST, or CoAP that you're using). Here is an example of our prototype:  Using this prototype, we understood that we needed better implementation for setup button, so we updated the design and started establishing the easiest connection flow. First, for connecting, users had to press and hold this button to turn the device into setup mode and connecting to Wi-Fi hotspot. But later we further enhanced and simplified the flow using Bluetooth. At this point, app and device prototypes are not connected as we tested if the concepts work fine (and as we expected). We verified the transfer of data to MQTT broker on the hardware, and clicked each screen to understand if both look and feel of the app are appealing and intuitive.\
With this information at hand, we can move on to the software development stage. Awesome! With all preparations done, we can proceed to the development. Next two stages may be done in any sequence or simultaneously because they are independent. We wrote tons of articles about the development specifics already, so here we'll outline what is a must for successful work: Learn more about our development process: Apart from the development, we should never forget testing. While it might be possible to become new IBM without QA team, here's what we think about testing: The importance of automated testing on complex projects. With both tech description and all specifications for each hardware component, you can start working on 3D model of your hardware for an MVP solution. We designed and printed it on 3D printer.  To check if device really looks and feels the way we expect, we printed the model on our 3D printer. And here's the printing result:  It still doesn't have a production look, but the size and functionality are correct, and we can check if that's what we expected. Our MVP is ready, let's start testing it on the first clients.\
First of all, we decided to start testing the product in our office. We installed 7 devices in 7 rooms (3 meeting rooms, kitchen, and 3 workrooms). Everyone in our company installed application and started using it. Moreover, to get diverse feedback from a variety of people, we gave the products to our friends and partner companies.\
The main goal of beta testing is to determine any issues we missed previously, learn if there is enough functionality and if the right functionality was selected for the first version. First things first, what is and MVP and why do we need and MVP? You can find the answers in our article MVP: preventing commercial products from risks Minimum viable product is a version that contains only the main and the most important functionality. For this exact functionality people want to use the product and recommend it to others. So and ordered printing of our 3D models at a professional production with high-quality 3D printers, so they have attractive boxes. In most cases, people care about the look, and even if they say they need functionality only, they still want nice-looking things:  Both the functionality you select and the appearance are crucial for successful marketing of MVP. To support our sales campaign and expand knowledge about our product, we've also developed a landing page https://ubreez.com/. After getting feedback from beta testers, we found few issues that should be improved. Since that was our main goal for beta testing, we were glad to see it gone well. So, we enhanced the product and ordered a large amount of devices at professional production. We don't assemble the devices in our office, because that's not our speciality and we won't do it as effective as any professional factory. So, the goal is reached, and it's time to start making sales.\
You can check the applications at:\
App Store\
Play Market Our product is developed, it's successful, and we grow each second. Is that the end? Of course not, I dare even say that it's just a beginning.\
When you launch the product, what's next? Learn at "Is there life after app release?" Thanks for reading!\
Leave comments and subscribe to our blog, there's a lot of new good stuff coming soon.