Perhaps the most frustrating part about learning any new development platform is learning where to find things. With the .NET platform, for example, I have this wonderful class library that has all manner of classes to access the underlying services. But without a roadmap, finding things is maddening. For example, if you want to get the current date and time, you access a static property in the System.DateTime class (System.DateTime.Now). If you want to pause your program, you call System.Threading.Thread.Sleep()—a static method. The class library is peppered with these static methods and properties, and ferreting them out is difficult. What I need is some kind of reference that lists all of the objects that provide similar useful static members, and a cross-reference (maybe an index) that will let me quickly find the appropriate static member for a particular purpose. As it is, I’m spending untold hours searching the documentation or just randomly picking a topic in the library reference and scanning it for interesting tidbits.
That said, I’m having a ball learning C# and .NET programming. I’m still not as comfortable with it as I am with Delphi (hardly a surprise, considering I’ve been working with Delphi since its early beta days in 1994), but I can see C# becoming my language of choice very quickly. C# and the .NET platform have all the ease of use of Delphi, a comprehensive class library, good documentation, and a solid component model that’s supported by the underlying framework (a luxury that Delphi didn’t have). It’s easy to like this environment, and it’s going to be rather difficult for other compiler vendors to provide tools that programmers will prefer over C# and Visual Studio .NET. I’m interested to see what Borland comes up with. Whatever it is, it’ll have to be pretty compelling to get me to switch.