img by Coba

How to Become a Good C# Programmer, Part 8

This is part 8 in my 10-part series on How to Become a Good C# Developer. If you need to reference the full list of steps to take to be a good C# programmer, you can find those here.

  • 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 Programmer?

Step 11: Review some open source apps written in your language

This is similar to Step 7 in which you reviewed several sample applications. The difference here is that you want to go with a little more "upscale" applications - more fully implemented apps and more apps written by a community. Here are a few:

Open Source ASP.NET Website Apps:

Open Source C# Windows Forms Apps:

The two "biggies" for open source for the .NET Framework tend to be http://www.codeplex.com/ and http://sourceforge.net. CodePlex, because it is run by Microsoft, is a more tightly focused (and possibly more targeted) group of .NET apps whereas I find SourceForge to be a difficult site to navigate and find something interesting.

Step 12: Contribute to open source apps

You can't just be a leech (i.e. someone who takes but provides nothing in return) - now it's your turn to help out. Contributing to open source applications has many benefits:

  • You'll learn to integrate with a pre-existing team
  • Your knowledge and comfort levels will be expanded
  • You'll learn the style of others (everyone has their own coding style) - example
  • You will be exposed to technologies/techniques that you would not have otherwise seen
  • You'll feel good that you helped make a product better in some way
  • You may receive a level of notoriety by being on the team
  • Many companies will not hire people who have not contributed to open source projects
  • Being a developer on open source projects is often seen as showing passion for development

Here are a few good resources as well:

What to Look For in an Open Source Project

You want an active community and by "active" I mean that you want to see a steady history of changes, new features, modifications and so forth. Seeing a road map is nice too.

Also, you want something that you care about. Look - we're all volunteers in the open source world. If you don't care about bug tracking then don't join a bug tracking application - you'll end up quitting or getting booted out because you aren't spending the time. Also, that road map I mentioned earlier is important - if you see that the application is due to take a turn into a technology that you don't care to learn, then don't join.

I also would like to see that the tasks needed to be performed would interest me. If the task list is, "Provide documentation for all classes" well, I might skip that one... Sure it needs to be done but I'm not likely to learn as much performing that task as I am performing a task like, "FTP download routine has a bug - find it and fix it".

What Not to Look For

Don't look for polish everywhere - that's not that important. I worked on YetAnotherForum for literally years and it was poorly documented, the SQL Server database was a joke, the class design was w-e-a-k, and so forth - but I learned a great deal working on it. The guys on the project are great guys and they learned as they went too. If I was looking for polish then I would've looked elsewhere. However, what I saw was that this software did what I wanted, that I felt I could improve upon it, and that it was in an area that I had a passion for. So don't get hung up on logos, prettiness of buttons, great descriptions, full-blown documentation - look for places where you can add value.

Next up

Let's take a look at Part 9 of 10! Of course, you are welcome to go ahead and dive into my C# video tutorials 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
  • UNLIMITED Traffic: That was interesting but I can`t agree at all. read more
  • loan modification software: This is exactly what I was looking for! Thanks! read more
  • http://www.xes.cx/MT/archives/2006/03/one_mans_sperm_fan_club.html: Nice post. Thanks read more
  • Mary Burak: hm, understand:) read more
  • Mary Burak: really i thought that read more
  • pozycjonowanie google : Great site and nice text. read more
  • Archi supports Uruguay: That comment keeps going for much too long in a read more
  • rolex watches: In fact, some of the Swiss luxury watch, in appearance read more
  • Park21Angela: Have no cash to buy a car? Worry not, just read more
  • Carylon Pihlaja: AT&T unquestionably has hold of the market with the iPhone read more