Что должны знать IoT разработчики

Вместе с ростом Интернета вещей, растет и потребность в программистах. В последнем отчете VisionMobile говорится о том, что до 2020 года потребность рынка труда составит 4.5 миллиона IoT разработчиков. Это говорит о том, какие возможности откроются для них в ближайшие годы.

Традиционно, разработчики занимаются или софтом или железом, но IoT потребует знаний во обоих областях. Сейчас таких экспертов немного. Но со временем, знание того, чем занимаются твои коллеги в соседней комнате, будет давать существенное преимущество. Давайте рассмотрим основные проблемы с которыми сталкиваются IoT разработчики.

Навыки для работы с железом

Интернет вещей имеет настолько широкое применение, что разработчик может выбрать язык программирования по своему вкусу. Низкоуровневое программирование на ассемблер или C/C++ понадобится для встраиваемых систем. Языки высокого уровня, такие как Node.js или Java понадобится для устройств с большим количеством ресурсов. А знание протоколов передачи данных будет иметь особое значение, потому что IoT устройство станет бесполезной железкой, если не сможет передавать данные.

Но какие навыки понадобятся именно для работы с железом? Вероятно будет достаточно базовых знаний, вряд ли вам придется проектировать печатные платы, но вы точно должны иметь базовое понимание электроники и построения электронных схем. Как ведут себя компоненты на схеме - резисторы, конденсаторы, транзисторы и тд.

Для софтварного разработчика также будут важны умения быстро разобраться в спецификации, понимание временных диаграмм, знание таких понятий как подтягивающий резистор, высокоимпедансное состояние, логические вентиль.

Навыки для работы с софтом

Если вы работаете с железом, то в ваши задачи входит дизайн новой версии печатной платы устройства. Вы выбираете и интегрируете микропроцессоры и датчики. И какие софтварные навыки вам понадобятся для работы с железом? Опять же, это будет что-то базовое. Вашей цель - не написать пол миллиона строк кода, а в том, чтобы получить навыки прототипирования программного продукта, в итоге вы должны оценить требования второй половины вашей команды.

Языки высокого уровня такие как Node.js и Java будут отличным стартом для новичков в программировании. Они имеют низкий порог входа и как бонус имеют полезные возможности, например автоматическое освобождения памяти. Хотя, если вы хотите сразу ощутить все прелести и влезть в шкуру ваших товарищей, то погрузитесь в C/C++ и управляйте памятью вручную. Также важно уметь разбираться в SoC справочнике и понимать как датчики взаимодействуют с ЦАП.

Где всему этому научится

В интернете полно информации, но наша редакция рекомендует следующие источники:

Embedded - собрана информация о выборе правильного протокола и разработке сетей передачи данных для встраиваемых устройств.

ARM Connected Community - великолепный источник новостей из мира разработки Интернета вещей.

EE Times - хорошая подборка ресурсов, новостей и мнений.

Adafruit IoT Tags - собранны ссылки на посление тренды в области IoT.

Web of Things - мощный ресурс продвигаемый сообществом разработчиков, инженеров и дизайнеров.