How to Become a Good C# Programmer, Part 8
- by Scott Whigham on September 1, 2009 1:51 PMThis 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:
- http://www.asp.net/community/projects/ - ASP.NET Starter Kits are a great resource for this stage in your development
- http://www.yetanotherforum.net/ - YetAnotherForum is a quality ASP.NET forum site
- http://cartrackr.codeplex.com/ - Car Trackr is an ASP.NET MVC app
- http://www.codeplex.com/Kigg - Kigg is an ASP.NET digg copy using the MSFT Enterprise Library and LINQ to SQL
- http://www.codeplex.com/oxite - Oxite is an ASP.NET MVC CMS
- http://bugnetproject.com/ - Bugnet is an open source, ASP.NET bug tracking system
Open Source C# Windows Forms Apps:
- http://www.nunit.org/ - NUnit is essential for all Windows-based developers
- http://sharpdevelop.codeplex.com/ - SharpDevelop (a.k.a. #develop) is a free, open source IDE for C#, VB.NET, IronPython, Boo and F#
- http://code.google.com/p/iphonebrowser/- iPhone developer
- http://xmlexplorer.codeplex.com/ - XML Explorer
- http://turtle.codeplex.com/ - turtle SQL helps you generate SQL Server database documentation
- http://terminals.codeplex.com/ - Terminals is a complete replacement for the default Terminal Services client
- http://sourceforge.net/projects/keepass/ - KeePass is a combo C++/C# app
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?




Leave a comment