- Aprende C / C ++. Practicalo. Haz algunos proyectos. Pruébate.
- Aprenda los conceptos del sistema operativo. Trabaja con Unix / Linux. Trabaja en programación C multiproceso con hilos Pthreads. Aprenda la comunicación entre procesos. Trabajar en la programación del kernel de Linux. Trabajar en la programación del controlador del dispositivo.
- Aprender arquitectura informática. Lea 8086 (x86), 8051, arquitectura ARM. Tanto como puedas.
- Vea cómo se realiza la compilación cruzada. Trabaja con varios IDE y sin entorno IDE. Haz algunos proyectos con arduino / raspberry pi.
- Revisa tus conocimientos de electrónica. ADC, sensores, relés, interfaz de pantalla, interfaz de cámara, etc. Utilice osciloscopios, multímetros, analizadores lógicos, etc.
- Aprenda CADsoft eagle u OrCAD. Diseña tu propia PCB.
- Lea tantas hojas de datos como sea posible. Módulo BLE, módulo WiFi, módulo ZigBee, etc. Lea la hoja de datos de las placas de desarrollo de Snapdragon.
- Aprenda cualquier lenguaje de descripción de hardware. VHDL o Verilog.
- Aprenda tecnologías web- (HTML, JS), Databses- (Sqlite, Mysql), Java y Python también. Será útil para aplicaciones IoT. Opcional.
- Aprenda simpleCV, OpenCV para trabajar en proyectos de procesamiento de imágenes.
- Trabaja en Android Native Development Kit (NDK). Revise los diversos códigos fuente de las versiones de fuente Kernel de Xiaomi o Oneplus.
- Aprende ingeniería inversa. Frenar algo Depurar usando RX / TX-UART, JTAG. Procesos de depuración en un sistema operativo.
- Aprenda perfiles / optimización de su código. Ser bueno en estructuras de datos y algoritmos. Herramientas de perfilado: Gperf, Intel Vtune Amplifier., Etc.
Solo puedo pensar en estos en este momento.