What you are trying to do, learn on your own, is hard but also can be very
rewarding if you persevere. But there is so much information out there
that it can be overwhelming to get yourself focused. Believe me I feel
your pain because while I have been master command line script
programming, I have had a hard time getting motivated to learn web-based
and GUI programming.
Here is my plan for learning on your own:
- motivation
- choose a simple problem to solve that can bridge from your existing knowledge
- development environment appropriate to the task
- build new complexity in gradual layers
Repeat:
Start with motivation because you need to overcome an obvious block.
And, to overcome the block with the least effort, we need to know what
you are trying to learn so that we can choose the best language/environment
to learn in.
For a bridge, what I mean is you already have knowledge that you can apply
on paper. We want to take a simple existing problem and translate it into
a program. You will learn a lot even from setting up a very basic
program to do a simple task. It helps to start with a problem you are
familiar with. I got the biggest jumpstart learning perl by taking one
of my shell scripts and just translating it into perl. For you, your
starting point is what you already know.
Now that you have motivation, and a simple problem to solve, you need to
choose a language/environment appropriate to the task. If you just want
a simple command line, you can use a basic scripting language like perl,
python, or ruby. If you want a GUI, then you need to decide whether
to go web-based or to setup a desktop application, because each has
a very different environment. If you want to write networking, then
you can use one of the scripting languages or C. You can also do any
of this in java, but the environment setup may be daunting.
Then, after your first program is working, you can either extend it
with new features, or choose an entirely new problem to solve that
is slightly more complex then the first.
Until you are a master.
--