tags:

views:

226

answers:

5

I've been programming small things in C/C++ and even a little Java for a while now. However, I can't seem to break the barrier into programming something that could be considered practical. None of my programs have ever exceeded even 200 lines (and no, I'm not saying that small programs are useless).

What is the quickest way to start practicing programming something that would be considered useful?

+1  A: 

What is the quickest way to start practicing programming something that would be considered useful?

I would recommend contributing to an open-source project (click the links for examples).

~

yawmark
Nothing personal to it all, but doesn't that contribute to a general reduction in skills in the opensource world? Let him learn, then let him help.
> doesn't that contribute to a general reduction in skills in the opensource world?I'm not aware of the poster's current skill level, and one can learn a great deal by helping. If s/he's not at an appropriate level yet, then sure, more learning is in order.
yawmark
And besides that, I rather doubt it would contribute to a "general reduction in skills." If the project team can't control contributions to the project, that's a different problem entirely.
yawmark
A: 

Pick a project and work on it. If you want to be practical but not creative, pick a project many have done before you.

If you're brave, build a compiler. If you can build a C compiler, you understand C perfectly.

If you have a goal, aim for it..start in smaller chunks.

Every good program is made with pieces that don't exceed 200 lines.

+6  A: 

Here is a similar thread with plenty of suggestions:

My very first project. Any suggestions on what to make?

Save regurgitation and read the responses there first.

Simon Hartcher
+1  A: 

I got a lot of experience early on by rebuilding things that already existed. I saw a small little (or big) utility program or something, and thought "hey I can do that". Sometimes it was rebuilding it just to fix an annoyance, and sometimes it was because I didn't know how something was done and I wanted to find out.

Back in those days, there was very little "open source" and I was usually working with closed-source shareware programs. I wonder how my experience would have been different if I could always look inside existing programs.

Greg Hewgill
+1  A: 

It's difficult to get started doing something 'practical' in C on your own, because there's so many things apart from C that you need to learn to create a decent project. Off the top of my head: compiler and linking specifics, make, the autotool chain, version control, release mgmt, pitfalls of portable code, details of whatever library you're using (say GNOME), some cultural issues etc. 'Real World' C is totally different than what you learn in books, lots of extensions and weird macros that are hard to understand initially.

Once you've reached a point where you understand C and are able to program effectively, look for an open source project that already has all the other infrastructure in place. Pick something small and interesting, preferably with a "nice" community. Ideal would be a tool you use that's missing a tiny feature. E.g. I use Transmission for bittorrent and it annoyingly 'jumps' when calculating the estimated remaining time of the download ("2 hours" one second "12 days" then next) because it only takes the download speed during the last second into account calculating the ETA. This would be a doable weekend project and you get acquainted with a "real" application and the development process.