You could say Z-80 assembly language is what really turned me into a software developer.
My first programming language was BASIC, which was built into my first computer (a TRS-80 Model III). I wrote a lot of BASIC code, including arcade-style games (compiled BASIC — you can still play them on this TRS-80 Model III Emulator).
I always wanted to keep learning. There was no World Wide Web for research and nobody I knew could guide me, so we went to Radio Shack and asked them how else I could program the computer. They sold us the Editor/Assember package.
I eventually wrote a simple text editor. I still remember the fun of implementing scrolling commands as block moves, in and out of the machine’s memory-mapped video. Getting a handle on low-level operations gave a feeling of mastery that wasn’t going to come from BASIC.
But beyond the particulars of assembly, the reason that it was significant for me is that it gave me a taste of broader possibilities. It’s not your first programming language that makes you a programmer, it’s your second. You start seeing patterns and high-level concepts, and seeing that a given language is just a tool for a job.
Learning assembly was a grind, but it showed me what I could do. From then on, if I had a chance to play with a new language, I took it. LOGO. Pascal. 6502 assembly. Even a dialect of Lisp (I had no idea what was going on there). I think that early breadth of experience ultimately helped convince me that software engineering deserved my full attention.