Best way to learn/practice programming skills?

Just wondering how many of you out there actually write small, not very useful programs just to practice their skills or to pick a new one up?

That said, which do you think is a better way to learn/practice program skill?

  1. writing small useless programs (those that uses the functions you’re trying to learn/practice but generally not a usable application).

  2. really sit down and plan a major self project. (but it doesn’t focus on the areas you are trying to learn/practice).

Or do you have any other good ideas to learn/practice programming skill. :slight_smile:

Below is what I would do (this method means you can dedicate substantial amount of time to this):

  1. Read books about the language you want to learn (make sure to select good ones based on people’s reviews)
  2. Get involved with some Open Source project on GitHub that uses the language you’re trying to learn (fix bugs, add features and be generally helpful). Remember to ALWAYS ask feedback when contributing code. You will be surprised how much people will be willing to help you.
  3. Join community forums and mailing lists that focus on this language and contribute

This should get you on the right path and would definitely look good on your resume =)

I have a simple plan for this: just do it ™.
I don’t like sitting down for days, weeks, months or even years to push unusable things into my head - I need “real problems” that I can solve.
I’m new to Bash programming, now I want to create some server management scripts - I just started hacking something together, looking at examples and online docs.
This way I’m sure I’m interessted in what I’m doing so I’ll really learn it and not just for the next test.

I come from a software development platform, and my advice would be to not spend the time writing useless utilities that no-one will use, while it does give you experience the end result isn’t really that satisfying. When I wanted to practice my skills I would find something needing development and make it a long term project (perhaps open source?) and then keep the thing going with updates, enhancements and such. It gives you experience, publicity and the potential to draw revenue in the future if you wanted to offer a pro version, pro support or some other monetized revenue stream. Keep the project free to start off with though, after all it’s more about learning at that stage then having something to make you rich. :slight_smile:

I used to practice by writting any program that used to strike in my mind though i used to write the logic , instead of writting the whole program.