Cut my programming teeth on a ZX-81. Despite it's basic configuration it was a great little micro. The literature in the early 80s was fantastic, and the hardware was simple, so it was quite easy for your average 10-12 year old to pick up a little bit of assembly language or indeed a basic knowledge of digital electronics (the ZX-81 was also available in kit form for the more adventurous).
The manuals for the ZX-81 and Spectrum still hold up as being an example on how to write a technical manual for the layperson.
I remember it being a bit of a pain to write assembly language on it - there being no facilities to store or reserve memory for the code. The solution was to store the code in a REM statement at the top of the code. I must have worn out the tips of my fingers creating REM statements with sufficient characters in to store my code.
Thankfully, by the time I came to do serious coding (games) the Spectrum had come along, and you could reserve the top of memory for code.
1K was a challenge - 16K seemed like an absolute luxury at the time. I still write code with memory and efficiency in mind, despite the best efforts of bloatware runtimes.
Still got my ZX-81 and fire it up occasionally for old times sake.