In hardware it's much more difficult. Suppose you develop a board, with microcontrollers, FPGAs, I/O and the usual stuff. You find out you need a component that does *this*. It should work on 5V, provide a 200 ms "watchdog", etc, etc. You spend time looking on the web for such a part. You don't find anything that's exactly what you need. Can you "roll your own" ? No way, you can't. You're an embedded development house, building boards, writing code for FPGAs, code for the processors, etc. You have no idea how to build parts (say, a reset controller component). So, what is there to do ?
The only thing left is taking parts that are /close/ to what you need and "living with them". A diode here, a pull-up there, two buffers later you make the thing work. Good.
This difference is interesting, IMHO. It requires an other mind set.