The Engineering Spectrum
There are lots of ways to characterise and evaluate engineers but I like to think of us along a single spectrum. At one end is electronics, binary code, assembler, registers and interrupts. At the other end of the spectrum is graphic design, art, photoshop, user experience, etc. Ok, you're quickly going to point out that this should actually be multi-dimensional space but I'm a bear of little brain so let's stick with this.
Don't worry about the positioning of the individual tech, that's not the point. The point is that we all have a position along that spectrum, and a breadth. Some people are specialists, focused on a particular part of that scale. Others (like me), are generalists — but even generalists have their limits and no one is uniformly good across the whole scale. I've written C code, lots of Java for mobile, desktop and servers, UI and backend servers, high performance and even on-chip JVM code. I've written Javascript, Python, R, C# and lots of other stuff. I now mostly write Ruby along with HTML, CSS and Coffeescript.
Generalists are not "better". That generality has limits (don't ask me to write assembler!) so the position along that spectrum matters. Likewise, the cost of generality is that you'll never be as good as a specialist.
I like to think about this position/breath/ability equation when evaluating my skills, hiring new engineers or evaluating the needs of a team