Mavnn's blog

Stuff from my brain

Teaching Good Programming Style

So, I have several people from technical/mathematical backgrounds who are interested in learning more about programming, specifically with .net in some cases.

Tooling is easy; Visual Studio Express, Monodevelop and Sharp Develop are all freely available.

The question is, where would you start people off in terms of learning good, solid (see what I did there?) coding practices? Give them small projects and critique? Are there good open source projects for starters to get involved with?

Given the intelligence and background of these people, teaching them syntax is the least of my worries: a basic tutorial and Project Euler will have them writing code that works in no time. Most of them even have 'toy project' level skills in other programming languages. It's helping them learn how to build projects that work without falling into all the classic pitfalls of spaghetti code, or at least helping them climb out as quickly as possible.

The thing that springs to mind (given there is several people) is to find a real world project that could be split into several 'trivial' pieces that would need to communicate with each other; immediate opportunities to teach things like messaging, modularization and IoC (especially with some not very strict TDD built in). After the tutorial/Project Euler stage above, obviously.

Suggestions? Other ideas?