DEVELOPMENT HINTS ESSENTIAL SOFTWARE ELEVEN · nobody wants, that’s a complete fiasco. That’s...

14
1 ELEVEN ESSENTIAL SOFTWARE DEVELOPMENT HINTS Every IoT Startup Should Follow

Transcript of DEVELOPMENT HINTS ESSENTIAL SOFTWARE ELEVEN · nobody wants, that’s a complete fiasco. That’s...

Page 1: DEVELOPMENT HINTS ESSENTIAL SOFTWARE ELEVEN · nobody wants, that’s a complete fiasco. That’s why Eric Ries introduced the Lean Startup idea, offering to check every idea before

1

ELEVENESSENTIAL SOFTWAREDEVELOPMENT HINTSEvery IoT Startup Should Follow

Page 2: DEVELOPMENT HINTS ESSENTIAL SOFTWARE ELEVEN · nobody wants, that’s a complete fiasco. That’s why Eric Ries introduced the Lean Startup idea, offering to check every idea before

2

Contents

Is Software Really So Important? 3

11 Essential Practices To Make your IoT Product Software Awesome 4

1. Rely on research 4

2. Create user stories 5

3. Do rapid prototyping 6

4. Fail fast, fail often 7

5. Think about corner cases 8

6. Have additional hardware capabilities for future 9

7. Host servers in multiple data centers 10

8. Use IoT platforms to minimize expenses 10

9. Decide which standards you’ll follow 11

10. Plan interoperability 11

11. Follow latest security practices 12

Bonus Advice: Consider Outsourcing Software Development 13

Want to Ensure the Software Behind your IoT Product is Top-Notch? 14

Page 3: DEVELOPMENT HINTS ESSENTIAL SOFTWARE ELEVEN · nobody wants, that’s a complete fiasco. That’s why Eric Ries introduced the Lean Startup idea, offering to check every idea before

According to Stephen Forte, who has worked with 100+ hardware companies and advise IoT startups in programs like Hax, any hardware company is a software company.

Obviously, any great hardware product requires great software to operate and, most importantly, succeed. As a result, Intel has more developers than Facebook, and FitBit is not yet another fitness tracker, but an effective tool to lose weight.

This leads to the notion of paying maximum attention to the software in your IoT product, and in this PDF material we’ll share 11 tips on how to deliver a great interaction experience in the most cost-effective and smartest way.

Note that below you’ll find only practice-proven workflow tips collected after working with a few of our IoT startup clients, and we hope you’ll find them useful as well.

Is Software Really So Important?

Page 4: DEVELOPMENT HINTS ESSENTIAL SOFTWARE ELEVEN · nobody wants, that’s a complete fiasco. That’s why Eric Ries introduced the Lean Startup idea, offering to check every idea before

1

IoT startups require engineers and technicians to work tightly with software designers, and in many companies, one team is usually superior to another. However, making correct decisions and finding right answers to the questions has minimum to do with subordination. The research and its conclusions are the main cornerstone of truth.

It’s the research that helps you and your team decide whether your device should be connected to the Internet in the first place, how users are expected to take advantage of your offering, which their needs should be met first, etc.

On the contrary, if you often see that your team has debates on various questions (or even don’t talk at all while having different goals and tasks), having no research done may lead to creating product loaded with unnecessary features and built without the end user in mind.

RELY ON RESEARCH

11 Essential Practices To Make your IoT Product Software Awesome

Page 5: DEVELOPMENT HINTS ESSENTIAL SOFTWARE ELEVEN · nobody wants, that’s a complete fiasco. That’s why Eric Ries introduced the Lean Startup idea, offering to check every idea before

2

Originated from the Agile development practices, user stories are descriptions of actions your users should do in order to solve a problem or achieve the required result.

While they are extremely important in building software products, the IoT startups consider user stories an even more vital part of the product development process. That’s because multiple teams — hardware designers, software architects, tech and QA engineers — are involved in creating your device, and they all should understand how the users want and are expected to interact with it and what are the priorities in meeting those expectations.

Of course, you can always do one step at a time and overcome each new challenge or problem once it appears during the product development process, but obviously, this is not a strategically effective way to build successful products that users will love.

CREATE USER STORIES

“I had to work hard to figure out the least I could build to make people happy.”~ Jeff Patton, the author of user story mapping

Page 6: DEVELOPMENT HINTS ESSENTIAL SOFTWARE ELEVEN · nobody wants, that’s a complete fiasco. That’s why Eric Ries introduced the Lean Startup idea, offering to check every idea before

3

You might already know the notion of the Lean startup offering to come up with an MVP as quickly as possible. One of the ways to speed up the process is doing prototypes quickly. With hardware, it might be done via 3D printers or development boards like Arduino; with software, your engineers can consider dedicated technologies or even languages that allow rapid development.

When it comes to the Internet Of Things, Ruby and Scala, for instance, are often praised for their advanced features and minimal syntax if compare to, say, C# or Java.

Things get even easier if you want to have a web or mobile companion app for your device. Usable interfaces for such software can be created via Invision, Principle, Balsamiq and many others.

DO RAPID PROTOTYPING

So much can be done so quickly, prototyped so rapidly, and the costs are so low.~ Sam Altman

Page 7: DEVELOPMENT HINTS ESSENTIAL SOFTWARE ELEVEN · nobody wants, that’s a complete fiasco. That’s why Eric Ries introduced the Lean Startup idea, offering to check every idea before

4

While this hint may sound counterintuitive, no successful product has ever been released from scratch. Failure is one of the key elements of the innovation for the business and the precious opportunity to learn and improve for you.

So the faster you fail and learn from your mistakes, the sooner you’ll succeed.

Yes, failures are extremely hard to recover from, especially when we’re talking about entrepreneurs. But that depends on how we understand failures. If you release a product that nobody wants, that’s a complete fiasco. That’s why Eric Ries introduced the Lean Startup idea, offering to check every idea before implementing and then create a minimum viable product to be sure it will be demanded.

With such approach, any failure, i.e. the idea that turned to be wrong, turns into a part of a feedback loop, a result of testing the work that has been done. In fact, it’s an essential notion in the Agile development (the modern common approach in developing software), so don’t try to avoid such failures and come up with seemingly perfect products. Instead, implement ideas quickly, check if they’re valid and move on no matter what’s the result.

FAIL FAST, FAIL OFTEN

...Most start-ups fail. Yet the story of perseverance, creative genius, and hard work persists. ~ Eric Ries

Page 8: DEVELOPMENT HINTS ESSENTIAL SOFTWARE ELEVEN · nobody wants, that’s a complete fiasco. That’s why Eric Ries introduced the Lean Startup idea, offering to check every idea before

5

One of the problems of the Lean approach is ignoring or forgetting to review the rare situations your future customers and users might get involved in.

If you’re developing a smart home device, what happens if there’s no Internet connectivity? Moreover, what if there’s no Internet, and the device malfunctions for some reason?

In such scenarios, the best strategy is allowing a few different ways of updating your device firmware. For instance, you can make updating possible wirelessly, by connecting the device to a PC/Mac, or by plugging in a USB stick with a previously downloaded firmware. Otherwise, you’ll end up with lots of negative reviews and refunds, which will cost you more than implementing a spare firmware update option.

If your hardware can be controlled via smartphone, will the user figure out what to do if they lost their phone? What if a user decided to have no password, which security breaches will they have exposed?

If your hardware is controlled by voice or allows authentication via fingerprints, do you have a spare option if the user has lost their voice or burned their thumbs?

Speaking of security, thinking various corner cases through allow to make your product much safer. Ignoring that might lead to situations like hackable light bulbs, TVs, and even fridges.

THINK ABOUT CORNER CASES

A small change at the beginning of the design process defines an entirely different product at the end. ~ Jonathan Ive

Page 9: DEVELOPMENT HINTS ESSENTIAL SOFTWARE ELEVEN · nobody wants, that’s a complete fiasco. That’s why Eric Ries introduced the Lean Startup idea, offering to check every idea before

6 HAVE ADDITIONAL HARDWARE CAPABILITIES FOR FUTURE

People love when the products they purchase get better with time. With electronic hardware, this is achievable through software updates.

Since you never know how the market will change tomorrow, it’s always strategically smart to make a small investment into additional hardware capabilities to be able to roll out future software updates and expand the available functionality for longer.

That’s why Rachio, a smart sprinkler system, has resources in it to support working with other devices and sports additional wire points built-in to be able to control more watering zones in the future. More than a year ago Tesla had also rolled out a free software update allowing its electric cars to park automatically.

Apart from exceeding the user expectations, you also increase their loyalty with such a strategy.

Page 10: DEVELOPMENT HINTS ESSENTIAL SOFTWARE ELEVEN · nobody wants, that’s a complete fiasco. That’s why Eric Ries introduced the Lean Startup idea, offering to check every idea before

7

Consider hosting your software in a few data centers. Technically, it allows reducing response time latency (especially if you’re planning to ship your product worldwide), as well as ensure uninterrupted service in case something goes wrong.

From the business point of view, it’ll help you achieve the smoother performance of your product and make users experience your product with joy.

However, note that the balance here is also necessary. One of the problems many IoT startups have is an inadequate infrastructure and, as a result, high cost of implementation. Be sure to identify a proper mix of technologies and requirements that correspond to your product before starting to implement its software part.

HOST SERVERS IN MULTIPLE DATA CENTRES

8

While the Internet of Things is a pretty fresh trend gaining traction over the last few years, there are already tons of software that might help your developers do things in an easier and quicker manner and, if we’re talking about the open source tools, in a less expensive way.

More specifically, any IoT system requires a number of tools like a database management system, some APIs to interact with third-party services, analytics and so on. Instead of building these things from scratch, consider using already existing and proven solutions that are known as IoT platforms.

Such platforms are able to retrieve and process the info from your hardware, have activation and real-time messaging functionality, sport an API to help your apps communicate with it and provide other handy development stuff. Worthy examples here are Amazon, Mnubo, Xively, ThingWorx, Ayla and Bug Labs.

USE IoT PLATFORMS TO MINIMIZE EXPENSES

Page 11: DEVELOPMENT HINTS ESSENTIAL SOFTWARE ELEVEN · nobody wants, that’s a complete fiasco. That’s why Eric Ries introduced the Lean Startup idea, offering to check every idea before

9

The IoT market is already a dozen years old and have many devices released. Obviously, some of them can and should be able to interact with each other and be united into systems like smart homes, neighborhood area networks, utility infrastructures, etc. However, every manufacturer tries to incorporate its own standard, which makes it currently impossible to have one of them generally agreed-upon and used.

Of course, some positive changes are happening on the market right now: in April 2016 Germany and Japan allied to create another IoT standard. Besides, we already have good standards for wireless communication protocols, such as Wi-Fi, Bluetooth, and Z-wave.

Still, you must decide which standards your hardware will stick to, as every option will have its own limitations, peculiarities, and restrictions. Even with Wi-Fi, there are three commonly used 802.11 standards, Bluetooth offers the additional ‘BLE’ standard for IoT, and Z-Wave has a competing alternative named Zigbee.

DECIDE WHICH STANDARDS YOU’LL FOLLOW

10

Lack of generally accepted standards leads to the problem of interoperability. If your solution might be a part of a larger infrastructure, think about how your user might want it to interact with other devices. For instance, if you’re producing internet-enabled sensors and controls, how other devices can retrieve data from it to perform smarter actions or simplify the routine for the user? How can you make this data easier to process?

While the OpenFog consortium tries to come up with an industry-accepted architecture of a layer between the cloud and things, you’re forced to look for your own solution of the problem. In the case with smart home devices, your solution can be compatible with smart home hubs like Samsung SmartThings or Amazon Echo Dot.

Another specific case here is when you want to have smartphone app companions in addition to your hardware product. OK, most users have iOS and Android on their mobiles, but what about OS versions you want to support? According to the latest Google report, more than 22% of Android devices currently used still have a 4.4 Kitkat version installed, which was released back in 2013. And it’s up to you to decide if you still want your product to be compatible with it or no.

PLAN INTEROPERABILITY

Page 12: DEVELOPMENT HINTS ESSENTIAL SOFTWARE ELEVEN · nobody wants, that’s a complete fiasco. That’s why Eric Ries introduced the Lean Startup idea, offering to check every idea before

11

According to Gartner, security is one of the most problematic and discussed aspects of the Internet of Things. It is expected that IoT companies will increase the budgets on assuring the product security by 20 times by the end of 2020.

Since you most probably understand the importance of ensuring security in your software, here are a few non-trivial things you or your developers might want to pay attention to additionally:

— implement IPSec for authentication and data confidentiality — use post-development scanning tools to eliminate the possibility of sensitive information disclosure— if you have open I/O interfaces and APIs allowing remote code execution, try to create and separate user interfaces for various security levels— avoid the possibility of injection attacks by using managed languages, analyzing static code and processing I/O via fixed functions— ensure the safety of the firmware updating process: choose a secure communication protocol, lock down device configuration during the update procedure and review the boot and update processes overall— see if you have fixed and/or predictable code in your product: it often becomes the reason of unauthorized access and backdoors

As you see, there’s a lot of things to think and do about, and missing any of them might lead to unwanted consequences and unbearable reputation losses, which is why most of our clients prefer to invest into security in the beginning of the product development, not in the end.

FOLLOW LATEST SECURITY PRACTICES

Source: Hewlett Packard’s Fortify on Demand, 2014 via Business Insider

Page 13: DEVELOPMENT HINTS ESSENTIAL SOFTWARE ELEVEN · nobody wants, that’s a complete fiasco. That’s why Eric Ries introduced the Lean Startup idea, offering to check every idea before

It’s only the industry-oriented developers who can professionally define hardware requirements for your software, build adequate infrastructure and resolve other technical challenges.

SMARTER DECISIONS

Being one of the rarely followed Agile practices, it offers to cover any code with tests to ensure stable and bug-free software updates.

TEST-DRIVEN DEVELOPMENT

Allowing to release app updates quickly and frequently, this approach helps to roll out, test and, if needed, roll back new software features, usability changes and design decisions and thus craft a product your users will be completely satisfied to use.

CONTINUOUS DEPLOYMENT

An experienced dev team knows which Agile practices fit them best, how to share responsibilities and work productively.

THE ALREADY DEFINED AND TRIED WORKFLOW

Bonus Advice: Consider Outsourcing Software Development

Security requirements change every now and then, and bringing the highest level of the protection for IoT-enabled products requires specific expertise. Of course, that’s not a rocket science for any developer, but their previous experience will help you make the right decisions on security at the very start.

ENSURING SECURITY

Sooner or later your product will succeed and get its first thousands of users. To cope with such loading, the software should be easily scalable at any moment, which is possible only if your developers have relevant experience.

SCALABILITY IN MIND2

3

1

5

6

4

Ensuring interoperability, selecting the best standards to stick to and other tips above might sound worth following to you, but implementing them without proper expertise and previous experience is always tough. That’s why so many hardware startups decide to outsource software development and focus on business growth and marketing.

The general reason for such a decision is because outsourcing brings many more benefits than simply providing a team of developers working on your solution. Just think about these advantages:

Page 14: DEVELOPMENT HINTS ESSENTIAL SOFTWARE ELEVEN · nobody wants, that’s a complete fiasco. That’s why Eric Ries introduced the Lean Startup idea, offering to check every idea before

Talk to us

Want to Ensure the Software Behind your IoT Product is

Top-Notch?

We are Brainbean Apps, and we help our clients deliver highly reliable software for their hardware devices, whether it’s a specific firmware, interaction scenario or an iOS/Android app companion.

If you have any questions or doubts on how to implement any of the tips above or create software for your own product, feel free to contact and ask us any questions, we’re always happy to help!