There is a certain type of cowboy programmer that depends on thinking quickly and having a good memory. This type of programmer can write code that works, really quickly -- provided the size of the project can fit entirely in their head. Because of this, they can do really well on small size projects but they never learnt proper code design and architecture skills, because they never needed them. This type of programmer ends up not being able to scale as the size of the project gets larger, because eventually they reach the limit on how much code they can remember at one time, and the lack of code design that lets you reduce the number of things you need to be aware about in order to write new code without breaking anything really starts to bite you.