Arduino is all fun to learn and play with, you can make fancy projects using an Arduino. A simple plug-and-play board like Arduino is a good start if you are beginner at learning embedded programming but if you really want to learn embedded systems in-depth and make optimized and industrial electronics with microcontrolled you must move past the abstract code of Arduino to more bare metal coding.
By bare metal coding I mean manipulating individual bits of a microcontroller register directly. By learning about the inner working of a microcontroller and accessing the register using programming you can get full control of the functionality of the microcontroller and can do things that the Arduino-C cannot do.
As an electronics engineer I too started with Arduino but I was curious to learn about the ATmega 32 microcontroller which is the heart of an Arduino. I wanted to program it directly. Also, I wanted to learn more about the ATmega 32 and how to use all its features that is when I discovered the read embedded C programming. It is C programming that is used to manipulate bits of a microcontroller register.
Are you a curious electronics engineer like me to learn ATmega 32 in-depth? I would recommend you this course by Prof. Bruce land (Cornell Uni.) . It really helped me understand the basics of embedded C and ATmega 32 with practicals and sample code.