Take the 2-minute tour ×

I work in the technical group at a large Architecture firm. While there are a number of people here that are very proficient at various programing and scripting languages, it's far from the environment of the development environment of a software company. Rarely are there ever more then one or two people working on a development project, most of which are just automation scripts. There's no source control, or version control setup or anything like that.

My academic background is engineering but not CS or CE. So I've taking a number of programing classes in school, and actually tinkered a lot with VB back when I was a little kid. Yet it wasn't until this past year at my current job have I really had the opportunity to do any real development outside of homework problems in school. In the past year I've transitions from making simple automation scripts to full blow plug-in applications in C#.NET.

I have family and friends that are CS or CE majors, and work for companies whose main product is software. While have no interest in actually working for a software company, but it seems like they do have a major advantage over me. At their work they have people with more experience that can look over their should and give them suggestions to improve their code or logic. Sites like Stack Overflow are great for solving bugs and getting advice, but only when you know you need the advice. I'm sure there are many times when I'm taking the completely wrong approach to something.

What are some of the best ways to improve these real life programing skills? Is there a way to find open source projects (preferably .Net based) that I can help work on, so I can gain some experience working with other (more experienced) programmers? I've also been looking into design patterns, but have a hard time recognizing when to use certain patterns.

share|improve this question
In your comments on answers you point out that the problem is you don't have anyone to review your code. You should update your question to reflect this problem. –  Robert S. Jul 2 '09 at 20:25
add comment

closed as off topic by Servy, Peter O., Jerry Coffin, R. Martinho Fernandes, DuckMaestro Feb 2 '13 at 6:54


8 Answers

up vote 6 down vote accepted

Find a coding hobby project that interests you. If you find it interesting you will spend way more time working on the code than if you are doing it simply to learn.

As far as


go to SourceForge and find something that looks interesting to you and get involved. Again emphasis on interesting. Don't worry too much about how practical it is.

share|improve this answer
codeplex.com has a lot of .Net projects to work on. –  jle Jul 2 '09 at 20:02
actually my projects at work are pretty interesting I just need more people to work with. Thanks I'll check out codeplex –  Eric Anastas Jul 2 '09 at 20:03
add comment

I'm going to go out on a limb here and suggest that you write some code.

Read Code Complete. Look at other questions about this topic here at StackOverflow. Find an open source project and contribute to it. Start your own pet project that focuses on the skills you're interested in.

When to use Design patterns
How to get into C# Open Source projects

share|improve this answer
Well obviously I need to write code, but I think my issue is more with not having anyone to tell me how and where my otherwise functioning code could be improved. –  Eric Anastas Jul 2 '09 at 20:06
Don't worry too much about how your code can be improved. Instead you should learn how to do more things with code. Nobody's code is ever perfect. –  Robert S. Jul 2 '09 at 20:25
Code Complete's a great book if you want to improve your code quality - one of the classics. –  Rory MacLeod Feb 27 '10 at 3:33
add comment

Real world programming skills: something you could do for a living, in a professional environment.

Come up with an idea, it doesn't need to be the GREATEST idea ever... then write it. Write it in a professional manner. Use version control, even for a personal project. Have a ticket system, even for a personal project. Get used to doing things in the manner a professional does them, even for a personal project. Otherwise, you're just learning bad habits.

I would even go so far as to ask some of those friends or family who have jobs in the industry to help you out with an impromptu code review. Buy them dinner, I bet they'll do it.

The only way to learn anything is to actually start doing it. Expect that your first code will be awkward, and will be re-written several times as part of your growing process.

Then, if your personal project might have any interest for others... ship. Put it out there. Get user feedback. It will be brutal, and an educational experience that you could not buy at any price. You'll be a better programmer for it.

share|improve this answer
add comment

There is a very high profile C# open source software project that can always use more help.

It's called the Mono Project.

I would recommend contributing to the Mono Project over others because they use a very transparent and open development model, and they are high profile so being a "Mono contributor" has some extra prestige in my opinion then many random C# open software projects. Plus Miguel de Icaza (head of the Mono Project) is an awesome and funny guy.

share|improve this answer
add comment

What I do in my free time is find something that interests me, build it, and learn in the process. For example, instead of taking a canned forum or CMS, I would build my own and learn from my own mistakes. Granted this wont give you knowledge about source control etc since you would most likely be the only developer but learning tricks and better coding style is certainly worth the effort. Perhaps you can get involved in an open source project as well! :)

share|improve this answer
add comment

Find experienced developers who are willing to do informal design / code reviews with you periodically on some of the projects you have already done (since you know them well) so they can explain the pros / cons and possible different approaches to solving those same problems.

The more different opinions you can get on how experienced developers would solve the problems you are familiar with, the more options you'll have for solving the next problem. Expect each developers approach to be radically different, yet still enlightening. :-)

share|improve this answer
add comment

You can do a lot of things. These come to mind:

  • Particpate in an open source project.
  • Read StackOverflow a lot
  • Ask a lot of questions on StackOverflow
  • Read good books
share|improve this answer
Also, try answering questions here. Especially ones that mean you have to try things out. –  Richard Jul 3 '09 at 9:43
add comment

Adding a bit to William' answer: find an interesting open-source project and become an active contributor. This will not only give you a chance to do hands-on coding, but an opportunity to see other peoples' code. There is a lot to learn from code written by other programmers.

share|improve this answer
add comment
