Pues por lo que yo entendí:
UX
----
Programar (alto nivel)
----
Programar (menos alto nivel) {este se repite tanto como quieras}
----
Sistema operativo (programa)
----
Programar ASM en función del Sistema Operativo (las instrucciones varían según el SO)
----
Hardware
Y luego puede haber puentes. Que comuniquen las distintas capas.
Seguramente no esté bien explicado... Y tampoco sabría hacerlo de 0 ni vamos....