It all comes down to - what do you want?
What is your goal?
- To learn new programming skills
- To learn how a specific programming language works?
- To makey money?
- To get into a job
- To get into a specific programming job
- To learn the skills that will ensure you a job
- To learn everything you can about everything and be a wise man on top of a hill?
Why not set yourself a goal to create an application that you can try and sell or one that you might give to others for free in exchange for feedback or even ask another programmer to look at so you can see if your approach is good? Perhaps consider making it open source so the community can give you help?
To quote an adapted phrase stuck on my cupboard undoubtedly created by someone else:
"If you want to set off and go develop some grand new thing, you don't need millions of pounds of funding. You need as much pizza and diet coke that your fridge can handle, a cheap PC, connection to internet (for SO) and the dedication to go through with it".
My practical jump-head-first advice:
- Set yourself an interesting but simple project - a project with lots of different features to help expand your skills in small ways but in a wide variety.
- Write a specification so you know what you want it to do. This may take a long time to create but this is more important than the implementation because it is an essential skill to learn (otherwise you will grow up to what we call a 'n00b') and it acts as your compass when your mind starts to get 'arty'.
- Try and make your code efficient - learn in detail as you go what specific code REALLY does- don't assume knowledge - really drill down and get clued up from any number of source e.g. video, books, internet, programmer next door
- Stick to your specification and have faith that you will be able to achieve what you have set yourself as a goal in your specification (unless you been silly! lol)
I believe that learning is all about the journey - but you have to be going somewhere first.
Thanks for the question - has made me think a little bit.
May I recommend SQL Server, C# 4.0, ASP.NET, Silverlight, WPF. Most the tools are completely free - so a cost effective way to get learning something which is popular and not on it's last legs like java (sorry java developers lol). But C# is very similar to Java anyway (sorry again java developers!)
Dan.