The November/December issue of Computing in Science and Engineering has a great article titled Software Carpentry. It's basically a crash course on software engineering for non-programmer scientist types that need to write programs. All the courseware is online, or if you happen to live near University of Toronto, you can sign up to take the course.
From the website's overview:
Many scientists and engineers spend much of their lives programming, but only a handful have ever been taught how to do this well. As a result, they spend their time wrestling with software, instead of doing research, but have no idea how reliable or efficient their programs are.
This course is an intensive introduction to basic software development practices for scientists and engineers that can reduce the time they spend programming by 20-25%. All of the material is open source: it may be used freely by anyone for educational or commercial purposes, and research groups in academia and industry are actively encouraged to adapt it to their needs.
Sounds just like me. I'm looking forward to going through the course material and learning something useful that I can use to re-work some of my existing programming projects.