"I've had a perfectly wonderful evening. But this wasn't it." -- Groucho Marx
I decided to put this little piece together because Visual Studio.NET 2005 (as well as all the free "Express" products) are out and I've noticed a significant increase in the number of newsgroup as well as our MessageBoard posts from n00bs asking a lot more very basic "how do I" type questions - a lot more of these than we've seen in a long time.
To me, this is a good thing, as it indicates a strong shift on the part of developers (and would-be developers) away from older technologies to the .NET platform. Since I could probably describe myself as an "old hand" at this late stage of the game, having gotten into .NET with the very first BETA that was handed out at PDC in Orlando in 2000 (man ain't THAT ancient history!), I thought it would be appropriate to pause and share some ideas.
First of all, please remember one thing and remember it well: EVERYBODY was a noob, once! Even the biggest "gurus". We all started out in diapers. (Eh, some of us are still in them, but we'll pass on that one for now). So there is never any shame or embarrasment to be felt at being a "n00b". Never fear saying "I'm a noob!".
I've heard they even have special groups where all the people go around the circle saying "My name is Dorkus, and I'm a NOOB!" Don't let it bug ya. If you follow these principles, you won't be a n00b for long.
Now here is my short list of advice points, based on my best assessment of what I did right, and what I did wrong, in addition to observing what others did right or wrong. I hope they are useful to you!
1) Come up with a strategy and a plan. I can't stress this enough. Too many beginning developers tinker around, moving from one area to the other, often never digesting enough information to get a grasp on the first subject.
Sit down and ask yourself what you want to be doing and where you want to be 2, 3 or even 5 years from now. If you can't really come up with a plan, then study other people's plans until you can formulate one for yourself. Remember, plans can change. But if you don't have one to start out with, you are driving to a strange destination without a roadmap, and there is greatly increased likelihood that you will get lost. So get a plan, and commit it to writing.
Stay focused on your plan, and don't change it unless there's a really good reason.
You can store your plan as a series of Outlook Tasks, for example, and set goals, priorities and time limits on them.
2) Don't skip over the basics. All professionals will tell you that they had to study the basics first and that there is no way around it. Ask any professional jazz muscian if they spent time studying music theory, harmony, and notation before they became a "jazz professional". Ask them if they didn't play scales for hours on end -- before they learned improvisation. An excellent place to start is called the Quickstarts - a set of samples that installs with either Visual Studio.NET or the free .NET Framework SDK. And don't skimp on it. Go through everything, piece - by - piece, run the samples, and study the code.
We just get tons of questions here about basic stuff, and it's painfully obvious that these people don't even know what the "Quickstarts" is. Please, don't be one of them. The kind people at Microsoft put a huge investment into these, and they are even available online, if that's your preference.
4) Don't reinvent the wheel!
I've seen numerous instances where beginning developers start out with some "big project" to write a custom DAL (Data Access Layer). And yet, when I ask them about it, they've never even looked at the MS Data Application Block for .NET, which is considered by many to be top-notch, best-practices code. Don't fool yourself. If you want to write great new code, then study other people's great old code first!
5) Learn that F1 is your friend.
The MSDN Library help system installs with ALL versions of .NET and Visual Studio. Make sure that you install it , and learn that when you highlight a problem word or phrase and press the F1 key, GUESS WHAT? You get HELP, n00b! That's what its for!
6) Learn best - practices coding principles. Study best - practices coding style and conventions, including how to name variables, types, enums, and so on.
Learn and use best-practices debugging and exception handling techniques. One of the biggest impediments to beginning developers' progress is the lack of a complete understanding of how and why to use exceptions and to examine thrown exceptions to see what went wrong with your code.
If you don't wire up your code with appropriate try / catch / finally blocks, your chances of understanding why a block of code didn't work go down dramatically.
Your goal should be to become conversant in at least two languages, say VB.NET as your primary language, and C# as your secondary, or vice-versa.
If you don't like C#, then your goal should be to get to the point where you can convert it to VB.NET yourself instead of whining "Don't you have this code in VB.NET?".
7) Learn to be a good researcher! Learn the ins and outs of how to search Google, Google Groups, or MSN Search. That's the first place I have always gone when I needed to find out "How to" do something that I wasn't sure about, or just plain forgot.
I've been able to put together some great applications because I had the patience to keep searching for an hour or more, and just wouldn't give up. Don't tell me "I searched and couldn't find anything"! Go back and SEARCH MORE!
Change the keywords, put quotes around phrases. The best Computer Science university in the world is at your fingertips in Google and MSN Search, and you are already enrolled! Find out where the best resources are - gotdotnet.com, sourceforge.net, asp.net, the MSDN Forums. (And here, of course!)
8) Form strategic alliances early.
Join a .NET user group. Form a group of "noob buddies' that you can keep in your IM list so you can go back and forth with ideas. Join some good .NET Forums and newsgroups. Make friends. Find a Mentor if you possibly can - somebody more advanced who is willing to help you out on an ad-hoc basis. You might have a "loner" type personality. Just break out of it, n00b, and become a people person!
9) Understand that its a long road.
Only the truly exceptional individual achieves "Guru Status" in a year or less. Normally it takes several years of hard study and practice. And, you must never give up learning.
Learn the science and art of making clear, well-defined posts of your questions to newsgroups and forums, so that you will be able to get good answers. Here's a piece we have here that tells how.
10) Share with others. When you find the solution to a problem that you've posted to a messageboard or newsgroup, go back and post the solution as a follow-up to the thread. Help others with information that you know the answers to. Don't just be a "taker" - be a "giver"!
The good Karma will come back to you a thousand times.
I hope this "short list" of good principles is useful to you. Best of luck!