Io sinceramente ancora fatico un po' a "pensare in OOP", nel senso che non mi viene ancora naturale. In parte dipende dal fatto che fino ad ora ho sempre lavorato in posti in cui ero l'unico a sviluppare quella data applicazione, quindi non c'erano diversi "reparti" che ci mettevano le mani, e l'esigenza di mantenere i vari blocchi separati non l'ho mai sentita eccessivamente.
Poi attualmente lavoro principalmente ad un applicativo di tipo amministrativo, abbastanza complesso, ma che ho strutturato in un modo tale che mi risulta molto più comodo avere un'organizzazione di tipo procedurale delle varie funzioni disponibili (ognuna memorizzata in un file include esterno) piuttosto che una complessa rete di classi e sotto-classi. L'involucro esterno (che si occupa dei permessi, della sicurezza e della gestione degli utenti) e' a oggetti (molto basilari pero').
E' un miscuglio un po' strano, me ne rendo conto, ma mi trovo bene, soprattutto perche' il tutto genera un output xhtml molto ben organizzato e per andare a modificare la parte grafica basta mettere le mani sul CSS, non c'è bisogno di decifrare il mio codice. I template engine, infatti, non li trovo indispensabili... se si struttra bene l'output xhtml basta lavorare sui CSS (www.csszengarden.com insegna). Ovviamente dipende dall'applicazione... certo un CMS con i controfiocchi necessita sicuramente di un template engine, perche' i CSS sono sempre limitati a quello che gli mandi tu in output...

Comunque trovo il discorso di MiChiamo.Diego sostanzialmente giusto. "Pensare in OOP" quando si progetta un'applicativo è sicuramente una mossa azzeccata, soprattutto se si guarda in prospettiva futura. Dipende però dal tipo di progetto... non credo che l'affermazione "se e' OOP e' sicuramente meglio e piu' professionale" valga in assoluto. ^_^