Once upon a time a kid me realized that anything he put in autoexec.bat gets executed when the computer boots. Soon after i figured out how to do branching and input and made a start-menu-of-a-sorts thingy. It only went downhill from there.<p>In other words, it just so happened that my first programming project and interest turned out to be an OS. Took me about 6 years and 12 attempts to actually succeed at making a usable one.<p>Eventually that interest driven my choice of department in the late university, and the OS i made was shown off at my first job interview. I got the job, and that's how i got to writing Linux drivers and kernel tweaks for high-performance (mid-TOP500-ish level) machines for a few years.
Around 2000-ish I had a USB webcam that didn't work. I could already code in C, so I learnt the USB subsystem, then onto kernel drivers, then into filesystems when I decided to write a FAT32 implementation (for learning)
Huh, I was assigned to Windows km development for my first ever internship. I had a decent amount of winternal and cpp experience, but it really is a different ball park and made me a much better computer scientist.
first job, had a EE background, wanted a software job. Embedded software is where I could sell myself. I work on the Nucleus RTOS, have been for the past 2 years. Couldnt have asked for a better job than this. If I had gotten straight into web dev, or app dev. I would have had an imposter syndrome. Now I will have a smooth transition.