> When you're coding, do you think "What's the best possible way to do this," instead of just "How can I get this code to run?"
I do both. Mostly begin with phase 2 (mentally) and then go back and look at the 'best way' and design schema and business objects around that. I end up making a lot of sacrifices and doing things that are probably not optimal due to what I think is poor real world experience and experience working with other, more seasoned developers. My knowledge of design patterns is fairly limited and I tend to churn out projects that work, are fairly reasonable but yet I think they lack the elegance of many of the open source projects or example githubs I've seen.