I am a PhD researcher working on power systems of the future. My work focuses on energy management of distributed energy resources and providing services to the grid. Data acquisition and calculations for these tasks take place on cloud-based platforms and the devices are interconnected in an IoT manner.

I am good at writing codes in C++, Python and MATLAB but I am a complete noob when it comes to developing softwares/apps for cloud platforms and developing firmwares for the devices. I am really keen to find out what programming languages and platforms are used for these applications and any nudge in the right direction would be highly appreciated.

  • 2
    I'm not sure this fits the Stack Exchange Question and Answer model. Questions should have a definitive right answer.
    – hardillb
    Oct 22, 2019 at 11:43
  • 2
    Yeah, as @hardillb said, it's kind of broad... We really need to know a specific problem to solve to allow answers to be tailored to your needs, and not just an association of random facts that might help.
    – anonymous2
    Oct 23, 2019 at 2:49

1 Answer 1


Welcome! Your question is overly broad (by necessity) and likely to be closed. Much as we would like to help, this sort of question does not fit in with the Stack Exchange model.

As to the length of my personal bit of string (hopefully others will post their own).

C/C++/Python/MicroPython are very common. Personally, I love the robustness of Ada, but can't use it on my beloved ESP32, only on ARM based products, such as STM32 and BBC Micro:bit.

I highly recommend PlatformIO as your IDE, preferably with Visual Studio Code. It is far superior to the widely used (and decades old) Arduino IDE, although that last week launched and Alpha version of a new, modern IDE, with more features, based on the Atom IDE.

Give some thought to debugging. Many people are content to print to serial port and debug that way. As a professional software developer, I strongly prefer to use a proper debugger, which allows me to set breakpoints, run the code until they are hit and then examine the call stack, read & set variables, etc.

Some board will have on-board software that allows you debug using your IDE; some will require a (n inexpensive) JTAG probe; and some can only be debugged by printing to the serial port.

Look into MQTT for reporting sensor values and something like Node-RED as a reporting package.

As to how I got started - I read a lot, including this forum, bought an armload of boards - rarely over $20, sometimes only $4 - and examined example programs, which generally come with IDEs, before coding some "Hello world" programs for each board, in each language, discovering how easy/difficult it is to, for example, act as a server, send an HTTP request (e.g to an NTP server, to get the current time and update the on-board Real Time Clock), write to display (if present), read from a sensor, etc

As you can see, I decided to get my feet wet and paddle around a bit before jumping in. An alternative would be to pick a project and implement it (possibly with different boards/languages).

You can find a lot of knowledge in shared projects:

Good luck. Prepare to kiss your evenings and weekends goodbye :-)

  • 1
    Thank you @Mawg. This was very helpful and I get your point about this being too broad and I'll keep that in mind next time. Oct 23, 2019 at 12:29
  • I hope that a few others will reply; I would like to know too :-)
    – Mawg
    Oct 23, 2019 at 13:10

Not the answer you're looking for? Browse other questions tagged or ask your own question.