i think there's a danger in categorizing "full-fledged programming" as opposed to smaller tasks. large applications are comprised of a well-conceived integration of smaller modules. if one learns to write smaller modules one is programming, period. there are additional skills involved with integrating components into larger projects, but these architectural issues are themselves meta-programming issues that evolve and change. this is an interative process for anyone who participates in it. someone who writes a complex app may be a master programmer, but someone who maintains an overall system involving disparate apps through the use of glue scripts can be just as much a master programmer.
although i recognize this is an over-simimplification, a dominant model for large-scale software development involves smaller teams writing components that are incorporated into larger-scale constructs. as a person learns to write components, they are learning to program.