Spectrum of firmware developers
In my observation, there is a spectrum of engineers who do embedded software development.
On one end of the spectrum, we've got electrical engineers who learned to write quality code. They tend to debug with an oscilloscope, and sometimes program with a soldering iron. They keep these tools on their desks. Their strengths are in their ability to add firmware perspective to hardware requirements, and in their ability to bring-up embedded systems.
On the other end of the spectrum, we've got software developers, who learned how to program systems with limited resources and real-time requirements. They peer into the system through software development tools. When a software issue raises hardware questions, they tend to seek help of an electrical engineer. Their strength is in the ability to develop higher level functions in the firmware.
Where might I fall on this spectrum myself? Probably closer to the first pole. I own an oscilloscope. I do circuit design for embedded systems; and I bring them up. I’ve studied software design patterns, refactoring, and I’m putting that to practice as well.