How to Teach New Developers About Programming
(Sep 01 2007 - 08:51:02 AM
by Timothy Khouri
) - [print blog
We've hired another entry level developer at my company who is "computer savvy", but has never done programming before. Well, he's done a little PHP, but that's about the extent of it. His job requirements are very basic, but of course we want everyone to expand in their skills and "move up" (both in the company, and in productivity).
Since I've been programming for several years, I figured it would be an easy task to teach someone how to program. But for a while I've been almost at a complete loss as to how to begin. The problem is not with the new guy as he is very quick to learn and remember things, but rather the problem is with me not being able to relate to "I have no idea what I'm doing, or why I am typing this code."
My Failed Attempts
I figured at first that we should start of in a C# console application. That seemed to me to be the "easiest" thing to do. A few basic "Console.WriteLine" calls, maybe change the BackColor of the console, read a string with ReadLine - things like that. But as I was telling him what to do and explaining what we were doing, I realized that this was not working.
Console applications (while easy to make) are not very intuitive to new developers. So I figured since he had done PHP, we should do some web development. That worked out a little better, but "inline" languages like PHP, ColdFusion and 'classic' ASP are such a far cry from real object-oriented programming with ASP.NET that it was still a little difficult.
What helped the most was when one of the other developers (who is aiding in his training) tasked the new guy with building a program that would connect to an FTP and download all the files in a specified folder (specified in a TextBox by the user). So Windows Forms Programming was the way to go here.
Even though I didn't think this was the best choice at first, I'm starting to see how easy it is to explain programming due to the very "interactive" way Windows forms are. Think about it; you drag a button on your form, you name it, you double-click it (which in Visual Studio will wire up a "Click" event for you), and then you write code in the MyButton_Click code block. Now things are making sense. "OK, when I click this button, then my code will run... cool!"
If you have new developers, or if you are trying to teach someone about programming (or how to program), you might want to try this approach.