Quote Originally Posted by Sitten Spynne View Post
leadhead:

This is kind of a bad place to ask that question, but I feel your pain. Inheriting someone else's code is much harder than writing your own from scratch. It's one of the worst ways to have to learn a language, because you don't understand "practices", let alone good or bad ones. There's a book devoted to it, bit if you're two weeks in it's way over your head.

I don't know what kind of recommendations you want. I think the bad news is there's no good path that won't take several months for you to get up to speed. A sad thing is, when it comes to patterns, practices, and being a new developer there are far more resources available for a C# than VB .NET. The languages are very similar, and information in one often transfers naturally to the other. But there's still some cognitive dissonance to deal with that's worse when you're new.

If you don't want to look at any other language at all, I think you should continue to ask questions here. Learn to read MSDN, and if you see anything you don't understand ask about it, even if it's not something you're stuck on. Sometimes the documentation's obtuse. Sometimes something isn't as useful as it looks. Most of us have been down any particular feature's road a time or two and can offer guidance. Skip books for "Beginner VB", look for "Intermediate". They tend to have more meat and a little less filler. But, in general, books that focus on VB are about teaching you what features are available, not how to write good code. There are very few architecture/design books with VB as the focus.

If you don't mind devoting a few hours here and there to reading, and don't mind seeing other languages, I do have a few recommendations, in rough order of difficulty.

First, you should look for Code Complete. It alternates between 5 or 6 languages because it talks about the general theory of "What practices lead to better code?" instead of, "How do I use one language to write good code?" This is a great beginner book because it focuses on a lot of nuts and bolts topics like choosing between For/While/Do..Until loops that many other books assume you already know. There's a whole chapter about using If statements effectively.

From there, Clean Code is also a good read. It focuses on C#. It also focuses on higher-level issues like, "When and how do I write classes to be effective?" It will pair very well with Head-First Design Patterns, which uses Java but nothing too complex or unfamiliar to a .NET developer. After those two you're very much ready for The Art of Unit Testing, another C#-focused book that talks about how to write code that can be proven correct with other programs. Very few VB people study this concept, but almost every other language's practictioners start with it.

At this point, you're very ready for Working Effectively with Legacy Code, which is a book about exactly what you're doing: living life inside a codebase that's inherited. You can skip to it if you wish, but I think the books I listed first are a good background to help you get more out of it.

From there, you can branch out to denser books like The Pragmatic Programmer or Agile Principles, Patterns, and Practices in C#. Those focus on very high-level software architecture decisions, and while they focus on certain languages, everything they say is applicable to almost any code you write. They're like the advanced versions of Code Complete, but you need the books in the middle before you read these.

This is a road that doesn't end, and it can take months to fully process what any one of these books states. You can't really speed up the process, but if you try very hard you can make it take longer.
Sitten, Thank you so much for taking the time to post all of that. Your recommendations of books I think is what I need to understand programming and to think more like a programmer does. I have started with Code Complete as you have recommended. This is EXACTLY what I am looking for.