I have attained a point where I can manage to quickly code things like mathematical or sorting functions in multiple languages, including Java, C++, Haskell (still haven't got the hang of monads), lisp and Ruby.
I have also attained, at the other end of the process, a point where I have a rather vague and intuitive understanding of how an application works and holds it's internal state.
The problem is more around the part between the conception to the coding. By my understanding, it seems to be what being a developer is about, when compared to a Programmer/code monkey.
In other words, even if I have an intuitive notion of what I should do and have the possibility to code the specific bits, I'm at a complete loss so as to where to begin or how to actually build more complex systems. I also have a very hard time expressing time boundaries or estimates. Is this what makes an experienced programmer?
EDIT: I have definitely been through a lot of the "Best Practices" stuff on the web and in books in general.