Software Carpentry
Software Carpentry presents an intensive course on basic software development practices for scientists and engineers that "introduces them to the 10% of modern software engineering that will satisfy 90% of their needs".
It covers the topics:
- Shell programming
- Version control
- Automating builds
- Python
- Systematic debugging
- Higher-level programming
- Testing
- Coding style and reading code
- Data crunching
- Web programming and security
- Software development project tools and processes
If you program for a hobby, or even professionally, this may teach you a few strategies and techniques to improve your skills or the quality of the programs you produce.