No dejes de lado conceptos de arquitectura de sistemas. No solo hay que saber programar, sino tambien para qué programar. Y esa visión te la va a dar el conocimiento perfecto de la organización de arquitectura de sistemas. Por muy bien que sepas programar, de poco te puede servir si no comprendes sobre qué lo quieres aplicar, y ese concepto te lo va a dar el conocer bien la arquitectura hard. Por ejemplo, para crear un firm de X360 no solo vale con conocer hexadecimal, hay que saber que es una memoria flash, como se organiza la información en ella, alto conocimiento de ensamblador y direccionamiento de memoria. El saber C, C++, esamblador o cualquier otro lenguaje te va a dar las herramientas para moldear tu objetivo, pero no es lo único que debes conocer.