People always ask me "Why do you do software if you went to school for electrical engineering?" I'll usually joke how coding is so much easier because in the end all software ends up as binary, 0 or 1, and it's my personal opinion that just about anyone can count to one.But really, when designing or optimizing a solution for a system, it is such an invaluable skill set to know both sides of the hardware/software stack. Hence the term firmware, it's in between the two. If you understand how the hardware actually works, then you can figure out what the software is actually doing. It allows me to make better decisions when problem solving. Some solutions are better suited for hardware. Other criteria can be met in software. It helps with balancing tradeoffs in terms of cost, speed, energy, reliability, flexibility, etc. The real reason why I went down the path of firmware is because it makes me feel like I can do anything.I'm also really interested in digital signal processing so hit me up if you want to talk sigs