img by Coba

How to Become a Good C# Programmer, Part 3

This is Part 3 in my series on How to Become a Good C# Developer. You can find Part 1 at TechUrbia.com here and Part 2 (Steps 1 and 2) here. If you need to reference the full list of steps to take to be a good C# programmer, you can find those here.

Step 3: Buy a few starter-level books or take a few online classes that are on your chosen language

As the founder of the web's greatest video training company, I'm obviously biased towards video training classes. In fact, I have what I believe to be a very good C# training class for Visual Studio 2005 (VB version is here). However I also love, love, love reading books. So pick up a video class or a book - just one for the time being though. I've found that if I buy too many books when I'm first learning a language that I get overloaded and it makes the process of learning a language more difficult. However, what works for me may not work for you so don't just do what I say because I said that it works for me!

What to Look For in a Starter-Level Book or Online Video Class

Obviously you want good coverage of the topics that will help you build your pet project. This includes:

  • Building GUIs
  • Working with persistent storage
  • Working with files and folders
  • Basic architecture
  • Basic object-oriented architecture and design (OOAD)
  • Chapters that can be digested individually
    • You don't want a book/course that, if you skip chapter 5 because it's not important to you right now, you can't finish the rest of the book due to unnecessary coupling.

What You Don't Care About

Many beginner-level books include intricate sample projects that are meant to replace Step 2 in my system (the pet project). I'm not a fan for two reasons:

  1. I've never once finished one although I've likely read more than 25 books that had such sample projects in them
  2. I think that you will learn faster by having to learn how to implement your own application without anyone there to "hold your hand" (i.e. by giving you the code files and step-by-step instructions)

Sample projects have their place but intricate, multi-chapter sample projects can be detrimental to the learning process in my opinion. Again: look for books/courses that have decoupled chapters (i.e. chapters that can be taken independently).

Step 4: Begin reading the book/taking the class

Obvious step - couple of things to note:

Just Because They Are the Expert Doesn't Mean They Know Everything

Speaking as an expert and educator, I can tell you the inside truth: experts are experts in what they know. I know that sounds simplistic but it's true: you can ask me tons of questions about things I know and I will dazzle you (maybe?) with my intricate knowledge of this or that particular piece/function/method/facet/property/etc. But ask me questions about complex topics that I have no real-world experience in and I'll fumble around like anyone (and I'll look very little like an expert).

I am far from a know-it-all and I've even given people bad advice. I would suggest that you simply be wary of who you listen to. Whenever someone tells you about a "best practice" or you hear phrases like, "That's the way everyone does it", it's a good idea to have a reality check and verify what they are telling you is true. At this stage of your development (Step 3), you likely won't have the knowledge to even ask smart questions so it's important to keep notes of topics/areas that you'll want to cover later in your development. You may find that you will learn things later on in this system that go completely against what you learn in Step 4. That's okay - in fact, it's normal.

You want to know what else is normal? That you will misinterpret many things and completely gloss over incredibly important topics. Again: normal.

Keep a Notebook and Code Manager

Speaking of keeping notes, you will have so many questions at the beginning of your adventure to become a better C# programmer that you need a way to organize them. I'm a huge fan of OneNote and I think it's cut down the time it takes me to learn and master a new language by several hours. Check it out: OneNote home page.

In your notebook, you'll want to have sections/categories similar to:

  • Questions I Have
  • OOAD
  • Data types
  • To-do List
  • Working with Databases
  • Working with Files and Folders
  • Code Snippets
  • Tips & Tricks
  • Best Practices

In each section/category, you'll take notes and maybe even reference page numbers, videos, specific concepts, etc.

Tip #1: A good technique for learning is to take notes on a sheet of paper and then transfer them to OneNote later. This allows you to physically participate in the learning process three times: (1) when you read/heard the material [i.e. aurally], (2) when you physically wrote it down, and (3) when you physically typed it in.

Tip #2: Use good SIPs (statistically improbable phrases) in your notes to make it easy to find topics later.

Next up

Let's take a look at Part 4! Of course, you are welcome to go ahead and dive into my C# training course online at any time!


Article Index:

  • Part 1 - Overview of a System for Becoming a Good C# Programmer
  • Part 2 - Steps 1 and 2: Picking a Language and Picking a Pet Project
  • Part 3 - Steps 3 and 4: Picking a Book or Class to Get Started
  • Part 4 - Step 5: Implementing Your Pet Project
  • Part 5 - Step 6: Minimizing the Trough of Disillusionment
  • Part 6 - Steps 7 and 8: Finish your Book/Class and Start a New One
  • Part 7 - Steps 9 and 10: Begin Answering Questions and Pick a New Project
  • Part 8 - Steps 11 and 12: Review more apps and Start Contributing!
  • Part 9 - Steps 13 and 14: Write a few articles and the Bonus Step
  • Part 10 - Next Steps and What Does It Take to Be a Great C# Programmer?
authors
scott whigham
grant moyle
chad weaver
recent comments
  • Seattle Limo: This is four times now that i’ve landed on your read more
  • rolex watches: In fact, some of the Swiss luxury watch, in appearance read more
  • Tod Cutwright: I wish more people would write blogs like this that read more
  • speed up your internet connection: great site. I am so looking forward to seeing more read more