November 26, 2017

1286 words 7 mins read

Valuable Skill For Software Engineers in 2018: Electrical Engineering

Valuable Skill For Software Engineers in 2018: Electrical Engineering

image

Breadboard Prototyping

There are three buzzwords in 2017 which captures the trend on where technology will move forward and affect the masses:

  1. Machine Learning
  2. Internet of Things
  3. Blockchain

Never before the roles in a typical product team in companies both start-ups and big dinosaurs expand. In 2017 alone, if you have a “data team”, their role will be expanded from a mere ETL and statistics to code the neural network models. A job opening of data scientists and data engineers are common today.

The release of TensorFlow as open source, which is the result of Google research since 2011 when nobody talked about AIs opens the ability of an engineer to do Deep Learning with easy to use TensorBoard. Machine Learning has been coupling data, AI, and engineering even closer in tech industry.

Internet of Things is Next

In the 90’s most of the consumer and business software are stand-alone, thick clients. There was website but it was never in form of application. In 2000’s this changed. Everything is ‘web-based’. Fast forward post 2008, suddenly everybody wanted mobile apps on their phone. Apple has started the butterfly effect towards apps ubiquity by creating a slab of plastic and aluminium packed with a lot of sensors inside.

Steve Jobs introduced original iPhone, the video will go direct when he flick the screen to scroll.

Inside the latest iPhone iteration, iPhone X. There are many sensors and small processors, drivers, and microcontrollers. It’s incredible on how collectively, we as human being can cramp a lot of things inside a device that will be seen as sorcery by people living 200 years ago.

Smartphone technology has enabled many business and build an ecosystem that unimaginable 10 years ago. In Indonesia, for example, B2C and C2C eCommerce build an ecosystem of instant courier like Grab and Uber and also drives the growth of online payment gateway businesses which in turn drives the fintech and blockchain business. Each of them works for their self interest. However, they need each other, so the growth on one business affect the growth on other business too. Just basic mechanic of market economy.

The smartphone growth is proportional with the talent demand of mobile developers. Some of the web-minded developers try to capture this opportunity. But eventually, as the native developer talent pool is growing, it’s not rare for a company just invest on the native platforms nowadays. The abstraction is going down from the browser to the operating system. The closest skillset that is easily convertable to mobile app development was actually owned by desktop developer, not web developer.

Mobile and IoT As Strategic Data Capture

People who access internet using smartphone more than their laptops and desktop computers. This changes how service providers captures their users’ data.

Slide from slideshare about Southeeast Asia

A phone is very personal, it’s actually very scary. It can capture and send your photos, geo location, even exact direction and altitude of you at the moment. However phone is only the starting point for an electronic devices deeply embedded to our personal live.

To feed the ever growing need for machine learning purpose, software companies are now treating their mobile applications as a way to capture their user’s behaviours deeper. This is the reason companies spend a lot of money for marketing, incentivising their users to convert from their desktop app to their mobile app. The value of their data is unprecedented.

IoT As Enabler of New Interaction Possibilities

User interaction nowadays largely based on screen and touch. Before, it was only screen with input devices such as mouse and keyboard. Internet of things enable many ways of interaction with users. The input is so numerous. You can use many specialised sensors to capture your user situation, actively or passively.

image

37 in 1 Arduino Sensor Kit

The output is not only screen. It can be actuator, a mechanical leg, or just your door hinge. It can be anything. The combination of the input and output of connected devices are endless. This opens the new possibility of any imaginable ways of interacting with the user.

Deeper Integration To Everyday’s Life

The idea of Internet of Things according to Wikipedia: > The Internet of things (IoT) is the network of physical devices, vehicles, home appliances, and other items embedded with electronics, software, sensors, actuators, and network connectivity which enable these objects to connect and exchange data.[1][2][3] Each thing is uniquely identifiable through its embedded computing system but is able to inter-operate within the existing Internet infrastructure. Experts estimate that the IoT will consist of about 30 billion objects by 2020.[4].

The ploriferation of radio-frequency (a.k.a. wireless) technology during the smartphone age drives the price of RF components down and accelerate the growth of connected devices. The radio frequency ranges will be very crowded in the near future.

image

IoT Growth, predicted to be J-shaped

According to Gartner, the growth of connected devices will be exponential in the next 10–15 years. As China push for globalisation and manufacturing cost plummet the devices prices also going down. Nowadays, we can get a programmable Xtensa based chip with WiFi and full stack TCP/IP for price less than $2.00 (IDR 30K) per piece.

image

ESP 8266 module, we can order with less than $2 per piece in bulk.

This kind of devices will be integrated into day to day appliances. The skill needed to do that is electrical engineering. Similar with when the industry moving into mobile and machine learning age, a software engineering who seek growth and opportunity next year should acquire EE skill. If you have been in the capture side of your software stack such as mobile developer, this will the closest skill you can acquire quickly. You just go lower in abstraction, from operating system framework to below the operating system.

First Dive

Same with other skill, you need to know the basics. You can start with ready-made solutions like Arduino or Raspberry Pi and learn about analog and digital signaling by driving circuit and sensors via GPIO. Learn differences between Microprosessor with operating system (like RPi) and Microcontroller (like Arduino).

image

Arduino and Raspberry Pi

And then you can go deeper by learning basic electronics like how current, voltage, resistance, capacitance work together and analysing simple circuit such as rectifier, R-C, or filter circuit. There are tons of them in the internet.

In the software side, learning on how write hardware or protocols to talk with each other and with application is also important. Finally, just like when learning about software, find a real problem to solve with that and work the way towards solving that problem. As simple as automatic solenoid control to wirelessly open and close a door at your home still simple enough but need some knowledge in both hardware and software side.

The development environment for making connected devices is more and more friendly nowadays. But the primary language is either C or assembly. Some of them have Javascript.

image

Blink Example, the “Hello World” of Arduino.

The invesment of doing hardware is not as cheap as software or web development but it’s still affordable and the opportunity is very wide in the future.

Conclusion

In the age of mobile, machine learning, artificial intelligence, a strategic capture devices are needed to feed and complete the information on the data processing side. The common capture device at the moment is smartphone. It will be diversified from a general purpose sensors inside phone into more specialised devices capturing specific data. This open the opportunity for people with combination of electronic and software engineering skill. As Alan Kay has said: > People who are really serious about software should make their own hardware. — Alan Kay, Talk on Creative Think Seminar, 1982