I use the term lay programmer to mean someone who is programming without thinking themselves as a programmer. Someone who spends a large part of her day working on spreadsheets is doing programming, often very intense programming. Usually however she won't call herself a programmer, nor think of spending much time learning how to program better.
It's easy for professional programmers to get sniffy at lay programmers, but lay programmers usually are domain experts who know a great deal about what a program should do. Our challenge is to think of ways to engage them more effectively in software development, and provide tools that are easy for them to use, but also capable of being well structured programs that can evolve efficiently and integrate well into the wider software ecosystem.