Hello. I graduated 1.5 years ago with a major in Computer Engineering. I have been programming since I was a young child so it seemed very natural for me to go into software development. Throughout my undergrad I focused on the easiest path to me (computer science classes were a breeze) while doing decently well in my engineering classes (electronics, digital systems, dynamics, mechanics of materials.) The engineering classes seemed very difficult. During my internships I worked at huge engineering organizations (NASA, Lockheed, my school robotics lab) but I was always doing mostly software (C++, Java/Android, and C#.NET). My current job is as a web developer at a startup where I am about as far from hardware as I can get. I don't see myself as much of a true "engineer", but more of an embedded software developer. I programmed the microcontroller (an Atmel XMEGA) for senior design and had a lot of fun. I loved writing low level routines for electronic devices like motor controllers, sensors and LCD screens. But I felt like I was at such a "hobbyist" level that I wasn't qualified for a real "embedded job". I've never had the title "embedded engineer" and all I know is how to program a few very simple microcontrollers. What do I need to learn to be a well rounded "embedded software engineer"? Would a second degree that teaches me more about hardware and mechanics be helpful? Do I need to improve my CAD skills? Or should I be compiling linux kernels and writing device drivers for that? I just don't really know WHAT skills I would need or how to get them.