In addition to the many good suggestions above, I would recommend looking at the following two books:
Beyond this, I've personally been experimenting recently with "test-driven development". While I'm not fully "extreme", the process of writing a test first forces me to think about how a user uses interfaces prior to coding. It's led to some streamlined code and really avoided overbuilding. I suggest doing some research and trying it out.
As an additional suggestion, unless you have a great local bookstore, I've found O'Reilly's Safari electronic bookshelf to be a great resource for browsing books to get a sense for styles and design methods.
Best of luck to you
Code posted by xdg on PerlMonks is public domain. It has no warranties, express or implied. Posted code may not have been tested. Use at your own risk.
In reply to Re: Software design -- The confussion of buzzwords