When I was a kid, I started gaining my first programming skills on mighty C64. All the cool games and stuff back then were done in assembler, and it was kind of a programming language for superheroes. I always wanted to get a grasp of that superhero power and learn it, but I was still very young and it was hard to find tutorials (remember pre-internet era? Yes, I am not young anymore).
Soon after, the PC became popular and I was finally able to reveal the secrets of magic x86 instruction set, or in simple words, PC assembler. I had to learn memory segmentation, how to effectively use stack, CPU architecture details (pipeline, cache, FPU), and a lot of low-level technical details in order to write efficient assembler code. It was cool and fun, but I realized writing and maintaining assembler code was hard and time-consuming, not to mention its extremely low portability.
Despite the fun, I leveled up to more productive languages like C, Java, and C#.