EB: IoT is taking off like crazy – what changes have you seen from the developer community in response to this take-off?
LK: Increasingly, with the advent of the Internet of Things (IoT), developers are seeing the opportunity to connect devices and sensors, in order to derive intelligence and competitive advantages from the data these connections generate. The devices, whether it is dev boards, sensors, wearables or smart phones, are all producing vast amounts of data by the millisecond, and there has been an upsurge of interest within the developer community around moulding this data into a format that is useful. Being able to join these data streams together to create real time insights is an exciting prospect.
What is striking is seeing this new energy and excitement coming from the developer community, as they have a whole new set of parameters to build within, to create scenarios that fundamentally change end user experiences. We are now seeing more traditional developers within enterprises exploring new innovations that they hadn’t previously – some of them looking to experiment on the side, and create their own new business ventures in response to the opportunities within this space.
Many have been excited by the possibility of an interconnected world of IoT, and it’s true that it’s still early days with regards to developing, but what’s exciting is that we’re just at the beginning of what is likely to be a challenging journey, and one that is full of possibilities for new innovators.
EB: As the IoT creates different demands and pressures, how has the developer skill set changed and evolved?
LK: IoT requires that devs add a whole new set of dimensions to their code and the skills required need more hardware understanding. Devs are increasingly needing to think not just about their own piece of software, but rather how it fits within the larger context of an IoT service and solution, to ensure it incorporates security and data services. Devs need to be able to envision the full end to end system and be able to identify entry points, complex comms scenarios and most importantly what to do with their data.
When it comes to writing concise and efficient code, there are new skills around analysis and visualisation of data that need to be adopted, adding a new dimension to the traditional developer role, from hardware developer to data scientist, and all the skills in between. Developers need to have more than just traditional software development skills, and IoT offers a whole new opportunity to programme hardware with embedded software.
EB: What would you say are the biggest challenges facing IoT developers today?
LK: Firstly, I see the biggest challenges here as: field gateway implementation i.e. it’s difficult to write efficient and robust software for such small devices, as high level programming languages/platforms are arguably not appropriate for such devices. Secondly, writing software for small resourced devices like sensors or field gateways requires the programs to be very memory efficient. The programs also need to be as robust as the devices will run for many months without being reset. Over such a long execution time, errors in programming can incur excessive memory usage, or programs can encounter edge case race conditions: when a sequence of commands do not execute in the order the developer intended them to, this occurs in multi-threaded or distributed systems.
Either of these scenarios, and many more, can cause the program to crash/hang. As the device is typically remote it is very hard to reset it. Therefore, the software needs to be written well, tested well, and the technology platform it is built on needs to perform well.
Liam Kelly, GM Developer Experience, Microsoft UK
EB: What would you say is the ‘must-have’ skill for all aspiring IoT developers?
LK: Today’s developers need to consider the end customer experience as a priority. They need to be able to deliver something that is personal, which maximises the capabilities of the device connectivity, and provides data to offer insights about the things, and people, they are connected to.
Developers should also aim to focus on one project that will deliver an immediate result, which they can learn from and build on again and again. It’s critical to build a flexible system that can scale quickly, and developers need to be prepared to build scalable code and architecture, so that moving from a handful of connected devices to millions is achievable.
EB: What tools do you think will be vital to the IoT developer?
LK: Cloud platform services and solutions that integrate any device, platform, language, communications protocols and data type will be key. Data services that enable you to gain quick insights into your "things" and build automated intelligent actions via machine learning and advanced analytics are also vital to the IoT developer. Data visualisation tools will also be helpful, to enable your key stakeholders to see what is happening, gain insights, and make decisions about your business in an agile way.
Find out what Liam thinks about open source, security, IoT standards and interoperability on the next page.
EB: How important is open source to the development of IoT?
LK: Open source technologies are of paramount importance and have been widely adopted already in the community, with most IoT products currently being built using open source technologies. Additionally, developments from open source software supports innovation at the ideation phase. Many developers don’t realise that there are excellent professional software development tools that are available to start-ups and communities for free, e.g. Visual Studio code, that can be utilised.
EB: What about the role of open source in IoT interoperability?
LK: Early work on IoT was tested within the open source community, and to this day open source is the standard software used in IoT. Many companies such as Microsoft are contributing to the open source community. For example, Microsoft deepened its relationship with the Eclipse Foundation by bringing a host of Microsoft solutions to the Eclipse open source community, including Azure IoT to help deliver a great set of tools and services for all development teams.
EB: The IoT is creating vast new attack surfaces – how should developers approach IoT security? Secure the device, the software – what approach should be taken?
LK: It’s vital that security be incorporated into the platforms that developers are building on in every instance – at a physical and virtual level, as well as within the applications themselves.
Alongside interoperability, security needs to be one of the primary concerns when developing for IoT. Given the sheer volume of devices that are prone to attack. There are millions and trillions of device messages within IoT, so developers need to make significant effort to ensure that data received in the cloud, from devices, is within expected scope and frequency to assist detection of devices under attack. For example, WAF (Web Application Firewall) technology for IoT cloud solutions is an interesting idea to help avoid this kind of abuse. By doing very little to protect the device, the idea is that the electronics make hackable entry points unclear.
EB: How constrained are developers with the lack of IoT standards? What role can developers take to lower these barriers?
LK: All developers will develop everything in an open and proprietary way and deliver value to the end consumer, but the glue that will be the standard between all these things is the data sources at the back end and how you choose to represent value through that.
IoT Hub is similar to writing a translation layer between the various and different messaging standards, but in reality the IT industry has always had multiple competing standards and will continue to do so in IoT. What will unify the IoT world is the data and the cloud back end, and how people chose to deliver value from that data repository.
EB: Do you think businesses truly understand the challenges of interoperability, security, privacy etc when it comes to the IoT? Are businesses responding accordingly with IT spend & strategy?
LK: I think that at the moment we are just scratching the surface of new IoT interoperability, security and privacy challenges. There are still lots of hurdles to overcome to ensure that this technology is embraced and utilised by consumers, as with the increasing connectivity of more ‘things’, and more data, comes both complexity and power.
With this increased complexity, there is also increased room for human error; and in turn device vulnerability, so developers need to improve their skill sets to understand each and every part of IoT architecture to mitigate this threat. Businesses, the developers and IT teams that enable these services must be coming from the same set of robust "data ethics" and privacy policies that respect and protect users’ data, to use it responsibly in the ways in which it was originally intended.