While those are a basic requirement for sure, in my opinion it's much more important to be able to recognize the links between the many different interfaces any sufficiently complicated device (here: PS3 or iPhone) has (both in software and hardware).<p>If you have a look at geohots's blog, he talks about crude hardware glitching, buffer overflows or programming internal PPC registers via the SPI interface this CPU apparently has. We might now speculate that he used some or all those things to affect operation of the running hypervisor. Being able to grasp how these things interact is much more important than being a good C-coder.<p>If you look around blogs or watch videos from conferences, you can find many people that are fluent in specific areas of a particular technology, but I think there are much fewer that can jump between a diverse set of abstractions or interfaces.<p>Being able to do this is something I'd really love to be.