Since nobody suggested it, go to college/university and learn about data structures, lists and processor architecture. It will help you become a much more insightful programmer.
This advice is so bad I think it just gave me cancer. The OP is asking "what abilities are required to effectively build complex web apps and services?" 99.9999999999% of data structures in web programming are arrays and hashes. Look those up on wikipedia and read it, then you are done, now get to work. Processor architecture??? Is that really to be taken seriously? Not only was it previously not relevant to the OP's…
In data structures you learn how to properly use a data-type. You learn how to implement a hash and a list. That is knowledge that is very valuable when programing high level stuff later on.
In algorithms you learn how to construct loops and programs that run faster than they would otherwise. For instance, think about how much faster it is to search for something in a sorted list than in a unsorted list (its log vs exp if its a nested search).
Processor architecture because you want to know where those bits go, if you dont, how are you ever to truly understand pointers, variables and data structures?
Your life will be soo much easier with these fundamentals in Computer Science in regards of scalability, performance and even user design. It's not for everyone and you can certainly do without it. But what you're advocating is basically "luck". Not everyone will write plentyoffish or twitter.