Think of a programmer as a mason -- you erect buildings one brick (function|method) at a time, each subsequent layer depending on the quality and integrity of the infrastructure preceding it.
Also, it's best to start as a laborer rather than an architect. While some architects go to school, completely by-passing trades work, the best engineers | architects are frequently borne of the trades, as there's just no substitute for that real world experience.
And so it is with programming imo; hope the analogy wasn't too much.