There is a fine line between thinking to little and thinking to much. On one end you get sloppy code and on the other a convoluted mess. The right place to be is somewhere in between in my opinion. Don’t think to much but don’t think to little. Anticipate possible change, patterns, good practice, feature enhancements, etc but don’t let it consume development strategy.
@oikram
Sounds like you need to set some achievable, concrete goals and work on some projects. Theory and the “proper” way shouldn’t hold you back. Just do things the way you know how and stop questioning your decisions. Perhaps, they are worst decisions ever, perhaps not, but at least your starting and by starting and failing you will learn to do things properly and become a better developer. No one woke up one day and was just an amazing programmer. It takes time and failure to succeed. The worst thing you can do is never start at all, than starting incorrectly. Hopefully you know enough to avoid major security based mistakes, but the pattern stuff, good practice, MVC, etc is all just good practice. Yeah, its nice to know and have in the tool set but getting there requires doing things the wrong way a couple times first.
That isn’t to say people of this forum and others won’t hammer you on proper practice, MVC, etc but there comes a point when you just have say no and move on with what you have, based on your skill set. Everything else will come in time. It seems like many of the new comers are attempting to start at the top based on the criticism received by more experienced programmers regarding advanced topics, I myself am guilty. Its important to know when to say something is good enough and move on knowing that it can always be better. That is something that can be said whether you’ve been programming for a month or 10 years. Though with the ladder its more a question based on the budget involved than anything, which makes it a little easier, perhaps.
So stop worrying about whether something should be in a class, a method, what a methods name should be, if the database adapter should represented by a class, if query should be outside the HTML, if something isn’t the best way of achieving a goal and just do it. Honestly, that is the only way to get better, make mistakes and learn from those mistakes. No amount of theory, book learning, tutorials can live up to the lessons learned via actual mistakes or failure, small or large. Its true in life and its true just the same in programming or any other profession.