To add to Roger's answer, I can assure you that software engineers in semiconductor companies are having a ball as well. The work often involves understanding computer architecture, registers, memory and IO. Everything cool (read: advanced OS concepts) that you learn in college is getting implemented there.
Some job profiles include programming GPUs, device drivers for a new device, writing kernel code for the processor, firmware for other chips on a motherboard.
There are also math intensive jobs such as 3d spatial programming for manufacturing simulation and nanoscale image processing for finding defects in wafers.
Compiler and language enthusiasts often enjoy working in the forefront. When Intel plans to come out with a new instruction set, it uses its own engineers to write an optimized compiler (better than gcc) for those instructions.
Some job profiles include programming GPUs, device drivers for a new device, writing kernel code for the processor, firmware for other chips on a motherboard.
There are also math intensive jobs such as 3d spatial programming for manufacturing simulation and nanoscale image processing for finding defects in wafers.
Compiler and language enthusiasts often enjoy working in the forefront. When Intel plans to come out with a new instruction set, it uses its own engineers to write an optimized compiler (better than gcc) for those instructions.
Same goes for Java in Oracle.