Trying to teach programmers both ArcObjects and general software development is a really bad idea. I am struggling with the exact same problem right now. You run the risk of getting two developers who program neither ArcObjects nor C# very well.
Teach them to be good developers first. Do this by having them work on non-ArcObjects code (whether that means high-level ArcGIS ADF or complete non-GIS apps is up to you). Make sure they understand the basics of the application context (web, desktop, middle, etc). That will ease the transition to ArcObjects.
Once they have gotten the grasp of software development fundamentals (in particular, inheritance and OOP), introduce them to ArcObjects. The VBA reference is adequate, but hard to abstract to C# and to the modern tools. A bright developer can do it, but your average one will probably learn a lot of bad habits.
Your best bet is to bite the bullet and send them to the developer workshops. Sometimes, ESRI offers classes at a regional office that might be more local to you. Alternatively, send them to the Developer Summit or User Conference in Spring and Summer respectively. The technical workshops are a bit advanced for total beginners. That said, a lot can be learned from the worskhops if the developers have a very basic understanding of ArcMap or ArcObjects.
Also, they need to learn how to use ArcMap. The single most important useful thing they can do to learn ArcObjects is to learn ArcMap. Understanding how it works in the desktop product can frequently reveal how to use the API. An easy example is projecting data. In ArcMap, you must use a tool to explicitly project data. Simply "setting" the projection doesn't work. This translates directly into the API where you must call a "project" method or use the project GPTool.